ArmorStandListener.java 文件源码

java
阅读 28 收藏 0 点赞 0 评论 0

项目:EditArmorStands 作者:
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onArmorStandClick(PlayerInteractAtEntityEvent event) {
    if (event.getRightClicked() instanceof ArmorStand) {
        PlayerInteractEntityEvent pie = new PlayerInteractEntityEvent(event.getPlayer(), event.getRightClicked());
        plugin.getServer().getPluginManager().callEvent(pie);
        if (pie.isCancelled()) {
            return;
        }

        ArmorStand armorStand = (ArmorStand) event.getRightClicked();

        if (plugin.hasWaitingAction(event.getPlayer())) {
            event.setCancelled(true);
            plugin.calculateAction(event.getPlayer(), armorStand, plugin.getWaitingAction(event.getPlayer()));
            plugin.removeWaitingAction(event.getPlayer());
            return;
        }

        if (plugin.getPersistentAction(event.getPlayer()) != null) {
            event.setCancelled(true);
            plugin.calculateAction(event.getPlayer(), armorStand, plugin.getPersistentAction(event.getPlayer()));
            return;
        }

        if (event.getPlayer().getItemInHand().getType() == Material.NAME_TAG) {
            ItemStack hi = event.getPlayer().getItemInHand();
            if (hi.hasItemMeta() && hi.getItemMeta().hasDisplayName()) {
                if (event.getPlayer().hasPermission("editarmorstands.nametag.name")) {
                    event.setCancelled(true);
                    String name = hi.getItemMeta().getDisplayName();
                    if (event.getPlayer().hasPermission("editarmorstands.nametag.name.colored")) {
                        name = ChatColor.translateAlternateColorCodes('&', name);
                    } else {
                        name = ChatColor.ITALIC + name;
                    }
                    armorStand.setCustomName(name + ChatColor.RESET);
                    armorStand.setCustomNameVisible(true);
                    if (event.getPlayer().getGameMode() != GameMode.CREATIVE) {
                        if (hi.getAmount() > 1) {
                            hi.setAmount(hi.getAmount() - 1);
                        } else {
                            event.getPlayer().setItemInHand(new ItemStack(Material.AIR));
                        }
                        event.getPlayer().updateInventory();
                    }
                    return;
                }
            } else if (event.getPlayer().hasPermission("editarmorstands.nametag.name.clear")) {
                event.setCancelled(true);
                armorStand.setCustomName("");
                armorStand.setCustomNameVisible(false);
                return;
            }

        } else if (!event.getPlayer().isSneaking() && event.getPlayer().hasPermission("editarmorstands.openinventory")) {
            event.setCancelled(true);
            ArmorStandGui gui = new ArmorStandGui(plugin, armorStand, event.getPlayer());
            gui.show();
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号