9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-23 00:49:31 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0143-Optimize-addOrUpdateTransientModifier.patch
Taiyou 83e9043a45 Couple fixes and improvements (#287)
* a lot of cleanup and new chunk changes

* perf: Head Node Hit Optimization

* part 1: reworked-reworked ChunkHolderManager

* part 2: speeeeeeeeeeeeeeeeeeeeeeeeeeed

* Optimise MobEffectUtil#getDigSpeedAmplification

* optimize chunk unloads and cleanup a bit

* fix 🐝

* rewritten async target finding

* extend the custom map usage

---------

Co-authored-by: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
2025-04-21 23:49:33 +03:00

27 lines
1.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Taiyou06 <kaandindar21@gmail.com>
Date: Sat, 22 Mar 2025 00:07:38 +0100
Subject: [PATCH] Optimize addOrUpdateTransientModifier
diff --git a/net/minecraft/world/entity/ai/attributes/AttributeInstance.java b/net/minecraft/world/entity/ai/attributes/AttributeInstance.java
index ceff383d565267edd13a6d9006030b8e1f8053e3..7dae9cc18cd6eede8f1b2196b55103428f35382e 100644
--- a/net/minecraft/world/entity/ai/attributes/AttributeInstance.java
+++ b/net/minecraft/world/entity/ai/attributes/AttributeInstance.java
@@ -88,8 +88,13 @@ public class AttributeInstance {
}
public void addOrUpdateTransientModifier(AttributeModifier modifier) {
- AttributeModifier attributeModifier = this.modifierById.put(modifier.id(), modifier);
- if (modifier != attributeModifier) {
+ // Leaf start - Optimize addOrUpdateTransientModifier
+ // First check if we already have the same modifier instance to avoid unnecessary put operations
+ AttributeModifier existingModifier = this.modifierById.get(modifier.id());
+ // Only perform updates if the modifier is new or different
+ if (existingModifier != modifier) {
+ this.modifierById.put(modifier.id(), modifier);
+ // Leaf end - Optimize addOrUpdateTransientModifier
this.getModifiers(modifier.operation()).put(modifier.id(), modifier);
this.setDirty();
}