From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 10 Oct 2020 14:29:55 -0500 Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutUpdateTime.java b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutUpdateTime.java index 3086ee023685781d94e2fb99fc8dff5264f01165..74c1047305cac5673e274096709c757ede4605f4 100644 --- a/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutUpdateTime.java +++ b/src/main/java/net/minecraft/network/protocol/game/PacketPlayOutUpdateTime.java @@ -7,7 +7,7 @@ import net.minecraft.network.protocol.Packet; public class PacketPlayOutUpdateTime implements Packet { private long a; private final void setWorldAge(final long age) { this.a = age; } private final long getWorldAge() { return this.a; } // Paper - OBFHELPER - private long b; + private long b; public void setPlayerTime(long time) { this.b = time; } // Purpur public PacketPlayOutUpdateTime() {} diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java index 64feabfb860ac29a7f7692bcc9972369dbdc2e02..028911ebe843751080564d90e96306524e5a2e21 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -64,6 +64,7 @@ import net.minecraft.network.protocol.game.PacketPlayOutExplosion; import net.minecraft.network.protocol.game.PacketPlayOutGameStateChange; import net.minecraft.network.protocol.game.PacketPlayOutNamedSoundEffect; import net.minecraft.network.protocol.game.PacketPlayOutSpawnPosition; +import net.minecraft.network.protocol.game.PacketPlayOutUpdateTime; import net.minecraft.network.protocol.game.PacketPlayOutWorldEvent; import net.minecraft.network.protocol.game.PacketPlayOutWorldParticles; import net.minecraft.resources.MinecraftKey; @@ -213,6 +214,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { private final EnderDragonBattle dragonBattle; private final StructureManager structureManager; private final boolean Q; + private double fakeTime; // Purpur // CraftBukkit start @@ -604,6 +606,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.getServer().addWorld(this.getWorld()); // CraftBukkit this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper + this.fakeTime = this.worldDataServer.getDayTime(); // Purpur } // Tuinity start - optimise collision @@ -1211,7 +1214,21 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.nextTickListBlock.nextTick(); // Paper this.nextTickListFluid.nextTick(); // Paper this.worldDataServer.u().a(this.server, i); - if (this.worldData.q().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { + // Purpur start + WorldServer world = this.worldDataServer.world; + if (world.getGameRules().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) { + double incrementTimeBy = 12000.0D / (double) (world.isDay() ? world.purpurConfig.daytimeTicks : world.purpurConfig.nighttimeTicks); + if (incrementTimeBy != 1.0D) { + this.fakeTime += incrementTimeBy; + this.setDayTime(this.fakeTime); + PacketPlayOutUpdateTime packet = new PacketPlayOutUpdateTime(world.getTime(), world.getDayTime(), true); + for (EntityHuman entityhuman : world.players) { + EntityPlayer player = (EntityPlayer) entityhuman; + packet.setPlayerTime(player.getPlayerTime()); + player.playerConnection.sendPacket(packet); + } + } else + // Purpur end this.setDayTime(this.worldData.getDayTime() + 1L); } @@ -1220,6 +1237,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { public void setDayTime(long i) { this.worldDataServer.setDayTime(i); + // Purpur start + this.fakeTime = i; + } + public void setDayTime(double i) { + this.worldDataServer.setDayTime((long) i); + // Purpur end } public void doMobSpawning(boolean flag, boolean flag1) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 8dda3c6aab016c52cf8cc2ee663087cbe9099681..21bc5f3b398b824a66e089e408e6759d33c30511 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -116,6 +116,13 @@ public class PurpurWorldConfig { } } + public int daytimeTicks = 12000; + public int nighttimeTicks = 12000; + private void daytimeCycleSettings() { + daytimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.daytime", daytimeTicks); + nighttimeTicks = getInt("gameplay-mechanics.daylight-cycle-ticks.nighttime", nighttimeTicks); + } + public int entityLifeSpan = 0; private void entitySettings() { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan);