Помогите Как правильно отследить клик в инвентаре

adodvstudios

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Jenka20091
Мой код:

@EventHandler
public void onClick(InventoryClickEvent e) {
Inventory i = e.getClickedInventory();
int slot = e.getSlot();
Player p = (Player) e.getWhoClicked();
if(i != null) {
if(i.getTitle().equals(menu.getTitle())) {
e.setCancelled(true);
for(String souls : plugin.cfg.getConfigurationSection("Settings.souls").getKeys(false)) {
if(i.getItem(slot).getItemMeta().getDisplayName().equals(plugin.cfg.getString("Settings.souls."+souls+".name"))) {
if(!p.hasPermission("adodvsouls.soul."+souls)) {
p.sendMessage(prefix(plugin.cfg.getString("Messages.noperms")));
} else {
p.sendMessage(prefix(plugin.cfg.getString("Messages.ok")));
SoulApi.spawnSoul(p, souls);
}
}
}
}
}
}

Мой конфиг:
Вот конфиг:
Settings:
removeItem: '&cУбрать духа'
gui: '&0&l&nВыбор духа'
placeholers:
zero: '&cДух не выбран'
souls:
speed:
name: '&b&lஐ &fДух скорости'
url: 'http://textures.minecraft.net/textu...ce414fc33db7b39a9f1a66123fbfceb2ceaf968f46f69'
noperm:
- '&fДаёт вам &bскорость'
- ''
- '&cУ вас нету прав!'
lore:
- '&fДаёт вам &bскорость'
- ''
- '&fВыбрать дух'
effects:
- SPEED
sila:
name: '&c&lஐ &fСила'
url: 'http://textures.minecraft.net/texture/d0d549f367abcbea39252ba275f5c3c1cb16945fcf472123ee26d9c9dd40e'
noperm:
- '&fДаёт вам &cсилу'
- ''
- '&cУ вас нету прав!'
lore:
- '&fДаёт вам &cсилу'
- ''
- '&fВыбрать дух'
effects:
- INCREASE_DAMAGE
Messages:
prefix: '&6Духи &7>> &f'
noperms: '&cНету прав'
ok: '&aПриминяю духа!'


При нажатии ничего не происходит
 
Для работы с гуи советую использовать InventoryHolder, очень полезная вещь
Проверка по строкам тут не будет работать т.к. в конфиге символ &, а в названии айтема (я надеюсь) символ переведен в цветовой код, поэтому делайте проверку по слоту
 
Назад
Верх