mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
603159dedf
Removes PlayerMicroMoveEvent API, the ability to disable the AsyncCatcher, and the TeleportPassengerVehicleWithPlayer patch
75 lines
No EOL
3.7 KiB
Diff
75 lines
No EOL
3.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
|
|
Date: Mon, 13 Apr 2015 15:47:15 -0500
|
|
Subject: [PATCH] Fix redstone lag issues
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
|
if (false) { // CraftBukkit
|
|
throw new IllegalStateException("TickNextTick list out of synch");
|
|
} else {
|
|
+ // PaperSpigot start - No, stop doing this, it affects things like redstone
|
|
+ /*
|
|
if (i > 1000) {
|
|
// CraftBukkit start - If the server has too much to process over time, try to alleviate that
|
|
if (i > 20 * 1000) {
|
|
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
|
i = 1000;
|
|
}
|
|
// CraftBukkit end
|
|
+ */
|
|
+ if (i > paperSpigotConfig.tickNextTickCap) {
|
|
+ i = paperSpigotConfig.tickNextTickCap;
|
|
}
|
|
+ // PaperSpigot end
|
|
|
|
this.methodProfiler.a("cleaning");
|
|
|
|
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
|
this.V.add(nextticklistentry);
|
|
}
|
|
|
|
+ // PaperSpigot start - Allow redstone ticks to bypass the tickNextTickListCap
|
|
+ if (paperSpigotConfig.tickNextTickListCapIgnoresRedstone) {
|
|
+ Iterator<NextTickListEntry> iterator = this.M.iterator();
|
|
+ while (iterator.hasNext()) {
|
|
+ NextTickListEntry next = iterator.next();
|
|
+ if (!flag && next.b > this.worldData.getTime()) {
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (next.a().isPowerSource() || next.a() instanceof IContainer) {
|
|
+ iterator.remove();
|
|
+ this.V.add(next);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ // PaperSpigot end
|
|
+
|
|
this.methodProfiler.b();
|
|
this.methodProfiler.a("ticking");
|
|
Iterator iterator = this.V.iterator();
|
|
diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
|
|
+++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java
|
|
@@ -0,0 +0,0 @@ public class PaperSpigotWorldConfig
|
|
{
|
|
netherVoidTopDamage = getBoolean( "nether-ceiling-void-damage", false );
|
|
}
|
|
+
|
|
+ public int tickNextTickCap;
|
|
+ public boolean tickNextTickListCapIgnoresRedstone;
|
|
+ private void tickNextTickCap()
|
|
+ {
|
|
+ tickNextTickCap = getInt( "tick-next-tick-list-cap", 10000 ); // Higher values will be friendlier to vanilla style mechanics (to a point) but may hurt performance
|
|
+ tickNextTickListCapIgnoresRedstone = getBoolean( "tick-next-tick-list-cap-ignores-redstone", false ); // Redstone TickNextTicks will always bypass the preceding cap.
|
|
+ log( "WorldServer TickNextTick cap set at " + tickNextTickCap );
|
|
+ log( "WorldServer TickNextTickList cap always processes redstone: " + tickNextTickListCapIgnoresRedstone );
|
|
+ }
|
|
}
|
|
--
|