Frage von Hansdergott, 28

Warum löst das Schild 2 mal das Ereignis aus?

Warum steht 2x im Chat der Text: Testschild ? Was mache ich mit diesem Befehl Falsch?

if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if(e.getClickedBlock().getState() instanceof Sign) {
                
                Sign s = (Sign) e.getClickedBlock().getState();
                
                if(s.getLine(0).equalsIgnoreCase("[TEST]")) { p.sendMessage("TESTSCHILD"); }
                
            }
        }

Brauche dringend eine gute Antwort und einen Lösungsvorshalg

Besten Dank

Antwort
von WhiteGandalf, 8

Ohne jetzt irgendwelche Erfahrung mit Minecraft zu haben...

Könnte es sein, dass ein Klick zu mehr als nur einer Art von Ereignis führt, die Durch Deine Reaktionsfunktion gelaufen kommen? Ich kenne das ganz allgemein so, dass je nach Art der Reaktionsfunktions-Registrierung (also je nach Typ der Ereignisart, für die Du die Reaktionsfunktion eingetragen hast), ganze Kaskaden an Folgeereignissen eintreffen. Ich wäre überrascht, wenn es bei Minecraft da GRUNDSÄTZLICH völlig anders zugehen würde.

Allerdings hast Du in der Frage nichts zu eben dieser Registrierung geschrieben. Daher kann außer diesem allgemeinen Statement nicht viel mehr kommen...

Antwort
von ACACE, 18

Besitzt du ansonsten Teamspeak und Teamviewer? Dann können wir das auch Privat machen ;:)

Kommentar von Hansdergott ,

Leider habe ich nur Skype aber könntest du mir eventuell  wann ich die Return Befehle benutzen muss und was passiert wenn ich eine if Abfrage habe ,diese zutrifft und ich dann return ein Programmierer?

Danke

Antwort
von ACACE, 28

Ansich hast du allles richtig gemacht. Versuche einfach mal anstatt Sign das WALL_SIGN zu benutzen ;)

Kommentar von Hansdergott ,

wo genau? bei 

instanceof 
?
Kommentar von ACACE ,

Definiere am Besten das WALL_SIGN als Material und setze dann das Material ein.

Kommentar von ACACE ,

Du kannst ja auch natürlich gleich eine Abfrage eines Signs oder eines WALL_SIGNS machen das du es dann als Material definierst

Antwort
von ACACE, 16

Also veruschs mal so

if(e.getAction() == Action.RIGHT_CLICK_BLOCK){

Sign s = Material.WALL_SIGN;

if(e.getClicketBlock().getState()  instanceof Sign){

if(s.getLine(0).equalsIgnoreCase("[TEST]")){

p.sendMessage("TESTSCHILD");

}

}

}

Wenn es dann immernoch nicht klappt, dann wird es zu höchster warscheinlichkeit daran liegen das du irgendwo das 'return, return true, return false' vergessen hast

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten