Плагин Minecraft GUI, не способный правильно проверять чары в 1.13.2 - Документ № 501 - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь сделать плагин Chest GUI.вот код, который у меня есть

if (block.getType() == Material.ENCHANTING_TABLE) { //create the GUI
e.setCancelled(true);
//Line 1
if (e.getItem().getType() == Material.AIR) {
    e.setCancelled(true);
    Common.tell(player, "&c&l(!)&c Please hold an item in your hand!");
}

System.out.println(listOfAllowedItems);
System.out.println(e.getItem());
System.out.println(enchant);
if (enchant.isEmpty() && !listOfAllowedItems.contains(enchant.toString()))
{
    Common.tell(player, "&c&l(!)&c This item cannot not be &d&nEnchanted!");
}
if (listOfAllowedItems.contains(enchant.toString()) && !listOfAllowedItems.isEmpty()) {
    final Map<Enchantment, Integer> enchantments = e.getItem().getEnchantments();
    System.out.println(enchantments);
    if (enchantments.keySet() == null || enchantments.isEmpty() == true) {
        inventory.setItem(0, protection1);
        inventory.setItem(1, protection2);
        inventory.setItem(2, protection3);
        player.openInventory(inventory);
    }
    if (e.getItem().containsEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL) && e.getItem().getEnchantmentLevel(Enchantment.PROTECTION_ENVIRONMENTAL) == 1); {
        inventory.setItem(1, protection2);
        player.openInventory(inventory);
    }
    if (e.getItem().containsEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL) && e.getItem().getEnchantmentLevel(Enchantment.PROTECTION_ENVIRONMENTAL) == 2); {
        inventory.setItem(2, protection3);
        player.openInventory(inventory);
    }
}
else {
    Common.tell(player, "&c&l(!) Error! &cPlease notify a &nmember of staff&c and cite error FSP.EnchGUI.Failure");
}

Здесь listOfAllowedItems печатает список разрешенных элементов.e = событие взаимодействия игрока.Enchant = Enchantments предмета.

Проблема в том, что litsOfAllowedItems никогда не содержит enchant.toString ().и операторы if оказываются совершенно ошибочными.

Вот фрагмент консоли, когда я щелкаю правой кнопкой мыши и зачаровываю таблицу с предметом.

[23:05:49 INFO]: [DIAMOND_SWORD, DIAMOND_CHESTPLATE, DIAMOND_HELMET, DIAMOND_BOOTS, DIAMOND_LEGGINGS]
[23:05:49 INFO]: ItemStack{DIAMOND_CHESTPLATE x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, enchants={PROTECTION_ENVIRONMENTAL=1}}}
[23:05:49 INFO]: {Enchantment[minecraft:protection, PROTECTION_ENVIRONMENTAL]=1}

Я пытаюсь проверить, Ifпредмет находится в списке разрешенных предметов (и он не пуст), тогда, если у него есть Prot 1, то сделайте это, Prot 2 сделает это, и никакие чары не сделают что-то еще.Он также должен проверить, является ли элемент air / null.

В приведенном выше фрагменте я четко использовал DiamondChestplate, который зачарован с Prot 1. В другом случае, если я использую датчик дневного света и я щелкаю правой кнопкой мышиблок.Оба

Common.tell(player, "&c&l(!) Error! &cPlease notify a &nmember of staff&c and cite error FSP.EnchGUI.Failure")

and 

 Common.tell(player, "&c&l(!)&c This item cannot not be &d&nEnchanted!")

огонь.

...