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: 1c8b6065e Skip distance map update when spawning is disabled 091e6700f Added PlayerStonecutterRecipeSelectEvent fc885f966 Add toggle for always placing the dragon egg b3a6da3a7 Updated Upstream (Bukkit/CraftBukkit) 18ccc062d [Auto] Updated Upstream (Spigot) e9a87b72b fix BaseTag constructor (#5095)
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 7ee7975d5569d24c836018e240ebd785a9e8fed5..6d5616dc4a899a1c01a21daece17f1c2cf0411bd 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
|
|
@@ -388,6 +389,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
|
|
@@ -964,7 +966,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);
|
|
}
|
|
|
|
@@ -973,6 +989,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 c59b9ef3cb8cf72d51de18db860945150a67b4d8..51033af55d58a7afe86f9a5d174d7b01e45b2990 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);
|