mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-06-22 10:17:46 +02:00
fix configurable daylight cycle not working (#1788)
This commit is contained in:
@@ -30,10 +30,10 @@ index 80e694615ff8f81c8cbda9684ef96cce65f5abd7..f9cf876c5031e20b209c5de991982dbe
|
|||||||
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = level.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
|
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = level.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
|
||||||
profiler.push(() -> level + " " + level.dimension().identifier());
|
profiler.push(() -> level + " " + level.dimension().identifier());
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index 72ce2b03561af86db2059dfa05f381278af56f64..ca39cddc5d7bccbea4ce8ed95354c7529dd93072 100644
|
index 9a5be73c618c4c8572aad4ca2673def65658eeee..50a1fe6bd9f7e6cf79e48e1420fbe153c902bddb 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -239,6 +239,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
|
@@ -237,6 +237,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
|
||||||
private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry();
|
private static final org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new org.bukkit.craftbukkit.persistence.CraftPersistentDataTypeRegistry();
|
||||||
public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(DATA_TYPE_REGISTRY);
|
public final org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer(DATA_TYPE_REGISTRY);
|
||||||
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
|
private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current)
|
||||||
|
|||||||
@@ -1,14 +1,5 @@
|
|||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -220,6 +_,8 @@
|
|
||||||
private final StructureManager structureManager;
|
|
||||||
private final StructureCheck structureCheck;
|
|
||||||
private final boolean tickTime;
|
|
||||||
+ private double preciseTime; // Purpur - Configurable daylight cycle
|
|
||||||
+ private boolean forceTime; // Purpur - Configurable daylight cycle
|
|
||||||
private final LevelDebugSynchronizers debugSynchronizers = new LevelDebugSynchronizers(this);
|
|
||||||
|
|
||||||
// CraftBukkit start
|
|
||||||
@@ -646,8 +_,25 @@
|
@@ -646,8 +_,25 @@
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
this.tickTime = tickTime;
|
this.tickTime = tickTime;
|
||||||
@@ -36,14 +27,6 @@
|
|||||||
ChunkGenerator generator = levelStem.generator();
|
ChunkGenerator generator = levelStem.generator();
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
// Paper start - per-world time
|
// Paper start - per-world time
|
||||||
@@ -741,6 +_,7 @@
|
|
||||||
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
|
|
||||||
// Paper end - rewrite chunk system
|
|
||||||
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
|
||||||
+ this.preciseTime = this.serverLevelData.getGameTime(); // Purpur - Configurable daylight cycle
|
|
||||||
}
|
|
||||||
|
|
||||||
// Paper start
|
|
||||||
@@ -809,7 +_,7 @@
|
@@ -809,7 +_,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
--- a/net/minecraft/world/clock/ServerClockManager.java
|
--- a/net/minecraft/world/clock/ServerClockManager.java
|
||||||
+++ b/net/minecraft/world/clock/ServerClockManager.java
|
+++ b/net/minecraft/world/clock/ServerClockManager.java
|
||||||
@@ -149,12 +_,12 @@
|
@@ -70,7 +_,15 @@
|
||||||
|
public void tick() {
|
||||||
public ClientboundSetTimePacket createFullSyncPacket() {
|
boolean advanceTime = this.advanceTime(); // Paper - per-world time
|
||||||
// Paper start - per-player time
|
if (advanceTime) {
|
||||||
- return this.createFullSyncPacket(null);
|
- this.clocks.values().forEach(ServerClockManager.ClockInstance::tick);
|
||||||
+ return this.createFullSyncPacket(null); // Purpur - TODO: Configurable daylight cycle
|
+ this.clocks.forEach(((worldClockHolder, clockInstance) -> { // Purpur start - Configurable daylight cycle
|
||||||
}
|
+ ServerLevel l = level != null ? level : server.overworld();
|
||||||
|
+ int incrementTicks = 12000 / (l.isBrightOutside() ? l.purpurConfig.daytimeTicks : l.purpurConfig.nighttimeTicks);
|
||||||
public ClientboundSetTimePacket createFullSyncPacket(final net.minecraft.server.level.ServerPlayer player) {
|
+ float rate = clockInstance.rate;
|
||||||
final Map<Holder<WorldClock>, ClockNetworkState> updates = new HashMap<>(this.clocks.size());
|
+ clockInstance.rate *= incrementTicks;
|
||||||
- this.clocks.forEach((clock, instance) -> updates.put(clock, this.packNetworkState(clock, instance, player)));
|
+ clockInstance.tick();
|
||||||
+ this.clocks.forEach((clock, instance) -> updates.put(clock, this.packNetworkState(clock, instance, player))); // Purpur - TODO: Configurable daylight cycle
|
+ clockInstance.rate = rate;
|
||||||
return new ClientboundSetTimePacket(this.getGameTime(), updates);
|
+ this.broadcastUpdates(worldClockHolder, clockInstance);
|
||||||
// Paper end - per-player time
|
+ })); // Purpur end - Configurable daylight cycle
|
||||||
|
this.setDirty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user