Inventory API

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

Inventory API

Beitragvon PranKeD_ » So 19. Jun 2016, 14:54

Hi,
Ich habe mal probiert eine Inventory API zu schreiben, aber bei der Anwendung kommt dieser Fehler:
Code: Alles auswählen
  1. [15:44:43 ERROR]: Could not pass event AsyncPlayerChatEvent to PI v1.0
  2. org.bukkit.event.EventException
  3.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  4.         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  5.         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-8a048fe-d8637df]
  6.         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot.jar:git-Spigot-8a048fe-d8637df]
  7.         at net.minecraft.server.v1_9_R2.PlayerConnection.chat(PlayerConnection.java:1271) [spigot.jar:git-Spigot-8a048fe-d8637df]
  8.         at net.minecraft.server.v1_9_R2.PlayerConnection.a(PlayerConnection.java:1209) [spigot.jar:git-Spigot-8a048fe-d8637df]
  9.         at net.minecraft.server.v1_9_R2.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot.jar:git-Spigot-8a048fe-d8637df]
  10.         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73]
  11.         at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73]
  12.         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_73]
  13.         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_73]
  14.         at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]
  15. Caused by: java.lang.NoClassDefFoundError: WindowPackage/Window
  16.         at Package.Main.PI(Main.java:95) ~[?:?]
  17.         at Package.Main.PlayerChat(Main.java:83) ~[?:?]
  18.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
  19.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
  20.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
  21.         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
  22.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  23.         ... 11 more
  24. Caused by: java.lang.ClassNotFoundException: WindowPackage.Window
  25.         at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_73]
  26.         at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  27.         at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  28.         at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_73]
  29.         at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_73]
  30.         at Package.Main.PI(Main.java:95) ~[?:?]
  31.         at Package.Main.PlayerChat(Main.java:83) ~[?:?]
  32.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_73]
  33.         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
  34.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_73]
  35.         at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_73]
  36.         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-8a048fe-d8637df]
  37.         ... 11 more


Mein Code:
Code: Alles auswählen
  1.   // HIER WIRD DIE METHODE PI GEÖFFNET. Hier ist der Fehler nicht
  2.    @EventHandler
  3.    public void PlayerChat(AsyncPlayerChatEvent e){
  4.       Player p = e.getPlayer();
  5.       String msg = e.getMessage();
  6.       if(msg.charAt(0) == '!'){
  7.          if(msg.length() > 1){
  8.            msg = msg.substring(1, msg.length());
  9.            if(Bukkit.getServer().getPlayer(msg) != null){
  10.               if(Bukkit.getServer().getPlayer(msg).isOnline()){
  11.                 Player target = Bukkit.getPlayer(msg);
  12.                   if(p.getWorld().getPlayers().contains(target)){
  13.                      if(p.getLocation().distance(target.getLocation()) < 4 ){
  14.                         PI(p, target);
  15.                      }
  16.                   }
  17.                 e.setCancelled(true);
  18.               }
  19.            }
  20.          }
  21.       }
  22.    }
  23.         // Hier wird die Window API angewendet.
  24.    public void PI(Player p, Player target){
  25.       Inventory inv;
  26.       inv = Window.createWindow(target.getName(), 3*9, p);
  27.    }


Code von der API:

Code: Alles auswählen
  1. public static Inventory createWindow(String WindowTitle, int Lines, InventoryHolder holder){
  2.       Inventory inv = Bukkit.createInventory(holder, Lines, WindowTitle);
  3.       return inv;
  4.    }


Ich habe keine Ahnung was sich hinter diesen Fehlermeldungen verbirgt und wie man sie löst .. :?
Benutzeravatar
PranKeD_
 
Beiträge: 4
Registriert: Sa 18. Jun 2016, 21:45

Re: Inventory API

Beitragvon Letsplaybar » So 19. Jun 2016, 15:18

Frage hast du auch die API in den pluginsordner rein gepackt?
weil laut Fehlerbeschreibung findet er die klasse nicht/ sie wird garnicht erst geladen.

aber wenn du das inventar von einem anderem Spieler öffnen willst geht das auch einfacher:
Code: Alles auswählen
  1. String name = args[0];
  2.          Player tar = Bukkit.getPlayer(name);
  3.          if(tar == null)
  4.             return true;         
  5.          p.openInventory(tar.getInventory());
Bild
Helfe Wo ich kann.
Mein MinecraftServer: Letsplaybaro.de - Suchen Developer/Bilder

I hacked 127.0.0.1!!! :)
Benutzeravatar
Letsplaybar
 
Beiträge: 195
Registriert: Mo 1. Feb 2016, 17:21
Wohnort: Berlin

Re: Inventory API

Beitragvon PranKeD_ » So 19. Jun 2016, 15:28

Ich wusste garnicht dass man die API in den Plugins Ordner packen muss.
Braucht sie dann auch eine plugin yml ? Ich meine es soll ja kein Plugin sein sondern API
Benutzeravatar
PranKeD_
 
Beiträge: 4
Registriert: Sa 18. Jun 2016, 21:45

Re: Inventory API

Beitragvon Letsplaybar » So 19. Jun 2016, 15:52

ja und auch eine Main klasse wo sie geladen wird... ne API muss trotzdem wie ein Plugin geladen und reingepackt werden woher soll er sonst wissen wass in der Klasse steht und aufrufen. ist doch ganz logisch. deshalb macht eine api nur sinn wen die klassen aus der api von mehreren plugins genutzt wird weil es sonst recoucenfressend ist.
!!! BITTE BEACHTE DIE JAVAKONVENTIONEN !!! VARIABLEN WERDEN AM ANFANG KLEIN GESCHRIEBEN !!!
grade bei api's sollte man sich an diese Halten. da man diese ja in der regel schreibt um sie zu veröffentlichen und damit sie andere nutzen können und hierfür damit jeder einheitlich damit um gehen kann sollte man sich an diese halten.
Bild
Helfe Wo ich kann.
Mein MinecraftServer: Letsplaybaro.de - Suchen Developer/Bilder

I hacked 127.0.0.1!!! :)
Benutzeravatar
Letsplaybar
 
Beiträge: 195
Registriert: Mo 1. Feb 2016, 17:21
Wohnort: Berlin


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste