1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kloper, 9 авг 2019.

  1. Автор темы
    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");
            
                }
                
            }
        }
            
        }
     
  2. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Не читая весь код, сразу скажу, что ты сравниваешь названия предметов с цветами &, но на самом деле они в названии предмета с параграфом. Лучше получить название предмета и сделать ChatColor.stripColors() (уберёт цвета со строки), после чего сравнивать с нужным названием без цветов (без &).

    И вроде как getItemMeta() вернётся в любом случае, если её нет - она будет создана.
     
  3. Luminate_

    Luminate_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Luminate_
    Что за извращения
    PHP:
    if(!(e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
    Не проще поставить (!=)? А вообще сравнивай через Object#equals(Another Object);
    Заместь § юзай ChatColor
    Кароче извращения полные
     
  4. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Енумы не сравнивают через equals.
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    [​IMG]
     
  6. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    О да, умник, сейчас бы Enum сравнивать через equals...
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  8. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Одно и то же. Тут уже кому какой стиль больше нравится.
     
  10. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Я с этим не спорю конечно, но все же принято сравнивать enumerator'ы через оператор равенства
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    equals его же и юзает. Вообще это стандарт в классе Object. Может отличатся только при оверайде.
     
  12. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Достаточно разумно. Можно будет при помощи наковальни сделать такой же предмет.
    Это так и задумано, если предмет не соответствует, то открыть инвентарь?
    Почему цепочка из if'ов без else? Почему не switch? Почему в конце каждого условия не открывается инвентарь созданный? Действительно ли предмет имеет то имя, которое нужно? Инициализируется ли слушатель как положено?
     
  13. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Это не имеет значения. Он спросил - я ответил. Он не сказал куда и каким админам на сервер.
    Может это мини игра, где нет наковальни.
     
  14. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    А мне удобнее ALT+21(numpad) Юзать, чем ChatColor
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Та же хрень. А с конфига ChatColor трансляте.
     
  16. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    Зато не нужно писать длинный текст из ChatColor XD
     
  17. Luminate_

    Luminate_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Luminate_
    Если тебе нравится костылять иди на пенсию :)
    Вообще ChatColor для чего по твоему придумали?
    Тогда можно делать ChatColor#transtlateAnternaleColorCodes(char sym, String str);
     

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