Upstream merge - Revert player ticking in main loop

This commit is contained in:
Zach Brown 2014-07-06 19:16:34 -05:00
parent 67576acc3b
commit 635957c8d9
3 changed files with 2 additions and 170 deletions

2
Bukkit

@ -1 +1 @@
Subproject commit 4d4ccf65159ebc895698abc9f282c394d7f159d5
Subproject commit 41e89a96909667747c48d2d05980979f1334f4d0

@ -1 +1 @@
Subproject commit cb4dee587d3563de711fb2b3362796db43361763
Subproject commit d6871d8278cad9e472c32e8a81e1803126724933

View File

@ -1,168 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
Date: Sun, 6 Jul 2014 01:49:28 -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 );
+ private boolean playerTickMainLoop = PaperSpigotConfig.playerTickMainLoop;
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 (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 (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 {
this.player.a(packetplayinsteervehicle.c(), packetplayinsteervehicle.d(), packetplayinsteervehicle.e(), packetplayinsteervehicle.f());
}
+ private boolean playerTickMainLoop = PaperSpigotConfig.playerTickMainLoop;
+
public void a(PacketPlayInFlying packetplayinflying) {
// CraftBukkit start - Check for NaN
if (Double.isNaN(packetplayinflying.x) || Double.isNaN(packetplayinflying.y) || Double.isNaN(packetplayinflying.z) || Double.isNaN(packetplayinflying.stance)) {
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketPlayInListener {
f1 = packetplayinflying.h();
}
+ // PaperSpigot start - Make player tick in main loop configurable
+ if (!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 (!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 (!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 (!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 (!playerTickMainLoop) {
+ this.player.onGround = packetplayinflying.i();
+ }
+ // PaperSpigot end
this.minecraftServer.getPlayerList().d(this.player);
+ // PaperSpigot start - Make player tick in main loop configurable
+ if (!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" );
+ }
+ }
}
--