AnvilListener.java 文件源码

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

项目:DirtyArrows 作者:
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
    if (e.getInventory() instanceof AnvilInventory && e.getWhoClicked() instanceof Player) {
        Player player = (Player) e.getWhoClicked();
        AnvilInventory inv = (AnvilInventory) e.getInventory();
        if (e.getSlot() == 2) {
            ItemStack item = inv.getItem(2);

            if (!item.hasItemMeta()) {
                return;
            }

            if (!item.getItemMeta().hasDisplayName()) {
                return;
            }

            String name = item.getItemMeta().getDisplayName();
            String node = "";

            if ((node = Util.isBastard(name)) == Util.NONE) {
                return;
            }

            int levels = plugin.getConfig().getInt(node + ".levels");

            if (levels < 0) {
                return;
            }

            int required = (player.getGameMode() == GameMode.CREATIVE ? 0 : levels);

            if (player.getLevel() < required) {
                player.sendMessage(Message.NOT_ENOUGH_LEVELS_1);
                player.sendMessage(Message.NOT_ENOUGH_LEVELS_2.replace("%l%", required + ""));
                player.playSound(player.getLocation(), Sound.BAT_HURT, 1L, 1L);
                e.setCancelled(true);
                return;
            }

            player.setLevel(player.getLevel() - required);
            if (player.getGameMode() != GameMode.CREATIVE) {
                player.getInventory().addItem(e.getCurrentItem());
                inv.setItem(0, null);
                player.playSound(player.getLocation(), Sound.ANVIL_USE, 1L, 1L);
                player.closeInventory();
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号