Files
Purpur/patches/server/0119-Configurable-daylight-cycle.patch
BillyGalbreath 7f7f024f02 Updated Upstream (Paper, Tuinity, & Airplane)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
8a29f5894 [Auto] Updated Upstream (Bukkit/CraftBukkit)
8756d232c Expose server protocol version (#5416)
4492bc4cc remove l4j class no longer in existence from preload list
be1370517 Updated Upstream (CraftBukkit) (#5484)
d560151ec Bump mysql-connector-java to 8.0.23 (Fixes #5473) (#5474)
61f400f11 Update log4j to 2.11.2 for JDK 9+ compat (#5400)
a98196585 Updated Upstream (Bukkit/CraftBukkit)
de138fac4 [Auto] Updated Upstream (Bukkit)
304a216ba [CI-SKIP] Ignore gitignore when adding files in automation
d8e384a16 [CI-SKIP] Drop `Allow PlayerEditBookEvent to fire for off hand` (#5471)

Tuinity Changes:
d5261ad29 Do not load chunks for getCubes by default
da9cf9828 Don't read neighbor chunk data off disk when converting chunks
a0aa5ab07 Do not load 1 radius neighbors for lighting
5ccfa52a2 Fix terrible patch times
af53d703a Stop large move vectors in player packet handling from killing the server
6e56ee735 Fix OBFHELPER for flushHeaderin RegionFile
995d05c1c Do not update TE's in generating chunks

Airplane Changes:
8de8e82a2 Update upstream (Tuinity)
2021-04-13 10:56:32 -05:00

102 lines
5.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
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<PacketListenerPlayOut> {
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 6340831852f07af8d93a4d0a3605d7b1b2f5d009..f6d6387588f98049a2e94e73edee14250a6efb9e 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
@@ -1212,7 +1215,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);
}
@@ -1221,6 +1238,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);