Minecraft Client: Server-TPS abfragen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Das SPacketTimeUpdate hat zwei Felder:

  1. Alter der Welt in Ticks
  2. Tageszeit in Ticks

Ich denke mal, das 1. wäre passender. Die Methode, um die TPS daraus abzuleiten, ist ganz einfach, habe ich aber nicht getestet.

private long lastTime;
private long lastAge = -1L;

@PacketReceive
public void onTimeUpdate(SPacketTimeUpdate packet) {
  long age = packet.worldAge;
  long time = System.currentTimeMillis();

  if (lastAge == -1L) {
    lastTime = time;
    lastAge = age;
    return;
  }

  long diffAge = age - lastAge;
  long diffTime = time - lastTime;

  lastAge = age;
  lastTime = time;

  long tps = diffAge / (diffTime / 1000.0);
  long tpsRounded = Math.round(tps * 100) / 100.0;

  System.out.println("TPS: " + tpsRounded);
}

Die Methode und Annotations habe ich mir selbst ausgedacht, die Implementierung ist ganz dir überlassen. Noch genauer könnte man das evtl. machen, wenn man den Ping mit einbezieht.

colum123  07.05.2020, 09:55

Müsste natürlich

double tps
double tpsRounded

sein

0
MrAmazing2 
Fragesteller
 07.05.2020, 19:42

Das @PacketReceive wird rot angestrichen. Gibt's nicht.

SPacketTimeUpdate ebenfalls nicht. :/

(1.8, MCP)

0
colum123  08.05.2020, 07:11
@MrAmazing2

Wie schon geschrieben:

Die Methode und Annotations habe ich mir selbst ausgedacht, die Implementierung ist ganz dir überlassen.
0
MrAmazing2 
Fragesteller
 21.07.2020, 20:22
@colum123

Hab etwas gebraucht um zu checken, wie ich ein EventSystem mit Annotations und co. in meinen Client implementieren kann, aber jetzt hab ichs. TimeUpdate zu benutzen war eine super Idee. Danke dir :D

0