Помогите Как привязать исполнение команды к предмету в эвенте

Статус
Закрыто для дальнейших ответов.

Bomber123

Активный участник
Пользователь
Баллы
76
Как привязать исполнение команды к предмету в эвенте InventoryClickEvent.
Типо кликаешь в гуи на предмет соответствие находится в конфиге и исполняется команда.
Если чё всё находится в листах.
Можете предложить идею с листами или с мапами(только не как у @alexandrage(упрощённая версия)).
И как можно больше предложений а то я пару недель обновление не могу доделать.
 
Ну скиньте хоть класс ChestCommnds я его посмотрю и найду то что мне нужно.
Мы за тебя ещё и плагины искать должны? А ты не при*уел?
Я же сказал у меня на 1.8 подлагивает вот сменю себе оперативку с процессором вот тогда и поговорим.
Это сколько же у тебя оперативы? 1 гб? 512 мб?
 
Последнее редактирование:
где он такое сказал?
на 3гб вроде не делают память, только 1-4-8-16 и тд
Вроде, да не вроде. 3 гб может быть¯\_(ツ)_/¯
Хотя бы на ноутах, когда сам ноут забирает оперативную память для использования её интегрированной видеокартой.
P.S.В вк сказал.
 
Дарю https://github.com/alexandrage/Example/blob/master/src/Example/Stack.java
https://github.com/alexandrage/Example/blob/master/src/Example/StackList.java
https://github.com/alexandrage/Example/blob/master/src/Example/Menu.java
https://github.com/alexandrage/Example/blob/master/src/stack.yml
Тебе остается при клике получать номер слота и по нему дергать все что нужно, команду(уже готовая в моем решение) и прочий кастом.
Для особых хромосом покажу что с этим делать.

PHP:
    public Configs cfgs;
    public StackList stl;
    public Menu menu;

    public void onEnable() {
        getServer().getPluginManager().registerEvents(new EventListener(this), this);
        cfgs = new Configs();
        cfgs.add(this, "stack", true);
        CustomConfig cfg = cfgs.get("stack");
        stl = new StackList(cfg.getCfg());
        menu = new Menu(this.stl, "gui");
    }

PHP:
package Example;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;

public class EventListener implements Listener {
    private Main plugin;

    public EventListener(Main instance) {
        this.plugin = instance;
    }

    @EventHandler
    public void on(PlayerInteractEvent e) {
        //TODO проверка открытия.
        Player p = e.getPlayer();
        p.openInventory(this.plugin.menu.getInventory());
    }

    @EventHandler
    public void on(InventoryClickEvent e) {
        if (e.getClickedInventory() == null)
            return;
        if (e.getClickedInventory().getHolder() instanceof Menu) {
            e.setCancelled(true);
            Menu menu = (Menu) e.getClickedInventory().getHolder();
            Stack stack = menu.getStack(e.getSlot());
            if(stack==null) return;
            if(stack.getCommand()==null) return;
            //TODO что то делаем.
            this.plugin.getServer().dispatchCommand(this.plugin.getServer().getConsoleSender(), stack.getCommand());
        }
    }
}
За код вообще огромное спасибо, но на 1.5.2 нет ItemFlag и описание в этом случае вообще не к чему ну в любом случае спс.
 
Вообщем не хочу писать то что вы предложили. Как мне посоветовал @Rider3217 я лучше получу базовые знания о Java а потом буду свои шедевры писать.
 
Ближайший месяц ну или в лучшем (для меня) случае неделю меня не будет на этом форуме.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх