[Anleitung] Spieler Nicken - Name und Skin ändern - 1.8.8

Hier könnt ihr anderen Leuten helfen, indem ihr Anleitungen oder praktische Codesegmente zur Verfügung stellt.

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » Mi 11. Feb 2015, 14:19

Ich hab irgendwie noch ein kleines Problem: Ich habe mir durch die Jenkins Seite von Jofkos die aktuellste 1.8 besorgt. Wenn jetzt jemand mit der 1.8.1 joint und in die Tabliste schaut sieht er seinen Namen mit der Farbe, wenn jetzt aber jemand mit der 1.8 joint und in die Tabliste schaut sieht er seinen Namen in weiß, die anderen sieht er farbig. Außerdem sehen die anderen Spieler wenn sie ihre Tabliste öffnen ihn auch in Farbe, nur der 1.8 Spieler selbst sieht seinen Namen in der Tabliste weiß. Weiß wer woran das liegt?

Ich setzte den Tab-Namen mit p.setPlayerListName().
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » Fr 13. Feb 2015, 19:50

Noch eine andere Frage/Fehler: Manchmal passiert es, dass beim Joinen dieser Fehler kommt:
Code: Alles auswählen
  1. [19:48:43 WARN]: java.io.IOException: TooManyRequestsException: The client has sent too many requests within a certain amount of time
  2. [19:48:43 WARN]:        at api.GameProfileBuilder.fetch(GameProfileBuilder.java:85)
  3. [19:48:43 WARN]:        at api.GameProfileBuilder.fetch(GameProfileBuilder.java:54)
  4. [19:48:43 WARN]:        at api.Tag$1.run(Tag.java:56)
  5. [19:48:43 WARN]:        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  6. [19:48:43 WARN]:        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  7. [19:48:43 WARN]:        at java.lang.Thread.run(Thread.java:745)


Dann ist der Tag weiß. Ich das mit der Zeit nicht anders möglich?
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Jofkos » Fr 13. Feb 2015, 22:07

Twister_21 hat geschrieben:Noch eine andere Frage/Fehler: Manchmal passiert es, dass beim Joinen dieser Fehler kommt:
Code: Alles auswählen
  1. [19:48:43 WARN]: java.io.IOException: TooManyRequestsException: The client has sent too many requests within a certain amount of time
Laut wiki.vg kann man das gleiche GameProfile einmal pro Minute requesten.
hinzu kommt noch
wiki.vg hat geschrieben: All public APIs are rate limited so you are expected to cache the results. This is currently set at 600 requests per 10 minutes but this may change.
Jofkos

...........

..Bild
Benutzeravatar
Jofkos
 
Beiträge: 1537
Registriert: So 16. Jun 2013, 22:45

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » Fr 13. Feb 2015, 23:07

Also muss man, um den Fehler zu beheben ein Cache einbauen?
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Jofkos » So 15. Feb 2015, 00:25

Die klasse hat schon einen Cache. Werden die Anfragen von verschiedenen Servern gesendet? Der cache ist dann für jeden server neu...
Jofkos

...........

..Bild
Benutzeravatar
Jofkos
 
Beiträge: 1537
Registriert: So 16. Jun 2013, 22:45

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » So 15. Feb 2015, 09:50

Die Klasse wird auf jedem Server eingesetzt. Dann ist es mal passiert, dass ein Spieler auf einen Server joint und dann kam dieser Zeit-Fehler.
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Jofkos » So 15. Feb 2015, 14:13

Dann müsstest du irgendwie einen globalen Cache für alle Server machen.

z.B. ein extra Programm, dass für das Caching zuständig ist und von dem
die anderen Server die GameProfiles bekommen
Jofkos

...........

..Bild
Benutzeravatar
Jofkos
 
Beiträge: 1537
Registriert: So 16. Jun 2013, 22:45

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » So 15. Feb 2015, 14:38

Ok, hab jetzt aber immer noch ein Problem: Wenn jemand joint sieht er die gesetzten Tags der anderen nicht und wenn ich das so mache:
Code: Alles auswählen
  1. for(Player players: Bukkit.getOnlinePlayers()) {
  2. setTag(players, players.getDisplayName());
  3. }


, dann buggt es. Wie kriegt ich es hin, dass der Spieler der joint die vorher gesetzten Tags der spieler sieht, ohne dass es buggt. Wie kan ich denn die Packets abfangen, davon hattest du doch mal was gesagt.
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Jofkos » So 15. Feb 2015, 16:01

Möglichkeit 1: Packets abfangen mit einer dafür vorgesehenen Lib (wie z.B. ProtocolLib)
Möglichkeit 2: Direkt Netty injizieren
Code: Alles auswählen
  1. @EventHandler
  2. public void onJoin(PlayerJoinEvent e) {
  3.    EntityPlayer entity = ((CraftPlayer) e.getPlayer()).getHandle();
  4.    Channel playerChannel = Reflect.get(channelField, entity.playerConnection.networkManager);
  5.    playerChannel.pipeline().addAfter("encoder", "nick_listener", new MessageToMessageEncoder<Packet>() {
  6.       @Override
  7.       protected void encode(ChannelHandlerContext chc, Packet packet, List<Object> out) throws Exception {
  8.          if (packet instanceof PacketPlayOutPlayerInfo) {
  9.             PacketPlayOutPlayerInfo infoPacket = (PacketPlayOutPlayerInfo) packet;
  10.             // packet verändern
  11.          }
  12.          out.add(packet);
  13.       }
  14.    });
  15. }
erklärungen gibts hier.

So wird, direkt wenn das PacketPlayOutPlayerInfo gesendet wird, dieses durch das mit dem "Nicknamepacket" ersetzt.
Jofkos

...........

..Bild
Benutzeravatar
Jofkos
 
Beiträge: 1537
Registriert: So 16. Jun 2013, 22:45

Re: [Anleitung] Spieler Nicken - Name und Skin ändern - 1.8+

Beitragvon Twister_21 » So 15. Feb 2015, 16:06

Cool, danke für den Codeschnipsel, muss dann nur noch schauen, was ich mit dem Packet mache.

EDIT: Was ist "Reflect"? und was ist mit "MessageToMessageDecoder in die Pipeline einfügen, nach 'decoder'" gemeint? Womit soll man nick_listener ersetzten?

Weiß auch noch nicht ganz was ich mit dem Packet infoPacket machen soll, hab das noch nie gemacht

Er soll ja die Tags der Spieler bekommen und dann den Tag wie den DisplayName setzen und dann noch den Skin.
Mit freundlichen Grüßen
Twister21
Benutzeravatar
Twister_21
 
Beiträge: 652
Registriert: Mi 11. Jun 2014, 05:51
Wohnort: Deutschland

VorherigeNächste

Zurück zu Anleitungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast