|
| 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