9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-21 16:09:19 +00:00
Files
Leaf/patches/removed/server/0085-Tracking-Optimize-Skip-redundant-useless-packets.patch
2024-08-09 20:38:06 +08:00

57 lines
2.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Fri, 24 May 2024 19:03:02 +0800
Subject: [PATCH] Tracking Optimize: Skip redundant useless packets
Removed since 1.21, not good, useless
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
index c2db18cbb1230588e6b1783dc51c69ed3ccd2e34..71a7b36f7ab1d0743591495a45d8a153cee138e8 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
@@ -418,23 +418,34 @@ public class ServerEntity {
// Paper end
}
+ // Leaf start - Tracking Optimize - Skip redundant useless packets
+ private List<SynchedEntityData.DataValue<?>> lastSendDirtyData = new ArrayList<>();
+ private Set<AttributeInstance> lastSendDirtyAttributes = com.google.common.collect.Sets.newConcurrentHashSet();
+ // Leaf end - Tracking Optimize - Skip redundant useless packets
private void sendDirtyEntityData() {
SynchedEntityData datawatcher = this.entity.getEntityData();
List<SynchedEntityData.DataValue<?>> list = datawatcher.packDirty();
if (list != null) {
this.trackedDataValues = datawatcher.getNonDefaultValues();
+ // Leaf start - Tracking Optimize - Skip redundant useless packets
+ if (!lastSendDirtyData.equals(list)) {
// Leaf start - petal - sync
((ServerLevel) this.entity.level()).chunkSource.chunkMap.runOnTrackerMainThread(() ->
this.broadcastAndSend(new ClientboundSetEntityDataPacket(this.entity.getId(), list))
);
// Leaf end - petal
+ lastSendDirtyData = new ArrayList<>(list);
+ }
+ // Leaf end - Tracking Optimize - Skip redundant useless packets
}
if (this.entity instanceof LivingEntity) {
Set<AttributeInstance> set = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes();
if (!set.isEmpty()) {
+ // Leaf start - Tracking Optimize - Skip redundant useless packets
+ if (!lastSendDirtyAttributes.equals(set)) {
// Leaf start - petal - sync
final Set<AttributeInstance> copy = com.google.common.collect.Sets.newConcurrentHashSet(set);
((ServerLevel) this.entity.level()).chunkSource.chunkMap.runOnTrackerMainThread(() -> {
@@ -447,6 +458,9 @@ public class ServerEntity {
});
// Leaf end - petal
+ lastSendDirtyAttributes = com.google.common.collect.Sets.newConcurrentHashSet(set);
+ }
+ // Leaf end - Tracking Optimize - Skip redundant useless packets
}
((LivingEntity) this.entity).getAttributes().clearDirtyAttributes(); // Leaf