Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Lore из поднимаемой вещи

Tyzun

Старожил
Баллы
153
Имя в Minecraft
_Tyzun_
Подскажите что я сделал не так:
Код:
@EventHandler
public void nodrop(PlayerPickupItemEvent e){
    if (e.isCancelled()) return;
    Player p = e.getPlayer();
    ItemStack i = (ItemStack) e.getItem();
    List<String> lore = i.getItemMeta().getLore();
    if(!p.hasPermission("vp.vip") && lore.contains("VIP")){
        e.setCancelled(true);
    }
}
и можно ли вообше добыть lore в таком эвенте?
 
Tyzun, в чем проблема? Подозреваю NPE при попытке поднять обычные вещи.
Нужно проверять существование ItemMeta и Lore:

i.hasItemMeta()
i.getItemMeta().hasLore()
 
Проблема в том, что игрокбез права может поднимать и то, и то
Вот полный код:
Код:
package ua.tyzun.vp;

import java.util.List;


import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class vp extends JavaPlugin implements Listener {
@Override
public void onEnable(){
    getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void nodrop(PlayerPickupItemEvent e){
    if (e.isCancelled()) return;
    Player p = e.getPlayer();
    ItemStack i = (ItemStack) e.getItem();
    List<String> lore = i.getItemMeta().getLore();
    if(!p.hasPermission("vp.vip") && lore.contains("VIP")){
        e.setCancelled(true);
    }
}
}
 
Tyzun, виповский предмет как создается? Название "VIP" случайно не в цвете?
 
Через Essentials, фиолетовый цвет
Значит в сравниваемой строке должен тоже присутствовать цвет. Или же, наоборот, от него перед сравнением нужно избавляться.

Ну и плюс Ission верно заметил.
 
Значит в сравниваемой строке должен тоже присутствовать цвет. Или же, наоборот, от него перед сравнением нужно избавляться.

Ну и плюс Ission верно заметил.
Фиолетовый увет -- цвет lore по умолчанию. Так же на сколько я знаю, при contains игнорирует цвет.
Когда я создавал что-то подобное, я воспользовался тем, что текст распологался на строго фиксированом месте(на нулевой, первой или последней строчке).
 

Поделиться этой страницей

Назад
Верх