Помогите Не работает PlayerInteractEvent

  • Автор темы Автор темы Kloper
  • Дата начала Дата начала

Kloper

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
f3azzy
Хочу сделать что то типо инструментов для админов, всё написал, ошибок в эклипсе и в консоле нету, но ничего не работает

Вот код:

Код:
    @EventHandler
    public void toolsAdmin(PlayerInteractEvent e) {
        
        Player p = e.getPlayer();
        if (!(e.getAction() == Action.RIGHT_CLICK_AIR)) return;
        if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.BLAZE_ROD) return;
            ItemStack ItemHand = p.getInventory().getItemInMainHand();
            if(!ItemHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l0 minutes§8§l]")) {
        
            iToolsJail = Bukkit.createInventory(p, 9, "§5§lJail Tools!");
            
            ItemStack FiveM = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta FiveMeta = FiveM.getItemMeta();
            FiveMeta.setDisplayName("§6§l15 minutes");
            FiveM.setItemMeta(FiveMeta);
            
            ItemStack ThereTen = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta TheretenMe = ThereTen.getItemMeta();
            TheretenMe.setDisplayName("§6§l30 minutes");
            ThereTen.setItemMeta(TheretenMe);
            
            ItemStack Hour = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta HourMeta = Hour.getItemMeta();
            HourMeta.setDisplayName("§6§l60 minutes");
            Hour.setItemMeta(HourMeta);
            
            iToolsJail.setItem(2, FiveM);
            iToolsJail.setItem(4, ThereTen);
            iToolsJail.setItem(6, Hour);
            
            p.openInventory(iToolsJail);
        
        }
            
            if(!ItemHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l15 minutes§8§l]")) {
                
                iToolsJail = Bukkit.createInventory(p, 9, "§5§lJail Tools!");
                
                ItemStack FiveM = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta FiveMeta = FiveM.getItemMeta();
                FiveMeta.setDisplayName("§6§l15 minutes");
                FiveM.setItemMeta(FiveMeta);
                
                ItemStack ThereTen = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta TheretenMe = ThereTen.getItemMeta();
                TheretenMe.setDisplayName("§6§l30 minutes");
                ThereTen.setItemMeta(TheretenMe);
                
                ItemStack Hour = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta HourMeta = Hour.getItemMeta();
                HourMeta.setDisplayName("§6§l60 minutes");
                Hour.setItemMeta(HourMeta);
                
                iToolsJail.setItem(2, FiveM);
                iToolsJail.setItem(4, ThereTen);
                iToolsJail.setItem(6, Hour);
                
        }       
            
        if(!ItemHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l30 minutes§8§l]")) {
                
                iToolsJail = Bukkit.createInventory(p, 9, "§5§lJail Tools!");
                
                ItemStack FiveM = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta FiveMeta = FiveM.getItemMeta();
                FiveMeta.setDisplayName("§6§l15 minutes");
                FiveM.setItemMeta(FiveMeta);
                
                ItemStack ThereTen = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta TheretenMe = ThereTen.getItemMeta();
                TheretenMe.setDisplayName("§6§l30 minutes");
                ThereTen.setItemMeta(TheretenMe);
                
                ItemStack Hour = new ItemStack(Material.LAVA_BUCKET);
                ItemMeta HourMeta = Hour.getItemMeta();
                HourMeta.setDisplayName("§6§l60 minutes");
                Hour.setItemMeta(HourMeta);
                
                iToolsJail.setItem(2, FiveM);
                iToolsJail.setItem(4, ThereTen);
                iToolsJail.setItem(6, Hour);
                
        }   
        
        if(!ItemHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l60 minutes§8§l]")) {
            
            iToolsJail = Bukkit.createInventory(p, 9, "§5§lJail Tools!");
            
            ItemStack FiveM = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta FiveMeta = FiveM.getItemMeta();
            FiveMeta.setDisplayName("§6§l15 minutes");
            FiveM.setItemMeta(FiveMeta);
            
            ItemStack ThereTen = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta TheretenMe = ThereTen.getItemMeta();
            TheretenMe.setDisplayName("§6§l30 minutes");
            ThereTen.setItemMeta(TheretenMe);
            
            ItemStack Hour = new ItemStack(Material.LAVA_BUCKET);
            ItemMeta HourMeta = Hour.getItemMeta();
            HourMeta.setDisplayName("§6§l60 minutes");
            Hour.setItemMeta(HourMeta);
            
            iToolsJail.setItem(2, FiveM);
            iToolsJail.setItem(4, ThereTen);
            iToolsJail.setItem(6, Hour);
            
    }
    }
    
    @EventHandler
    public void changeMin(InventoryClickEvent e) {
        Player p = (Player) e.getWhoClicked();

        Inventory invChange = e.getInventory();
        ItemStack bucket = e.getCurrentItem();
        ItemStack ItemMainHand = p.getInventory().getItemInMainHand();

        if (invChange == null) {
            return;
        }
        if (invChange.getName().equals("§5§lJail Tools!")) {
            
            e.setCancelled(true);
            
            if (bucket == null || !bucket.hasItemMeta()) {
                return;
            }

            if (bucket.getItemMeta().getDisplayName().equals("§6§l15 minutes")) {
                    if(!ItemMainHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l0 minutes§8§l]")) {
                    
                    ItemStack FiveM = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta FiveMeta = FiveM.getItemMeta();
                    FiveMeta.setDisplayName("§4§lJail §8§l[§6§l15 minutes§8§l]");
                    FiveM.setItemMeta(FiveMeta);
                    
                    ItemStack jail = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta jailMeta = jail.getItemMeta();
                    jailMeta.setDisplayName("§4§lJail §8§l[§6§l0 minutes§8§l]");
                    List<String> jailLore = new ArrayList<String>();
                    jailLore.add("§6§lPress §c§lRIGHT CLICK §6§l to open settings");
                    jailMeta.setLore(jailLore);
                    jail.setItemMeta(jailMeta);
                    
                    ItemStack Hour = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta HourMeta = Hour.getItemMeta();
                    HourMeta.setDisplayName("§4§lJail §8§l[§6§l60 minutes§8§l]");
                    Hour.setItemMeta(HourMeta);
                    
                    ItemStack ThereTen = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta TheretenMe = ThereTen.getItemMeta();
                    TheretenMe.setDisplayName("§4§lJail §8§l[§6§l30 minutes§8§l]");
                    ThereTen.setItemMeta(TheretenMe);
                    
                    p.getInventory().removeItem(ThereTen);
                    p.getInventory().removeItem(Hour);
                    p.getInventory().removeItem(jail);
                    p.getInventory().addItem(FiveM);
                    
                
                p.sendMessage("Succes | Your change minutes");
                
                }
            }
            
            if (bucket.getItemMeta().getDisplayName().equals("§6§l30 minutes")) {
                if(!ItemMainHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l15 minutes§8§l]")) {
                    
                    ItemStack ThereTen = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta TheretenMe = ThereTen.getItemMeta();
                    TheretenMe.setDisplayName("§4§lJail §8§l[§6§30 minutes§8§l]");
                    ThereTen.setItemMeta(TheretenMe);
                    
                    ItemStack jail = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta jailMeta = jail.getItemMeta();
                    jailMeta.setDisplayName("§4§lJail §8§l[§6§l0 minutes§8§l]");
                    List<String> jailLore = new ArrayList<String>();
                    jailLore.add("§6§lPress §c§lRIGHT CLICK §6§l to open settings");
                    jailMeta.setLore(jailLore);
                    jail.setItemMeta(jailMeta);
                    
                    ItemStack FiveM = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta FiveMeta = FiveM.getItemMeta();
                    FiveMeta.setDisplayName("§4§lJail §8§l[§6§l15 minutes§8§l]");
                    FiveM.setItemMeta(FiveMeta);
                    
                    ItemStack Hour = new ItemStack(Material.BLAZE_ROD);
                    ItemMeta HourMeta = Hour.getItemMeta();
                    HourMeta.setDisplayName("§4§lJail §8§l[§6§l60 minutes§8§l]");
                    Hour.setItemMeta(HourMeta);
                
                p.getInventory().removeItem(FiveM);
                p.getInventory().removeItem(jail);
                p.getInventory().removeItem(Hour);
                p.getInventory().addItem(ThereTen);
                
            
            p.sendMessage("Succes | Your change minutes");
            
            }
        }
            
        if (bucket.getItemMeta().getDisplayName().equals("§6§l60 minutes")) {
            if(!ItemMainHand.getItemMeta().getDisplayName().equals("§4§lJail §8§l[§6§l15 minutes§8§l]")) {
                
                ItemStack jail = new ItemStack(Material.BLAZE_ROD);
                ItemMeta jailMeta = jail.getItemMeta();
                jailMeta.setDisplayName("§4§lJail §8§l[§6§l0 minutes§8§l]");
                List<String> jailLore = new ArrayList<String>();
                jailLore.add("§6§lPress §c§lRIGHT CLICK §6§l to open settings");
                jailMeta.setLore(jailLore);
                jail.setItemMeta(jailMeta);
                
                ItemStack Hour = new ItemStack(Material.BLAZE_ROD);
                ItemMeta HourMeta = Hour.getItemMeta();
                HourMeta.setDisplayName("§4§lJail §8§l[§6§l60 minutes§8§l]");
                Hour.setItemMeta(HourMeta);
                
                ItemStack ThereTen = new ItemStack(Material.BLAZE_ROD);
                ItemMeta TheretenMe = ThereTen.getItemMeta();
                TheretenMe.setDisplayName("§4§lJail §8§l[§6§l30 minutes§8§l]");
                ThereTen.setItemMeta(TheretenMe);
                
                ItemStack FiveM = new ItemStack(Material.BLAZE_ROD);
                ItemMeta FiveMeta = FiveM.getItemMeta();
                FiveMeta.setDisplayName("§4§lJail §8§l[§6§l15 minutes§8§l]");
                FiveM.setItemMeta(FiveMeta);
            
            p.getInventory().removeItem(ThereTen);
            p.getInventory().removeItem(jail);
            p.getInventory().removeItem(FiveM);
            p.getInventory().addItem(Hour);
            
        
        p.sendMessage("Succes | Your change minutes");
        
            }
            
        }
    }
        
    }
 
Не читая весь код, сразу скажу, что ты сравниваешь названия предметов с цветами &, но на самом деле они в названии предмета с параграфом. Лучше получить название предмета и сделать ChatColor.stripColors() (уберёт цвета со строки), после чего сравнивать с нужным названием без цветов (без &).

И вроде как getItemMeta() вернётся в любом случае, если её нет - она будет создана.
 
Что за извращения
PHP:
if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
Не проще поставить (!=)? А вообще сравнивай через Object#equals(Another Object);
Заместь § юзай ChatColor
Кароче извращения полные
 
Что за извращения
PHP:
if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
Не проще поставить (!=)? А вообще сравнивай через Object#equals(Another Object);
Заместь § юзай ChatColor
Кароче извращения полные
Енумы не сравнивают через equals.
 
Енумы не сравнивают через equals.
tumblr_ltwqpxvjCM1r0v1qho1_500.jpg
 
Что за извращения
PHP:
if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
Не проще поставить (!=)? А вообще сравнивай через Object#equals(Another Object);
Заместь § юзай ChatColor
Кароче извращения полные
О да, умник, сейчас бы Enum сравнивать через equals...
 
В таком случае разницы нет. Короче по моему просто сравнить через оператор, нежели через метод.
Я с этим не спорю конечно, но все же принято сравнивать enumerator'ы через оператор равенства
 
Я с этим не спорю конечно, но все же принято сравнивать enumerator'ы через оператор равенства
equals его же и юзает. Вообще это стандарт в классе Object. Может отличатся только при оверайде.
 
Не читая весь код, сразу скажу, что ты сравниваешь названия предметов с цветами &, но на самом деле они в названии предмета с параграфом. Лучше получить название предмета и сделать ChatColor.stripColors() (уберёт цвета со строки), после чего сравнивать с нужным названием без цветов (без &).

И вроде как getItemMeta() вернётся в любом случае, если её нет - она будет создана.
Достаточно разумно. Можно будет при помощи наковальни сделать такой же предмет.
if(!ItemHand.getItemMeta().g
Это так и задумано, если предмет не соответствует, то открыть инвентарь?
Почему цепочка из if'ов без else? Почему не switch? Почему в конце каждого условия не открывается инвентарь созданный? Действительно ли предмет имеет то имя, которое нужно? Инициализируется ли слушатель как положено?
 
Что за извращения
PHP:
if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
Не проще поставить (!=)? А вообще сравнивай через Object#equals(Another Object);
Заместь § юзай ChatColor
Кароче извращения полные
А мне удобнее ALT+21(numpad) Юзать, чем ChatColor
 
Зато не нужно писать длинный текст из ChatColor XD
Если тебе нравится костылять иди на пенсию 🙂
Вообще ChatColor для чего по твоему придумали?
Тогда можно делать ChatColor#transtlateAnternaleColorCodes(char sym, String str);
 
Назад
Верх