mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 17:07:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 808bd9198 Add fast alternative constructor for Vector3f (#5339) e849c51da fix #5336 0b25bacfc fix patch 'Remove streams from SensorNearest' (fixes #5330) 4d287e31c Use Adventure for `/version` command feedback, add copy to clipboard click event (#5333) Tuinity Changes: 5b6d8beec: Update Upstream (Paper) 81d5fc1dd: Fix NPE in pickup logic for arrow 19ac6608f: Move region chunk unload & poi unload hook up 38ad5a1bd: Do not run close logic for inventories on chunk load fb75a6f83: Do not allow the server to unload chunks at request of plugins f87cb795f: Make entity tracker use highest range of passengers 71b089f18: Do not run raytrace logic for AIR 09e1a1036: Fix NPE in light exception handler 0ae7c2c23: Dump even more info for ticking entities 2e4a930c4: Store changed positions inside field on light engine 7734ef0a9: Detail player ticking in watchdog dumps
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 adc6420b63730929de491cb0a57d898ef02bb7e8..2c73ddae3df32eea175fb1779104441b49796939 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
|
|
@@ -1069,7 +1071,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);
|
|
}
|
|
|
|
@@ -1078,6 +1094,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);
|