/** * Called when a player clicks on the inventory, the filters to check if the Player clicked on the GUi's inventory should be made outside of this method * * @param event the click event */ public void onClick(InventoryClickEvent event) { HumanEntity h = event.getWhoClicked(); if (!(h instanceof Player)) return; LinkedList<Gui> g = histories.get(h); if (g != null && !g.isEmpty()) { Gui gui = g.peek(); GuiClickEvent e = new GuiClickEvent(event, (Player) h, gui); Bukkit.getPluginManager().callEvent(e); if (e.isCancelled()) return; //Event cancelled BEFORE the method call to permit the un-cancelling event.setCancelled(true); gui.onClick(event); //Creative idiots could copy the links if (event.isShiftClick() && event.getWhoClicked().getGameMode() == GameMode.CREATIVE) ((Player) event.getWhoClicked()).updateInventory(); } }
public CraftContainer(final Inventory inventory, final HumanEntity player, int id) { this(new InventoryView() { @Override public Inventory getTopInventory() { return inventory; } @Override public Inventory getBottomInventory() { return player.getInventory(); } @Override public HumanEntity getPlayer() { return player; } @Override public InventoryType getType() { return inventory.getType(); } }, id); }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void equipWeaponEvent(InventoryDragEvent event) { if (Result.DENY.equals(event.getResult())) return; HumanEntity human = event.getWhoClicked(); Inventory inv = event.getInventory(); ItemStack prior = event.getOldCursor(); StandardGun priorGun = findGun(prior); // Don't really care what sort of drag, if we have a gun in inv and this was a gun, deny. if (priorGun != null && inv != null && !InventoryType.PLAYER.equals(inv.getType()) && priorGun.isLimitToOne() && priorGun.hasGun(human)) { event.setResult(Result.DENY); // yes this will prevent drag style of weapon in chest invs. Oh well. } }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void equipWeaponEvent(InventoryDragEvent event) { if (!enabled) return; HumanEntity human = event.getWhoClicked(); boolean alreadyHasGun = hasGun(human); Inventory inv = event.getInventory(); ItemStack prior = event.getOldCursor(); // Don't really care what sort of drag, if we have a gun in inv and this was a gun, deny. if (alreadyHasGun && (inv != null && !InventoryType.PLAYER.equals(inv.getType())) && (prior != null && isGun(prior))) { event.setResult(Result.DENY); // yes this will prevent drag style of weapon in chest invs. Oh well. } }
@EventHandler public void onClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); Inventory inventory = event.getClickedInventory(); if (inventory == null || !gui.getTitle().equals(inventory.getTitle())) { return; } event.setCancelled(true); PageGUI.playSound(event); ItemStack button = inventory.getItem(event.getSlot()); if (button == null) { return; } Resource resource = getResource(gui); int current = faction.getConsumableResources().get(resource); if (button.equals(GUIButton.BACK)) { faction.getPopulationMenu().openDemands(player); return; } else if (button.equals(DENY_BUTTON)) { faction.getConsumableResources().put(resource, current - 1); } else if (button.equals(GRANT_BUTTON)) { faction.getConsumableResources().put(resource, current + 1); } update(resource); }
@EventHandler public void onClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); Inventory inventory = event.getClickedInventory(); if (inventory == null || gui == null || !gui.getTitle().equals(inventory.getTitle())) { return; } event.setCancelled(true); PageGUI.playSound(event); ItemStack button = event.getCurrentItem(); if (BACK.equals(button)) { faction.getPopulationMenu().openDemands(player); return; } Resource resource = Resource.getByIcon(button); if (resource != null && faction.isPrivileged(player)) { saturationMenu.open(player, resource); } }
@EventHandler public void onClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); Inventory inventory = event.getClickedInventory(); if (inventory == null || !gui.getTitle().equals(inventory.getTitle())) { return; } event.setCancelled(true); PageGUI.playSound(event); ItemStack button = event.getCurrentItem(); if (INCOME_MANAGEMENT.equals(button)) { faction.getTradeMenu().open(player); } else if (TRADE_OFFER.equals(button)) { plugin.getCommandCache().tradeOffer.onExecute(new String[]{"tradeOffer", faction.getName()}, player); } else if (STORAGE.equals(button)) { plugin.getCommandCache().storage.onExecute(new String[]{"storage", faction.getName()}, player); } }
@EventHandler public void onInvClick(InventoryClickEvent event) { HumanEntity human = event.getWhoClicked(); if (human instanceof Player) { Player player = (Player) human; Inventory inv = event.getView().getTopInventory(); if (inv.getHolder() != null && inv.getHolder() instanceof InventoryMenu && event.getRawSlot() >= 0 && event.getRawSlot() < size) { event.setCancelled(true); MenuIcon icon = slots.get(event.getSlot()); if (icon != null) { icon.onClick(player); player.closeInventory(); } } } }
@EventHandler public void onClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); Inventory inventory = event.getClickedInventory(); if (inventory == null || !gui.getTitle().equals(inventory.getTitle())) { return; } event.setCancelled(true); PageGUI.playSound(event); ItemStack button = inventory.getItem(event.getSlot()); if (button == null) { return; } int current = faction.getImportValue(resource); if (button.equals(BACK)) { faction.getTradeMenu().open(player); return; } else if (button.equals(exportButton)) { faction.getGroceryList().put(resource, current - 1); } else if (button.equals(importButton)) { faction.getGroceryList().put(resource, current + 1); } update(); }
@EventHandler public void onClick(InventoryClickEvent event) { ItemStack button = event.getCurrentItem(); if (button == null || button.getType() == Material.AIR) { return; } Inventory inventory = event.getInventory(); PageGUI gui = PageGUI.getByInventory(inventory); if (gui == null) { return; } event.setCancelled(true); PageGUI.playSound(event); int index = gui.getPages().indexOf(inventory); HumanEntity player = event.getWhoClicked(); if (button.equals(NEXT_PAGE)) { gui.open(player, index + 1); } else if (button.equals(PREVIOUS_PAGE)) { gui.open(player, index - 1); } }
private void onIdeasClick(InventoryClickEvent event) { event.setCancelled(true); PageGUI.playSound(event); ItemStack button = event.getCurrentItem(); if (button == null) { return; } HumanEntity player = event.getWhoClicked(); if (button.equals(BACK)) { openGroups(player); return; } else if (!faction.isPrivileged(player)) { return; } Idea idea = IdeaGroup.getIdeaByIcon(button); if (faction.getIdeaGroups().contains(idea.getGroup()) && !faction.getIdeas().contains(idea) && event.getClick() == ClickType.SHIFT_LEFT) { boolean purchased = idea.purchase(faction); MessageUtil.sendMessage(player, (purchased ? FMessage.MISC_PURCHASE_SUCCESS : FMessage.MISC_PURCHASE_FAIL).getMessage(idea.getName())); } openIdeas(player, idea.getGroup()); }
/** * Shows the menu to the viewers * * @param viewers Array of {@link HumanEntity} * @return the ChatMenuBuilder */ @Override public ChatMenuBuilder show(HumanEntity... viewers) { BaseComponent[] components = build(); for (HumanEntity viewer : viewers) { if (viewer instanceof Player) { for (BaseComponent component : components) { ((Player) viewer).spigot().sendMessage(component); } if (!this.viewers.contains(viewer)) { this.viewers.add(viewer); } } } return this; }
@EventHandler(priority = EventPriority.LOW) public void onInventoryOpen(InventoryOpenEvent event) { Inventory inventory = event.getInventory(); HumanEntity player = event.getPlayer(); if (!InventoryManager.playerIsLoaded(player)) { return; } if (InventoryAPI.isRPGInventory(inventory)) { PlayerWrapper playerWrapper = (PlayerWrapper) inventory.getHolder(); InventoryManager.syncQuickSlots(playerWrapper); InventoryManager.syncInfoSlots(playerWrapper); InventoryManager.syncShieldSlot(playerWrapper); InventoryManager.syncArmor(playerWrapper); } }
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onInventoryDrag(InventoryDragEvent event) { HumanEntity humanEntity = event.getWhoClicked(); if (humanEntity instanceof Player) { Player player = (Player) humanEntity; PearlNameFaker pearlNameFaker = itemNameFakes.get(player.getUniqueId()); if (pearlNameFaker == null) return; for (Map.Entry<Integer, ItemStack> entry : event.getNewItems().entrySet()) { if (entry.getKey() == player.getInventory().getHeldItemSlot()) { pearlNameFaker.setFakeItem(CraftItemStack.asNMSCopy(player.getItemInHand()), player.getInventory().getHeldItemSlot()); break; } } } }
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onInventoryClick(InventoryClickEvent event) { HumanEntity humanEntity = event.getWhoClicked(); if (humanEntity instanceof Player) { Player player = (Player) humanEntity; PearlNameFaker pearlNameFaker = itemNameFakes.get(player.getUniqueId()); if (pearlNameFaker == null) return; // Required to prevent ghost items. int heldSlot = player.getInventory().getHeldItemSlot(); if (event.getSlot() == heldSlot) { pearlNameFaker.setFakeItem(CraftItemStack.asNMSCopy(player.getItemInHand()), heldSlot); } else if (event.getHotbarButton() == heldSlot) { pearlNameFaker.setFakeItem(CraftItemStack.asNMSCopy(event.getCurrentItem()), event.getSlot()); new BukkitRunnable() { @Override public void run() { player.updateInventory(); } }.runTask(plugin); } } }
public void damage(double amount, org.bukkit.entity.Entity source) { net.minecraft.util.DamageSource reason = net.minecraft.util.DamageSource.generic; if (source instanceof HumanEntity) { reason = net.minecraft.util.DamageSource.causePlayerDamage(((CraftHumanEntity) source).getHandle()); } else if (source instanceof LivingEntity) { reason = net.minecraft.util.DamageSource.causeMobDamage(((CraftLivingEntity) source).getHandle()); } if (entity instanceof net.minecraft.entity.boss.EntityDragon) { ((net.minecraft.entity.boss.EntityDragon) entity).func_82195_e(reason, (float) amount); } else { entity.attackEntityFrom(reason, (float) amount); } }
/** * Refresh the menu * Will call all {@link LineCallback}s registered with {@link #withLine(LineCallback)} * * @return the ChatMenuBuilder */ @Override public ChatMenuBuilder refreshContent() { for (LineCallback callback : callbackLines) { int index = callback.getIndex(); LineBuilder builder = callback.getLine(); withLine(index, builder); } for (HumanEntity viewer : this.viewers) { show(viewer); } return this; }
public MinecraftInventory(InventoryHolder owner, int size, String title) { Validate.notNull(title, "Title cannot be null"); Validate.isTrue(title.length() <= 32, "Title cannot be longer than 32 characters"); this.items = new net.minecraft.item.ItemStack[size]; this.title = title; this.viewers = new ArrayList<HumanEntity>(); this.owner = owner; this.type = InventoryType.CHEST; }
/** * Change the title of the inventory and <i>optionally</i> update it to all viewers * * @param title new title of the inventory * @param refresh if <code>true</code>, the inventory will be re-opened to all viewers * @return the InventoryMenuBuilder */ public InventoryMenuBuilder withTitle(String title, boolean refresh) { validateInit(); InventoryHelper.changeTitle(this.inventory, title); if (refresh) { for (HumanEntity viewer : this.inventory.getViewers()) { viewer.closeInventory(); viewer.openInventory(this.inventory); } } return this; }
@Override public void process(GUI gui, HumanEntity viewer, Inventory inv) { Validate.isTrue(size != -1 && maxPage != -1); int start = (currentPage - 1) * size; int end = currentPage * size; for (int i = start; i < end; i++) { inv.setItem(i - start, gui.getSignature().getContents().get(i)); } inv.setItem(getPrevPageIndex(), new ItemBuilder(prevPageBtn) .replacement( PAGE, currentPage, MAX_PAGE, maxPage ) .build()); inv.setItem(getPageInfoIndex(), new ItemBuilder(pageInfoBtn) .replacement( PAGE, currentPage, MAX_PAGE, maxPage ) .amount(currentPage) .build()); inv.setItem(getNextPageIndex(), new ItemBuilder(nextPageBtn) .replacement( PAGE, currentPage, MAX_PAGE, maxPage ) .build()); }
/** * Returns the item in hand by being compatible to lower than 1.9 * * @param player player * @param offHand offHand * @return itemStack */ public static ItemStack getItemInHand19(Player player, boolean offHand) { try { if (!VersionSupport.getServerVersion().isVersionSameOrGreaterThan(VersionSupport.VERSION_1_9_R1)) { return ReflectionUtils.invokeMethodByObject(player, "getItemInHand", new Class[]{}, new Object[]{}, HumanEntity.class); } if (offHand) { return ReflectionUtils.invokeMethodByObject(player.getInventory(), "getItemInOffHand", new Class[]{}, new Object[]{}); } return ReflectionUtils.invokeMethodByObject(player.getInventory(), "getItemInMainHand", new Class[]{}, new Object[]{}); } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { PetBlocksPlugin.logger().log(Level.WARNING, "Failed to gather item in 19 hand.", e); return null; } }
/** * Sets the item in hand by being compatible to lower than 1.9 * * @param player player * @param itemStack itemStack * @param offHand offHand */ public static void setItemInHand19(Player player, ItemStack itemStack, boolean offHand) { try { if (!VersionSupport.getServerVersion().isVersionSameOrGreaterThan(VersionSupport.VERSION_1_9_R1)) { ReflectionUtils.invokeMethodByObject(player, "setItemInHand", new Class[]{ItemStack.class}, new Object[]{itemStack}, HumanEntity.class); } else if (offHand) { ReflectionUtils.invokeMethodByObject(player.getInventory(), "setItemInOffHand", new Class[]{ItemStack.class}, new Object[]{itemStack}); } else { ReflectionUtils.invokeMethodByObject(player.getInventory(), "setItemInMainHand", new Class[]{ItemStack.class}, new Object[]{itemStack}); } } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { PetBlocksPlugin.logger().log(Level.WARNING, "Failed to set item in 19 hand.", e); } }
public void clearInventory(Location l) { BlockMenu menu = getInventory(l); for(HumanEntity human: new ArrayList<>(menu.toInventory().getViewers())) { human.closeInventory(); } inventories.get(l).delete(l); inventories.remove(l); }
public FireGunEvent(StandardGun gun, Bullet bullet, HumanEntity player, double accuracy) { super(false); this.gun = gun; this.bullet = bullet; this.player = player; this.accuracy = accuracy; }
public KingdomFactionsPlayer getPlayer(HumanEntity e) { try { return getPlayer(e.getName()); } catch (UnkownPlayerException e1) { return null; //Can't happen } }
public ComponentClickEvent(GUIContainer gui, GUIComponent component, ItemStack item, ItemStack cursor, Inventory clickedInventory, int slot, int rawSlot, HumanEntity player, ClickType click) { this.gui = gui; this.component = component; this.item = item; this.cursor = cursor; this.clickedInventory = clickedInventory; this.slot = slot; this.player = player; this.click = click; this.rawSlot = rawSlot; }
@EventHandler public void onClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); Inventory inventory = event.getClickedInventory(); if (inventory == null || gui == null || !gui.getTitle().equals(inventory.getTitle())) { return; } event.setCancelled(true); PageGUI.playSound(event); ItemStack button = event.getCurrentItem(); if (BACK.equals(button)) { faction.getPopulationMenu().openMain(player); return; } }
public void openIdeas(HumanEntity player, ItemStack button) { if (button == null) { return; } IdeaGroup group = IdeaGroup.getByIcon(button); if (group == null) { return; } openIdeas(player, group); }
private void onGroupsClick(InventoryClickEvent event) { HumanEntity player = event.getWhoClicked(); ItemStack button = event.getCurrentItem(); event.setCancelled(true); PageGUI.playSound(event); IdeaGroup group = IdeaGroup.getByIcon(button); if (event.getClick() == ClickType.SHIFT_LEFT) { boolean selected = group.select(faction); MessageUtil.sendMessage(player, (selected ? FMessage.IDEA_MENU_GROUPS_SELECTED : FMessage.IDEA_MENU_GROUPS_DESELECTED).getMessage(group.getName())); openGroups(player); } else { openIdeas(player, group); } }
private void performCommand(HumanEntity human, String args) { if (!(human instanceof Player)) { return; } Player player = (Player) human; player.performCommand(COMMAND + args); }
public void open(HumanEntity human) { Inventory topInv = human.getOpenInventory().getTopInventory(); Inventory newInv = createInventory(); if (topInv != null && topInv.getTitle().equals(data.title()) && topInv.getSize() == data.size()) { topInv.setContents(newInv.getContents()); if (human instanceof Player) { ((Player) human).updateInventory(); } } else { human.openInventory(newInv); } GUI_MAP.put(human.getName(), this); }
/** * Save unloaded chunk * * @param event Event */ @EventHandler public void onChunkUnload(ChunkUnloadEvent event) { for (Entity entity : event.getChunk().getEntities()) if (!(entity instanceof Item || entity instanceof HumanEntity || entity instanceof Minecart)) entity.remove(); //event.setCancelled(true); }
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onInventoryCreative(InventoryCreativeEvent event) { HumanEntity humanEntity = event.getWhoClicked(); if (humanEntity instanceof Player && !humanEntity.hasPermission("base.command.gamemode")) { event.setCancelled(true); // humanEntity.sendMessage(ChatColor.RED + "You are not allowed to be in gamemode! Setting you to default gamemode!"); humanEntity.setGameMode(GameMode.SURVIVAL); } }
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onCraftItem(CraftItemEvent event) { HumanEntity humanEntity = event.getWhoClicked(); if (humanEntity instanceof Player) { Player player = (Player) humanEntity; if (event.getSlotType() == InventoryType.SlotType.RESULT && isBottledExperience(event.getCurrentItem())) { player.setLevel(0); player.setExp(0); } } }
@EventHandler(ignoreCancelled = false, priority = EventPriority.NORMAL) public void onInventoryOpen(InventoryOpenEvent event) { HumanEntity humanEntity = event.getPlayer(); if (humanEntity instanceof Player) { Player player = (Player) humanEntity; if (player.getInventory().contains(ClaimHandler.SUBCLAIM_WAND)) { player.getInventory().remove(ClaimHandler.SUBCLAIM_WAND); plugin.getClaimHandler().clearClaimSelection(player); } } }
/** * Shows the inventory to the viewers * * @param viewers Array of {@link HumanEntity} * @return the InventoryMenuBuilder */ public InventoryMenuBuilder show(HumanEntity... viewers) { refreshContent(); for (HumanEntity viewer : viewers) { viewer.openInventory(this.build()); } return this; }
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onPrepareAnvilRepair(PrepareAnvilRepairEvent event) { // TODO: Fix anvils ItemStack first = event.getInventory().getItem(0); ItemStack second = event.getResult(); // Some NMS to make sure that if the player is using the respective ingot to repair, // the player will be allowed to repair. if (first != null && first.getType() != Material.AIR && second != null && second.getType() != Material.AIR) { Object firstItemObj = net.minecraft.server.v1_7_R4.Item.REGISTRY.a(first.getTypeId()); if (firstItemObj instanceof net.minecraft.server.v1_7_R4.Item) { // better safe than sorry net.minecraft.server.v1_7_R4.Item nmsFirstItem = (net.minecraft.server.v1_7_R4.Item) firstItemObj; if (nmsFirstItem instanceof ItemTool) { if (ITEM_TOOL_MAPPING.get(second.getType()) == ((ItemTool) nmsFirstItem).i()) { return; } //ItemSwords don't extend ItemTool, NMS </3 } else if (nmsFirstItem instanceof ItemSword) { EnumToolMaterial comparison = ITEM_TOOL_MAPPING.get(second.getType()); if (comparison != null && comparison.e() == nmsFirstItem.c()) { return; } } else if (nmsFirstItem instanceof ItemArmor) { if (ITEM_ARMOUR_MAPPING.get(second.getType()) == ((ItemArmor) nmsFirstItem).m_()) { return; } } } } HumanEntity repairer = event.getRepairer(); if (repairer instanceof Player) { validateIllegalEnchants(event.getResult()); } }
@Override public Inventory create(GUI gui, HumanEntity viewer) { GUISignature signature = gui.getSignature(); signature.title(titleCaught(signature.getTitle())); return signature.getType() == InventoryType.CHEST ? Bukkit.createInventory(null, signature.getSize(), signature.getTitle()) : Bukkit.createInventory(null, signature.getType(), signature.getTitle()); }
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onEquipmentSet(EquipmentSetEvent event) { HumanEntity humanEntity = event.getHumanEntity(); if (humanEntity instanceof Player) { this.attemptEquip((Player) humanEntity); } }