Напоминание, этот плагин сам работает, просто дает ошибки при ударе.PlayerInteractEvent нарушение при попадании Spigot
Я пытаюсь полностью изменить, как сундуки работают в minecraft. В моем плагине, когда вы открываете их, они дают вам элемент, а затем исчезают, что работает, но есть проблема.
Я вызываю PlayerInteractEvent и использую оператор if, чтобы увидеть, является ли тип блока сундуком, если он тогда будет отменять событие, заставить сундук исчезнуть и дать игроку элемент. Но поскольку основной класс передает события классу ChestRewards, он также пропускает событие удара или действие перфорации из PlayerInteractEvent, которое ожидалось, но именно поэтому я использовал оператор if только для использования переданного события, если блок Тип - сундук. Но, похоже, что ошибки в консоли не могут проходить событие, пожалуйста, помогите!
@EventHandler
public void catchChestOpen(PlayerInteractEvent event) {
Entity p = event.getPlayer();
Player player = (Player) p;
if (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.PHYSICAL || event.getAction() == Action.LEFT_CLICK_BLOCK){
// TODO: 2016-12-06 Nothing
}
if (event.getClickedBlock().getType() == Material.CHEST) {
event.getClickedBlock().setType(Material.AIR);
event.setCancelled(true);
int rando = (int) (Math.random() * 10);
//---------------------------------------------------------------------------------
if (rando == 1) {
ItemStack Axe = new ItemStack(Material.DIAMOND_AXE, 1);
ItemMeta meta = Axe.getItemMeta();
List<String> lores = new ArrayList<String>();
lores.add(ChatColor.DARK_PURPLE + "The axe of a long lost survivor");
meta.setDisplayName(ChatColor.DARK_RED + "Survivor Axe");
meta.addEnchant(Enchantment.DAMAGE_ALL, 2, true);
meta.addEnchant(Enchantment.DURABILITY, 2, true);
meta.setLore(lores);
Axe.setItemMeta(meta);
Axe.setDurability((short) 800);
player.getInventory().addItem(Axe);
player.sendMessage(ChatColor.GOLD + "You opened a" + ChatColor.AQUA + " RARE " + ChatColor.GOLD + "loot chest!");
}
//---------------------------------------------------------------------------------
if (rando > 1) {
ItemStack IronSword = new ItemStack(Material.IRON_SWORD, 1);
ItemMeta meta2 = IronSword.getItemMeta();
List<String> lores2 = new ArrayList<String>();
lores2.add(ChatColor.DARK_PURPLE + "A reliable iron sword");
meta2.setDisplayName(ChatColor.DARK_RED + "Reliable Iron Sword");
meta2.addEnchant(Enchantment.DURABILITY, 3, true);
meta2.setLore(lores2);
IronSword.setItemMeta(meta2);
IronSword.setDurability((short) 800);
player.getInventory().addItem(IronSword);
player.sendMessage(ChatColor.GOLD + "You opened a loot chest!");
}
//---------------------------------------------------------------------------------
}
}
Это сама ошибка
[09:32:00 ERROR]: Could not pass event PlayerInteractEvent to Apocalypse v1.0
Вы можете разместить StackTrace, который приходит после того, как сообщение «Не удалось передать PlayerInteractEvent событие Апокалипсису v1.0»? – Pokechu22