Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-17 05:20:05 +01:00
41a98e8541
Once is enough
171 Zeilen
7.4 KiB
Diff
171 Zeilen
7.4 KiB
Diff
From b4ccfcda70b29d207685f5ca29f5f405d4f1ed6e Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <Zbob750@live.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 93b974a..1bf5d73 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
|
|
@@ -27,6 +27,8 @@ 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();
|
|
@@ -175,13 +177,18 @@ 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) {
|
|
@@ -261,14 +268,19 @@ 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 d5f3b7b..04eead9 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
|
@@ -182,6 +182,8 @@ 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)) {
|
|
@@ -291,6 +293,12 @@ 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) {
|
|
@@ -309,6 +317,11 @@ 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;
|
|
@@ -352,6 +365,11 @@ 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) {
|
|
@@ -382,6 +400,11 @@ 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;
|
|
|
|
@@ -423,7 +446,17 @@ 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 7bda065..4f9f660 100644
|
|
--- a/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
|
|
+++ b/src/main/java/org/github/paperspigot/PaperSpigotConfig.java
|
|
@@ -135,4 +135,13 @@ 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" );
|
|
+ }
|
|
+ }
|
|
}
|
|
--
|
|
1.9.1
|
|
|