下面列出了org.bukkit.event.inventory.InventoryClickEvent#getClick ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
Inventory inventory = CompatibilityUtils.getClickedInventory(event);
if(inventory == null
|| event.getCurrentItem() == null
|| (!inventory.equals(event.getView().getTopInventory()) && event.getClick() != ClickType.SHIFT_LEFT && event.getClick() != ClickType.SHIFT_RIGHT)) {
return;
}
Player player = (Player) event.getWhoClicked();
NovaPlayer nPlayer = PlayerManager.getPlayer(player);
GUIInventory guiInventory = nPlayer.getGuiInventory();
if(guiInventory != null) {
event.setCancelled(true);
if(event.getSlot() == inventory.getSize() - 1 && event.getCurrentItem().equals(Message.INVENTORY_GUI_BACK.getItemStack())) {
player.closeInventory();
return;
}
if(event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) {
guiInventory.onClick(event);
}
}
}
@EventHandler(ignoreCancelled = true)
public void onClick(InventoryClickEvent e) {
ItemStack item = backpacks.get(e.getWhoClicked().getUniqueId());
if (item != null) {
SlimefunItem backpack = SlimefunItem.getByItem(item);
if (backpack instanceof SlimefunBackpack) {
if (e.getClick() == ClickType.NUMBER_KEY) {
if (e.getClickedInventory().getType() != InventoryType.PLAYER) {
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
if (!isAllowed((SlimefunBackpack) backpack, hotbarItem)) {
e.setCancelled(true);
}
}
}
else if (!isAllowed((SlimefunBackpack) backpack, e.getCurrentItem())) {
e.setCancelled(true);
}
}
}
}
@EventHandler
@Override
public void onInventoryClick(InventoryClickEvent e) {
if (e.getInventory().equals(getInventory())) {
e.setCancelled(true);
if (e.getClickedInventory() == null || !e.getClickedInventory().equals(getInventory())) return;
if (islands.containsKey(e.getSlot())) {
Island island = IridiumSkyblock.getIslandManager().getIslandViaId(islands.get(e.getSlot()));
User u = User.getUser((OfflinePlayer) e.getWhoClicked());
if (island.isVisit() || u.bypassing) {
if (e.getClick() == ClickType.RIGHT) {
if (island.hasVoted(u)) {
island.removeVote(u);
} else {
island.addVote(u);
}
} else {
e.getWhoClicked().closeInventory();
island.teleportHome((Player) e.getWhoClicked());
}
} else {
e.getWhoClicked().sendMessage(Utils.color(IridiumSkyblock.getMessages().playersIslandIsPrivate.replace("%prefix%", IridiumSkyblock.getConfiguration().prefix)));
}
} else if (e.getSlot() == getInventory().getSize() - 7) {
if (IridiumSkyblock.visitGUI.containsKey(page - 1))
e.getWhoClicked().openInventory(IridiumSkyblock.visitGUI.get(page - 1).getInventory());
} else if (e.getSlot() == getInventory().getSize() - 3) {
if (IridiumSkyblock.visitGUI.containsKey(page + 1))
e.getWhoClicked().openInventory(IridiumSkyblock.visitGUI.get(page + 1).getInventory());
}
}
}
public static List<ItemStack> getAffectItemInClickEvent(InventoryClickEvent e) {
List<ItemStack> list = Lists.newArrayList();
if (e.getClick() == ClickType.NUMBER_KEY) {
Optional.ofNullable(e.getWhoClicked().getInventory().getItem(e.getHotbarButton())).ifPresent(list::add);
}
Optional.ofNullable(e.getCurrentItem()).ifPresent(list::add);
return list;
}
@EventHandler
public void onInvClick(InventoryClickEvent e) {
if (e.getInventory() != null && e.getInventory().equals(inv) && e.getWhoClicked() instanceof Player) {
if (itemService.isItemWildcardOrBarrier(e.getCurrentItem())) {
e.setCancelled(true);
return;
}
//don't call click method when double clicked, because before a double click, left click was already registered twice
if (e.getClick() != ClickType.DOUBLE_CLICK && click((Player) e.getWhoClicked(), e.getRawSlot(), e.getClick())) {
e.setCancelled(true);
} else if (e.getClick() == ClickType.DOUBLE_CLICK && e.getAction() == InventoryAction.COLLECT_TO_CURSOR && collect_to_cursor((Player) e.getWhoClicked(), e.getCursor(), e.getRawSlot())) {
e.setCancelled(true);
}
}
}
public void onInventoryClick(InventoryClickEvent event) {
int index = invs.lastIndexOf(event.getInventory());
if (index == -1) {
return;
}
event.setCancelled(true);
int slot = event.getRawSlot();
try {
if (!(slot >= 0 && slot < invs.get(index).getSize())) {
return;
}
} catch (NullPointerException e) {
return;
}
String name = "uselessName";
if (event.getInventory().getItem(slot) != null && !event.getInventory().getItem(slot).getType().equals(Material.AIR)) {
name = SkyWarsReloaded.getNMS().getItemName(event.getCurrentItem());
}
if (!name.equalsIgnoreCase("uselessName")) {
if (name.equalsIgnoreCase(SkyWarsReloaded.getNMS().getItemName(SkyWarsReloaded.getIM().getItem("prevPageItem")))) {
openInventory((Player) event.getWhoClicked(), index - 1);
return;
}
if (name.equalsIgnoreCase(SkyWarsReloaded.getNMS().getItemName(SkyWarsReloaded.getIM().getItem("nextPageItem"))) && index + 1 < invs.size()) {
openInventory((Player) event.getWhoClicked(), index + 1);
return;
}
OptionClickEvent clickEvent = new OptionClickEvent((Player) event.getWhoClicked(), name, event.getClick(), event.getCurrentItem().clone(), event.getRawSlot());
handler.onOptionClick(clickEvent);
}
}
@Override
public boolean onClick(InventoryClickEvent event) {
if (!(event.getInventory().getHolder() instanceof UltimateHolder) ||
((UltimateHolder) event.getInventory().getHolder()).getTitle() == null ||
!stripFormatting(((UltimateHolder) event.getInventory().getHolder()).getTitle()).contains(stripFormatting(getTitle()))) {
return false;
}
if (event.getSlotType() != InventoryType.SlotType.CONTAINER) {
return true;
}
Player player = (Player) event.getWhoClicked();
Inventory menu = event.getInventory();
ItemStack returnItem = menu.getItem(getIndex(5, 0));
String configName = returnItem.getItemMeta().getLore().get(0);
String path = returnItem.getItemMeta().getLore().get(1);
int page = getPage(returnItem.getItemMeta().getLore().get(2));
int slot = event.getSlot();
int row = slot / 9;
int col = slot % 9;
ItemStack clickedItem = event.getCurrentItem();
if (slot >= getIndex(3, 0) && slot <= getIndex(3, 8)) {
// increment buttons
YmlConfiguration config = FileUtil.getYmlConfiguration(configName);
int value = config.getInt(path, 0);
int increment = getDisplayNameAsInt(clickedItem);
if (event.getClick() == ClickType.LEFT) {
value += increment;
} else if (event.getClick() == ClickType.RIGHT) {
value = increment;
}
config.set(path, value);
config.set("dirty", true);
}
if (slot != getIndex(5,0)) {
player.openInventory(createEditMenu(configName, path, page));
} else {
player.openInventory(parent.createEditMenu(configName, path, page));
}
return true;
}
public static InventoryClick fromClickEvent(final InventoryClickEvent event)
{
return new InventoryClick(event.getInventory(), InventoryUtils.locateSlot(event.getRawSlot(), event.getClickedInventory().getType()), event.getClick());
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if(!event.getInventory().equals(i)) return;
Player p = (Player) event.getWhoClicked();
if(event.getClick() == ClickType.SHIFT_LEFT || event.getClick() == ClickType.SHIFT_RIGHT || event.getClick() == ClickType.NUMBER_KEY) {
event.setCancelled(true);
return;
}
int slot = event.getRawSlot();
if(slot > i.getSize()) return;
if(invSlots.contains(slot)) {
if(plugin.checkBlockPermission(p, as.getLocation().getBlock())) {
updateInventory();
} else {
event.setCancelled(true);
p.sendMessage(ChatColor.RED + Config.wgNoPerm);
}
return;
}
event.setCancelled(true);
if(!(event.getWhoClicked() instanceof Player)) return;
ArmorStandTool t = ArmorStandTool.get(event.getCurrentItem());
if(t == null) return;
if (!plugin.playerHasPermission(p, as.getLocation().getBlock(), t)) {
p.sendMessage(ChatColor.RED + Config.generalNoPerm);
return;
}
switch (t) {
case INVIS:
as.setVisible(!as.isVisible());
Utils.actionBarMsg(p, Config.asVisible + ": " + (as.isVisible() ? Config.isTrue : Config.isFalse));
break;
case CLONE:
p.closeInventory();
plugin.pickUpArmorStand(Main.nms.clone(as), p, true);
Utils.actionBarMsg(p, Config.carrying);
break;
case SAVE:
if(Config.requireCreative && p.getGameMode() != GameMode.CREATIVE) {
p.sendMessage(ChatColor.RED + Config.creativeRequired);
} else {
Main.nms.generateCmdBlock(p.getLocation(), as);
Utils.actionBarMsg(p, Config.cbCreated);
}
break;
case SIZE:
as.setSmall(!as.isSmall());
Utils.actionBarMsg(p, Config.size + ": " + (as.isSmall() ? Config.small : Config.normal));
break;
case BASE:
as.setBasePlate(!as.hasBasePlate());
Utils.actionBarMsg(p, Config.basePlate + ": " + (as.hasBasePlate() ? Config.isOn : Config.isOff));
break;
case GRAV:
as.setGravity(!as.hasGravity());
Utils.actionBarMsg(p, Config.gravity + ": " + (as.hasGravity() ? Config.isOn : Config.isOff));
break;
case ARMS:
as.setArms(!as.hasArms());
Utils.actionBarMsg(p, Config.arms + ": " + (as.hasArms() ? Config.isOn : Config.isOff));
break;
case NAME:
p.closeInventory();
plugin.setName(p, as);
break;
case PHEAD:
p.closeInventory();
plugin.setPlayerSkull(p, as);
break;
case INVUL:
Utils.actionBarMsg(p, Config.invul + ": " + (Utils.toggleInvulnerability(as) ? Config.isOn : Config.isOff));
break;
case SLOTS:
Utils.actionBarMsg(p, Config.equip + ": " + (Main.nms.toggleSlotsDisabled(as) ? Config.locked : Config.unLocked));
break;
case MOVE:
p.closeInventory();
UUID uuid = p.getUniqueId();
if(plugin.carryingArmorStand.containsKey(uuid)) {
plugin.carryingArmorStand.remove(uuid);
Utils.actionBarMsg(p, Config.asDropped);
} else {
plugin.pickUpArmorStand(as, p, false);
Utils.actionBarMsg(p, Config.carrying);
}
break;
case GLOW:
Utils.actionBarMsg(p, Config.glow + ": " + (Utils.toggleGlow(as) ? Config.isOn : Config.isOff));
break;
default:
return;
}
i.setItem(t.getSlot(), updateLore(t));
}