mirror of
https://github.com/Shiewk/Widgets.git
synced 2026-04-28 11:34:17 +02:00
Show TPS as loading when TPS estimation is still loading
This commit is contained in:
@@ -6,6 +6,7 @@ import de.shiewk.widgets.widgets.*;
|
|||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
|
||||||
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
|
||||||
@@ -46,6 +47,13 @@ public class WidgetsModClient implements ClientModInitializer {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ClientEntityEvents.ENTITY_LOAD.register((entity, clientWorld) -> {
|
||||||
|
if (entity == MinecraftClient.getInstance().player){
|
||||||
|
// player switched world
|
||||||
|
TPSWidget.worldChanged();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
WidgetManager.register(new FPSWidget(Identifier.of(WidgetsMod.MOD_ID, "fps")));
|
WidgetManager.register(new FPSWidget(Identifier.of(WidgetsMod.MOD_ID, "fps")));
|
||||||
WidgetManager.register(new ClockWidget(Identifier.of(WidgetsMod.MOD_ID, "clock")));
|
WidgetManager.register(new ClockWidget(Identifier.of(WidgetsMod.MOD_ID, "clock")));
|
||||||
WidgetManager.register(new CoordinatesWidget(Identifier.of(WidgetsMod.MOD_ID, "coordinates")));
|
WidgetManager.register(new CoordinatesWidget(Identifier.of(WidgetsMod.MOD_ID, "coordinates")));
|
||||||
|
|||||||
@@ -23,9 +23,14 @@ public class TPSWidget extends BasicTextWidget {
|
|||||||
|
|
||||||
private static final long[] lastUpdates = new long[5];
|
private static final long[] lastUpdates = new long[5];
|
||||||
private static int updatePointer = 0;
|
private static int updatePointer = 0;
|
||||||
|
private static int updatesSinceWorldChange = 0;
|
||||||
|
|
||||||
private boolean dynamicColor = true;
|
private boolean dynamicColor = true;
|
||||||
|
|
||||||
|
public static void worldChanged(){
|
||||||
|
updatesSinceWorldChange = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public static void worldTimeUpdated(long nanoTime) {
|
public static void worldTimeUpdated(long nanoTime) {
|
||||||
MinecraftClient client = MinecraftClient.getInstance();
|
MinecraftClient client = MinecraftClient.getInstance();
|
||||||
if (client.isInSingleplayer()){
|
if (client.isInSingleplayer()){
|
||||||
@@ -35,12 +40,13 @@ public class TPSWidget extends BasicTextWidget {
|
|||||||
float tps = 1000f / server.getAverageTickTime();
|
float tps = 1000f / server.getAverageTickTime();
|
||||||
float targetTickRate = tickManager.getTickRate();
|
float targetTickRate = tickManager.getTickRate();
|
||||||
if (tickManager.isSprinting()){
|
if (tickManager.isSprinting()){
|
||||||
INSTANCE.updateTPS(tps, targetTickRate);
|
INSTANCE.updateTPS(tps, targetTickRate, true);
|
||||||
} else {
|
} else {
|
||||||
INSTANCE.updateTPS(Math.min(tps, targetTickRate), targetTickRate);
|
INSTANCE.updateTPS(Math.min(tps, targetTickRate), targetTickRate, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
updatesSinceWorldChange++;
|
||||||
lastUpdates[updatePointer] = nanoTime;
|
lastUpdates[updatePointer] = nanoTime;
|
||||||
updatePointer++;
|
updatePointer++;
|
||||||
if (updatePointer >= lastUpdates.length) updatePointer = 0;
|
if (updatePointer >= lastUpdates.length) updatePointer = 0;
|
||||||
@@ -55,27 +61,33 @@ public class TPSWidget extends BasicTextWidget {
|
|||||||
float mspt = avgDifference / 20000000f;
|
float mspt = avgDifference / 20000000f;
|
||||||
float ticksPerSecond = 1000f / mspt;
|
float ticksPerSecond = 1000f / mspt;
|
||||||
|
|
||||||
|
boolean loadingFinished = updatesSinceWorldChange > 5;
|
||||||
if (client.world != null) {
|
if (client.world != null) {
|
||||||
INSTANCE.updateTPS(ticksPerSecond, client.world.getTickManager().getTickRate());
|
INSTANCE.updateTPS(ticksPerSecond, client.world.getTickManager().getTickRate(), loadingFinished);
|
||||||
} else {
|
} else {
|
||||||
INSTANCE.updateTPS(ticksPerSecond, 20);
|
INSTANCE.updateTPS(ticksPerSecond, 20, loadingFinished);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateTPS(float tps, float targetTickRate) {
|
private void updateTPS(float tps, float targetTickRate, boolean loadingFinished) {
|
||||||
|
if (!loadingFinished){
|
||||||
|
this.renderText = Text.literal(Text.translatable("widgets.widgets.tps.tps", "???").getString());
|
||||||
|
if (dynamicColor) this.textColor = 0x00ff00;
|
||||||
|
} else {
|
||||||
tps = Math.round(tps * 10f) / 10f;
|
tps = Math.round(tps * 10f) / 10f;
|
||||||
this.renderText = Text.literal(Text.translatable("widgets.widgets.tps.tps", tps).getString());
|
this.renderText = Text.literal(Text.translatable("widgets.widgets.tps.tps", tps).getString());
|
||||||
if (dynamicColor){
|
if (dynamicColor){
|
||||||
if (tps >= targetTickRate * 0.995){
|
if (tps >= targetTickRate * 0.990){
|
||||||
this.textColor = 0x00ff00;
|
this.textColor = 0x00ff00;
|
||||||
} else if (tps >= targetTickRate * 0.745){
|
} else if (tps >= targetTickRate * 0.740){
|
||||||
this.textColor = 0xffff00;
|
this.textColor = 0xffff00;
|
||||||
} else {
|
} else {
|
||||||
this.textColor = 0xff0000;
|
this.textColor = 0xff0000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tickWidget() {
|
public void tickWidget() {
|
||||||
|
|||||||
Reference in New Issue
Block a user