- Баллы
- 61
Добрый день! Как отловить момент одевания брони и выдать эффект игроку, если на любой части брони (Шлем/нагрудник/штаны/ботинки) есть определённая часть лора?
Сделал такой код, но если у игрока изначально была одета броня, то потом эффект остается и без брони.
Сделал такой код, но если у игрока изначально была одета броня, то потом эффект остается и без брони.
PHP:
@EventHandler
public void Nesokra(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();
if(!e.getSlotType().equals(SlotType.ARMOR)) {
return;
}
ItemStack i = e.getCurrentItem();
String t = i.getType().name();
if(i == null ||!i.hasItemMeta()) {
return;
}
if( !t.contains("HELMET") && !t.contains("BOOTS") && !t.contains("LEGGINGS") && !t.contains("CHESTPLATE")) {
return;
}
p.sendMessage(String.valueOf(e.getSlot()));
ItemMeta meta = e.getCurrentItem().getItemMeta();
final List<String> lore = meta.getLore();
for(String s: lore) {
if(s.contains("Ключевое_Слово")) {
String str = s.replace(ChatColor.AQUA + "Ключевое_Слово", "");
p.sendMessage(str);
if(str.equals("III")) {
if(p.getInventory().getHelmet().equals(i) || p.getInventory().getChestplate().equals(i) ||
p.getInventory().getLeggings().equals(i) || p.getInventory().getBoots().equals(i)) {
p.addPotionEffect(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 99999, 1));
return;
}
if(p.hasPotionEffect(PotionEffectType.DAMAGE_RESISTANCE)) {
p.removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE);
} return;
}
}
}
}