- Баллы
- 6
Приветствую! Взялся я недавно за написание (первого, потому и столько постов) плагина, добавляющего некоторые "магические" предметы. Чтобы жизнь медом не казалась, они потребляют опыт при использовании. Также плагин добавляет пчелиную броню, частично снижающую расход опыта. Нагрудник снижает на 1, а шлем, нагрудник и ботинки на 2. Ниже код одного из предметов:
public void use5(PlayerInteractEvent e) {
Player player = e.getPlayer();
ItemStack SkullBook = e.getPlayer().getInventory().getItemInMainHand();
ItemStack HoneyArmorC = e.getPlayer().getInventory().getChestplate();
ItemStack HoneyArmorB = e.getPlayer().getInventory().getBoots();
ItemStack HoneyArmorH = e.getPlayer().getInventory().getHelmet();
if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.PRISMARINE_SHARD) return;
if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(!SkullBook.getItemMeta().hasDisplayName()) return;
if(!SkullBook.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + "Осколок Края")) return;
if(e.getPlayer().getExp() == 0) return;
if(e.getAction() != Action.RIGHT_CLICK_BLOCK) e.setCancelled(true);
player.launchProjectile(ShulkerBullet.class, player.getEyeLocation().getDirection());
player.playSound(player.getLocation(), Sound.ENTITY_SHULKER_SHOOT, 8, 1);
player.spawnParticle(Particle.CLOUD, player.getLocation().add(0.5D, 0.5D, 0.5D), 25 , 1.2F, 1.2F, 1.2F);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.AIR) player.giveExp(-5);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник")) player.giveExp(-2);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник") && e.getPlayer().getInventory().getBoots().getType() == Material.GOLDEN_BOOTS && HoneyArmorB.getItemMeta().hasDisplayName() && HoneyArmorB.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиные ботнки") && e.getPlayer().getInventory().getHelmet().getType() == Material.GOLDEN_HELMET && HoneyArmorH.getItemMeta().hasDisplayName() && HoneyArmorH.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный шлем") && e.getPlayer().getExp() >= 0) player.giveExp(-3);
}
Снижение еще +- работает, но без брони опыт вообще не потребляется. Я пытался реализовать через if else, но это ни к чему не привело. Подскажите, пожалуйста, в чем может быть проблема.
public void use5(PlayerInteractEvent e) {
Player player = e.getPlayer();
ItemStack SkullBook = e.getPlayer().getInventory().getItemInMainHand();
ItemStack HoneyArmorC = e.getPlayer().getInventory().getChestplate();
ItemStack HoneyArmorB = e.getPlayer().getInventory().getBoots();
ItemStack HoneyArmorH = e.getPlayer().getInventory().getHelmet();
if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.PRISMARINE_SHARD) return;
if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if(!SkullBook.getItemMeta().hasDisplayName()) return;
if(!SkullBook.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + "Осколок Края")) return;
if(e.getPlayer().getExp() == 0) return;
if(e.getAction() != Action.RIGHT_CLICK_BLOCK) e.setCancelled(true);
player.launchProjectile(ShulkerBullet.class, player.getEyeLocation().getDirection());
player.playSound(player.getLocation(), Sound.ENTITY_SHULKER_SHOOT, 8, 1);
player.spawnParticle(Particle.CLOUD, player.getLocation().add(0.5D, 0.5D, 0.5D), 25 , 1.2F, 1.2F, 1.2F);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.AIR) player.giveExp(-5);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник")) player.giveExp(-2);
if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник") && e.getPlayer().getInventory().getBoots().getType() == Material.GOLDEN_BOOTS && HoneyArmorB.getItemMeta().hasDisplayName() && HoneyArmorB.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиные ботнки") && e.getPlayer().getInventory().getHelmet().getType() == Material.GOLDEN_HELMET && HoneyArmorH.getItemMeta().hasDisplayName() && HoneyArmorH.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный шлем") && e.getPlayer().getExp() >= 0) player.giveExp(-3);
}
Снижение еще +- работает, но без брони опыт вообще не потребляется. Я пытался реализовать через if else, но это ни к чему не привело. Подскажите, пожалуйста, в чем может быть проблема.