public static Container callInventoryOpenEvent(EntityPlayer player, Container container) { if (player.activeContainer != player.defaultContainer) { // fire INVENTORY_CLOSE if one already open player.playerConnection.a(new PacketPlayInCloseWindow(player.activeContainer.windowId)); } CraftServer server = player.world.getServer(); CraftPlayer craftPlayer = player.getBukkitEntity(); player.activeContainer.transferTo(container, craftPlayer); InventoryOpenEvent event = new InventoryOpenEvent(container.getBukkitView()); server.getPluginManager().callEvent(event); if (event.isCancelled()) { container.transferTo(player.activeContainer, craftPlayer); return null; } return container; }
public static Container callInventoryOpenEvent(EntityPlayer player, Container container) { if (player.activeContainer != player.defaultContainer) { // fire INVENTORY_CLOSE if one already open player.playerConnection.handleContainerClose(new Packet101CloseWindow(player.activeContainer.windowId)); } CraftServer server = player.world.getServer(); CraftPlayer craftPlayer = player.getBukkitEntity(); player.activeContainer.transferTo(container, craftPlayer); InventoryOpenEvent event = new InventoryOpenEvent(container.getBukkitView()); server.getPluginManager().callEvent(event); if (event.isCancelled()) { container.transferTo(player.activeContainer, craftPlayer); return null; } return container; }
private void openCustomInventory(Inventory inventory, EntityPlayer player, int windowType) { if (player.playerConnection == null) return; Container container = new CraftContainer(inventory, this, player.nextContainerCounter()); container = CraftEventFactory.callInventoryOpenEvent(player, container); if(container == null) return; String title = container.getBukkitView().getTitle(); int size = container.getBukkitView().getTopInventory().getSize(); player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, title, size, true)); getHandle().activeContainer = container; getHandle().activeContainer.addSlotListener(player); }
private void openCustomInventory(Inventory inventory, EntityPlayer player, int windowType) { if (player.playerConnection == null) return; Container container = new CraftContainer(inventory, this, player.nextContainerCounter()); container = CraftEventFactory.callInventoryOpenEvent(player, container); if(container == null) return; String title = container.getBukkitView().getTitle(); int size = container.getBukkitView().getTopInventory().getSize(); player.playerConnection.sendPacket(new Packet100OpenWindow(container.windowId, windowType, title, size, true)); getHandle().activeContainer = container; getHandle().activeContainer.addSlotListener(player); }
public InventoryView openInventory(Inventory inventory) { if(!(getHandle() instanceof EntityPlayer)) return null; EntityPlayer player = (EntityPlayer) getHandle(); InventoryType type = inventory.getType(); Container formerContainer = getHandle().activeContainer; // TODO: Should we check that it really IS a CraftInventory first? CraftInventory craftinv = (CraftInventory) inventory; switch(type) { case PLAYER: case CHEST: case ENDER_CHEST: getHandle().openContainer(craftinv.getInventory()); break; case DISPENSER: if (craftinv.getInventory() instanceof TileEntityDispenser) { getHandle().openDispenser((TileEntityDispenser) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 3); } break; case FURNACE: if (craftinv.getInventory() instanceof TileEntityFurnace) { getHandle().openFurnace((TileEntityFurnace) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 2); } break; case WORKBENCH: openCustomInventory(inventory, player, 1); break; case BREWING: if (craftinv.getInventory() instanceof TileEntityBrewingStand) { getHandle().openBrewingStand((TileEntityBrewingStand) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 5); } break; case ENCHANTING: openCustomInventory(inventory, player, 4); break; case HOPPER: if (craftinv.getInventory() instanceof TileEntityHopper) { getHandle().openHopper((TileEntityHopper) craftinv.getInventory()); } else if (craftinv.getInventory() instanceof EntityMinecartHopper) { getHandle().openMinecartHopper((EntityMinecartHopper) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 9); } break; case CREATIVE: case CRAFTING: throw new IllegalArgumentException("Can't open a " + type + " inventory!"); } if (getHandle().activeContainer == formerContainer) { return null; } getHandle().activeContainer.checkReachable = false; return getHandle().activeContainer.getBukkitView(); }
public CraftInventoryView(HumanEntity player, Inventory viewing, Container container) { // TODO: Should we make sure it really IS a CraftHumanEntity first? And a CraftInventory? this.player = (CraftHumanEntity) player; this.viewing = (CraftInventory) viewing; this.container = container; }
public Container getHandle() { return container; }
public InventoryView openInventory(Inventory inventory) { if(!(getHandle() instanceof EntityPlayer)) return null; EntityPlayer player = (EntityPlayer) getHandle(); InventoryType type = inventory.getType(); Container formerContainer = getHandle().activeContainer; // TODO: Should we check that it really IS a CraftInventory first? CraftInventory craftinv = (CraftInventory) inventory; switch(type) { case PLAYER: case CHEST: case ENDER_CHEST: getHandle().openContainer(craftinv.getInventory()); break; case DISPENSER: if (craftinv.getInventory() instanceof TileEntityDispenser) { getHandle().openDispenser((TileEntityDispenser) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 3); } break; case FURNACE: if (craftinv.getInventory() instanceof TileEntityFurnace) { getHandle().openFurnace((TileEntityFurnace) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 2); } break; case WORKBENCH: openCustomInventory(inventory, player, 1); break; case BREWING: if (craftinv.getInventory() instanceof TileEntityBrewingStand) { getHandle().openBrewingStand((TileEntityBrewingStand) craftinv.getInventory()); } else { openCustomInventory(inventory, player, 5); } break; case ENCHANTING: openCustomInventory(inventory, player, 4); break; case HOPPER: if (craftinv.getInventory() instanceof TileEntityHopper) { getHandle().openHopper((TileEntityHopper) craftinv.getInventory()); } else if (craftinv.getInventory() instanceof EntityMinecartHopper) { getHandle().openMinecartHopper((EntityMinecartHopper) craftinv.getInventory()); } break; case CREATIVE: case CRAFTING: throw new IllegalArgumentException("Can't open a " + type + " inventory!"); } if (getHandle().activeContainer == formerContainer) { return null; } getHandle().activeContainer.checkReachable = false; return getHandle().activeContainer.getBukkitView(); }