From 55d6ba4dd1b56a700751af7fe16f027de57d5e89 Mon Sep 17 00:00:00 2001 From: RaphiMC <50594595+RaphiMC@users.noreply.github.com> Date: Sat, 18 Feb 2023 14:18:52 +0100 Subject: [PATCH] Properly locking time now if the client supports it --- build.gradle | 2 +- .../task/TimeLockTask.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index f07639a..7591c47 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ repositories { } dependencies { - compileOnly "com.viaversion:viaversion:4.6.0-23w06a-SNAPSHOT" + compileOnly "com.viaversion:viaversion:4.6.0-23w07a-SNAPSHOT" compileOnly "org.yaml:snakeyaml:1.33" compileOnly "com.google.guava:guava:31.1-jre" compileOnly "io.netty:netty-handler:4.1.88.Final" diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java index 1086f3d..ba041ab 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java @@ -24,6 +24,8 @@ import com.viaversion.viaversion.api.type.Type; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.Protocola1_0_17_1_0_17_4toa1_0_16_2; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage; import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ClientboundPacketsa1_0_17; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.Protocol1_6_1to1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1.ClientboundPackets1_6_1; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.PlayerInfoStorage; public class TimeLockTask implements Runnable { @@ -35,9 +37,19 @@ public class TimeLockTask implements Runnable { final PlayerInfoStorage playerInfoStorage = info.get(PlayerInfoStorage.class); if (timeLockStorage != null && playerInfoStorage != null && playerInfoStorage.entityId != -1) { try { - final PacketWrapper updateTime = PacketWrapper.create(ClientboundPacketsa1_0_17.TIME_UPDATE, info); - updateTime.write(Type.LONG, timeLockStorage.getTime() % 24_000L); - updateTime.send(Protocola1_0_17_1_0_17_4toa1_0_16_2.class); + if (info.getProtocolInfo().getPipeline().contains(Protocol1_6_1to1_5_2.class)) { + if (timeLockStorage.getTime() == 0) { // 0 always does the daylight cycle + timeLockStorage.setTime(1); // Set it to 1 which is close enough + } + final PacketWrapper updateTime = PacketWrapper.create(ClientboundPackets1_6_1.TIME_UPDATE, info); + updateTime.write(Type.LONG, timeLockStorage.getTime()); // time + updateTime.write(Type.LONG, -(timeLockStorage.getTime() % 24000)); // time of day + updateTime.send(Protocol1_6_1to1_5_2.class); + } else { + final PacketWrapper updateTime = PacketWrapper.create(ClientboundPacketsa1_0_17.TIME_UPDATE, info); + updateTime.write(Type.LONG, timeLockStorage.getTime()); // time + updateTime.send(Protocola1_0_17_1_0_17_4toa1_0_16_2.class); + } } catch (Throwable ignored) { } }