Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

InventoryListener, malutki blad


Entify

Rekomendowane odpowiedzi

Opublikowano

Czesc, mam pewien kod, niby wszystko dziala, ale jest czasem 1 error.

- error pojawia sie gdy wkladam item z XXX gui, do swojego ekwipunku. || gdy na niego tylko klikam, nie ma zadnych errrow, dopiero gdy wkladam go do swojego ekwipunku.

Error:

[16:37:41 ERROR]: Could not pass event InventoryClickEvent to ent_Core v1.1
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:302) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
ava:509) [spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
ava:494) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java
:1478) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.a(PacketPlayInWi
ndowClick.java:15) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.handle(PacketPla
yInWindowClick.java:65) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:189
) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java
:81) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:7
89) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:3
07) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:6
38) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
:544) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
28) [spigot.jar:git-PaperSpigot-43]
Caused by: java.lang.NullPointerException
        at com.gmail.xscreamspl.listeners.InventoryListener.onInteractLvl(Invent
oryListener.java:380) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
.8.0_131]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:298) ~[spigot.jar:git-PaperSpigot-43]
        ... 13 more
>

 

 

Kawalek kodu:

    @EventHandler(priority=EventPriority.LOW)
    public void onInteractLvl(InventoryClickEvent event)
    {
      if (Util.fixColor("&7WYMIANA ZA LEVEL").equalsIgnoreCase(event.getInventory().getName()))
      {
        event.setCancelled(true);
        ItemStack item = event.getCurrentItem();
        if (item != null)
        {
          ItemMeta meta = item.getItemMeta();
          Player p = (Player)event.getWhoClicked();
          User u = UserManager.getUser(p);
          if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("§8» §6KILOF SZYBKOSCI I"))))
          {
            if (u.getLvl() <= 29) {
              Util.sendMsg(p, "   &8» &7Nie posiadasz &c30 lvla");
            }
            else if (u.getLvl() > 29)
            {
              u.removeLvl(30);
              Bukkit.broadcastMessage(Util.fixColor("&e&lSKLEP &8&l» &3" + u.getLastName() + " &7zakupil &3Kilof Szybkosci I &7/sklep"));
              Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "kilof 1 " + u.getLastName());
              p.closeInventory();
            }
          }
          else if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("§8» §2Beacon"))))
          {
            if (u.getLvl() <= 79) {
              Util.sendMsg(p, "   &8» &7Nie posiadasz &c80 lvla");
            }
            else if (u.getLvl() > 79)
            {
              u.removeLvl(80);
              Bukkit.broadcastMessage(Util.fixColor("&e&lSKLEP &8&l» &3" + u.getLastName() + " &7zakupil &b&lB&e&lE&a&lA&f&lC&9&lO&d&lN &7/sklep"));
              Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "give " + u.getLastName() + " 138 1");
              p.closeInventory();
            }
          }
     }
 ....

ktos pomoze? bylbym wdzieczny ;/

 

 

JAVA <3

 

Opublikowano

Masz pozwolenie na edytowanie tego pluginu? Bo z tego co widzę to toćka w toćkę taki sam kod jak uzyskałem z dekompilacji, a źródła nie znalazłem.

P.S. Jakbyś powiedział która to linijka to by było trochę łatwiej...

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano

zakładam że

      if (Util.fixColor("&7WYMIANA ZA LEVEL").equalsIgnoreCase(event.getInventory().getName()))

event odpala się za każdym razem gdy klikniesz w okienku !KAŻDYM OKIENKU! i teraz gdy klikasz na ekwipunek gracza nie posiada on czegoś takiego jak nazwa lub jest wartością null

kolejna sprawa to sprawdzanie po nazwie :/ trochę ryzykowne.

item.getItemMeta();

  zawsze zwraca ItemMeta niezależnie czy przedmiot go posiada a jak nie to jest tworzony nowy z ItemFactory

dlatego warto sprawdzić czy przedmiot posiada ItemMeta. choć w twoim wypadku najprawdopodobniej każdy przedmiot będzie go posiadać .

Util.sendMsg(p, "   &8» &7Nie posiadasz &c30 lvla");

takie coś też jest brzydkim rozwiązaniem ... korzystaj z API , w którym jest enum ChatColor / chyba że to jest wywołanie jakiejś bardziej skomplikowanej metody < poza ChatColor.strp

Opublikowano
1 godzinę temu, damianq20 napisał:

zakładam że


      if (Util.fixColor("&7WYMIANA ZA LEVEL").equalsIgnoreCase(event.getInventory().getName()))

event odpala się za każdym razem gdy klikniesz w okienku !KAŻDYM OKIENKU! i teraz gdy klikasz na ekwipunek gracza nie posiada on czegoś takiego jak nazwa lub jest wartością null

kolejna sprawa to sprawdzanie po nazwie :/ trochę ryzykowne.


item.getItemMeta();

  zawsze zwraca ItemMeta niezależnie czy przedmiot go posiada a jak nie to jest tworzony nowy z ItemFactory

dlatego warto sprawdzić czy przedmiot posiada ItemMeta. choć w twoim wypadku najprawdopodobniej każdy przedmiot będzie go posiadać .


Util.sendMsg(p, "   &8» &7Nie posiadasz &c30 lvla");

takie coś też jest brzydkim rozwiązaniem ... korzystaj z API , w którym jest enum ChatColor / chyba że to jest wywołanie jakiejś bardziej skomplikowanej metody < poza ChatColor.strp

event.getInventory().getTitle()*
Opublikowano
6 godzin temu, Entify napisał:

Czesc, mam pewien kod, niby wszystko dziala, ale jest czasem 1 error.

- error pojawia sie gdy wkladam item z XXX gui, do swojego ekwipunku. || gdy na niego tylko klikam, nie ma zadnych errrow, dopiero gdy wkladam go do swojego ekwipunku.

Error:


[16:37:41 ERROR]: Could not pass event InventoryClickEvent to ent_Core v1.1
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:302) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
a:62) ~[spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
ava:509) [spigot.jar:git-PaperSpigot-43]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
ava:494) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java
:1478) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.a(PacketPlayInWi
ndowClick.java:15) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.handle(PacketPla
yInWindowClick.java:65) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:189
) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java
:81) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:7
89) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:3
07) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:6
38) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
:544) [spigot.jar:git-PaperSpigot-43]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
28) [spigot.jar:git-PaperSpigot-43]
Caused by: java.lang.NullPointerException
        at com.gmail.xscreamspl.listeners.InventoryListener.onInteractLvl(Invent
oryListener.java:380) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
.8.0_131]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
va:298) ~[spigot.jar:git-PaperSpigot-43]
        ... 13 more
>

 

 

Kawalek kodu:


    @EventHandler(priority=EventPriority.LOW)
    public void onInteractLvl(InventoryClickEvent event)
    {
      if (Util.fixColor("&7WYMIANA ZA LEVEL").equalsIgnoreCase(event.getInventory().getName()))
      {
        event.setCancelled(true);
        ItemStack item = event.getCurrentItem();
        if (item != null)
        {
          ItemMeta meta = item.getItemMeta();
          Player p = (Player)event.getWhoClicked();
          User u = UserManager.getUser(p);
          if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("§8» §6KILOF SZYBKOSCI I"))))
          {
            if (u.getLvl() <= 29) {
              Util.sendMsg(p, "   &8» &7Nie posiadasz &c30 lvla");
            }
            else if (u.getLvl() > 29)
            {
              u.removeLvl(30);
              Bukkit.broadcastMessage(Util.fixColor("&e&lSKLEP &8&l» &3" + u.getLastName() + " &7zakupil &3Kilof Szybkosci I &7/sklep"));
              Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "kilof 1 " + u.getLastName());
              p.closeInventory();
            }
          }
          else if ((meta.getDisplayName() != null) && (meta.getDisplayName().equals(Util.fixColor("§8» §2Beacon"))))
          {
            if (u.getLvl() <= 79) {
              Util.sendMsg(p, "   &8» &7Nie posiadasz &c80 lvla");
            }
            else if (u.getLvl() > 79)
            {
              u.removeLvl(80);
              Bukkit.broadcastMessage(Util.fixColor("&e&lSKLEP &8&l» &3" + u.getLastName() + " &7zakupil &b&lB&e&lE&a&lA&f&lC&9&lO&d&lN &7/sklep"));
              Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "give " + u.getLastName() + " 138 1");
              p.closeInventory();
            }
          }
     }
 ....

ktos pomoze? bylbym wdzieczny ;/

 

Kolego udajesz na forum chu* wie kogo, wielkiego programiste a kod tak chu*owy ze szkoda słów

Masz metode fixcolor i to zamienia & na kolor a używasz "§" przy sprawdzaniu nazwy, MYSL....

Widzę nic, tylko przerabiasz pluginy...

Bym Ci pomógł i dał kod, ale jesteś typowym id*otą tego forum, nic nie potrafisz a hejtujesz innych.

Poczytaj o metodzie "contains" i wgl całe bukkitapi i podstawy java.. 

lepiej jest return zrobic jak cos jest null a nie nie potrzebnie if(!=null)

 

 

Opublikowano
23 godziny temu, MarcinWieczorek napisał:

Masz pozwolenie na edytowanie tego pluginu? Bo z tego co widzę to toćka w toćkę taki sam kod jak uzyskałem z dekompilacji, a źródła nie znalazłem.

P.S. Jakbyś powiedział która to linijka to by było trochę łatwiej...

Przeciez ten caly kod jest dorabiany przeze mnie, nigdzie tego nie znajdziesz, w zadnym corze.

Jaka linijka? :v

Napisalem ze jak ktos przeniesie item z tego gui, to wtedy jest error, a kawalek kodu podeslalem.

20 godzin temu, TheMajster napisał:

 

Kolego udajesz na forum chu* wie kogo, wielkiego programiste a kod tak chu*owy ze szkoda słów

Masz metode fixcolor i to zamienia & na kolor a używasz "§" przy sprawdzaniu nazwy, MYSL....

Widzę nic, tylko przerabiasz pluginy...

Bym Ci pomógł i dał kod, ale jesteś typowym id*otą tego forum, nic nie potrafisz a hejtujesz innych.

Poczytaj o metodzie "contains" i wgl całe bukkitapi i podstawy java.. 

lepiej jest return zrobic jak cos jest null a nie nie potrzebnie if(!=null)

 

 

Dopiero zaczynam z java, mozna powiedziec za nawet nie 2 miesiace, nigdzie nie napisalem ze jestem jakis super ultra dobrym wielkim programistą, wiec prosze nie pisz tak.

 

co do fixcolor, szczerze to zapomnialem ze tego uzylem, (na poczatku nie bylo tej metody, a jak pozniej juz ja dodalem to zapomnialem zamienic paragrafy na &) poprawione. :v

 

@edit

Mhm, mozna powiedziec ze do zamkniecia, po prostu dalem p.closeInventory(), wtedy zamyka inventory, wiec nie mozna przeniesc sobie do ekwipunku, nawet o tym nie pomyslalem.

Chyba ze ktos ma inny pomysl :>

 

 

JAVA <3

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...