mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-24 01:19:25 +00:00
Readd Leaves protocols
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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 d6b261f8d3fbeee771208528b3e0bd5fcd94878b..1a9601aee097b6c10cf2ae1c52fddf45da85f60f 100644
|
||||
--- a/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -221,6 +221,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
|
||||
@@ -304,6 +306,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()) {
|
||||
Reference in New Issue
Block a user