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

Помогите Инвентари и продажа по клику

Метки:
Теги Теги
help itemstack plugin spigot 1.16.5
Статус
Закрыто для дальнейших ответов.

Thorgathis

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Thorgathis
Вот такой вопрос хочу что бы игроки моги продовать вещи или покупать иликая но предмету в меню "GUI"

но у меня не работает код ошибок нет

код внизу

Код:
public void onInv(Player p) {
        Inventory inv = Bukkit.createInventory(null, 54, ChatColor.RED +  "GUI");
      
        ItemStack item1 = new ItemStack(Material.DIAMOND_BLOCK);
        ItemMeta item1Meta = item1.getItemMeta();
        ItemStack item2 = new ItemStack(Material.REDSTONE_BLOCK);
        ItemMeta item2Meta = item2.getItemMeta();
      
        item1Meta.setDisplayName("Survival");
        item1.setItemMeta(item1Meta);
        item2Meta.setDisplayName("Creative");
        item2.setItemMeta(item2Meta);
      
        inv.setItem(3, item1);
        inv.setItem(5, item2);
      
        p.openInventory(inv);
    }
    
    
    
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if(cmd.getName().equalsIgnoreCase("gui")) {
            Player player = (Player) sender;
                onInv(player);
        }
        return true;
}
 
Вот такой вопрос хочу что бы игроки моги продовать вещи или покупать иликая но предмету в меню "GUI"

но у меня не работает код ошибок нет

код внизу

Код:
public void onInv(Player p) {
        Inventory inv = Bukkit.createInventory(null, 54, ChatColor.RED +  "GUI");
    
        ItemStack item1 = new ItemStack(Material.DIAMOND_BLOCK);
        ItemMeta item1Meta = item1.getItemMeta();
        ItemStack item2 = new ItemStack(Material.REDSTONE_BLOCK);
        ItemMeta item2Meta = item2.getItemMeta();
    
        item1Meta.setDisplayName("Survival");
        item1.setItemMeta(item1Meta);
        item2Meta.setDisplayName("Creative");
        item2.setItemMeta(item2Meta);
    
        inv.setItem(3, item1);
        inv.setItem(5, item2);
    
        p.openInventory(inv);
    }
  
  
  
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        if(cmd.getName().equalsIgnoreCase("gui")) {
            Player player = (Player) sender;
                onInv(player);
        }
        return true;
}
А что не работает то?
Если ты имел ввиду клики, тогда тебе нужно слушать InventoryClickEvent, проверять инвентарь по которому кликают и реализовать логику покупки/продажи
 
А что не работает то?
Если ты имел ввиду клики, тогда тебе нужно слушать InventoryClickEvent, проверять инвентарь по которому кликают и реализовать логику покупки/продажи
Инвентарь не открывается
 
Ты скорее всего команду не зарегистрировал
 
p.sendmessage("Открыто меню блоков");
Покажи как команду регаешь. предполагаю что тут чтото не так.
if(cmd.getName().equalsIgnoreCase("gui")) {
Ты проверяешь саму команду а не аргумент. Так обычно делают если у тебя 1 екзекутор на несколько команд. Чтобы проверить первый аргумент тебе надо if(args[0].equalsIgnoreCase("gui"))
 
Покажи как команду регаешь. предполагаю что тут чтото не так.

Ты проверяешь саму команду а не аргумент. Так обычно делают если у тебя 1 екзекутор на несколько команд. Чтобы проверить первый аргумент тебе надо if(args[0].equalsIgnoreCase("gui"))
Глупости, commandLabel отвечает за это, а всё что после него уже аргументы. cmd всегда выводит стандарт команду которая в конфиге, a commandLabel ту которую ввёл игрок.
 
Глупости, commandLabel отвечает за это, а всё что после него уже аргументы. cmd всегда выводит стандарт команду которая в конфиге, a commandLabel ту которую ввёл игрок.
Дак он и проверят саму команду а не аргументы к ней. Я и предположил что ошибка тут ибо другого ничего нет.
cmd.getName() вернет саму команду допустим "ban"
 
Дак он и проверят саму команду а не аргументы к ней. Я и предположил что ошибка тут ибо другого ничего нет.
cmd.getName() вернет саму команду допустим "ban"
Скорее всего просто не правильно зарегистрировал команду
 
то что я пытался сделать так как тут сделано у меня не работало

код
InventoryClickEvent
не скину я его удалил
Тебе бы какой-нибудь туториал по баккит апи посмотреть на ютубчике, совсем ведь ничего не знаешь
Давай напечатай нам новый код и покажи, будем разбираться
 
Тебе бы какой-нибудь туториал по баккит апи посмотреть на ютубчике, совсем ведь ничего не знаешь
Давай напечатай нам новый код и покажи, будем разбираться

Код:
public void onClick(InventoryClickEvent e) {
          Player p = (Player) e.getWhoClicked();
        e.getInventory().equals(inv);
        if(e.getCurrentItem().getType() == Material.DIAMOND_BLOCK){
        p.sendMessage("1");
          
        }
    }
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх