From b9a1cc56c6bfd55b5610faec45418b701139fa69 Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Sun, 14 Jul 2024 15:06:48 +0800 Subject: [PATCH] fix: smoother time transition --- .../sfcraft/mixin/server/MinecraftServerMixin.java | 10 +++++----- .../io/ib67/sfcraft/mixin/server/ServerWorldMixin.java | 4 +++- src/main/java/io/ib67/sfcraft/util/MixinHelper.java | 5 +++++ 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 src/main/java/io/ib67/sfcraft/util/MixinHelper.java diff --git a/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java b/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java index 9d3214b..5e66fe8 100644 --- a/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java +++ b/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java @@ -1,7 +1,6 @@ package io.ib67.sfcraft.mixin.server; -import io.ib67.sfcraft.module.randomevt.longnight.LongNightEvent; -import io.ib67.sfcraft.util.Helper; +import io.ib67.sfcraft.util.MixinHelper; import io.ib67.sfcraft.util.SFConsts; import net.minecraft.server.MinecraftServer; import org.spongepowered.asm.mixin.Mixin; @@ -12,11 +11,12 @@ import org.spongepowered.asm.mixin.injection.ModifyConstant; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(MinecraftServer.class) -public class MinecraftServerMixin { +public abstract class MinecraftServerMixin { + @ModifyConstant(method = "tickWorlds", constant = @Constant(intValue = 20)) private int speedUpAtNight(int constant) { - if (LongNightEvent.isRunning()) { - return 5; + if (MixinHelper.spedUp) { + return 2; } return constant; } diff --git a/src/main/java/io/ib67/sfcraft/mixin/server/ServerWorldMixin.java b/src/main/java/io/ib67/sfcraft/mixin/server/ServerWorldMixin.java index 186199b..b34fe6d 100644 --- a/src/main/java/io/ib67/sfcraft/mixin/server/ServerWorldMixin.java +++ b/src/main/java/io/ib67/sfcraft/mixin/server/ServerWorldMixin.java @@ -1,10 +1,10 @@ package io.ib67.sfcraft.mixin.server; import io.ib67.sfcraft.mixin.server.bridge.ServerWorldBridge; +import io.ib67.sfcraft.util.MixinHelper; import net.minecraft.server.world.ServerWorld; import net.minecraft.world.GameRules; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.*; @Mixin(ServerWorld.class) @@ -13,8 +13,10 @@ public abstract class ServerWorldMixin { public long setTimeOfDay(long timeOfDay) { int i = ((ServerWorld) (Object) this).getGameRules().getInt(GameRules.PLAYERS_SLEEPING_PERCENTAGE); if (((ServerWorldBridge) this).getSleepManager().canSkipNight(i)) { + MixinHelper.spedUp = true; return timeOfDay + 10; } + MixinHelper.spedUp = false; return timeOfDay; } } diff --git a/src/main/java/io/ib67/sfcraft/util/MixinHelper.java b/src/main/java/io/ib67/sfcraft/util/MixinHelper.java new file mode 100644 index 0000000..ffb0da6 --- /dev/null +++ b/src/main/java/io/ib67/sfcraft/util/MixinHelper.java @@ -0,0 +1,5 @@ +package io.ib67.sfcraft.util; + +public class MixinHelper { + public static boolean spedUp; +}