diff --git a/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch b/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch new file mode 100644 index 0000000..bace207 --- /dev/null +++ b/patches/server/0049-Gale-Reduce-lambda-and-Optional-allocation-in.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MrHua269 +Date: Sat, 6 Apr 2024 05:14:57 +0000 +Subject: [PATCH] Gale Reduce lambda and Optional allocation in + EntityBasedExplosionDamageCalculator + + +diff --git a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java +index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..4e4dfb72d5a0b46917999b709c655ccfdae27183 100644 +--- a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java ++++ b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java +@@ -15,9 +15,17 @@ public class EntityBasedExplosionDamageCalculator extends ExplosionDamageCalcula + + @Override + public Optional getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState) { +- return super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState).map((max) -> { +- return this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, max); +- }); ++ // Gale start - Lithium - reduce lambda and Optional allocation in EntityBasedExplosionDamageCalculator ++ Optional optionalBlastResistance = super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState); ++ if (optionalBlastResistance.isPresent()) { ++ float blastResistance = optionalBlastResistance.get(); ++ float effectiveExplosionResistance = this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, blastResistance); ++ if (effectiveExplosionResistance != blastResistance) { ++ return Optional.of(effectiveExplosionResistance); ++ } ++ } ++ return optionalBlastResistance; ++ // Gale end - Lithium - reduce lambda and Optional allocation in EntityBasedExplosionDamageCalculator + } + + @Override diff --git a/patches/server/0050-Gale-Replace-AI-goal-set-with-optimized-collection.patch b/patches/server/0050-Gale-Replace-AI-goal-set-with-optimized-collection.patch new file mode 100644 index 0000000..3640edf --- /dev/null +++ b/patches/server/0050-Gale-Replace-AI-goal-set-with-optimized-collection.patch @@ -0,0 +1,27 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MrHua269 +Date: Sat, 6 Apr 2024 05:17:19 +0000 +Subject: [PATCH] Gale Replace AI goal set with optimized collection + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +index 0f53c206b4c0607e2cda5cfa4edeae5209e897bf..6313020a80cab0b8df8d775431d4aa063c51ce18 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java +@@ -13,6 +13,7 @@ import java.util.function.Supplier; + import java.util.stream.Stream; + import net.minecraft.util.profiling.ProfilerFiller; + import org.slf4j.Logger; ++import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet; + + public class GoalSelector { + private static final Logger LOGGER = LogUtils.getLogger(); +@@ -28,7 +29,7 @@ public class GoalSelector { + } + }; + private final Map lockedFlags = new EnumMap<>(Goal.Flag.class); +- private final Set availableGoals = Sets.newLinkedHashSet(); ++ private final Set availableGoals = new ObjectLinkedOpenHashSet<>(); // Gale - Lithium - replace AI goal set with optimized collection + private final Supplier profiler; + private final EnumSet disabledFlags = EnumSet.noneOf(Goal.Flag.class); // Paper unused, but dummy to prevent plugins from crashing as hard. Theyll need to support paper in a special case if this is super important, but really doesn't seem like it would be. + private final com.destroystokyo.paper.util.set.OptimizedSmallEnumSet goalTypes = new com.destroystokyo.paper.util.set.OptimizedSmallEnumSet<>(Goal.Flag.class); // Paper - remove streams from pathfindergoalselector diff --git a/patches/server/0051-Gale-Replace-AI-attributes-with-optimized-collection.patch b/patches/server/0051-Gale-Replace-AI-attributes-with-optimized-collection.patch new file mode 100644 index 0000000..2119d13 --- /dev/null +++ b/patches/server/0051-Gale-Replace-AI-attributes-with-optimized-collection.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MrHua269 +Date: Sat, 6 Apr 2024 05:17:42 +0000 +Subject: [PATCH] Gale Replace AI attributes with optimized collections + + +diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +index 683c9693754d1a87b7e8fccc757a0d0963351f60..d904cc2d882f62f74ff34f7e8266947798563ed4 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java ++++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java +@@ -1,8 +1,6 @@ + package net.minecraft.world.entity.ai.attributes; + +-import com.google.common.collect.Maps; + import com.google.common.collect.Multimap; +-import com.google.common.collect.Sets; + import com.mojang.logging.LogUtils; + import java.util.Collection; + import java.util.Map; +@@ -10,6 +8,9 @@ import java.util.Set; + import java.util.UUID; + import java.util.stream.Collectors; + import javax.annotation.Nullable; ++ ++import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; ++import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; + import net.minecraft.Util; + import net.minecraft.core.Holder; + import net.minecraft.core.registries.BuiltInRegistries; +@@ -20,8 +21,10 @@ import org.slf4j.Logger; + + public class AttributeMap { + private static final Logger LOGGER = LogUtils.getLogger(); +- private final Map attributes = Maps.newHashMap(); +- private final Set dirtyAttributes = Sets.newHashSet(); ++ // Gale start - Lithium - replace AI attributes with optimized collections ++ private final Map attributes = new Reference2ReferenceOpenHashMap<>(0); ++ private final Set dirtyAttributes = new ReferenceOpenHashSet<>(0); ++ // Gale end - Lithium - replace AI attributes with optimized collections + private final AttributeSupplier supplier; + private final java.util.function.Function createInstance; // Pufferfish + diff --git a/patches/server/0052-Gale-Replace-throttle-tracker-map-with-optimized-col.patch b/patches/server/0052-Gale-Replace-throttle-tracker-map-with-optimized-col.patch new file mode 100644 index 0000000..ee14224 --- /dev/null +++ b/patches/server/0052-Gale-Replace-throttle-tracker-map-with-optimized-col.patch @@ -0,0 +1,61 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MrHua269 +Date: Sat, 6 Apr 2024 05:18:00 +0000 +Subject: [PATCH] Gale Replace throttle tracker map with optimized collection + + +diff --git a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +index a53dd1ea02bd19826cd9fd337459b08e9533bce8..dec666713a1d3b5e3f2aa4bcbe8094ade8be1b05 100644 +--- a/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java +@@ -1,5 +1,7 @@ + package net.minecraft.server.network; + ++import it.unimi.dsi.fastutil.objects.Object2LongMap; ++import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; + import net.minecraft.SharedConstants; + import net.minecraft.network.Connection; + import net.minecraft.network.chat.Component; +@@ -13,7 +15,8 @@ import net.minecraft.server.MinecraftServer; + + // CraftBukkit start + import java.net.InetAddress; +-import java.util.HashMap; ++import java.util.Iterator; ++import java.util.Map; + // CraftBukkit end + + public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketListener { +@@ -24,7 +27,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL + static final java.util.regex.Pattern PROP_PATTERN = java.util.regex.Pattern.compile("\\w{0,16}"); + // Spigot end + // CraftBukkit start - add fields +- private static final HashMap throttleTracker = new HashMap(); ++ private static final Object2LongOpenHashMap throttleTracker = new Object2LongOpenHashMap<>(); // Gale - Dionysus - replace throttle tracker map with optimized collection + private static int throttleCounter = 0; + // CraftBukkit end + private static final Component IGNORE_STATUS_REASON = Component.translatable("disconnect.ignoring_status_request"); +@@ -51,7 +54,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL + InetAddress address = ((java.net.InetSocketAddress) this.connection.getRemoteAddress()).getAddress(); + + synchronized (ServerHandshakePacketListenerImpl.throttleTracker) { +- if (ServerHandshakePacketListenerImpl.throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - ServerHandshakePacketListenerImpl.throttleTracker.get(address) < connectionThrottle) { ++ if (ServerHandshakePacketListenerImpl.throttleTracker.containsKey(address) && !"127.0.0.1".equals(address.getHostAddress()) && currentTime - ServerHandshakePacketListenerImpl.throttleTracker.getLong(address) < connectionThrottle) { // Gale - Dionysus - replace throttle tracker map with optimized collection + ServerHandshakePacketListenerImpl.throttleTracker.put(address, currentTime); + Component chatmessage = io.papermc.paper.adventure.PaperAdventure.asVanilla(io.papermc.paper.configuration.GlobalConfiguration.get().messages.kick.connectionThrottle); // Paper - Configurable connection throttle kick message + this.connection.send(new ClientboundLoginDisconnectPacket(chatmessage)); +@@ -65,13 +68,7 @@ public class ServerHandshakePacketListenerImpl implements ServerHandshakePacketL + ServerHandshakePacketListenerImpl.throttleCounter = 0; + + // Cleanup stale entries +- java.util.Iterator iter = ServerHandshakePacketListenerImpl.throttleTracker.entrySet().iterator(); +- while (iter.hasNext()) { +- java.util.Map.Entry entry = (java.util.Map.Entry) iter.next(); +- if (entry.getValue() > connectionThrottle) { +- iter.remove(); +- } +- } ++ throttleTracker.object2LongEntrySet().removeIf(entry -> entry.getLongValue() > connectionThrottle); // Gale - Dionysus - replace throttle tracker map with optimized collection + } + } + } // Paper - Unix domain socket support diff --git a/patches/server/0049-LinearPaper-Remove-all-locks-on-region-files.patch b/patches/server/0053-LinearPaper-Remove-all-locks-on-region-files.patch similarity index 100% rename from patches/server/0049-LinearPaper-Remove-all-locks-on-region-files.patch rename to patches/server/0053-LinearPaper-Remove-all-locks-on-region-files.patch diff --git a/patches/server/0050-Sparkly-Paper-Optimize-canSee-checks.patch b/patches/server/0054-Sparkly-Paper-Optimize-canSee-checks.patch similarity index 100% rename from patches/server/0050-Sparkly-Paper-Optimize-canSee-checks.patch rename to patches/server/0054-Sparkly-Paper-Optimize-canSee-checks.patch diff --git a/patches/server/0051-Purpur-use-alternative-keep-alive.patch b/patches/server/0055-Purpur-use-alternative-keep-alive.patch similarity index 100% rename from patches/server/0051-Purpur-use-alternative-keep-alive.patch rename to patches/server/0055-Purpur-use-alternative-keep-alive.patch diff --git a/patches/server/0052-Leaves-Protocol-Core.patch b/patches/server/0056-Leaves-Protocol-Core.patch similarity index 100% rename from patches/server/0052-Leaves-Protocol-Core.patch rename to patches/server/0056-Leaves-Protocol-Core.patch diff --git a/patches/server/0053-Leaves-Bladeren-Protocol.patch b/patches/server/0057-Leaves-Bladeren-Protocol.patch similarity index 100% rename from patches/server/0053-Leaves-Bladeren-Protocol.patch rename to patches/server/0057-Leaves-Bladeren-Protocol.patch diff --git a/patches/server/0054-Leaves-Fix-Bladeren-Protocol.patch b/patches/server/0058-Leaves-Fix-Bladeren-Protocol.patch similarity index 100% rename from patches/server/0054-Leaves-Fix-Bladeren-Protocol.patch rename to patches/server/0058-Leaves-Fix-Bladeren-Protocol.patch diff --git a/patches/server/0055-Leaves-carpet-protocol-support.patch b/patches/server/0059-Leaves-carpet-protocol-support.patch similarity index 100% rename from patches/server/0055-Leaves-carpet-protocol-support.patch rename to patches/server/0059-Leaves-carpet-protocol-support.patch diff --git a/patches/server/0056-Threaded-region-start-tick-and-finished-tick-event.patch b/patches/server/0060-Threaded-region-start-tick-and-finished-tick-event.patch similarity index 100% rename from patches/server/0056-Threaded-region-start-tick-and-finished-tick-event.patch rename to patches/server/0060-Threaded-region-start-tick-and-finished-tick-event.patch diff --git a/patches/server/0057-Leaves-Replay-Mod-API.patch b/patches/server/0061-Leaves-Replay-Mod-API.patch similarity index 100% rename from patches/server/0057-Leaves-Replay-Mod-API.patch rename to patches/server/0061-Leaves-Replay-Mod-API.patch diff --git a/patches/server/0058-Fix-MC-172047.patch b/patches/server/0062-Fix-MC-172047.patch similarity index 100% rename from patches/server/0058-Fix-MC-172047.patch rename to patches/server/0062-Fix-MC-172047.patch diff --git a/patches/server/0059-Fix-MC-2025.patch b/patches/server/0063-Fix-MC-2025.patch similarity index 100% rename from patches/server/0059-Fix-MC-2025.patch rename to patches/server/0063-Fix-MC-2025.patch