- Баллы
- 61
Добрый день! Я пишу свой первый плагин, и у меня снова проблема. Мой плагин добавляет конфеты, и при съедании этих конфет, на игрока должны накладываться эффекты. Чтобы проверить, какую конфету съел игрок, и было ли это вообще конфетой, я проверяю lore предмета. У меня в lore везде по 4 строчки. И если я проверяю только одну, то в итоге ничего не происходит. Я попробовал убрать из lore все строчки кроме одной, и тогда всё стало работать. Я раньше не использовал проверку на lore, и не знаю, должно ли быть так, как у меня всё это происходит, или нет? Если так и должно быть, то что тогда делать, как проверять все строчки сразу, а если нет, то в чём ошибка?
Код Проверки:
Lore накладываю вот так:
В интернете ничего не нашёл. Заранее спасибо!
Код Проверки:
Код:
ItemStack item = new ItemStack(Material.APPLE); //Создаю конфету
Код:
@EventHandler
public void onSweetEat(PlayerItemConsumeEvent i) {
Player r = i.getPlayer(); //Получаю игрока
PotionEffectType heal = PotionEffectType.REGENERATION; //Список эффектов
PotionEffectType strong = PotionEffectType.INCREASE_DAMAGE;
PotionEffectType speed = PotionEffectType.SPEED;
PotionEffectType jump = PotionEffectType.JUMP;
PotionEffectType fire = PotionEffectType.FIRE_RESISTANCE;
PotionEffectType water = PotionEffectType.WATER_BREATHING;
if(i.getItem().isSimilar(item)) { //Проверяю, что это нужный предмет
if(i.getItem().getItemMeta().hasLore() == true) { //Проверяю, что у него есть lore
if(i.getItem().getItemMeta().getLore().contains(ChatColor.YELLOW + "" + ChatColor.BOLD + "Эта вкусная конфетка")) { //Проверяю, есть ли нужная строка
if(!(r.hasMetadata("AlreadyEaten"))) { //Проверяю, не была ли конфета съедена до этого
r.addPotionEffect(new PotionEffect(heal, 3600, 2)); //Накладываю эффекты
r.addPotionEffect(new PotionEffect(strong, 3600, 2));
r.addPotionEffect(new PotionEffect(speed, 3600, 1));
r.setMetadata("AlreadyEaten", new FixedMetadataValue(plugin, true)); //Устанавливаю, что конфета теперь съедена
return;
} else if (r.hasMetadata("AlreadyEaten")) {
if(!(r.hasPermission("sweets.newsweet"))) {
r.getInventory().remove(item);
r.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Вы уже скушали конфету новичка!");
r.setMetadata("AlreadyEaten", new FixedMetadataValue(plugin, true));
return;
} else if(r.hasPermission("sweets.newsweet")) {
r.addPotionEffect(new PotionEffect(heal, 3600, 2));
r.addPotionEffect(new PotionEffect(strong, 3600, 2));
r.addPotionEffect(new PotionEffect(speed, 3600, 1));
r.setMetadata("AlreadyEaten", new FixedMetadataValue(plugin, true));
return;
}
}
}
} else {
return;
}
}
Код:
@EventHandler
public void join(PlayerJoinEvent e) {
Player p = e.getPlayer(); //Получаю игрока
Boolean s = plugin.getConfig().getBoolean("sweets.joinsweet"); //Здесь проверяю разрешение в конфиге
if(s == true) {
if(!(p.hasPlayedBefore())) { //Если играет в первый раз
ItemMeta meta = item.getItemMeta(); //Получаю meta
meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "Целебная Конфетка"); //Устанавливаю название
ArrayList<String> lore = new ArrayList<String>(); //Создаю lore
lore.add(ChatColor.YELLOW + "" + ChatColor.BOLD + "Эта вкусная конфетка");
lore.add(ChatColor.WHITE + "" + ChatColor.BOLD + "вылечит ваше здоровье,");
lore.add(ChatColor.YELLOW + "" + ChatColor.BOLD + "прибавит силы, и");
lore.add(ChatColor.WHITE + "" + ChatColor.BOLD + "даст новое дыхание!");
meta.setLore(lore); //Устанавливаю lore
item.setItemMeta(meta); //Устанавливаю meta
p.getInventory().addItem(item); //Выдаю предмет
}
}