• 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!

PlugIn InventoryClickevent canceln und wieder erlauben?

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
Ich sitze momentan an einem /ranginfo Plugin, wo man mit dem Cursor, über ein Item im "Ranginfo Inventar" fährt und dann sieht welcher Rang was kann. Nun ist das Problem, dass ich nicht weiß, wie ich dem Spieler die Berechtigung wieder gebe, nach dem schließen des "Ranginfo Inventar", dass sie wieder alles wie gewohnt im Inventar herum schieben können.
 

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
Die Methode Cancellable#setCancelled(), wie in deinem Fall beim InventoryClickEvent, setzt keine Berechtigung und macht auch sonst nichts, was jeweils über das eine Event, also die einzelne Inventar-Interaktion, hinausgeht. Das bedeutet also, dass du nichts weiter tun musst.
Es ist jedoch natürlich wichtig, dass du das Event nur dann cancelst, wenn es auch um ein Inventar geht, das nicht verändert werden darf, also in diesem Fall deine "Rang-Info", und deine Handler-Methode beim Klicken in andere Inventare nichts tut.

Bei mir ist das Probem, dass ich jetzt das InventoryClickEvent auf cancel(true) habe, aber man jetzt nichts mehr im Inv machen kann, auch nach der Schließung des "Ranginfo Inventar"
 

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
So funktioniert das Event-Handling von Bukkit ja auch nicht nicht. Um die genaue Fehlerursache in deinem Fall zu finden, brauche ich aber deinen Code (zumindest die Event-Handler-Methode für das InventoryClickEvent).

Ich habe ihn gelöscht, ich kann dir aber die command Klasse schicken. Vielleicht weißt du dann wie man das machen könnte
 

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
So funktioniert das Event-Handling von Bukkit ja auch nicht nicht. Um die genaue Fehlerursache in deinem Fall zu finden, brauche ich aber deinen Code (zumindest die Event-Handler-Methode für das InventoryClickEvent).

bzw. hatte nur das:

public class invclick implements Listener {

@EventHandler
public void onClick(InventoryClickEvent e) {

e.setCancelled(true);
 

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
@LeckererNugget
Deiner Fehlerbeschreibung und dem Code nach bin ich mir nicht ganz sicher, ob du das Prinzip hinter der Bukkit-Event-API (oder Event-Handling im Allgemeinen) überhaupt verstanden hast. Falls nicht: Die Event-API ist hier offiziell dokumentiert.

Dein Listener funktioniert natürlich nicht, da du hiermit alle Inventar-Clicks immer blockierst. Wie aus Beschreibung der Klasse InventoryClickEvent in der Javadoc klar ersichtlich ist, wird ein solches Event immer ausgelöst, wenn ein Spieler in ein Inventar klickt. Das kann das Ranginfo-Inventar sein, das eigene Inventar des Spielers, eine Kiste oder irgendwas anderes. Ein spezielles Event, das ein bestimmtes Inventar überwacht, gibt es nicht.

Daher musst du logischerweise erst überprüfen, um welches Inventar es sich handelt, und darfst dieses Event nur dann canceln, wenn das angeklickte Inventar auch das Ranginfo-Inventar ist.
Und wie kann ich es für nur genau dieses Inventar machen?
 

LeckererNugget

Minecrafter
Registriert
19 März 2020
Beiträge
7
Diamanten
250
@LeckererNugget
Den Ansatz habe ich dir doch genannt:

Dafür gibt es unterschiedliche Möglichkeiten. Wie in der Javadoc erwähnt, gibt dir InventoryClickEvent#getClickedInventory() das bei der Event-Auslösung angeklickte Inventar zurück. Je nachdem, wie du dein Ranginfo-Inventar umgesetzt hast, kannst du dann überprüfen, ob das angeklickte Inventar das/ein Ranginfo-Inventar ist, und dann das Event canceln, wenn das der Fall ist.
Ich verstehe es trotz der Seiten irgendwie nicht so ganz
 
Oben