Skip to content

Commit a5be178

Browse files
committed
Use correct toX/Y/Z in player move packet handling
1 parent c8e49cc commit a5be178

File tree

35 files changed

+166
-150
lines changed

35 files changed

+166
-150
lines changed

patches/server/0277-Add-option-to-prevent-players-from-moving-into-unloa.patch

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,31 @@ index 8c50036896602ab6b00979351918878d08c9c75e..a4b20f8616b6fe2046e7a5f00306565b
2020
+ }
2121
}
2222
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
23-
index f1d2c9274f4968adab689a08c86bea7a16b76b39..189e05daf63060c8f0c1ca56bc23a0c4c8fa0b7a 100644
23+
index f1d2c9274f4968adab689a08c86bea7a16b76b39..7a0625c4aeb788b791734c13d7bca1e993c5b248 100644
2424
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2525
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
26-
@@ -534,6 +534,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
26+
@@ -497,9 +497,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
27+
double d0 = entity.getX();
28+
double d1 = entity.getY();
29+
double d2 = entity.getZ();
30+
- double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX());
31+
- double d4 = ServerGamePacketListenerImpl.clampVertical(packet.getY());
32+
- double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ());
33+
+ double d3 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX()); final double toX = d3; // Paper - OBFHELPER
34+
+ double d4 = ServerGamePacketListenerImpl.clampVertical(packet.getY()); final double toY = d4; // Paper - OBFHELPER
35+
+ double d5 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ()); final double toZ = d5; // Paper - OBFHELPER
36+
float f = Mth.wrapDegrees(packet.getYRot());
37+
float f1 = Mth.wrapDegrees(packet.getXRot());
38+
double d6 = d3 - this.vehicleFirstGoodX;
39+
@@ -534,6 +534,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
2740
}
2841
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
2942

3043
+ // Paper start - Prevent moving into unloaded chunks
31-
+ if (player.level.paperConfig.preventMovingIntoUnloadedChunks && worldserver.getChunkIfLoadedImmediately((int) Math.floor(packet.getX()) >> 4, (int) Math.floor(packet.getZ()) >> 4) == null) {
44+
+ if (player.level.paperConfig.preventMovingIntoUnloadedChunks && (
45+
+ !worldserver.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position()))) ||
46+
+ !worldserver.areChunksLoadedForMove(entity.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(entity.position())))
47+
+ )) {
3248
+ this.connection.send(new ClientboundMoveVehiclePacket(entity));
3349
+ return;
3450
+ }
@@ -37,24 +53,25 @@ index f1d2c9274f4968adab689a08c86bea7a16b76b39..189e05daf63060c8f0c1ca56bc23a0c4
3753
if (d10 - d9 > Math.max(100.0D, Math.pow((double) (org.spigotmc.SpigotConfig.movedTooQuicklyMultiplier * (float) i * speed), 2)) && !this.isSingleplayerOwner()) {
3854
// CraftBukkit end
3955
ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved too quickly! {},{},{}", new Object[]{entity.getName().getString(), this.player.getName().getString(), d6, d7, d8});
40-
@@ -1166,9 +1173,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
41-
float prevYaw = this.player.getYRot();
42-
float prevPitch = this.player.getXRot();
43-
// CraftBukkit end
44-
- double d3 = this.player.getX();
45-
+ double d3 = this.player.getX(); final double toX = d3; // Paper - OBFHELPER
46-
double d4 = this.player.getY();
47-
- double d5 = this.player.getZ();
48-
+ double d5 = this.player.getZ(); final double toZ = d5; // Paper - OBFHELPER
49-
double d6 = this.player.getY();
50-
double d7 = d0 - this.firstGoodX;
51-
double d8 = d1 - this.firstGoodY;
52-
@@ -1206,6 +1213,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
56+
@@ -1148,9 +1158,9 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
57+
this.allowedPlayerTicks = 20; // CraftBukkit
58+
} else {
59+
this.awaitingTeleportTime = this.tickCount;
60+
- double d0 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX(this.player.getX()));
61+
- double d1 = ServerGamePacketListenerImpl.clampVertical(packet.getY(this.player.getY()));
62+
- double d2 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ(this.player.getZ()));
63+
+ double d0 = ServerGamePacketListenerImpl.clampHorizontal(packet.getX(this.player.getX())); final double toX = d0; // Paper - OBFHELPER
64+
+ double d1 = ServerGamePacketListenerImpl.clampVertical(packet.getY(this.player.getY())); final double toY = d1;
65+
+ double d2 = ServerGamePacketListenerImpl.clampHorizontal(packet.getZ(this.player.getZ())); final double toZ = d2; // Paper - OBFHELPER
66+
float f = Mth.wrapDegrees(packet.getYRot(this.player.getYRot()));
67+
float f1 = Mth.wrapDegrees(packet.getXRot(this.player.getXRot()));
68+
69+
@@ -1206,6 +1216,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
5370
} else {
5471
speed = this.player.getAbilities().walkingSpeed * 10f;
5572
}
5673
+ // Paper start - Prevent moving into unloaded chunks
57-
+ if (player.level.paperConfig.preventMovingIntoUnloadedChunks && (this.player.getX() != toX || this.player.getZ() != toZ) && !worldserver.hasChunk((int) Math.floor(toX) >> 4, (int) Math.floor(toZ) >> 4)) {
74+
+ if (player.level.paperConfig.preventMovingIntoUnloadedChunks && (this.player.getX() != toX || this.player.getZ() != toZ) && !worldserver.areChunksLoadedForMove(this.player.getBoundingBox().expandTowards(new Vec3(toX, toY, toZ).subtract(this.player.position())))) {
5875
+ this.internalTeleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot(), Collections.emptySet(), true);
5976
+ return;
6077
+ }

patches/server/0285-Don-t-allow-digging-into-unloaded-chunks.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ index 91d6885da13138e1def16e1876910ef893ce244d..eb58536e37af9da5e3ae7e43f874a1ef
5959

6060
this.level.destroyBlockProgress(this.player.getId(), pos, -1);
6161
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
62-
index 189e05daf63060c8f0c1ca56bc23a0c4c8fa0b7a..7241418074dbd8e0e81e2b679bd317d98fea2e27 100644
62+
index 7a0625c4aeb788b791734c13d7bca1e993c5b248..69c492e228ad726e51f5644e91e6aac3bf10c758 100644
6363
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
6464
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
65-
@@ -1563,7 +1563,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
65+
@@ -1566,7 +1566,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
6666
case START_DESTROY_BLOCK:
6767
case ABORT_DESTROY_BLOCK:
6868
case STOP_DESTROY_BLOCK:

patches/server/0291-Book-Size-Limits.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ index 36719c689a24c63e7d9a5b40f8c262c182a31b21..83bf428abd3be89e34cf42638bd1357a
2424
private static void asyncChunks() {
2525
ConfigurationSection section;
2626
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
27-
index 7241418074dbd8e0e81e2b679bd317d98fea2e27..d8135a0e644b67ed47972eb3bda517323561a93d 100644
27+
index 69c492e228ad726e51f5644e91e6aac3bf10c758..167e20fd558aad856c3973ea00ff6a34354aaae5 100644
2828
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2929
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
30-
@@ -1012,6 +1012,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
30+
@@ -1015,6 +1015,45 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
3131

3232
@Override
3333
public void handleEditBook(ServerboundEditBookPacket packet) {

patches/server/0299-Implement-Brigadier-Mojang-API.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ index f3bbe012541a71ab75c1863990d0c056c62d8c6e..4bc28b66788d06d1446284f5adef6a44
8181
event.getPlayer().getServer().getPluginManager().callEvent(event);
8282

8383
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
84-
index d8135a0e644b67ed47972eb3bda517323561a93d..43bd11679d881b1039db4ed57e70d1ae4d49a107 100644
84+
index 167e20fd558aad856c3973ea00ff6a34354aaae5..bfce81dec52011230f8a82c64c409f36fb576ee3 100644
8585
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8686
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
87-
@@ -753,8 +753,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
87+
@@ -756,8 +756,12 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
8888
ParseResults<CommandSourceStack> parseresults = this.server.getCommands().getDispatcher().parse(stringreader, this.player.createCommandSourceStack());
8989

9090
this.server.getCommands().getDispatcher().getCompletionSuggestions(parseresults).thenAccept((suggestions) -> {
@@ -99,7 +99,7 @@ index d8135a0e644b67ed47972eb3bda517323561a93d..43bd11679d881b1039db4ed57e70d1ae
9999
});
100100
});
101101
}
102-
@@ -763,7 +767,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
102+
@@ -766,7 +770,11 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
103103

104104
builder = builder.createOffset(builder.getInput().lastIndexOf(' ') + 1);
105105
completions.forEach(builder::suggest);

patches/server/0301-Limit-Client-Sign-length-more.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ it only impacts data sent from the client.
2222
Set -DPaper.maxSignLength=XX to change limit or -1 to disable
2323

2424
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
25-
index 43bd11679d881b1039db4ed57e70d1ae4d49a107..d1c5e6672068b83a22602fecd891d62c15edd55d 100644
25+
index bfce81dec52011230f8a82c64c409f36fb576ee3..a8a05a2ff0f8900f31a3d137520cd52bd6005342 100644
2626
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2727
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2828
@@ -254,6 +254,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
@@ -33,7 +33,7 @@ index 43bd11679d881b1039db4ed57e70d1ae4d49a107..d1c5e6672068b83a22602fecd891d62c
3333
private static final long KEEPALIVE_LIMIT = Long.getLong("paper.playerconnection.keepalive", 30) * 1000; // Paper - provide property to set keepalive limit
3434

3535
public ServerGamePacketListenerImpl(MinecraftServer server, Connection connection, ServerPlayer player) {
36-
@@ -2889,6 +2890,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
36+
@@ -2892,6 +2893,15 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
3737

3838
for (int i = 0; i < signText.size(); ++i) {
3939
TextFilter.FilteredText currentLine = signText.get(i);

patches/server/0309-Update-entity-Metadata-for-all-tracked-players.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ index 861f3790179e18f6192ac8b2fb5d2ecbc54484ad..5e3f489964489e0facc93a823a1cb84b
2222
this.broadcast.accept(packet);
2323
if (this.entity instanceof ServerPlayer) {
2424
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
25-
index d1c5e6672068b83a22602fecd891d62c15edd55d..4fcfe654f8199ead2d2309d37f6b5866ba540e45 100644
25+
index a8a05a2ff0f8900f31a3d137520cd52bd6005342..5d19461d7165f62f157b995efb97d9d05aece258 100644
2626
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
2727
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
28-
@@ -2305,7 +2305,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
28+
@@ -2308,7 +2308,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
2929

3030
if (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem) {
3131
// Refresh the current entity metadata

patches/server/0335-Dont-send-unnecessary-sign-update.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Dont send unnecessary sign update
55

66

77
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index 070451db9f8dff9bb73ec8d71a1e97e9bdcc9f4c..0de98ce5db144d0b5cde34f62991c46b7aedad8b 100644
8+
index 5336ec0d30d386854c22ce227dcfd242d351b294..4376236a89f520e29c9227d2117d21884730e3f7 100644
99
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1010
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
11-
@@ -2884,6 +2884,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
11+
@@ -2887,6 +2887,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1212

1313
if (!tileentitysign.isEditable() || !this.player.getUUID().equals(tileentitysign.getPlayerWhoMayEdit())) {
1414
ServerGamePacketListenerImpl.LOGGER.warn("Player {} just tried to change non-editable sign", this.player.getName().getString());

patches/server/0337-Fix-AssertionError-when-player-hand-set-to-empty-typ.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ Fixes an AssertionError when setting the player's item in hand to null or a new
77
Fixes GH-2718
88

99
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
10-
index 0de98ce5db144d0b5cde34f62991c46b7aedad8b..f961a0f5b571d86c8d2b57f489b421fbfb01ca3d 100644
10+
index 4376236a89f520e29c9227d2117d21884730e3f7..a53537d459774a85800753fd6e8e460e2d71477c 100644
1111
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1212
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
13-
@@ -1753,6 +1753,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
13+
@@ -1756,6 +1756,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1414
this.player.getBukkitEntity().updateInventory(); // SPIGOT-2524
1515
return;
1616
}

patches/server/0407-Validate-PickItem-Packet-and-kick-for-invalid.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Validate PickItem Packet and kick for invalid
55

66

77
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index a041e73798e2c52026a8b9b3ff5c41bb7fa7263d..850ffa36da69abea61e9fd20145a9dbe3f8a5f18 100644
8+
index 3c45c6c6f10408ddcc077787865c68a323c6e901..fd53b03b69a929793c3115e8ee4dfd502d15125b 100644
99
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1010
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
11-
@@ -881,7 +881,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
11+
@@ -884,7 +884,14 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1212
@Override
1313
public void handlePickItem(ServerboundPickItemPacket packet) {
1414
PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());

patches/server/0412-Prevent-teleporting-dead-entities.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Prevent teleporting dead entities
55

66

77
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
8-
index 850ffa36da69abea61e9fd20145a9dbe3f8a5f18..7c7cd7e9ee014f5b822a94d394ab1978dcff7beb 100644
8+
index fd53b03b69a929793c3115e8ee4dfd502d15125b..e1ae88a2c71a2fb804a8d7e467eb1232d10b4a53 100644
99
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
1010
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
11-
@@ -1524,6 +1524,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
11+
@@ -1527,6 +1527,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser
1212
}
1313

1414
private void internalTeleport(double d0, double d1, double d2, float f, float f1, Set<ClientboundPlayerPositionPacket.RelativeArgument> set, boolean flag) {

0 commit comments

Comments
 (0)