From daa1888c0959b2a94ae8542f4f26555483d4f413 Mon Sep 17 00:00:00 2001 From: DoctorMacc Date: Sun, 12 Apr 2020 21:33:51 -0400 Subject: [PATCH] Add some code in case of a rogue plugin --- .../java/world/JavaUpdateTimeTranslator.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTimeTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTimeTranslator.java index 314814f8..2db849dd 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTimeTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTimeTranslator.java @@ -29,6 +29,8 @@ import com.nukkitx.protocol.bedrock.data.GameRuleData; import com.nukkitx.protocol.bedrock.packet.GameRulesChangedPacket; import it.unimi.dsi.fastutil.longs.Long2BooleanMap; import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; +import it.unimi.dsi.fastutil.longs.Long2LongMap; +import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap; import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.network.translators.PacketTranslator; import org.geysermc.connector.network.translators.Translator; @@ -41,14 +43,17 @@ public class JavaUpdateTimeTranslator extends PacketTranslator 0) || (doDayLightCycle && time < 0)) { + if ((!doDayLightCycle && time > 0 && lastTime != time) || (doDayLightCycle && time < 0)) { // doDaylightCycle is different than the client and we don't know // Time is set either way as a reference point for the current time setTime(time, session); @@ -56,6 +61,10 @@ public class JavaUpdateTimeTranslator extends PacketTranslator 0) { // doDaylightCycle is true and we know setTime(time, session); + } else if (time < 0) { + setTime(time, session); + // Only written to if negative to ease performance + lastRecordedTimes.put(session.getPlayerEntity().getEntityId(), time); } }