mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: fb36f15d6 Let some more packets be send immediately, closes #4140 (#4896) ede41fe16 Emancipate more features to PlayerHandshakeEvent 3fdeba1f5 [CI-SKIP] [Auto] Rebuild Patches 5fc07bd63 Maded Title-Objects directy sendable to targets e7b9a478e Player Chunk Load/Unload Events 1d0cfc0cc MC-4 Fix item position desync 458db6206 Limit auto recipe packets
94 lines
4.5 KiB
Diff
94 lines
4.5 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/server/PacketPlayOutUpdateTime.java b/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java
|
|
index 88c3d7efaf467c1c1487f589c2cdbfb6aba734ec..fed1ce95038ead72a663f5a562dd4628fa51e5f5 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutUpdateTime.java
|
|
@@ -5,7 +5,7 @@ import java.io.IOException;
|
|
public class PacketPlayOutUpdateTime implements Packet<PacketListenerPlayOut> {
|
|
|
|
private long a;
|
|
- 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/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index a1069b64b3af02cbd5d2808275c09d7680c7c1c6..790473d51ee49340f3f2b17a195e63902a2bf779 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -94,6 +94,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
|
|
@@ -381,6 +382,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
|
|
@@ -1017,7 +1019,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);
|
|
}
|
|
|
|
@@ -1026,6 +1042,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 403a503bca872c76c760c89143255228f54654dd..2136325349c1073b2103da9c6481bd87b6085833 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);
|