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: d4532f7e7 bug #5373 - fix AsyncChatEvent not being posted when processing a legacy APCE continuation 522ae1c51 Replace all block states of a specified block (#5055) 1cda67118 [Auto] Updated Upstream (CraftBukkit) Tuinity Changes: 44e8e5de5 Do not load extra radius of chunks when loading a single chunk 31f9cae05 Revert custom table implementation for blockstate states 9ac33d168 Be aware of entity teleports when chunk checking entities 18c7f3f59 Always set impluse for projectiles to true, even if hit failed Airplane Changes: 0f8044393 Update Upstream (Tuinity) 2f6cbdc74 More debug for plugins not shutting down tasks 12e1b6169 Update Upstream (Tuinity) fc778d30b Update README.md b23bee302 Remove debug 8157e9838 Config style, flare style, disable tracker by def 98d0b589b Updates to README
94 lines
4.7 KiB
Diff
94 lines
4.7 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 1b9b43ee696575d986c25cafec07d863acb951a7..e837db171545ceacbc84a2b360cf0d95347145d0 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 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/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index f2bbc31540224424dc224bbfc86c61ccf2d0e629..8146e86aacfac80f06906c8d421899fcca2be50a 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
|
|
@@ -485,6 +486,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
|
|
@@ -1091,7 +1093,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);
|
|
}
|
|
|
|
@@ -1100,6 +1116,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 95d14d82d6f8bce762ef70645f0f8eae3093914c..0b58a2e99a2f89d450d7980eb4837172e8a10dba 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);
|