From da063aacb4ab07c77d80adc47a0c36d29ea024d9 Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 9 Jul 2019 09:28:54 -0300 Subject: [PATCH] smooth low tps --- .../RenderTickCounter_tickSpeedMixin.java | 23 +++++++++++++++++++ .../java/carpet/settings/CarpetSettings.java | 3 +++ src/main/resources/carpet.mixins.json | 1 + 3 files changed, 27 insertions(+) create mode 100644 src/main/java/carpet/mixins/RenderTickCounter_tickSpeedMixin.java diff --git a/src/main/java/carpet/mixins/RenderTickCounter_tickSpeedMixin.java b/src/main/java/carpet/mixins/RenderTickCounter_tickSpeedMixin.java new file mode 100644 index 00000000..9e4927e0 --- /dev/null +++ b/src/main/java/carpet/mixins/RenderTickCounter_tickSpeedMixin.java @@ -0,0 +1,23 @@ +package carpet.mixins; + +import carpet.helpers.TickSpeed; +import carpet.settings.CarpetSettings; +import net.minecraft.client.render.RenderTickCounter; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(RenderTickCounter.class) +public class RenderTickCounter_tickSpeedMixin { + @Redirect(method = "beginRenderTick", at = @At( + value = "FIELD", + target = "Lnet/minecraft/client/render/RenderTickCounter;timeScale:F" + )) + private float adjustTickSpeed(RenderTickCounter counter) { + if (CarpetSettings.smoothClientAnimations) + { + return Math.max(50.0f, TickSpeed.mspt); + } + return 50f; + } +} \ No newline at end of file diff --git a/src/main/java/carpet/settings/CarpetSettings.java b/src/main/java/carpet/settings/CarpetSettings.java index 02942790..1d46be6e 100644 --- a/src/main/java/carpet/settings/CarpetSettings.java +++ b/src/main/java/carpet/settings/CarpetSettings.java @@ -223,6 +223,9 @@ public class CarpetSettings @Rule(desc = "fill/clone/setblock and structure blocks cause block updates", category = CREATIVE) public static boolean fillUpdates = true; + @Rule(desc = "smooth client animations with low tps settings", extra = "works only in SP, and will slow down players", category = CREATIVE) + public static boolean smoothClientAnimations; + private static class PushLimitLimits extends Validator { @Override public Integer validate(ServerCommandSource source, ParsedRule currentRule, Integer newValue, String string) { return (newValue>0 && newValue <= 1024) ? newValue : null; diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index a715a07c..3c35b4a8 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -113,6 +113,7 @@ "WorldChunk_movableTEMixin" ], "client": [ + "RenderTickCounter_tickSpeedMixin", "MinecraftClientMixin", "IntegratedServerMixin", "InGameHudMixin",