下面列出了org.bukkit.event.inventory.InventoryClickEvent#getWhoClicked ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.isCancelled()) {
return;
}
if (event.getClickedInventory() == null) {
return;
}
if (event.getClickedInventory().getType() == InventoryType.PLAYER) {
Player p = (Player) event.getWhoClicked();
if (Main.isPlayerInGame(p)) {
GamePlayer gPlayer = Main.getPlayerGameProfile(p);
Game game = gPlayer.getGame();
if (game.getStatus() == GameStatus.WAITING || gPlayer.isSpectator) {
event.setCancelled(true);
}
}
}
}
@Override
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
if (e.getInventory().equals(getInventory())) {
e.setCancelled(true);
if (e.getClickedInventory() == null || !e.getClickedInventory().equals(getInventory())) return;
Player p = (Player) e.getWhoClicked();
for(Inventories.Item item : IridiumSkyblock.getInventories().menu.keySet()){
if(item.slot==e.getSlot()){
p.closeInventory();
Bukkit.getServer().dispatchCommand(e.getWhoClicked(), IridiumSkyblock.getInventories().menu.get(item));
return;
}
}
}
}
@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 checkInventoryClick(final InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player) {
MatchPlayer player = this.match.getPlayer((Player) event.getWhoClicked());
if (player == null) {
return;
}
// we only cancel when the view is a chest because the other views tend to crash
if (!allowedInventoryType(event.getInventory().getType())) {
// cancel the click if the player cannot interact with the world or if the match has just
// started
if (!player.canInteract()
|| (player.getMatch().isRunning()
&& TimeUtils.isShorterThan(player.getMatch().getDuration(), CHEST_PROTECT_TIME))) {
event.setCancelled(true);
}
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent e) {
HumanEntity human = e.getWhoClicked();
if (human instanceof Player && e.getInventory() instanceof CraftingInventory) {
final Player player = (Player) human;
if (e.getCurrentItem() != null) {
if (ArmorType.isArmor(e.getCurrentItem().getTypeId())) {
sendDelayedArmorUpdate(player);
return;
}
}
if (e.getRawSlot() >= 5 && e.getRawSlot() <= 8) {
sendDelayedArmorUpdate(player);
}
}
}
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.isCancelled()) {
return;
}
if (event.getClickedInventory() == null) {
return;
}
if (event.getClickedInventory().getType() == InventoryType.PLAYER) {
Player p = (Player) event.getWhoClicked();
if (Main.isPlayerInGame(p)) {
GamePlayer gPlayer = Main.getPlayerGameProfile(p);
Game game = gPlayer.getGame();
if (game.getStatus() == GameStatus.WAITING || gPlayer.isSpectator) {
event.setCancelled(true);
}
}
}
}
@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) {
InventoryMenu menu = (InventoryMenu) inv.getHolder();
event.setCancelled(true);
MenuIcon icon = slots.get(event.getSlot());
if (icon != null) {
icon.onClick(player);
player.closeInventory();
}
}
}
}
@EventHandler
public void onAdminMenuClick(InventoryClickEvent e) {
Inventory inv = e.getInventory();
Player player = (Player) e.getWhoClicked();
if (inv != null && e.getView().getTitle().equals(Methods.sanitizeColor("&4&lAdmin Keys"))) {
e.setCancelled(true);
if (!Methods.permCheck(player, "admin")) {
player.closeInventory();
return;
}
//Added the >= due to an error about a raw slot set at -999.
if (e.getRawSlot() < inv.getSize() && e.getRawSlot() >= 0) {//Clicked in the admin menu.
ItemStack item = inv.getItem(e.getRawSlot());
if (cc.isKey(item)) {
Crate crate = cc.getCrateFromKey(item);
if (e.getAction() == InventoryAction.PICKUP_ALL) {
player.getInventory().addItem(crate.getKey());
} else if (e.getAction() == InventoryAction.PICKUP_HALF) {
cc.addKeys(1, player, crate, KeyType.VIRTUAL_KEY);
String name = null;
ItemStack key = crate.getKey();
if (key.hasItemMeta() && key.getItemMeta().hasDisplayName()) {
name = key.getItemMeta().getDisplayName();
}
player.sendMessage(Methods.getPrefix() + Methods.color("&a&l+1 " + (name != null ? name : crate.getName())));
}
}
}
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player && event.getInventory().getHolder() instanceof MenuHolder) {
event.setCancelled(true);
((MenuHolder) event.getInventory().getHolder()).getMenu().onInventoryClick(event);
}
}
@EventHandler
public void onClick(InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
Inventory inv = player.getOpenInventory().getTopInventory();
for (Menu menu : menus.values()) {
if (menu.getInventory().getName().equals(inv.getName())) {
e.setCancelled(true);
menu.click(player, e.getCurrentItem());
}
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerInteractInventoryClick(InventoryClickEvent event) {
final HumanEntity player = event.getWhoClicked();
GDCauseStackManager.getInstance().pushCause(player);
if (!GDFlags.INTERACT_INVENTORY_CLICK || event.getClickedInventory() == null || !GriefDefenderPlugin.getInstance().claimsEnabledForWorld(player.getWorld().getUID())) {
return;
}
GDTimings.PLAYER_INTERACT_INVENTORY_CLICK_EVENT.startTiming();
final Location location = player.getLocation();
final GDClaim claim = this.dataStore.getClaimAt(location);
final ItemStack cursorItem = event.getCursor();
final Inventory source = event.getInventory();
final ItemStack target = event.getCurrentItem();
if (GriefDefenderPlugin.isTargetIdBlacklisted(Flags.INTERACT_INVENTORY_CLICK.getName(), target, player.getWorld().getUID())) {
GDTimings.PLAYER_INTERACT_INVENTORY_CLICK_EVENT.stopTiming();
return;
}
final GDPermissionUser user = PermissionHolderCache.getInstance().getOrCreateUser(player.getUniqueId());
final Tristate result = GDPermissionManager.getInstance().getFinalPermission(event, location, claim, Flags.INTERACT_INVENTORY_CLICK, source, target, user, TrustTypes.CONTAINER, true);
if (result == Tristate.FALSE) {
final Component message = GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.PERMISSION_INTERACT_ITEM,
ImmutableMap.of(
"player", claim.getOwnerDisplayName(),
"item", ItemTypeRegistryModule.getInstance().getNMSKey(target)));
GriefDefenderPlugin.sendClaimDenyMessage(claim, player, message);
event.setCancelled(true);
}
GDTimings.PLAYER_INTERACT_INVENTORY_CLICK_EVENT.stopTiming();
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onInventoryClick(final InventoryClickEvent event) {
if (event instanceof InventoryCreativeEvent
|| event.getWhoClicked() != event.getInventory().getHolder()
|| !ArmorType.isArmorSlot(event.getSlot())) {
return;
}
MatchPlayer player = this.match.getPlayer((Player) event.getWhoClicked());
if (player == null
|| !this.lockedArmorSlots.containsEntry(
player, ArmorType.byInventorySlot(event.getSlot()))) {
return;
}
switch (event.getAction()) {
case PICKUP_ALL:
case PICKUP_HALF:
case PICKUP_SOME:
case PICKUP_ONE:
case SWAP_WITH_CURSOR:
case MOVE_TO_OTHER_INVENTORY:
case DROP_ONE_SLOT:
case DROP_ALL_SLOT:
case HOTBAR_SWAP:
case HOTBAR_MOVE_AND_READD:
case COLLECT_TO_CURSOR:
event.setCancelled(true);
player.sendWarning("This piece of armor cannot be removed", true);
break;
}
}
public void onClick(InventoryClickEvent event) {
ItemStack currentItem = event != null ? event.getCurrentItem() : null;
if (event == null || currentItem == null) {
return; // Bail out, nothing we can do anyway
}
Player p = (Player) event.getWhoClicked();
ItemMeta meta = currentItem.getItemMeta();
SkullMeta skull = meta instanceof SkullMeta ? (SkullMeta) meta : null;
if (!(event.getInventory().getHolder() instanceof UltimateHolder))
return;
String inventoryName = stripFormatting(((UltimateHolder) event.getInventory().getHolder()).getTitle());
int slotIndex = event.getSlot();
int menuSize = event.getInventory().getSize();
if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Group Members")))) {
onClickPartyMenu(event, currentItem, p, meta, skull, slotIndex);
} else if (inventoryName.contains(stripFormatting(tr("Permissions")))) {
onClickPermissionMenu(event, currentItem, p, inventoryName, slotIndex);
} else if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Biome")))) {
onClickBiomeMenu(event, currentItem, p, slotIndex);
} else if (inventoryName.contains(stripFormatting(tr("Challenge Menu")))) {
onClickChallengeMenu(event, currentItem, p, inventoryName);
} else if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Log")))) {
onClickLogMenu(event, p, slotIndex);
} else if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Menu")))) {
onClickMainMenu(event, currentItem, p, slotIndex);
} else if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Create Menu")))) {
onClickCreateMenu(event, p, meta, slotIndex, menuSize);
} else if (inventoryName.equalsIgnoreCase(stripFormatting(tr("Island Restart Menu")))) {
onClickRestartMenu(event, p, meta, slotIndex, currentItem);
} else if (inventoryName.startsWith(stripFormatting(tr("Config:"))) && event.getWhoClicked() instanceof Player) {
plugin.getConfigMenu().onClick(event);
}
}
@EventHandler(ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent event) {
if (!(event.getWhoClicked() instanceof Player)) {
return;
}
if (!event.getWhoClicked().equals(player)) {
return;
}
event.setCancelled(true);
if (processingLastClick) return;
int slot = event.getRawSlot();
// calculate the option number
if (slot % 9 > 1) {
int row = (int) Math.floor(slot / 9);
// raw column number minus two columns (npc head an empty space)
// and plus one (because options are indexed starting with 1)
int col = (slot % 9) - 2 + 1;
// each row can have 7 options, add column number to get an option
int choosen = (row * 7) + col;
String message = options.get(choosen);
if (message != null) {
processingLastClick = true;
if (printMessages) conv.sendMessage(answerPrefix + message);
conv.passPlayerAnswer(choosen);
}
}
}
@EventHandler
public void onInventoryClick(final InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
if (SkyWarsReloaded.getCfg().protectLobby() && Util.get().isSpawnWorld(player.getWorld())) {
if (!player.hasPermission("sw.alterlobby") && !SkyWarsReloaded.getIC().has(player)) {
e.setCancelled(true);
}
}
}
@EventHandler
public void onInventoryClick(final InventoryClickEvent e) {
Player player = (Player) e.getWhoClicked();
if (Util.get().isSpawnWorld(player.getWorld())) {
if (SkyWarsReloaded.getCfg().protectLobby()) {
if (!player.hasPermission("sw.alterlobby") && !SkyWarsReloaded.getIC().has(player)) {
e.setCancelled(true);
}
}
int rawSlot = e.getRawSlot();
if (e.getInventory().equals(joinMenu) && rawSlot < joinMenu.getSize() && rawSlot >= 0) {
e.setCancelled(true);
SWRServer server = SWRServer.getServerByDisplayName(ChatColor.stripColor(SkyWarsReloaded.getNMS().getItemName(e.getCurrentItem())));
if (server == null) {
return;
}
if (server.getMatchState() != MatchState.WAITINGSTART) {
Util.get().playSound(player, player.getLocation(), SkyWarsReloaded.getCfg().getErrorSound(), 1, 1);
return;
}
if (player.hasPermission("sw.join")) {
if (player!= null) {
if (server.getMatchState() == MatchState.WAITINGSTART && server.getPlayerCount() < server.getMaxPlayers()) {
player.closeInventory();
server.setPlayerCount(server.getPlayerCount() + 1);
server.updateSigns();
SkyWarsReloaded.get().sendBungeeMsg(player, "Connect", server.getServerName());
}
}
}
}
}
}
@EventHandler(ignoreCancelled = true)
public void onShiftSmelting(InventoryClickEvent event) {
if (event.getInventory().getType().equals(InventoryType.FURNACE) && event.getRawSlot() == 2
&& event.getClick().equals(ClickType.SHIFT_LEFT) && event.getWhoClicked() instanceof Player) {
String playerID = PlayerConverter.getID((Player) event.getWhoClicked());
if (containsPlayer(playerID))
event.setCancelled(true);
}
}
@EventHandler
public void onInventoryClick(final InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player) {
GameMap gMap = MatchManager.get().getPlayerMap((Player) event.getWhoClicked());
if (gMap == null) {
ItemStack item;
ItemStack item2;
if (event.getClick().equals(ClickType.NUMBER_KEY)) {
item = event.getWhoClicked().getInventory().getItem(event.getHotbarButton());
item2 = event.getCurrentItem();
} else {
item = event.getCurrentItem();
item2 = event.getCurrentItem();
}
if (item != null && (item.equals(SkyWarsReloaded.getIM().getItem("optionselect"))
|| item.equals(SkyWarsReloaded.getIM().getItem("joinselect"))
|| item.equals(SkyWarsReloaded.getIM().getItem("spectateselect")))
|| item2 != null && (item2.equals(SkyWarsReloaded.getIM().getItem("optionselect"))
|| item2.equals(SkyWarsReloaded.getIM().getItem("joinselect"))
|| item2.equals(SkyWarsReloaded.getIM().getItem("spectateselect"))) ) {
event.setCancelled(true);
}
} else {
if (gMap.getMatchState().equals(MatchState.WAITINGSTART) || gMap.getMatchState().equals(MatchState.ENDING)) {
event.setCancelled(true);
}
}
}
}
@Override
public boolean onClick(InventoryClickEvent e) {
if (!(e.getInventory().getHolder() instanceof UltimateHolder) ||
!stripFormatting(((UltimateHolder) e.getInventory().getHolder()).getTitle()).equals(stripFormatting(getTitle()))) {
return false;
}
Player player = (Player) e.getWhoClicked();
ItemStack returnItem = e.getInventory().getItem(0);
String configName = returnItem.getItemMeta().getLore().get(0);
String path = returnItem.getItemMeta().getLore().get(1);
int page = getPage(returnItem.getItemMeta().getLore().get(2));
ItemStack currentItem = e.getCurrentItem();
boolean isCaps = e.getInventory().getItem(capsIndex).getItemMeta().getDisplayName().equals(tr("Caps On"));
if (currentItem != null) {
YmlConfiguration config = FileUtil.getYmlConfiguration(configName);
String value = config.getString(path);
if (e.getSlot() == capsIndex) {
// Toggle caps
ItemStack capsItem = isCaps ? capsOff.clone() : capsOn.clone();
ItemMeta meta = capsItem.getItemMeta();
meta.setLore(Arrays.asList(value));
capsItem.setItemMeta(meta);
e.getInventory().setItem(capsIndex, capsItem);
isCaps = !isCaps;
} else if (e.getSlot() == backspaceIndex) {
if (value.length() > 0) {
value = value.substring(0, value.length() - 1);
config.set(path, value);
config.set("dirty", true);
}
} else if (e.getSlot() == returnIndex) {
player.openInventory(parent.createEditMenu(configName, path, page));
return true;
} else if (currentItem.getType() == Material.PLAYER_HEAD) {
String character = stripFormatting(currentItem.getItemMeta().getDisplayName());
if (character.isEmpty()) {
character = " ";
}
value += isCaps ? character.toUpperCase() : character.toLowerCase();
config.set(path, value);
config.set("dirty", true);
}
// re-load the ui (refresh)
player.openInventory(createEditMenuInternal(configName, path, page, isCaps));
}
return true;
}
/**
* Check if their item is on the vault blacklist
*
* @param event the click event
*/
@EventHandler
public void onItemClick(InventoryClickEvent event) {
// Check if the event was already cancelled before going through this all
if (event.isCancelled()) {
return;
}
// get the player who is clicking
Player player = (Player) event.getWhoClicked();
// check if they are in the list of open vaults
if (!guildHandler.getOpened().contains(player))
return;
// get the item clicked
ItemStack item = event.getCurrentItem();
// check if null
if (item == null)
return;
// set cancelled if it contains material name
event.setCancelled(settingsManager.getProperty(GuildVaultSettings.BLACKLIST_MATERIALS).stream().anyMatch(m ->
m.equalsIgnoreCase(item.getType().name())));
// check if event is cancelled, if not, check name
if (event.isCancelled()) {
guilds.getCommandManager().getCommandIssuer(player).sendInfo(Messages.VAULTS__BLACKLISTED);
return;
}
// Make sure item has item meta
if (!item.hasItemMeta())
return;
// Check if it has a display name
if (item.getItemMeta().hasDisplayName()) {
// set cancelled if contains name
event.setCancelled(settingsManager.getProperty(GuildVaultSettings.BLACKLIST_NAMES).stream().anyMatch(m ->
m.equalsIgnoreCase(ACFBukkitUtil.removeColors(item.getItemMeta().getDisplayName()))));
}
// check if event is cancelled
if (event.isCancelled()) {
guilds.getCommandManager().getCommandIssuer(player).sendInfo(Messages.VAULTS__BLACKLISTED);
return;
}
// check if item has lore
if (!item.getItemMeta().hasLore())
return;
// set cancelled if contains lore
List<String> lore = item.getItemMeta().getLore().stream()
.map(ACFBukkitUtil::removeColors).collect(Collectors.toList());
// loop through string list
for (String check : settingsManager.getProperty(GuildVaultSettings.BLACKLIST_LORES)) {
// check if the lore contains it
if (!check.equalsIgnoreCase("")) {
if (lore.stream().anyMatch(l -> l.contains(check))) {
// cancel the event
event.setCancelled(true);
break;
}
}
}
// check if event is cancelled, if not, check name
if (event.isCancelled()) {
guilds.getCommandManager().getCommandIssuer(player).sendInfo(Messages.VAULTS__BLACKLISTED);
}
}