QuestManager.java 文件源码

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

项目:QuestManager 作者:
@EventHandler(priority = EventPriority.MONITOR)
public void onInventoryClick(InventoryClickEvent e){

    if (e.isCancelled() || !(e.getWhoClicked() instanceof Player)) {
        return;
    }

    if (!(e.getInventory() instanceof AnvilInventory)) {
        return;
    }

    Player p = (Player) e.getWhoClicked();
    if (!QuestManagerPlugin.questManagerPlugin.getPluginConfiguration().getWorlds().contains(
            p.getWorld().getName())) {
        return;
    }
    AnvilInventory inv = (AnvilInventory) e.getInventory();

    int rawSlot = e.getSlot();

    if(rawSlot != 2){
        return;
    }
    if (inv.getItem(2) == null) {
        return;
    }
    //trying to finish it. Just compare name from slot 0 to slot 2 and make sure the same
    ItemStack left = inv.getItem(0);
    ItemStack right = inv.getItem(2);

    //first check: left has nothing, right should have nothing
    if ( (!left.hasItemMeta() && right.hasItemMeta() && right.getItemMeta().hasDisplayName())) {
        e.setCancelled(true);
        return;
    }
    //second check: the name has changed
    if (left.hasItemMeta() && left.getItemMeta().hasDisplayName()) { //we odn't need to make sure the right does cause it always will
        if (!left.getItemMeta().getDisplayName().equals(right.getItemMeta().getDisplayName())) {
            e.setCancelled(true);
            return;
        }
    }
    //last check: left has meta, no name but right does
    if (left.hasItemMeta() && !left.getItemMeta().hasDisplayName() && right.getItemMeta().hasDisplayName()) {
        e.setCancelled(true);
        return;
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号