Minecraft Plugin Programmiren Sende Nachricht als anderer Spieler?

rxbi06  11.09.2022, 22:53

Hey, ich habe deinen Command mit einer Klasse die den CommandExecutor implementiert, umgesetzt, wäre das für dich auch okay, oder muss es mit einem Listener umgesetzt werden?

RubinBonBon8833 
Fragesteller
 11.09.2022, 22:58

Mir ist es ansich egal wie es am Ende funktioniert.

Meine Idee ist es das ich ++<Command> eingebe.

rxbi06  11.09.2022, 23:01

Hast du schon mal einen Befehl mit dem CommandExecutor umgesetzt?

RubinBonBon8833 
Fragesteller
 11.09.2022, 23:03

Meinst du einfache / Befehle

rxbi06  11.09.2022, 23:16

Okay, aber es wäre okay für dich den sudo Befehl als normalen / command umzusetzen?

RubinBonBon8833 
Fragesteller
 11.09.2022, 23:20

Der Command soll destmöglicht versteckt sein und es soll keine Anzeichen geben das es ihn gibt.

Ebenso soll er keinen Logs erzeugen

Dafür erschien mir der Listener am passenden

rxbi06  11.09.2022, 23:21

okay, dann schau ich mir mal schnell die Listener methode an. Ich hoffe ich kann dir weiterhelfen

RubinBonBon8833 
Fragesteller
 11.09.2022, 23:22

Aber wenn du auch andere Metoden Kennst Dann kannst du auch gerne die Benutzen

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Hey, ich habe eine Lösung für dein Problem gefunden; ich füg hier einfach mal einen Screenshot meiner Lösung ein

Bild zum Beitrag

Anscheinend lag das Problem darin, dass t.chat() nicht von dem AsyncPlayerChatEvent direkt verwendet werden kann, das wird hier aber irgendwie durch die BukkitTask umgangen. Du musst bei }.runTask den Getter deiner Main Klasse einfügen.

 - (Minecraft, programmieren, Java)
RubinBonBon8833 
Fragesteller
 12.09.2022, 07:19

Es sieht gut aus aber ich kann es leider erst später testen.

0
RubinBonBon8833 
Fragesteller
 12.09.2022, 20:51

Hat super funktioniert

Vielen Dank

1
CrazyChicken334  22.01.2023, 14:55

Die Bukkit runnable implementiert quasi seine runnable und man overwrited dann run(). Kannst du mir eventuell ".runtask(Main.getPlugin());" erklären? Also runtask, du startest den "thread" quasi, aber inwiefern mit dem Main plugin? Und wofür braucht man e.setCanceled(true);? Vielen Dank im Voraus!

0
rxbi06  27.02.2023, 09:42
@CrazyChicken334

mit dem e.setCanceled(true) wird das senden der Nachricht gestoppt, da man diese ja nicht im Chat sehen soll. Und wieso genau man .runTask() mit der Main-Klasse (mithilfe des Getters) des Plugins ausführen muss, kann ich dir leider nicht erklären. Du könntest dir hierfür die Dokumentation ansehen. Die runnable allgemein braucht man da sonst wie in der Frage angeführt ein Fehler geworfen wird.

1