From f2a5d9adec2129bfd795271853155317e0b41a0c Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 6 Jul 2019 20:31:10 -0500 Subject: [PATCH] Dont send useless entity packets --- docs/source/configuration.rst | 8 +++ ...042-Dont-send-useless-entity-packets.patch | 64 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 patches/server/0042-Dont-send-useless-entity-packets.patch diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index 34558a6c0..2a314b681 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -50,6 +50,14 @@ disable-drops-on-cramming-death * **default**: true * **description**: Stops entities from dropping loot on death, if killed by cramming gamerule +dont-send-useless-entity-packets +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* **default**: false +* **description**: Skips sending relative move packets for entities that didn't really move + +.. warning:: + The `dont-send-useless-entity-packets` option is highly experimental! Only enable this if you are feeling brave. + large-ender-chests ~~~~~~~~~~~~~~ * **default**: true diff --git a/patches/server/0042-Dont-send-useless-entity-packets.patch b/patches/server/0042-Dont-send-useless-entity-packets.patch new file mode 100644 index 000000000..bf6029ed6 --- /dev/null +++ b/patches/server/0042-Dont-send-useless-entity-packets.patch @@ -0,0 +1,64 @@ +From fa1344452a898367f0a83109c7e17625139c7ce0 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 6 Jul 2019 17:00:04 -0500 +Subject: [PATCH] Dont send useless entity packets + +--- + .../minecraft/server/EntityTrackerEntry.java | 17 +++++++++++++++++ + src/main/java/net/pl3x/purpur/PurpurConfig.java | 5 +++++ + 2 files changed, 22 insertions(+) + +diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index 460c687d3..448602057 100644 +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -162,6 +162,7 @@ public class EntityTrackerEntry { + this.o = 0; + packet1 = new PacketPlayOutEntityTeleport(this.tracker); + } ++ if (net.pl3x.purpur.PurpurConfig.dontSendUselessEntityPackets && isUselessPacket(packet1)) packet1 = null; // Purpur + } + + if ((this.e || this.tracker.impulse || this.tracker instanceof EntityLiving && ((EntityLiving) this.tracker).isGliding()) && this.n > 0) { +@@ -248,6 +249,22 @@ public class EntityTrackerEntry { + + } + ++ // Purpur start ++ private boolean isUselessPacket(Packet packet) { ++ if (packet instanceof PacketPlayOutEntity) { ++ PacketPlayOutEntity p = (PacketPlayOutEntity) packet; ++ if (packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMove) { ++ return p.b == 0 && p.c == 0 && p.d == 0; ++ } else if (packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook) { ++ return p.b == 0 && p.c == 0 && p.d == 0 && p.e == 0 && p.f == 0; ++ } else if (packet instanceof PacketPlayOutEntity.PacketPlayOutEntityLook) { ++ return p.e == 0 && p.f == 0; ++ } ++ } ++ return false; ++ } ++ // Purpur end ++ + public void a(EntityPlayer entityplayer) { + this.tracker.c(entityplayer); + entityplayer.c(this.tracker); +diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java +index b4f8cca53..c0ae6accd 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java +@@ -141,6 +141,11 @@ public class PurpurConfig { + disableDropsOnCrammingDeath = getBoolean("settings.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + } + ++ public static boolean dontSendUselessEntityPackets = false; ++ private static void dontSendUselessEntityPackets() { ++ dontSendUselessEntityPackets = getBoolean("settings.dont-send-useless-entity-packets", dontSendUselessEntityPackets); ++ } ++ + public static boolean requireShiftToMount = true; + private static void requireShiftToMount() { + requireShiftToMount = getBoolean("settings.mobs.require-shift-to-mount", requireShiftToMount); +-- +2.20.1 +