Wie kann man abfragen ob das Inventar des Spielers offen ist (Minecraft) Danke im Vorraus?

1 Antwort

Meine Kenntnisse auf dem Gebiet sind zwar schon ein paar Jahre alt, habe früher mal solche Plugins geschrieben, aber meines Wissens nach (und dem Wissen durch kurzes googlen), gibt es bei Spigot ein Eventsystem und dort ein InventoryOpenEvent und ein InventoryCloseEvent dort kann man dann jeweils mittels getInventory() das jeweils geöffnete oder geschlossene Inventory Objekt bekommen und dort wiederum mittels getType() den InventoryType bekommen und dann kann man abfragen ob es ein Spielerinventar (d.h. InventoryType.PLAYER) ist oder nicht.

Jetzt weißt du wann Inventare von Spielern geöffnet und geschlossen werden. Dann schreibst du den Spieler einfach in eine Liste wenn er sein Spielerinventar öffnet und entfernst ihn daraus, wenn er es schließt und voila: Wenn du wissen willst ob er sein Inventar offen hat oder nicht, schaust du einfach ob er in der Liste steht oder nicht.

Und zack, fertig- Abfrage ob das Inventar des Spiellers offen ist.

TaubenVieh 
Fragesteller
 09.03.2019, 19:35

Naja aber ich will damit ja abfragen ob das Inventar von sich Selbst geöffnet ist und wenn ja das er ne Nachricht kriegt wie geht das?

0
norna506  09.03.2019, 19:44
@TaubenVieh

Ich... versteh' die Frage nicht. Diese Events d.h. das InventoryOpen-Event wird nach meinem Verständnis "getriggert", wenn sich ein Inventar beim Spieler öffnet, auch wenn er es selbst tut d.h. die entsprechende Taste drückt, wird dieses Event gefeuert und dann kannst du das abfangen. https://www.spigotmc.org/wiki/using-the-event-api/

Wenn du nur ne Nachricht senden willst, wenn der Spieler sein Inventar öffnet dann könnte das etwa so aussehen:

@Override
public void onEnable()
{
    getServer().getPluginManager().registerEvents(new MyListener(), this);
} // Das hier zur bestehenden onEnable() hinzufügen

public class MyListener implements Listener
{
     @EventHandler
     public void onPlayerInventory(InventoryOpenEvent event)
     {
if (event.getInventory().getType() == InventoryType.PLAYER) {
event.getPlayer().sendMessage("Ravioli. Ravioli. Gib mir die Formilioli.");
}
     }
}

Sollte, das die Frage nicht beantworten müsstest du ein wenig spezifischer werden...

0
TaubenVieh 
Fragesteller
 09.03.2019, 19:50
@norna506

Nope das Funktioniert irgendwie nicht also, Ich Will ein AntiCheat machen und dort jetzt gerade einen InventoryMove Check als test ob das Event überhaupt Funktioniert will ich eine nachricht erhalten nur das passiert halt nd egal was ich versuche bzw als test ob überhaupt die Abfrage stimmt das mein Inventar gerade offen ist.

0
colum123  09.03.2019, 20:05
@TaubenVieh

Wird denn die Nachricht beim Öffnen des Inventars ausgegeben?

0