- Баллы
- 1
Код:
@EventHandler
public void booleanPatron(PlayerInteractEvent e) {
if (e.getHand() == EquipmentSlot.HAND) {
boolean itemIsOne = true;
ItemMeta itemInMainHand = e.getPlayer().getInventory().getItemInMainHand().getItemMeta();
if (itemInMainHand == null) return;
if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет")) {
ItemStack item = e.getPlayer().getInventory().getItemInOffHand();
e.setCancelled(item == null || item.getType() != Material.FIREWORK_ROCKET || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета") & !itemIsOne);
}
if (itemInMainHand.getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
ItemStack item = e.getPlayer().getInventory().getItemInOffHand();
e.setCancelled(item == null || item.getType() != Material.CROSSBOW || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет"));
}
}
else {
if (e.getItem() == null) return;
if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет")) {
ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
e.setCancelled(item == null || item.getType() != Material.FIREWORK_ROCKET || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета"));
}
if (e.getItem().getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Пуля для Мушкета")) {
ItemStack item = e.getPlayer().getInventory().getItemInMainHand();
e.setCancelled(item == null || item.getType() != Material.CROSSBOW || !item.getItemMeta().getDisplayName().equals(ChatColor.AQUA + "Мушкет"));
}
}
}
Есть у меня такой код, вкратце он нужен, чтобы вводить мушкет и пулю для него в игру. Этот код проверяет есть ли в левой руке пуля и если есть, то заряжает мушкет, если же нет, то отменяет зарядку. Это работает и если мушкет и пуля в разных руках.
Дело в том, что если пуля лишь одна, то происходит зарядка, после чего в левой руке ничего не остается, из-за чего действие отменяется, так как в левой нет пули. В этот момент эта пуля в мушкете.
Надеюсь, понятно объяснил. Я хочу перед всем этим кодом проверять, заряжен ли мушкет. Если заряжен - то просто возвращать функцию, чтобы действие не отменялось и можно было выстрелить. Видел, что есть CrossbowMeta, пытался ее использовать, но не понимаю как ее функции работают.
Помогите пожалуйста