mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
1. Wet the drys 2. Dry the wets 3. Wet the drys 4. Dry the wets 5. Wet the drys 6. Now dust the wets
46 lines
2.4 KiB
Diff
46 lines
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Sat, 6 Jul 2019 17:00:04 -0500
|
|
Subject: [PATCH] Dont send useless entity packets
|
|
|
|
TODO: Add more reducers
|
|
|
|
Original license: MIT
|
|
Original project: https://github.com/PurpurMC/Purpur
|
|
|
|
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
|
|
index ddf2a5e2cfeaa666a081dd857d6a6003d65d0e00..d8298c7925e3bcea07ead4d438478cc51abcfa16 100644
|
|
--- a/net/minecraft/server/level/ServerEntity.java
|
|
+++ b/net/minecraft/server/level/ServerEntity.java
|
|
@@ -199,6 +199,8 @@ public class ServerEntity {
|
|
}
|
|
// Gale end - Airplane - better checking for useless move packets
|
|
|
|
+ if (org.dreeam.leaf.config.modules.opt.ReduceUselessPackets.reduceUselessEntityMovePackets && isUselessMoveEntityPacket(packet)) packet = null; // Purpur
|
|
+
|
|
if (this.entity.hasImpulse || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity)this.entity).isFallFlying()) {
|
|
Vec3 deltaMovement = this.entity.getDeltaMovement();
|
|
if (deltaMovement != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed
|
|
@@ -275,6 +277,21 @@ public class ServerEntity {
|
|
}
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ private boolean isUselessMoveEntityPacket(@Nullable Packet<?> packet) {
|
|
+ if (!(packet instanceof ClientboundMoveEntityPacket moveEntityPacket)) return false;
|
|
+ return switch (packet) {
|
|
+ case ClientboundMoveEntityPacket.Pos ignored ->
|
|
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0;
|
|
+ case ClientboundMoveEntityPacket.PosRot ignored ->
|
|
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0 && moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
|
|
+ case ClientboundMoveEntityPacket.Rot ignored ->
|
|
+ moveEntityPacket.getyRot() == 0 && moveEntityPacket.getxRot() == 0;
|
|
+ default -> false;
|
|
+ };
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
private void handleMinecartPosRot(NewMinecartBehavior behavior, byte yRot, byte xRot, boolean dirty) {
|
|
this.sendDirtyEntityData();
|
|
if (behavior.lerpSteps.isEmpty()) {
|