diff --git a/CraftBukkit-Patches/0025-Make-players-in-main-tick-loop-feature-configurable.patch b/CraftBukkit-Patches/0025-Make-players-in-main-tick-loop-feature-configurable.patch new file mode 100644 index 0000000000..0f578bedb9 --- /dev/null +++ b/CraftBukkit-Patches/0025-Make-players-in-main-tick-loop-feature-configurable.patch @@ -0,0 +1,158 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zach Brown <1254957+zachbr@users.noreply.github.com> +Date: Sat, 5 Jul 2014 22:54:54 -0500 +Subject: [PATCH] Make players in main tick loop feature configurable + + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -0,0 +0,0 @@ import org.bukkit.event.inventory.InventoryType; + import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; + // CraftBukkit end + ++import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot ++ + public class EntityPlayer extends EntityHuman implements ICrafting { + + private static final Logger bL = LogManager.getLogger(); +@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + return 1.62F; + } + +- // Spigot start +- private AxisAlignedBB groundCheck = AxisAlignedBB.a( 0, 0, 0, 0, 0, 0 ); +- + public void h() { +- groundCheck.b( locX - 0.3, locY - 0.1, locZ - 0.3, locX + 0.3, locY, locZ + 0.3 ); +- onGround = world.c(groundCheck); +- // Spigot end ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (PaperSpigotConfig.playerTickMainLoop) { ++ // Spigot start ++ AxisAlignedBB groundCheck = AxisAlignedBB.a( 0, 0, 0, 0, 0, 0 ); ++ groundCheck.b( locX - 0.3, locY - 0.1, locZ - 0.3, locX + 0.3, locY, locZ + 0.3 ); ++ onGround = world.c(groundCheck); ++ // Spigot end ++ } ++ // PaperSpigot end + + // CraftBukkit start + if (this.joining) { +@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + if (this.bX > 0L && this.server.getIdleTimeout() > 0 && MinecraftServer.ar() - this.bX > (long) (this.server.getIdleTimeout() * 1000 * 60)) { + this.playerConnection.disconnect("You have been idle for too long!"); + } +- // Spigot start +- this.i(); +- if ( Double.isNaN( previousY ) ) +- { ++ ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (PaperSpigotConfig.playerTickMainLoop) { ++ // Spigot start ++ this.i(); ++ if ( Double.isNaN( previousY ) ) ++ { ++ previousY = locY; ++ } ++ this.b(locY - previousY, onGround); + previousY = locY; + } +- this.b(locY - previousY, onGround); +- previousY = locY; ++ // PaperSpigot end + } + + private double previousY = Double.NaN; +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener { + f1 = packetplayinflying.h(); + } + ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.onGround = packetplayinflying.i(); ++ this.player.i(); ++ } ++ // PaperSpigot end; + this.player.V = 0.0F; + this.player.setLocation(d1, d2, d3, f, f1); + if (this.player.vehicle != null) { +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener { + } + + if (this.player.isSleeping()) { ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.i(); ++ } ++ // PaperSpigot end + this.player.setLocation(this.y, this.z, this.q, this.player.yaw, this.player.pitch); + worldserver.playerJoinedWorld(this.player); + return; +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener { + f3 = packetplayinflying.h(); + } + ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.i(); ++ } ++ // PaperSpigot end + this.player.V = 0.0F; + this.player.setLocation(this.y, this.z, this.q, f2, f3); + if (!this.checkMovement) { +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener { + } + + this.player.move(d4, d5, d6); ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.onGround = packetplayinflying.i(); ++ } ++ // PaperSpigot end + this.player.checkMovement(d4, d5, d6); + double d11 = d5; + +@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener { + this.f = 0; + } + ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.onGround = packetplayinflying.i(); ++ } ++ // PaperSpigot end + this.minecraftServer.getPlayerList().d(this.player); ++ // PaperSpigot start - Make player tick in main loop configurable ++ if (!PaperSpigotConfig.playerTickMainLoop) { ++ this.player.b(this.player.locY - d0, packetplayinflying.i()); ++ } ++ // PaperSpigot end + } else if (this.e % 20 == 0) { + this.a(this.y, this.z, this.q, this.player.yaw, this.player.pitch); + } +diff --git a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java ++++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java +@@ -0,0 +0,0 @@ public class PaperSpigotConfig + { + interactLimit = getInt( "settings.player-interaction-limit", 2 ); + } ++ ++ public static boolean playerTickMainLoop; ++ private static void playerTickMainLoop() ++ { ++ playerTickMainLoop = getBoolean( "settings.player-tick-in-main-loop", false ); ++ if ( playerTickMainLoop ) { ++ Bukkit.getLogger().log( Level.INFO, "Ticking players in the main loop. This may cause gameplay abnormalities" ); ++ } ++ } + } +-- \ No newline at end of file