Сборки серверов

СливПлатные

Сейчас онлайн

  • DieInCalamity
  • _Doctor_
  • VinPlays
  • takopain
  • LeonPts
  • kerorozsl..
  • estereomance
  • AdonisPacifics
  • ChayShish
  • MrYArg1cH
  • MrHeracles29
  • onehndpercent
  • tabosik1
  • nutelovskiiy
  • gibopa4549
  • loganbodart_
  • Heller123

[СРОЧНО] Помощь с GUI

Статус
Вы не можете ничего здесь написать, потому что тема была закрыта.
A
Всем привет. Я работаю с Spigot 1.19.4 & Java 17. Решил попробовать создавать свои GUI-меню (в будущем это будет плагин на скупщика, так как нормальных я не нашел на просторах интернета..) И у меня возник вопрос, а как именно понимать в каком меню игрок нажал ЛКМ например? (Если я смогу понять, в каком меню было сделано действие - я смогу сделать на него какое-то действие, такой принцип и находится в скупщике)

* ещё раз вопрос *
Как можно понять, в каком именно меню (и в меню ли вообще) совершил действие игрок?
 
Решение
Misterror
Самый надежный способ, это создать кастомный холдер, и присвоить его инвентарю. Затем проверять этого холдера.
Сначала создай новый класс:
Java:
public class MyHolder implements InventoryHolder {

    @Override
    public Inventory getInventory() {
        return null;
    }
}
Создай инвентарь с этим холдером:
Inventory inv = Bukkit.createInventory(new MyHolder(), 9, "Title");
Проверь, что клик был в нашем инвентаре:

Java:
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
    if (item == null || e.getClickedInventory() == null || !(e.getWhoClicked() instanceof Player))
        return;
    Player p = (Player) e.getWhoClicked();
    InventoryHolder holder = e.getClickedInventory().getHolder();
    if(holder...
Misterror
Самый надежный способ, это создать кастомный холдер, и присвоить его инвентарю. Затем проверять этого холдера.
Сначала создай новый класс:
Java:
public class MyHolder implements InventoryHolder {

    @Override
    public Inventory getInventory() {
        return null;
    }
}
Создай инвентарь с этим холдером:
Inventory inv = Bukkit.createInventory(new MyHolder(), 9, "Title");
Проверь, что клик был в нашем инвентаре:

Java:
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
    if (item == null || e.getClickedInventory() == null || !(e.getWhoClicked() instanceof Player))
        return;
    Player p = (Player) e.getWhoClicked();
    InventoryHolder holder = e.getClickedInventory().getHolder();
    if(holder instanceof MyHolder) { // твой холдер
        // твой код
    }
}
 
Решение
Статус
Вы не можете ничего здесь написать, потому что тема была закрыта.
ВерхНиз