• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

GUI lässt sich nicht öffnen

LegitCoreYT

Kuhfänger
Registriert
20 August 2016
Beiträge
56
Alter
23
Diamanten
250
Minecraft
NochNichtGebannt
Liebe Leser/innen,
Ich bin aktuell dabei einen Shop für ein LobbyPlugin zu programmieren. Sobald man Rechtsklick auf einen goldenen Apfel macht, wird das Shop GUI geöffnet. Anschließend kann man zwischen einigen Dingen auswählen...
...eines von diesen sind die Hemden. Sobald man auf den Eisenbrustpanzer klick sollte eigentlich ein GUI geöffnet werden, doch es kommt eine Fehlermeldung, welche aus meiner Sicht kein Fehler ist.

(Ich habe in diesem Beitrag nur ein Testinventar verwendet, welches aber auch nicht geht...)

[19:27:29 ERROR]: Could not pass event InventoryClickEvent to LobbySystem v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1630) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_111]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_111]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
Caused by: java.lang.NullPointerException
at org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity.openInventory(CraftHumanEntity.java:176) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
at de.NochNichtGebannt.Items.ShopUtils.onClick(ShopUtils.java:125) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
... 15 more

Der Abschnitt, in dem der Fehler ist: (Zeile 125, Class ShopUtils)
if (e.getWhoClicked().getItemInHand().getType() == Material.GOLDEN_APPLE) {
e.setCancelled(true);
if (e.getCurrentItem().getItemMeta().getDisplayName() == "§6Hemd") {
->Zeile 125 p.openInventory(Main.kopf);
p.closeInventory();
}

Erstellen des GUI's:
package de.NochNichtGebannt.Inventare;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import de.NochNichtGebannt.Main.Main;

public class Köpfe implements Listener {

public static void kopf(Player p) {

de.NochNichtGebannt.Main.Main.kopf = p.getServer().createInventory(null, 3 * 9, "§a§lKöpfe");

ItemStack Entfernen = new ItemStack(Material.BARRIER);
ItemMeta EntfernenMeta = Entfernen.getItemMeta();
EntfernenMeta.setDisplayName("§4Hemd entfernen");
Entfernen.setItemMeta(EntfernenMeta);

p.openInventory(Main.kopf);


}
}

Und noch der Teil aus der Main:
public static Inventory kopf;
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771

LegitCoreYT

Kuhfänger
Registriert
20 August 2016
Beiträge
56
Alter
23
Diamanten
250
Minecraft
NochNichtGebannt
Was ist in dieser Zeile? Bzw. falsch ausgedrückt... was dort ist, hast du gepostet.
Zeig mir mal bitte den Zusammenhang, also die ganze Methode bitte.
Mein Fehler ^^
@EventHandler
public void onClick(InventoryClickEvent e) {
Player p = (Player) e.getWhoClicked();

if (e.getCurrentItem() == null) {
return;
}

if (e.getCurrentItem().getItemMeta() == null) {
return;
}

if (e.getWhoClicked().getItemInHand().getType() == Material.GOLDEN_APPLE) {
e.setCancelled(true);
if (e.getCurrentItem().getItemMeta().getDisplayName() == "§6Hemd") {
p.openInventory(Main.kopf);
p.closeInventory();
}
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Du lässt das ja mit dieser Methode potenziell immer wieder überschreiben bzw. falls deine Methode nie ausgeführt wurde ist auch das Feld null. Das erklärt die NPE, nur sehe ich den Sinn hinter der kopf(player) Methode nicht ganz.
Soll das Inventar speziell für den Spieler anders aussehen, oder was?
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Deine Methode kopf() nimmt ja als Parameter einen Player.

Wo machst du sowas zb.: kopf(irgendEinPlayerObjekt);
Irgendwo musst du ja die Methode einmal benutzen, sonst ist klar, dass das Feld Main.kopf null ist.

Wenn du das im onEnable aufrufst, welchen Player übergibst du dann?
Zur Zeit der Plugin Initialisierung ist noch kein Player auf dem Server.
 

LegitCoreYT

Kuhfänger
Registriert
20 August 2016
Beiträge
56
Alter
23
Diamanten
250
Minecraft
NochNichtGebannt
Okay xD
Habe es jetzt vorerst gefixxt. Ich programmiere jetzt erstmal den Shop zuende und schaue dann, ob es auch bei allen klappt ^^

Jetzt:
if (e.getCurrentItem().getType() == Material.IRON_CHESTPLATE) {
Köpfe.kopf(p);
}
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Das wird bei einer gewissen Menge Spielern allerdings zu Problemen führen.
Auch wenns funktioniert... es ist keine tolle Lösung, das Ganze. :yuno:

Aber schön, dass du jetzt zumindest weiter vorankommst! ;)
Wenn du magst kann ich dir was aus meinen Archiven rauskramen, irgendwo hatte ich mal was richtig schickes gebastelt für Inventare... muss es nur finden ._.
Kannst dich ja per PN gerne melden, wenn du noch Fragen etc. hast.
 
Oben