Skip to content

Commit ff73a64

Browse files
committed
Don't send useless entity packets
1 parent 9020626 commit ff73a64

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MidnightTale <[email protected]>
3+
Date: Fri, 25 Jul 2025 11:16:28 +0700
4+
Subject: [PATCH] Purpur: Don't send useless entity packets
5+
6+
Original license: MIT
7+
Original project: https://github.com/PurpurMC/Purpur
8+
9+
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
10+
index 3a9293d5328ef0befa0b709169489b61a2266807..de476f97c42f6949f769aaf9cf5ce18470bd7cda 100644
11+
--- a/net/minecraft/server/level/ServerEntity.java
12+
+++ b/net/minecraft/server/level/ServerEntity.java
13+
@@ -231,6 +231,7 @@ public class ServerEntity {
14+
} // SparklyPaper end
15+
}
16+
17+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.ENTITY_CONFIG.reduceUselessEntityMovePackets && isUselessMoveEntityPacket(packet)) packet = null; // Purpur
18+
if (packet != null) {
19+
this.broadcast.accept(packet);
20+
}
21+
@@ -291,6 +292,21 @@ public class ServerEntity {
22+
);
23+
}
24+
25+
+ // Purpur start
26+
+ private boolean isUselessMoveEntityPacket(@Nullable Packet<?> packet) {
27+
+ if (!(packet instanceof ClientboundMoveEntityPacket moveEntityPacket)) return false;
28+
+ return switch (packet) {
29+
+ case ClientboundMoveEntityPacket.Pos ignored ->
30+
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0;
31+
+ case ClientboundMoveEntityPacket.PosRot ignored ->
32+
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0 && moveEntityPacket.getYRot() == 0 && moveEntityPacket.getXRot() == 0;
33+
+ case ClientboundMoveEntityPacket.Rot ignored ->
34+
+ moveEntityPacket.getYRot() == 0 && moveEntityPacket.getXRot() == 0;
35+
+ default -> false;
36+
+ };
37+
+ }
38+
+ // Purpur end
39+
+
40+
private void handleMinecartPosRot(NewMinecartBehavior behavior, byte yRot, byte xRot, boolean dirty) {
41+
this.sendDirtyEntityData();
42+
if (behavior.lerpSteps.isEmpty()) {

0 commit comments

Comments
 (0)