Seite 1 von 1

[Packet] TabComplete

BeitragVerfasst: Fr 2. Okt 2015, 21:42
von Raytex
Hallo liebe Community,
ich habe folgendes Problem: Für eins meiner Plugins wofür ich keine Libs und APIs verwenden möchte möchte ich das TabComplete Packet abfangen und "blockieren". Sprich dass die Plugins nicht mehr über /?[TAB] eingesehen werden können. Allerdings verstehe ich die Packets nicht wirklich. Ich habe mir dazu schon mehrere Tutorials angesehen. Könnte mir bitte jemand einen Code Schnipsel mit den folgenden Funktion schicken?

Funktionen:
- Tab Complete abfangen
- blockieren / abändern
- Command whitelist (Bei diesen Befehlen funktioniert weiterhin Tab Complete)

Vielen Dank
Raytex

Re: [Packet] TabComplete

BeitragVerfasst: Fr 2. Okt 2015, 21:53
von Jofkos
Also wie du Packete abfangen kannst, solltest du irgendwo in dem "1.8 Nicken Thread"
finden (Seite 7 oder so). Dann checkst du halt ob das Packet eine PacketPlayOutTabCompletition ist. Wenn's eins ist veränderst du es halt nach deinen Bedürfnissen und gibts es gar nicht erst weiter.

Probiers doch mal wenigstens selber, weiterhelfen können wir dir danach immernoch, sollte es nicht so klappen wie du es willst.

Re: [Packet] TabComplete

BeitragVerfasst: Fr 2. Okt 2015, 22:00
von Raytex
Vielen Dank erstmal ich probiere schon seit 2 Stunden aber könntest du mir bitte mal den thread schicken?

Re: [Packet] TabComplete

BeitragVerfasst: Sa 3. Okt 2015, 00:52
von Jofkos
Hier: viewtopic.php?f=15&t=2387&start=60#p17849
Bzw. mit Erklärungen hier: http://www.postcrafter.de/viewtopic.php ... 424#p17424 (Der Code hier ist jedoch für eingehende Packets)

Zudem könnte das hier, dir eventuell noch helfen:
Code: Alles auswählen
  1.     public void a(PacketPlayInTabComplete packetplayintabcomplete) {
  2.         PlayerConnectionUtils.ensureMainThread(packetplayintabcomplete, this, this.player.u());
  3.         // CraftBukkit start
  4.         if (chatSpamField.addAndGet(this, 10) > 500 && !this.minecraftServer.getPlayerList().isOp(this.player.getProfile())) {
  5.             this.disconnect("disconnect.spam");
  6.             return;
  7.         }
  8.         // CraftBukkit end
  9.         ArrayList arraylist = Lists.newArrayList();
  10.         Iterator iterator = this.minecraftServer.tabCompleteCommand(this.player, packetplayintabcomplete.a(), packetplayintabcomplete.b()).iterator();
  11.         while (iterator.hasNext()) {
  12.             String s = (String) iterator.next();
  13.             arraylist.add(s);
  14.         }
  15.         this.player.playerConnection.sendPacket(new PacketPlayOutTabComplete((String[]) arraylist.toArray(new String[arraylist.size()])));
  16.     }
So wird von Minecraft die Tab-Completition gehandelt. (Die MinecraftServer#tabCompleteCommand-Methode gibt die TabCompletitions entweder an die CommandMap weiter, oder, falls die Nachricht nicht mit einem Slash beginnt, führt das PlayerChatTabCompleteEvent aus)
Das beste ist vielleicht, du fängst direkt die PlayInTabComplete Packets ab, und reagierst dann selber mit den PacketPlayOutTabComplete. Das PlayOutPacket verändern ist natürlich auch eine Option.

Re: [Packet] TabComplete

BeitragVerfasst: Sa 23. Apr 2016, 21:53
von LetsPeee
Hey,

Ich habe eine Frage diesbezüglich: "Wie kann ich etwas derartiges in mein Nick plugin einbauen, ohne gleich die gesamte spigot zu patchen, oder den Namen serverseitig zu ändern, da ja p.getName() verwendet wird?"