diff --git a/patches/server/0002-Decompile-fix.patch b/patches/server/0002-Decompile-fix.patch index 59bb2dc3..25ba14fe 100644 --- a/patches/server/0002-Decompile-fix.patch +++ b/patches/server/0002-Decompile-fix.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Decompile fix diff --git a/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java b/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java -index bc885d2cc95572ec68f1df62555fdba7998b1d93..663b3b12d9a7cdc04b7f86ccfe6bc6fcfd5028bc 100644 +index b2a4ae4388758f89fcd0dc3b0c4c03bf46fa5470..a4f9de18d40d5d85a809af3777b00eb75b1af027 100644 --- a/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java +++ b/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java @@ -34,7 +34,7 @@ public interface CustomPacketPayload { @@ -17,3 +17,46 @@ index bc885d2cc95572ec68f1df62555fdba7998b1d93..663b3b12d9a7cdc04b7f86ccfe6bc6fc streamCodec.encode(value, (T)payload); } +diff --git a/src/main/java/net/minecraft/world/entity/ai/Brain.java b/src/main/java/net/minecraft/world/entity/ai/Brain.java +index afbb027021acfbe25d534a84f1750e420bbde6e0..2ae8c9d56d88987b750e57025d313cfa9300c7e4 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/Brain.java ++++ b/src/main/java/net/minecraft/world/entity/ai/Brain.java +@@ -79,7 +79,7 @@ public class Brain { + } + + public DataResult> decode(DynamicOps dynamicOps, MapLike mapLike) { +- MutableObject>>> mutableObject = new MutableObject<>( ++ MutableObject>>> mutableObject2 = new MutableObject<>( // Leaf - Decompile fix + DataResult.success(ImmutableList.builder()) + ); + mapLike.entries() +@@ -91,10 +91,10 @@ public class Brain { + DataResult> dataResult2 = dataResult.flatMap( + memoryType -> this.captureRead((MemoryModuleType)memoryType, dynamicOps, (T)pair.getSecond()) + ); +- mutableObject.setValue(mutableObject.getValue().apply2(Builder::add, dataResult2)); ++ mutableObject2.setValue(mutableObject2.getValue().apply2(Builder::add, dataResult2)); // Leaf - Decompile fix + } + ); +- ImmutableList> immutableList = mutableObject.getValue() ++ ImmutableList> immutableList = mutableObject2.getValue() // Leaf - Decompile fix + .resultOrPartial(Brain.LOGGER::error) + .map(Builder::build) + .orElseGet(ImmutableList::of); +@@ -194,14 +194,14 @@ public class Brain { + if (optional == null) { + throw new IllegalStateException("Unregistered memory fetched: " + type); + } else { +- return optional.map(ExpirableValue::getValue); ++ return (Optional) optional.map(ExpirableValue::getValue); // Leaf - Decompile fix + } + } + + @Nullable + public Optional getMemoryInternal(MemoryModuleType type) { + Optional> optional = this.memories.get(type); +- return optional == null ? null : optional.map(ExpirableValue::getValue); ++ return optional == null ? null : (Optional) optional.map(ExpirableValue::getValue); // Leaf - Decompile fix + } + + public long getTimeUntilExpiry(MemoryModuleType type) { diff --git a/patches/server/0110-Remove-stream-and-double-iteration-in-enough-deep-sl.patch b/patches/server/0089-Remove-stream-and-double-iteration-in-enough-deep-sl.patch similarity index 100% rename from patches/server/0110-Remove-stream-and-double-iteration-in-enough-deep-sl.patch rename to patches/server/0089-Remove-stream-and-double-iteration-in-enough-deep-sl.patch diff --git a/patches/server/0111-Optimize-trial-spawner-ticking.patch b/patches/server/0090-Remove-stream-in-trial-spawner-ticking.patch similarity index 98% rename from patches/server/0111-Optimize-trial-spawner-ticking.patch rename to patches/server/0090-Remove-stream-in-trial-spawner-ticking.patch index 6a022914..6f6ab775 100644 --- a/patches/server/0111-Optimize-trial-spawner-ticking.patch +++ b/patches/server/0090-Remove-stream-in-trial-spawner-ticking.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sat, 5 Oct 2024 15:39:15 -0400 -Subject: [PATCH] Optimize trial spawner ticking +Subject: [PATCH] Remove stream in trial spawner ticking diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState.java diff --git a/patches/server/0091-Remove-stream-in-Brain.patch b/patches/server/0091-Remove-stream-in-Brain.patch new file mode 100644 index 00000000..3e35e383 --- /dev/null +++ b/patches/server/0091-Remove-stream-in-Brain.patch @@ -0,0 +1,51 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> +Date: Sat, 26 Oct 2024 00:06:04 +0800 +Subject: [PATCH] Remove stream in Brain + +Dreeam TODO: Check this + +diff --git a/src/main/java/net/minecraft/world/entity/ai/Brain.java b/src/main/java/net/minecraft/world/entity/ai/Brain.java +index 2ae8c9d56d88987b750e57025d313cfa9300c7e4..f6439fb10031a8f17ce3a5bee9f6e89275edebc7 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/Brain.java ++++ b/src/main/java/net/minecraft/world/entity/ai/Brain.java +@@ -69,13 +69,17 @@ public class Brain { + mutableObject.setValue( + (new MapCodec>() { + public Stream keys(DynamicOps dynamicOps) { +- return memoryModules.stream() +- .flatMap( +- memoryType -> memoryType.getCodec() +- .map(codec -> BuiltInRegistries.MEMORY_MODULE_TYPE.getKey((MemoryModuleType)memoryType)) +- .stream() +- ) +- .map(id -> dynamicOps.createString(id.toString())); ++ // Leaf start - Optimize Brain ++ List results = new java.util.ArrayList<>(); ++ for (MemoryModuleType memoryType : memoryModules) { ++ Optional codecOptional = memoryType.getCodec(); ++ if (codecOptional.isPresent()) { ++ net.minecraft.resources.ResourceLocation id = BuiltInRegistries.MEMORY_MODULE_TYPE.getKey(memoryType); ++ results.add(id.toString()); ++ } ++ } ++ return results.stream().map(dynamicOps::createString); ++ // Leaf end - Optimize Brain + } + + public DataResult> decode(DynamicOps dynamicOps, MapLike mapLike) { +@@ -152,7 +156,13 @@ public class Brain { + } + + Stream> memories() { +- return this.memories.entrySet().stream().map(entry -> Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); ++ // Leaf start - Optimize Brain ++ List> result = new java.util.ArrayList<>(); ++ for (Entry, Optional>> entry : this.memories.entrySet()) { ++ result.add(Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); ++ } ++ return result.stream(); ++ // Leaf end - Optimize Brain + } + + public boolean hasMemoryValue(MemoryModuleType type) { diff --git a/patches/server/0119-Remove-stream-in-BehaviorUtils.patch b/patches/server/0092-Remove-stream-in-BehaviorUtils.patch similarity index 98% rename from patches/server/0119-Remove-stream-in-BehaviorUtils.patch rename to patches/server/0092-Remove-stream-in-BehaviorUtils.patch index 8dc1e375..16873036 100644 --- a/patches/server/0119-Remove-stream-in-BehaviorUtils.patch +++ b/patches/server/0092-Remove-stream-in-BehaviorUtils.patch @@ -3,6 +3,7 @@ From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Date: Sat, 26 Oct 2024 00:56:24 +0800 Subject: [PATCH] Remove stream in BehaviorUtils +Dreeam TODO: Check this diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java b/src/main/java/net/minecraft/world/entity/ai/behavior/BehaviorUtils.java index 74fe07a3737728b67987ef794103346c1e428109..e2de86d7a86fde183c3ece4de0a1f899a7c3b8b0 100644 diff --git a/patches/server/0089-Replace-Entity-active-effects-map-with-optimized-col.patch b/patches/server/0093-Replace-Entity-active-effects-map-with-optimized-col.patch similarity index 100% rename from patches/server/0089-Replace-Entity-active-effects-map-with-optimized-col.patch rename to patches/server/0093-Replace-Entity-active-effects-map-with-optimized-col.patch diff --git a/patches/server/0094-Replace-brain-maps-with-optimized-collection.patch b/patches/server/0094-Replace-brain-maps-with-optimized-collection.patch new file mode 100644 index 00000000..e6457130 --- /dev/null +++ b/patches/server/0094-Replace-brain-maps-with-optimized-collection.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> +Date: Sat, 26 Oct 2024 00:06:04 +0800 +Subject: [PATCH] Replace brain maps with optimized collection + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/Brain.java b/src/main/java/net/minecraft/world/entity/ai/Brain.java +index f6439fb10031a8f17ce3a5bee9f6e89275edebc7..2e0859cd62fd064d43aaf3ac24269d159a6bd49e 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/Brain.java ++++ b/src/main/java/net/minecraft/world/entity/ai/Brain.java +@@ -45,14 +45,18 @@ public class Brain { + static final Logger LOGGER = LogUtils.getLogger(); + private final Supplier>> codec; + private static final int SCHEDULE_UPDATE_DELAY = 20; +- private final Map, Optional>> memories = Maps.newHashMap(); +- private final Map>, Sensor> sensors = Maps.newLinkedHashMap(); +- private final Map>>> availableBehaviorsByPriority = Maps.newTreeMap(); ++ // Leaf start - Optimize Brain ++ private final Map, Optional>> memories = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); ++ private final Map>, Sensor> sensors = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); ++ private final Map>>> availableBehaviorsByPriority = new it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap<>(); ++ // Leaf end - Optimize Brain + private Schedule schedule = Schedule.EMPTY; +- private final Map, MemoryStatus>>> activityRequirements = Maps.newHashMap(); +- private final Map>> activityMemoriesToEraseWhenStopped = Maps.newHashMap(); +- private Set coreActivities = Sets.newHashSet(); +- private final Set activeActivities = Sets.newHashSet(); ++ // Leaf start - Optimize Brain ++ private final Map, MemoryStatus>>> activityRequirements = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); ++ private final Map>> activityMemoriesToEraseWhenStopped = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); ++ private Set coreActivities = new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(); ++ private final Set activeActivities = new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(); ++ // Leaf end - Optimize Brain + private Activity defaultActivity = Activity.IDLE; + private long lastScheduleUpdate = -9999L; + diff --git a/patches/server/0090-Reduce-worldgen-allocations.patch b/patches/server/0095-Reduce-worldgen-allocations.patch similarity index 90% rename from patches/server/0090-Reduce-worldgen-allocations.patch rename to patches/server/0095-Reduce-worldgen-allocations.patch index bdff4ee2..a07bccbf 100644 --- a/patches/server/0090-Reduce-worldgen-allocations.patch +++ b/patches/server/0095-Reduce-worldgen-allocations.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Date: Fri, 14 Jun 2024 23:19:55 +0800 -Subject: [PATCH] Reduce-worldgen-allocations +Subject: [PATCH] Reduce worldgen allocations This change optimizes the way SurfaceRules update their biome supplier,avoiding unnecessary object creations and thus reducing memory allocations during world generation. The update method now reuses the existing PositionalBiomeGetter object if it's already present, otherwise it @@ -11,7 +11,7 @@ allocation by directly accessing the rules list, which further contributes to reducing garbage collection pressure during world generation. diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseChunk.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseChunk.java -index 5e89428321d91edb893826b0eb0b9050d327d310..2bee2988b5019d81da25784ef60feb3589f32538 100644 +index 5e89428321d91edb893826b0eb0b9050d327d310..3e8882e4779d6037025e7ee26ebbb46a55a7e52d 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/NoiseChunk.java +++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseChunk.java @@ -359,7 +359,14 @@ public class NoiseChunk implements DensityFunction.ContextProvider, DensityFunct @@ -26,12 +26,12 @@ index 5e89428321d91edb893826b0eb0b9050d327d310..2bee2988b5019d81da25784ef60feb35 + this.wrapped.put(function, func); + } + return func; -+ // Leaf end ++ // Leaf end - Avoid lambda allocation } private DensityFunction wrapNew(DensityFunction function) { diff --git a/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java b/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java -index 9df053ddff459d4aab478106c6e66a5fc3cda8f6..24ba023c0789984dd173e982030c29406c110428 100644 +index 9df053ddff459d4aab478106c6e66a5fc3cda8f6..49e2aee0093eb8fa34fc7fe11f376c1dd67aa5f1 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java +++ b/src/main/java/net/minecraft/world/level/levelgen/SurfaceRules.java @@ -314,8 +314,14 @@ public class SurfaceRules { @@ -47,7 +47,7 @@ index 9df053ddff459d4aab478106c6e66a5fc3cda8f6..24ba023c0789984dd173e982030c2940 + this.biome = getter = new org.dreeam.leaf.util.biome.PositionalBiomeGetter(this.biomeGetter, this.pos); + } + ((org.dreeam.leaf.util.biome.PositionalBiomeGetter)getter).update(blockX, blockY, blockZ); -+ // Leaf end ++ // Leaf end - Reuse supplier object instead of creating new ones every time this.blockY = blockY; this.waterHeight = fluidHeight; this.stoneDepthBelow = stoneDepthBelow; @@ -62,12 +62,12 @@ index 9df053ddff459d4aab478106c6e66a5fc3cda8f6..24ba023c0789984dd173e982030c2940 + //noinspection ForLoopReplaceableByForEach + for (int i = 0; i < size; i++) { + BlockState blockState = this.rules.get(i).tryApply(x, y, z); -+ // Leaf end ++ // Leaf end - Avoid iterator allocation if (blockState != null) { return blockState; } diff --git a/src/main/java/net/minecraft/world/level/levelgen/material/MaterialRuleList.java b/src/main/java/net/minecraft/world/level/levelgen/material/MaterialRuleList.java -index afdbc74a3012fa717f59ecef613567338d285b7b..b219a5c1a489f337ceb96a80246fa8c8121f8a4f 100644 +index afdbc74a3012fa717f59ecef613567338d285b7b..088e02e0941341fea958413176f49ae262e04d2a 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/material/MaterialRuleList.java +++ b/src/main/java/net/minecraft/world/level/levelgen/material/MaterialRuleList.java @@ -10,13 +10,16 @@ public record MaterialRuleList(List materialRuleLis @@ -79,7 +79,7 @@ index afdbc74a3012fa717f59ecef613567338d285b7b..b219a5c1a489f337ceb96a80246fa8c8 - if (blockState != null) { - return blockState; - } -+ // Leaf start - avoid iterator allocation ++ // Leaf start - Avoid iterator allocation + BlockState blockState = null; + int s = this.materialRuleList.size(); + @@ -90,7 +90,7 @@ index afdbc74a3012fa717f59ecef613567338d285b7b..b219a5c1a489f337ceb96a80246fa8c8 - return null; + return blockState; -+ // Leaf end ++ // Leaf end - Avoid iterator allocation } } diff --git a/src/main/java/org/dreeam/leaf/util/biome/PositionalBiomeGetter.java b/src/main/java/org/dreeam/leaf/util/biome/PositionalBiomeGetter.java diff --git a/patches/server/0091-Fix-MC-183518.patch b/patches/server/0096-Fix-MC-183518.patch similarity index 100% rename from patches/server/0091-Fix-MC-183518.patch rename to patches/server/0096-Fix-MC-183518.patch diff --git a/patches/server/0092-Use-caffeine-cache-kickPermission-instead-of-using-g.patch b/patches/server/0097-Use-caffeine-cache-kickPermission-instead-of-using-g.patch similarity index 100% rename from patches/server/0092-Use-caffeine-cache-kickPermission-instead-of-using-g.patch rename to patches/server/0097-Use-caffeine-cache-kickPermission-instead-of-using-g.patch diff --git a/patches/server/0093-Do-not-place-player-if-the-server-is-full.patch b/patches/server/0098-Do-not-place-player-if-the-server-is-full.patch similarity index 100% rename from patches/server/0093-Do-not-place-player-if-the-server-is-full.patch rename to patches/server/0098-Do-not-place-player-if-the-server-is-full.patch diff --git a/patches/server/0094-Fix-MC-200418.patch b/patches/server/0099-Fix-MC-200418.patch similarity index 100% rename from patches/server/0094-Fix-MC-200418.patch rename to patches/server/0099-Fix-MC-200418.patch diff --git a/patches/server/0095-Fix-MC-119417.patch b/patches/server/0100-Fix-MC-119417.patch similarity index 100% rename from patches/server/0095-Fix-MC-119417.patch rename to patches/server/0100-Fix-MC-119417.patch diff --git a/patches/server/0096-Fix-MC-223153.patch b/patches/server/0101-Fix-MC-223153.patch similarity index 100% rename from patches/server/0096-Fix-MC-223153.patch rename to patches/server/0101-Fix-MC-223153.patch diff --git a/patches/server/0097-Optimize-LeavesProtocolManager-init-protocol.patch b/patches/server/0102-Optimize-LeavesProtocolManager-init-protocol.patch similarity index 100% rename from patches/server/0097-Optimize-LeavesProtocolManager-init-protocol.patch rename to patches/server/0102-Optimize-LeavesProtocolManager-init-protocol.patch diff --git a/patches/server/0098-Cache-CraftEntityType-minecraftToBukkit-convert.patch b/patches/server/0103-Cache-CraftEntityType-minecraftToBukkit-convert.patch similarity index 100% rename from patches/server/0098-Cache-CraftEntityType-minecraftToBukkit-convert.patch rename to patches/server/0103-Cache-CraftEntityType-minecraftToBukkit-convert.patch diff --git a/patches/server/0099-Configurable-player-knockback-zombie.patch b/patches/server/0104-Configurable-player-knockback-zombie.patch similarity index 100% rename from patches/server/0099-Configurable-player-knockback-zombie.patch rename to patches/server/0104-Configurable-player-knockback-zombie.patch diff --git a/patches/server/0100-Hide-specified-item-components-to-clients.patch b/patches/server/0105-Hide-specified-item-components-to-clients.patch similarity index 100% rename from patches/server/0100-Hide-specified-item-components-to-clients.patch rename to patches/server/0105-Hide-specified-item-components-to-clients.patch diff --git a/patches/server/0101-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch b/patches/server/0106-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch similarity index 100% rename from patches/server/0101-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch rename to patches/server/0106-Paper-PR-Skip-AI-during-inactive-ticks-for-non-aware.patch diff --git a/patches/server/0102-Paper-PR-Reduce-work-done-in-CraftMapCanvas.drawImag.patch b/patches/server/0107-Paper-PR-Reduce-work-done-in-CraftMapCanvas.drawImag.patch similarity index 100% rename from patches/server/0102-Paper-PR-Reduce-work-done-in-CraftMapCanvas.drawImag.patch rename to patches/server/0107-Paper-PR-Reduce-work-done-in-CraftMapCanvas.drawImag.patch diff --git a/patches/server/0103-Paper-PR-Throttle-failed-spawn-attempts.patch b/patches/server/0108-Paper-PR-Throttle-failed-spawn-attempts.patch similarity index 100% rename from patches/server/0103-Paper-PR-Throttle-failed-spawn-attempts.patch rename to patches/server/0108-Paper-PR-Throttle-failed-spawn-attempts.patch diff --git a/patches/server/0104-Paper-PR-Prevent-zombie-reinforcements-loading-chunk.patch b/patches/server/0109-Paper-PR-Prevent-zombie-reinforcements-loading-chunk.patch similarity index 100% rename from patches/server/0104-Paper-PR-Prevent-zombie-reinforcements-loading-chunk.patch rename to patches/server/0109-Paper-PR-Prevent-zombie-reinforcements-loading-chunk.patch diff --git a/patches/server/0105-Dont-send-useless-entity-packets.patch b/patches/server/0110-Dont-send-useless-entity-packets.patch similarity index 100% rename from patches/server/0105-Dont-send-useless-entity-packets.patch rename to patches/server/0110-Dont-send-useless-entity-packets.patch diff --git a/patches/server/0106-Don-t-spawn-if-lastSpawnState-is-null.patch b/patches/server/0111-Don-t-spawn-if-lastSpawnState-is-null.patch similarity index 100% rename from patches/server/0106-Don-t-spawn-if-lastSpawnState-is-null.patch rename to patches/server/0111-Don-t-spawn-if-lastSpawnState-is-null.patch diff --git a/patches/server/0107-Multithreaded-Tracker.patch b/patches/server/0112-Multithreaded-Tracker.patch similarity index 100% rename from patches/server/0107-Multithreaded-Tracker.patch rename to patches/server/0112-Multithreaded-Tracker.patch diff --git a/patches/server/0108-Nitori-Async-playerdata-Save.patch b/patches/server/0113-Nitori-Async-playerdata-Save.patch similarity index 100% rename from patches/server/0108-Nitori-Async-playerdata-Save.patch rename to patches/server/0113-Nitori-Async-playerdata-Save.patch diff --git a/patches/server/0109-Change-max-stack-count.patch b/patches/server/0114-Change-max-stack-count.patch similarity index 100% rename from patches/server/0109-Change-max-stack-count.patch rename to patches/server/0114-Change-max-stack-count.patch diff --git a/patches/server/0112-Reduce-object-complexity-to-make-block-isValid-calls.patch b/patches/server/0115-Reduce-object-complexity-to-make-block-isValid-calls.patch similarity index 100% rename from patches/server/0112-Reduce-object-complexity-to-make-block-isValid-calls.patch rename to patches/server/0115-Reduce-object-complexity-to-make-block-isValid-calls.patch diff --git a/patches/server/0113-Optimize-nearby-alive-players-for-spawning.patch b/patches/server/0116-Optimize-nearby-alive-players-for-spawning.patch similarity index 100% rename from patches/server/0113-Optimize-nearby-alive-players-for-spawning.patch rename to patches/server/0116-Optimize-nearby-alive-players-for-spawning.patch diff --git a/patches/server/0114-Cache-blockstate-cache.patch b/patches/server/0117-Cache-blockstate-cache.patch similarity index 100% rename from patches/server/0114-Cache-blockstate-cache.patch rename to patches/server/0117-Cache-blockstate-cache.patch diff --git a/patches/server/0115-Fix-MC-177381.patch b/patches/server/0118-Fix-MC-177381.patch similarity index 100% rename from patches/server/0115-Fix-MC-177381.patch rename to patches/server/0118-Fix-MC-177381.patch diff --git a/patches/server/0118-Optimize-Brain.patch b/patches/server/0118-Optimize-Brain.patch deleted file mode 100644 index 2580632a..00000000 --- a/patches/server/0118-Optimize-Brain.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> -Date: Sat, 26 Oct 2024 00:06:04 +0800 -Subject: [PATCH] Optimize Brain - - -diff --git a/src/main/java/net/minecraft/world/entity/ai/Brain.java b/src/main/java/net/minecraft/world/entity/ai/Brain.java -index afbb027021acfbe25d534a84f1750e420bbde6e0..2e0859cd62fd064d43aaf3ac24269d159a6bd49e 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/Brain.java -+++ b/src/main/java/net/minecraft/world/entity/ai/Brain.java -@@ -45,14 +45,18 @@ public class Brain { - static final Logger LOGGER = LogUtils.getLogger(); - private final Supplier>> codec; - private static final int SCHEDULE_UPDATE_DELAY = 20; -- private final Map, Optional>> memories = Maps.newHashMap(); -- private final Map>, Sensor> sensors = Maps.newLinkedHashMap(); -- private final Map>>> availableBehaviorsByPriority = Maps.newTreeMap(); -+ // Leaf start - Optimize Brain -+ private final Map, Optional>> memories = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); -+ private final Map>, Sensor> sensors = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); -+ private final Map>>> availableBehaviorsByPriority = new it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap<>(); -+ // Leaf end - Optimize Brain - private Schedule schedule = Schedule.EMPTY; -- private final Map, MemoryStatus>>> activityRequirements = Maps.newHashMap(); -- private final Map>> activityMemoriesToEraseWhenStopped = Maps.newHashMap(); -- private Set coreActivities = Sets.newHashSet(); -- private final Set activeActivities = Sets.newHashSet(); -+ // Leaf start - Optimize Brain -+ private final Map, MemoryStatus>>> activityRequirements = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); -+ private final Map>> activityMemoriesToEraseWhenStopped = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(); -+ private Set coreActivities = new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(); -+ private final Set activeActivities = new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(); -+ // Leaf end - Optimize Brain - private Activity defaultActivity = Activity.IDLE; - private long lastScheduleUpdate = -9999L; - -@@ -69,17 +73,21 @@ public class Brain { - mutableObject.setValue( - (new MapCodec>() { - public Stream keys(DynamicOps dynamicOps) { -- return memoryModules.stream() -- .flatMap( -- memoryType -> memoryType.getCodec() -- .map(codec -> BuiltInRegistries.MEMORY_MODULE_TYPE.getKey((MemoryModuleType)memoryType)) -- .stream() -- ) -- .map(id -> dynamicOps.createString(id.toString())); -+ // Leaf start - Optimize Brain -+ List results = new java.util.ArrayList<>(); -+ for (MemoryModuleType memoryType : memoryModules) { -+ Optional codecOptional = memoryType.getCodec(); -+ if (codecOptional.isPresent()) { -+ net.minecraft.resources.ResourceLocation id = BuiltInRegistries.MEMORY_MODULE_TYPE.getKey(memoryType); -+ results.add(id.toString()); -+ } -+ } -+ return results.stream().map(dynamicOps::createString); -+ // Leaf end - Optimize Brain - } - - public DataResult> decode(DynamicOps dynamicOps, MapLike mapLike) { -- MutableObject>>> mutableObject = new MutableObject<>( -+ MutableObject>>> mutableObject2 = new MutableObject<>( // Leaf - Decompile fix - DataResult.success(ImmutableList.builder()) - ); - mapLike.entries() -@@ -91,10 +99,10 @@ public class Brain { - DataResult> dataResult2 = dataResult.flatMap( - memoryType -> this.captureRead((MemoryModuleType)memoryType, dynamicOps, (T)pair.getSecond()) - ); -- mutableObject.setValue(mutableObject.getValue().apply2(Builder::add, dataResult2)); -+ mutableObject2.setValue(mutableObject2.getValue().apply2(Builder::add, dataResult2)); // Leaf - Decompile fix - } - ); -- ImmutableList> immutableList = mutableObject.getValue() -+ ImmutableList> immutableList = mutableObject2.getValue() // Leaf - Decompile fix - .resultOrPartial(Brain.LOGGER::error) - .map(Builder::build) - .orElseGet(ImmutableList::of); -@@ -152,7 +160,13 @@ public class Brain { - } - - Stream> memories() { -- return this.memories.entrySet().stream().map(entry -> Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); -+ // Leaf start - Optimize Brain -+ List> result = new java.util.ArrayList<>(); -+ for (Entry, Optional>> entry : this.memories.entrySet()) { -+ result.add(Brain.MemoryValue.createUnchecked(entry.getKey(), entry.getValue())); -+ } -+ return result.stream(); -+ // Leaf end - Optimize Brain - } - - public boolean hasMemoryValue(MemoryModuleType type) { -@@ -194,14 +208,14 @@ public class Brain { - if (optional == null) { - throw new IllegalStateException("Unregistered memory fetched: " + type); - } else { -- return optional.map(ExpirableValue::getValue); -+ return (Optional) optional.map(ExpirableValue::getValue); // Leaf - Decompile fix - } - } - - @Nullable - public Optional getMemoryInternal(MemoryModuleType type) { - Optional> optional = this.memories.get(type); -- return optional == null ? null : optional.map(ExpirableValue::getValue); -+ return optional == null ? null : (Optional) optional.map(ExpirableValue::getValue); // Leaf - Decompile fix - } - - public long getTimeUntilExpiry(MemoryModuleType type) { diff --git a/patches/server/0116-Asynchronous-locator.patch b/patches/server/0119-Asynchronous-locator.patch similarity index 100% rename from patches/server/0116-Asynchronous-locator.patch rename to patches/server/0119-Asynchronous-locator.patch diff --git a/patches/server/0117-Virtual-thread-for-chat-executor.patch b/patches/server/0120-Virtual-thread-for-chat-executor.patch similarity index 100% rename from patches/server/0117-Virtual-thread-for-chat-executor.patch rename to patches/server/0120-Virtual-thread-for-chat-executor.patch