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" ); + } + } } --