diff --git a/gradle.properties b/gradle.properties index d9ca8839..2cd7f8eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,6 @@ version=1.20.4-R0.1-SNAPSHOT mcVersion=1.20.4 packageVersion=1_20_R3 org.gradle.jvmargs=-Xmx2G -paperRef=5436d44bf2509ff89129f8790ee4643f09c72871 +paperRef=f4c7d373e4a1aff23539fe099745bf29a28559b9 preVersion=false updatingMinecraft=false \ No newline at end of file diff --git a/patches/api/0009-Force-peaceful-mode-switch.patch b/patches/api/0009-Force-peaceful-mode-switch.patch index 62720ef4..13433529 100644 --- a/patches/api/0009-Force-peaceful-mode-switch.patch +++ b/patches/api/0009-Force-peaceful-mode-switch.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Force peaceful mode switch diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 35fb5047dd8a8521586a9ca9f8d70881355fb7f5..30a3d28ef0a3393799401a243bd80289e35f8f96 100644 +index e6f66d70d024cf4f0536a5bf8e51bf7b306335df..fd81bf0631e57cdcbec7c0cb95c595510ce0df3d 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4290,6 +4290,12 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4301,6 +4301,12 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient void setSendViewDistance(int viewDistance); // Paper end - view distance api diff --git a/patches/api/0011-Bytebuf-API.patch b/patches/api/0011-Bytebuf-API.patch index 82208f64..2234fa7a 100644 --- a/patches/api/0011-Bytebuf-API.patch +++ b/patches/api/0011-Bytebuf-API.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lumine1909 <3556577839@qq.com> Date: Fri, 12 Apr 2024 20:12:33 -0400 -Subject: [PATCH] bytebuf-api +Subject: [PATCH] Bytebuf API diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java @@ -38,7 +38,7 @@ index d465633aab75def37a2b4a9f2a034071970c1dfa..cf9d17b68f27d08a6a6f6c564874370a + // Leaves end - Bytebuf API } diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c6cb4f17469a8f2e60dd3e28d41402851ce5fb21..ab62a61b6ba69fa07ca68cec79c4074fd8b54a96 100644 +index d048ae07cc33fd77d128cc1ebf88b0804969fa3c..adc61a3046dba8d236a0c12d109b0f8183b89880 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -3706,6 +3706,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM @@ -50,8 +50,8 @@ index c6cb4f17469a8f2e60dd3e28d41402851ce5fb21..ab62a61b6ba69fa07ca68cec79c4074f + void sendPacket(org.leavesmc.leaves.packet.bytebuf.Bytebuf buf, org.leavesmc.leaves.packet.PacketType packetType); + // Leaves end - Bytebuf API - @NotNull - @Override + // Paper start - Add chunk view API + /** diff --git a/src/main/java/org/leavesmc/leaves/packet/Packet.java b/src/main/java/org/leavesmc/leaves/packet/Packet.java new file mode 100644 index 0000000000000000000000000000000000000000..0ea5069b994eb3da2952f696c1fd1bc0e81e281a diff --git a/patches/server/0002-Delete-Timings.patch b/patches/server/0002-Delete-Timings.patch index 3f290729..4d76ba1a 100644 --- a/patches/server/0002-Delete-Timings.patch +++ b/patches/server/0002-Delete-Timings.patch @@ -781,7 +781,7 @@ index b66a7d4aab887309579154815a0d4abf9de506b0..e4d3f280b35d977f28233b1db1dc855c } diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 0cc2307636279915c1f8529e62174cc696e185ee..dd402f077922ea3946a18cdf04285c67fd093538 100644 +index 30fe1c0645a07d663b08c0f988a1ab3a750bf7c4..47408dbce3a627236694c0d0f956c7f87a898b86 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -1,6 +1,5 @@ @@ -841,7 +841,7 @@ index dab211c458311869c61779305580a1c7da830f71..193a527c8ebd3b8772820883046de7e9 @Override diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index 32838f87978c0694bdb573236b7cdf72b2e363cd..866cf2b81359fe03d0d8b1a5001340aa5b51c749 100644 +index 83302c252f54481f239522e5c6861ccfe233070a..070231080052ef3d0da179a8ed8b754ed6f8dd11 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java @@ -49,8 +49,7 @@ public class PacketUtils { @@ -855,7 +855,7 @@ index 32838f87978c0694bdb573236b7cdf72b2e363cd..866cf2b81359fe03d0d8b1a5001340aa } catch (Exception exception) { label25: diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f9e5f9f309133ea5b540530dc7da96d085b89ac0..5db905f820a13c876fd9c9003610e1b3c42f0364 100644 +index 65a342698c98eb91f5f9156885afd7cc56967114..f7f9fd5e591aad8bd6b3ed4ffcb2ca7aaa6548f3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -3,9 +3,6 @@ package net.minecraft.server; @@ -1574,7 +1574,7 @@ index 502bdc726b7890b00ee36871d905dea44e8719e3..ccc645f225bb0cf898dbc2ee7abb21b5 } else if (close) { chunkproviderserver.close(false); } // Paper - rewrite chunk system diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 860d33ac56680babd87358b1d7d2216dac3f7865..e0a819d33540488c7561f3b63e439e59aefa0721 100644 +index fe2ef36ab5dc4b933abf24dbfd0e811c53239cf0..03eba1b13288dfaaeca9a3eef68a1e0d3d71ccb6 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2394,7 +2394,6 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -1675,10 +1675,10 @@ index e9bb7feb591032904516d1b9374f486d8a7d066c..04771be6128491bc7b9e6a0a400dfd32 public abstract class LivingEntity extends Entity implements Attackable { diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..fbbfefc97ca82fefc8aaa5d3f0a99520b4debdaa 100644 +index 03092417cd8ab5c6d266f3af9f20f47b34cfaba3..d27075ae2b4f2570f0b4db283e1603ae9a5929aa 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java -@@ -15,7 +15,6 @@ public abstract class Behavior implements BehaviorContro +@@ -16,7 +16,6 @@ public abstract class Behavior implements BehaviorContro private final int maxDuration; // Paper start - configurable behavior tick rate and timings private final String configKey; @@ -1686,7 +1686,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..fbbfefc97ca82fefc8aaa5d3f0a99520 // Paper end - configurable behavior tick rate and timings public Behavior(Map, MemoryStatus> requiredMemoryState) { -@@ -37,7 +36,6 @@ public abstract class Behavior implements BehaviorContro +@@ -38,7 +37,6 @@ public abstract class Behavior implements BehaviorContro key = key.substring(lastSeparator + 1); } this.configKey = key.toLowerCase(java.util.Locale.ROOT); @@ -1694,7 +1694,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..fbbfefc97ca82fefc8aaa5d3f0a99520 // Paper end - configurable behavior tick rate and timings } -@@ -58,9 +56,7 @@ public abstract class Behavior implements BehaviorContro +@@ -59,9 +57,7 @@ public abstract class Behavior implements BehaviorContro this.status = Behavior.Status.RUNNING; int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration); this.endTimestamp = time + (long)i; @@ -1704,7 +1704,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..fbbfefc97ca82fefc8aaa5d3f0a99520 return true; } else { return false; -@@ -72,13 +68,11 @@ public abstract class Behavior implements BehaviorContro +@@ -73,7 +69,6 @@ public abstract class Behavior implements BehaviorContro @Override public final void tickOrStop(ServerLevel world, E entity, long time) { @@ -1712,17 +1712,11 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..fbbfefc97ca82fefc8aaa5d3f0a99520 if (!this.timedOut(time) && this.canStillUse(world, entity, time)) { this.tick(world, entity, time); } else { - this.doStop(world, entity, time); - } -- this.timing.stopTiming(); // Paper - behavior timings - - } - diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..b68c69a7ab71926ecf478d8daa5ec5ac788d4011 100644 +index 9e90cb2f51d1bacacb287e912d14ab9152523205..06fab5e6b38d7b5509cc175d3921f500dee6443c 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java -@@ -21,7 +21,6 @@ public abstract class Sensor { +@@ -28,7 +28,6 @@ public abstract class Sensor { private long timeToTick; // Paper start - configurable sensor tick rate and timings private final String configKey; @@ -1730,7 +1724,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..b68c69a7ab71926ecf478d8daa5ec5ac // Paper end public Sensor(int senseInterval) { -@@ -32,7 +31,6 @@ public abstract class Sensor { +@@ -39,7 +38,6 @@ public abstract class Sensor { key = key.substring(lastSeparator + 1); } this.configKey = key.toLowerCase(java.util.Locale.ROOT); @@ -1738,7 +1732,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..b68c69a7ab71926ecf478d8daa5ec5ac // Paper end this.scanRate = senseInterval; this.timeToTick = (long)RANDOM.nextInt(senseInterval); -@@ -46,10 +44,8 @@ public abstract class Sensor { +@@ -53,10 +51,8 @@ public abstract class Sensor { if (--this.timeToTick <= 0L) { // Paper start - configurable sensor tick rate and timings this.timeToTick = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.sensor.get(entity.getType(), this.configKey), this.scanRate); @@ -1747,8 +1741,8 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..b68c69a7ab71926ecf478d8daa5ec5ac this.doTick(world, entity); - this.timing.stopTiming(); // Paper - sensor timings } - } + diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java index ca89d1593bf1b46c79a882db528cbca1359dc9d4..74b446d9d39642c315d2e62f11a63278bb95e266 100644 --- a/src/main/java/net/minecraft/world/level/Level.java diff --git a/patches/server/0010-Fakeplayer-support.patch b/patches/server/0010-Fakeplayer-support.patch index 77ae647e..3e139339 100644 --- a/patches/server/0010-Fakeplayer-support.patch +++ b/patches/server/0010-Fakeplayer-support.patch @@ -22,10 +22,10 @@ index a1c9726d25479b5326fe2fa2b0f5a98d6b2da4c5..ee17f012497fa75e152bc279cb3f7778 RegisteredListener[] listeners = handlers.getRegisteredListeners(); diff --git a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java -index a327973e37b5b8d4e15683ef24548482ac3dc3d5..65d82963d611a6dbbd7ca58d363854e4fad59230 100644 +index 35772110e9318df46a2729dbc0b5879b290011b7..0d4ad3666efaa7cc8df81b1c698e4a45586d3795 100644 --- a/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java +++ b/src/main/java/net/minecraft/advancements/critereon/SimpleCriterionTrigger.java -@@ -42,6 +42,7 @@ public abstract class SimpleCriterionTrigger predicate) { @@ -34,10 +34,10 @@ index a327973e37b5b8d4e15683ef24548482ac3dc3d5..65d82963d611a6dbbd7ca58d363854e4 Set> set = (Set) playerAdvancements.criterionData.get(this); // Paper - fix AdvancementDataPlayer leak if (set != null && !set.isEmpty()) { diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..13b0a965eaee5ba2f6da420c3c02dc719fa73dd6 100644 +index a536ebcf29d8ef0ed32863bd8d5e70f7a0636e8d..35d03c7128e0cc9b3e0a9ecf109c17dab927c4a4 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java -@@ -339,6 +339,14 @@ public class Connection extends SimpleChannelInboundHandler> { +@@ -340,6 +340,14 @@ public class Connection extends SimpleChannelInboundHandler> { } } @@ -53,7 +53,7 @@ index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..13b0a965eaee5ba2f6da420c3c02dc71 if (this.packetListener != null) { throw new IllegalStateException("Listener already set"); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 77e952a502bebfb31311b47ceed0b88118278d4a..91d82c02eb152e3565e52fc1e01ce37855a39bdd 100644 +index f7a3a8933b9714ca65e48dd92c979bcef9535172..2841d4f57c39a52bf11023500a91bc51019ac172 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -663,6 +663,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop msgFunction) { final PlayerChatMessage toConsoleMessage = msgFunction == null ? ChatProcessor.this.message : ChatProcessor.this.message.withUnsignedContent(msgFunction.apply(ChatProcessor.this.server.console)); @@ -18,7 +18,7 @@ index e4fd372a1d585887287253a02531cd192929377b..fddef26ab6a771c61a5e63c7635bfa05 } diff --git a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java -index 72a8aa676836fcb3b4578689d16af65e18f55bbe..47a06936a4727c6209a7ad0fb8fb10995d36513c 100644 +index 4abd7babc3aa7268975386e7c2319f7961b0c3aa..07076b5212cf580390c212d00c76b50397195a02 100644 --- a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java +++ b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java @@ -13,10 +13,17 @@ public record ArgumentSignatures(List entries) { @@ -39,7 +39,7 @@ index 72a8aa676836fcb3b4578689d16af65e18f55bbe..47a06936a4727c6209a7ad0fb8fb1099 + @Nullable public MessageSignature get(String argumentName) { - for(ArgumentSignatures.Entry entry : this.entries) { + for (ArgumentSignatures.Entry entry : this.entries) { diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java index b863249ff7e13cf4939c8961601f0564c62fd661..92df5611cdf4b3a8a82ed7194eba1d398a8cc9bd 100644 --- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java @@ -62,13 +62,13 @@ index b863249ff7e13cf4939c8961601f0564c62fd661..92df5611cdf4b3a8a82ed7194eba1d39 return new EncoderException("Failed to encode: " + s + " " + value); })), maxLength); // Paper - Adventure; add max length parameter diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java -index d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..50c1b722231c2add72663c475ae9068a35bfd524 100644 +index 831178218ddfaa1828c00d0662b251d11bb29ff5..865eda0ea24e86b053ea69714b55130af94e1c50 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java +++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java -@@ -8,10 +8,18 @@ import net.minecraft.network.chat.MessageSignature; - import net.minecraft.network.protocol.Packet; +@@ -9,10 +9,18 @@ import net.minecraft.network.protocol.Packet; - public record ServerboundChatPacket(String message, Instant timeStamp, long salt, @Nullable MessageSignature signature, LastSeenMessages.Update lastSeenMessages) implements Packet { + public record ServerboundChatPacket(String message, Instant timeStamp, long salt, @Nullable MessageSignature signature, LastSeenMessages.Update lastSeenMessages) + implements Packet { + // Leaves start - no chat sign public ServerboundChatPacket(FriendlyByteBuf buf) { - this(buf.readUtf(256), buf.readInstant(), buf.readLong(), buf.readNullable(MessageSignature::read), new LastSeenMessages.Update(buf)); diff --git a/patches/server/0025-Early-return-optimization-for-target-finding.patch b/patches/server/0025-Early-return-optimization-for-target-finding.patch index 0a24936d..e149286f 100644 --- a/patches/server/0025-Early-return-optimization-for-target-finding.patch +++ b/patches/server/0025-Early-return-optimization-for-target-finding.patch @@ -6,13 +6,13 @@ Subject: [PATCH] Early return optimization for target finding This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..458e6838e953dae2b17c1cd1823feaa58ab8edcb 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..a7f78a2c611fc79fd3a1d221be1ec54992d463c1 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -@@ -75,9 +75,17 @@ public class TargetingConditions { +@@ -76,9 +76,17 @@ public class TargetingConditions { } - if (this.range > 0.0D) { + if (this.range > 0.0) { + // Leaves start - check range before getting visibility + double f = baseEntity.distanceToSqr(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ()); + if (top.leavesmc.leaves.LeavesConfig.entityTargetFindingOptimization) { @@ -21,8 +21,8 @@ index c8a80c1b2fedff22e8a877d466062375ffb2f0d7..458e6838e953dae2b17c1cd1823feaa5 + return false; + } + } - double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0D; - double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0D); // Paper - Fix MC-145656 + double d = this.testInvisible ? targetEntity.getVisibilityPercent(baseEntity) : 1.0; + double e = Math.max((this.useFollowRange ? this.getFollowRange(baseEntity) : this.range) * d, 2.0); // Paper - Fix MC-145656 - double f = baseEntity.distanceToSqr(targetEntity.getX(), targetEntity.getY(), targetEntity.getZ()); + // Leaves end - check range before getting visibility if (f > e * e) { diff --git a/patches/server/0029-Reduce-entity-allocations.patch b/patches/server/0029-Reduce-entity-allocations.patch index 31bf6651..ce0b7022 100644 --- a/patches/server/0029-Reduce-entity-allocations.patch +++ b/patches/server/0029-Reduce-entity-allocations.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Reduce entity allocations This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) 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 897d7632ecfea40890433474870dd7a5e534d8ab..e1f3890dd63332a5af3aa08cd4ba24ef2eaf233a 100644 +index b99a080ab27e24d8131fda931ca70d6d271bb01c..a2a1de65dfd420185ed0e52e28c7000fde3dd959 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 @@ -23,9 +23,11 @@ public class AttributeMap { @@ -21,20 +21,16 @@ index 897d7632ecfea40890433474870dd7a5e534d8ab..e1f3890dd63332a5af3aa08cd4ba24ef } private void onAttributeModified(AttributeInstance instance) { -@@ -47,9 +49,15 @@ public class AttributeMap { +@@ -44,7 +46,13 @@ public class AttributeMap { @Nullable public AttributeInstance getInstance(Attribute attribute) { -- return this.attributes.computeIfAbsent(attribute, (attributex) -> { -- return this.supplier.createInstance(this::onAttributeModified, attributex); -- }); +- return this.attributes.computeIfAbsent(attribute, attributex -> this.supplier.createInstance(this::onAttributeModified, attributex)); + // Leaves start - cache lambda, as for some reason java allocates it anyways + if (top.leavesmc.leaves.LeavesConfig.reduceEntityAllocations) { + return this.attributes.computeIfAbsent(attribute, this.createInstance); + } else { -+ return this.attributes.computeIfAbsent(attribute, (attributex) -> { -+ return this.supplier.createInstance(this::onAttributeModified, attributex); -+ }); ++ return this.attributes.computeIfAbsent(attribute, attributex -> this.supplier.createInstance(this::onAttributeModified, attributex)); + } + // Leaves end - cache lambda, as for some reason java allocates it anyways } diff --git a/patches/server/0034-Use-aging-cache-for-biome-temperatures.patch b/patches/server/0034-Use-aging-cache-for-biome-temperatures.patch index 38d81d34..8d556fa2 100644 --- a/patches/server/0034-Use-aging-cache-for-biome-temperatures.patch +++ b/patches/server/0034-Use-aging-cache-for-biome-temperatures.patch @@ -6,43 +6,38 @@ Subject: [PATCH] Use aging cache for biome temperatures This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 4f9187d9d640618c40a2fa528f36b845017b4777..f9afca5e44ccb8e2828a26ffa179fed0bf9a209e 100644 +index 64076a452a315090d299a7a58a43fd3b5c1b4e0a..0071e220624d636aec5f1477b8338c4d6b4f8918 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -66,23 +66,33 @@ public final class Biome { +@@ -63,7 +63,17 @@ public final class Biome { private final BiomeGenerationSettings generationSettings; private final MobSpawnSettings mobSettings; private final BiomeSpecialEffects specialEffects; -- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> { -- return Util.make(() -> { -- Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { -- protected void rehash(int i) { -- } -- }; -- long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); -- return long2FloatLinkedOpenHashMap; -- }); -- }); +- private final ThreadLocal temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { + // Leaves start - use our cache + private final ThreadLocal temperatureCache; + private final ThreadLocal temperatureAgingCache; - - Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { - this.climateSettings = weather; - this.generationSettings = generationSettings; - this.mobSettings = spawnSettings; - this.specialEffects = effects; + -+ temperatureCache = ThreadLocal.withInitial(() -> { -+ return Util.make(() -> { -+ Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { -+ protected void rehash(int i) { -+ } -+ }; -+ long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); -+ return long2FloatLinkedOpenHashMap; -+ }); -+ }); ++ Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { ++ this.climateSettings = weather; ++ this.generationSettings = generationSettings; ++ this.mobSettings = spawnSettings; ++ this.specialEffects = effects; ++ ++ temperatureCache = ThreadLocal.withInitial(() -> Util.make(() -> { + Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = new Long2FloatLinkedOpenHashMap(1024, 0.25F) { + protected void rehash(int i) { + } +@@ -71,13 +81,13 @@ public final class Biome { + long2FloatLinkedOpenHashMap.defaultReturnValue(Float.NaN); + return long2FloatLinkedOpenHashMap; + })); +- +- Biome(Biome.ClimateSettings weather, BiomeSpecialEffects effects, BiomeGenerationSettings generationSettings, MobSpawnSettings spawnSettings) { +- this.climateSettings = weather; +- this.generationSettings = generationSettings; +- this.mobSettings = spawnSettings; +- this.specialEffects = effects; + temperatureAgingCache = ThreadLocal.withInitial(() -> { + return Util.make(() -> { + return new top.leavesmc.leaves.structs.Long2FloatAgingCache(TEMPERATURE_CACHE_SIZE); @@ -53,7 +48,7 @@ index 4f9187d9d640618c40a2fa528f36b845017b4777..f9afca5e44ccb8e2828a26ffa179fed0 public int getSkyColor() { return this.specialEffects.getSkyColor(); -@@ -118,19 +128,33 @@ public final class Biome { +@@ -112,19 +122,32 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos) { long l = blockPos.asLong(); @@ -61,10 +56,6 @@ index 4f9187d9d640618c40a2fa528f36b845017b4777..f9afca5e44ccb8e2828a26ffa179fed0 - float f = long2FloatLinkedOpenHashMap.get(l); - if (!Float.isNaN(f)) { - return f; -- } else { -- float g = this.getHeightAdjustedTemperature(blockPos); -- if (long2FloatLinkedOpenHashMap.size() == 1024) { -- long2FloatLinkedOpenHashMap.removeFirstFloat(); + // Leaves start - use our cache + if (top.leavesmc.leaves.LeavesConfig.biomeTemperaturesUseAgingCache) { + top.leavesmc.leaves.structs.Long2FloatAgingCache cache = this.temperatureAgingCache.get(); @@ -75,8 +66,11 @@ index 4f9187d9d640618c40a2fa528f36b845017b4777..f9afca5e44ccb8e2828a26ffa179fed0 + float g = this.getHeightAdjustedTemperature(blockPos); + cache.putValue(l, g); + return g; - } -+ } else { ++ } + } else { +- float g = this.getHeightAdjustedTemperature(blockPos); +- if (long2FloatLinkedOpenHashMap.size() == 1024) { +- long2FloatLinkedOpenHashMap.removeFirstFloat(); + Long2FloatLinkedOpenHashMap long2FloatLinkedOpenHashMap = this.temperatureCache.get(); + float f = long2FloatLinkedOpenHashMap.get(l); + if (!Float.isNaN(f)) { @@ -86,12 +80,12 @@ index 4f9187d9d640618c40a2fa528f36b845017b4777..f9afca5e44ccb8e2828a26ffa179fed0 + if (long2FloatLinkedOpenHashMap.size() == 1024) { + long2FloatLinkedOpenHashMap.removeFirstFloat(); + } - -- long2FloatLinkedOpenHashMap.put(l, g); -- return g; + long2FloatLinkedOpenHashMap.put(l, g); + return g; -+ } + } +- +- long2FloatLinkedOpenHashMap.put(l, g); +- return g; } + // Leaves end - use our cache } diff --git a/patches/server/0040-Random-flatten-triangular-distribution.patch b/patches/server/0040-Random-flatten-triangular-distribution.patch index 9be72e3f..85c47d1a 100644 --- a/patches/server/0040-Random-flatten-triangular-distribution.patch +++ b/patches/server/0040-Random-flatten-triangular-distribution.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Random flatten triangular distribution This patch is Powered by Carpet-TIS-Addition(https://github.com/plusls/Carpet-TIS-Addition) diff --git a/src/main/java/net/minecraft/util/RandomSource.java b/src/main/java/net/minecraft/util/RandomSource.java -index ff1ad1024419182f7f3de578442c1c033d4c9ebb..d93f3eeea17d58ccc01c6010b2d49f813dc0d85f 100644 +index 9c6f5b55b1f1376fa75e216cd366ee47c79fafc4..35d90a4f3ec07844a444dbbc99b81f417ded2dd5 100644 --- a/src/main/java/net/minecraft/util/RandomSource.java +++ b/src/main/java/net/minecraft/util/RandomSource.java -@@ -55,7 +55,14 @@ public interface RandomSource { +@@ -53,7 +53,14 @@ public interface RandomSource { double nextGaussian(); default double triangle(double mode, double deviation) { diff --git a/patches/server/0041-Jade-Protocol.patch b/patches/server/0041-Jade-Protocol.patch index d7834e3a..9d551e4f 100644 --- a/patches/server/0041-Jade-Protocol.patch +++ b/patches/server/0041-Jade-Protocol.patch @@ -19,11 +19,11 @@ index 958816ce2166248b542c96c10c398a52d769b4db..f60c45188e2780ae969b82afb4bb5846 } diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java -index 7292e68199d244990efa8475fb40b94fe72323c0..3c234bfcecd6d93f8ff9b1abc6dfc72c26fa30f0 100644 +index d624c5ebbbe88c5fc2a4b8521f71ac00f05d58cf..bc9a9a177e15570ad29bac0080dc341fc0277396 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java +++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java -@@ -50,7 +50,7 @@ public class TrialSpawnerData { - }); +@@ -45,7 +45,7 @@ public class TrialSpawnerData { + ); protected final Set detectedPlayers = new HashSet<>(); protected final Set currentMobs = new HashSet<>(); - protected long cooldownEndsAt; diff --git a/patches/server/0045-Stackable-ShulkerBoxes.patch b/patches/server/0045-Stackable-ShulkerBoxes.patch index 29f6810c..0b552256 100644 --- a/patches/server/0045-Stackable-ShulkerBoxes.patch +++ b/patches/server/0045-Stackable-ShulkerBoxes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Stackable ShulkerBoxes This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition) diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index c7f06c3cfb737bd17a706798bf9cf0e1af5f0cc0..b5b522c1307a58453aa293aaa808dd9ec86901fc 100644 +index 29ce703a79f7893ac990ad80e0f1c1cf63546e6c..569b7f66b505f9cbfb45322ecab057534f4a6330 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -14,10 +14,12 @@ import net.minecraft.world.entity.Entity; @@ -211,10 +211,10 @@ index 7cef5c518207752f7e1bfdd5bbec55fe9fafca6b..925cc4d99d1388bc32cebb5238a32210 slot.setChanged(); } // Paper - Add PlayerTradeEvent and PlayerPurchaseEvent diff --git a/src/main/java/net/minecraft/world/inventory/Slot.java b/src/main/java/net/minecraft/world/inventory/Slot.java -index e2fd415b69e0213688561e9a19aec2cdcd267211..bb99bdd45efdb52323429565a4e13c07f5ab6d44 100644 +index 1b1d4c46827aa397183ca3dfec46c785e5531b71..3c34532b9a7118fef6b37e545a19cbf193201352 100644 --- a/src/main/java/net/minecraft/world/inventory/Slot.java +++ b/src/main/java/net/minecraft/world/inventory/Slot.java -@@ -77,7 +77,7 @@ public class Slot { +@@ -76,7 +76,7 @@ public class Slot { } public int getMaxStackSize(ItemStack stack) { @@ -224,10 +224,10 @@ index e2fd415b69e0213688561e9a19aec2cdcd267211..bb99bdd45efdb52323429565a4e13c07 @Nullable diff --git a/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java b/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java -index 5780d349f968ea3d05cf569b63531f8e76884827..d30af75de7d146b6bf49814b0eabae94e57682f5 100644 +index 04ae1fe0f4bc902d2f97ed809c8e1038342d7bb7..a51781ad09da5f13180aea2413b883c095f5299d 100644 --- a/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java +++ b/src/main/java/net/minecraft/world/level/block/AbstractCauldronBlock.java -@@ -53,9 +53,27 @@ public abstract class AbstractCauldronBlock extends Block { +@@ -57,9 +57,27 @@ public abstract class AbstractCauldronBlock extends Block { public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ItemStack itemStack = player.getItemInHand(hand); CauldronInteraction cauldronInteraction = this.interactions.map().get(itemStack.getItem()); @@ -257,7 +257,7 @@ index 5780d349f968ea3d05cf569b63531f8e76884827..d30af75de7d146b6bf49814b0eabae94 public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { return SHAPE; diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 91b6dcb3e4fb8ae2c76084e93917fb9a89bb8beb..90cf24e81d43c7473a99b12484a15c3103208385 100644 +index cffc280655851e18439c9dfcb01ff69aab61e025..21a64f3a704fb362ed3aade559d55c0804ae5023 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java @@ -734,9 +734,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen diff --git a/patches/server/0047-MC-Technical-Survival-Mode.patch b/patches/server/0047-MC-Technical-Survival-Mode.patch index 72594a6a..638c675f 100644 --- a/patches/server/0047-MC-Technical-Survival-Mode.patch +++ b/patches/server/0047-MC-Technical-Survival-Mode.patch @@ -6,10 +6,10 @@ Subject: [PATCH] MC Technical Survival Mode Will automatically overwrite some configuration after startup diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java -index fddef26ab6a771c61a5e63c7635bfa051ab8426a..92206512b37bdc007d0defa25eccf6b513d21ff9 100644 +index 6177f91146d2bc9dc1a066a24f84581cec0f53cd..04eab3a1f3cb5332293a95f1b3023ed55ab42237 100644 --- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java +++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java -@@ -369,14 +369,14 @@ public final class ChatProcessor { +@@ -331,14 +331,14 @@ public final class ChatProcessor { } static String legacyDisplayName(final CraftPlayer player) { diff --git a/patches/server/0053-Fix-update-suppression-crash.patch b/patches/server/0053-Fix-update-suppression-crash.patch index 417a08b1..d55494f3 100644 --- a/patches/server/0053-Fix-update-suppression-crash.patch +++ b/patches/server/0053-Fix-update-suppression-crash.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix update suppression crash diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java -index d0a487f0d563181818c5670749e8dd3a9d939265..140a9070fb5859e762e40ddb1e4259f666a8ed1e 100644 +index 070231080052ef3d0da179a8ed8b754ed6f8dd11..84530927aa4517709ba3f38d27755bb5d2eaac34 100644 --- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java +++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java @@ -51,6 +51,10 @@ public class PacketUtils { @@ -20,7 +20,7 @@ index d0a487f0d563181818c5670749e8dd3a9d939265..140a9070fb5859e762e40ddb1e4259f6 label25: { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 943781aacddb859733dc69466b135a9b93717f2b..35433d438e7bcec89363f94ef3903b02b5d02987 100644 +index 4091c7b992d885fa14e03df7fa8c5edc0c25f76d..c5c9a9a6f42da7b71103fd754661534dbc9fc13e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1701,7 +1701,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop gossipTypeFilter) { GossipContainer.EntityGossips entityGossips = this.gossips.get(target); diff --git a/patches/server/0061-Disable-check-out-of-order-command.patch b/patches/server/0061-Disable-check-out-of-order-command.patch index 02c655b4..444a6d6d 100644 --- a/patches/server/0061-Disable-check-out-of-order-command.patch +++ b/patches/server/0061-Disable-check-out-of-order-command.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable check out-of-order command diff --git a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -index ba12919c3f9aec34a9e64993b143ae92be5eb172..bbb8d46cd915b06ab2b308cc991e4c7df6c56e5f 100644 +index 0af9ed92824ccf30814eceb6a2c2e5c12661c991..b007bacf311edd71ef7773e43e8aa2ddd4871bd4 100644 --- a/src/main/java/net/minecraft/network/chat/SignedMessageChain.java +++ b/src/main/java/net/minecraft/network/chat/SignedMessageChain.java -@@ -38,7 +38,7 @@ public class SignedMessageChain { +@@ -37,7 +37,7 @@ public class SignedMessageChain { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.chain_broken"), false); // Paper - diff on change (if disconnects, need a new kick event cause) } else if (playerPublicKey.data().hasExpired()) { throw new SignedMessageChain.DecodeException(Component.translatable("chat.disabled.expiredProfileKey"), false, org.bukkit.event.player.PlayerKickEvent.Cause.EXPIRED_PROFILE_PUBLIC_KEY); // Paper - kick event causes diff --git a/patches/server/0064-Creative-fly-no-clip.patch b/patches/server/0064-Creative-fly-no-clip.patch index 6d53b2a7..f354c577 100644 --- a/patches/server/0064-Creative-fly-no-clip.patch +++ b/patches/server/0064-Creative-fly-no-clip.patch @@ -120,10 +120,10 @@ index 098fde8200a11f91f934ddab6b1486dac4014dfe..88c9097368f7a842e1d31c460330aa3d public boolean isSpawning() { diff --git a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java -index c71690dbc3dc52803945f1608f0ee3ba94146354..2564ece9ffa4093ded2bceef1cd6bea2c72178b6 100644 +index 9f45dda6ff45ac1ffb7ac99575b7d09bdc61c56a..1fde81b6f68f43cd8d9c6123fff1262ccbaa6038 100644 --- a/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java -@@ -142,7 +142,7 @@ public class PistonMovingBlockEntity extends BlockEntity { +@@ -146,7 +146,7 @@ public class PistonMovingBlockEntity extends BlockEntity { h = (double)direction.getStepZ(); } @@ -132,11 +132,11 @@ index c71690dbc3dc52803945f1608f0ee3ba94146354..2564ece9ffa4093ded2bceef1cd6bea2 // Paper - EAR items stuck in in slime pushed by a piston entity.activatedTick = Math.max(entity.activatedTick, net.minecraft.server.MinecraftServer.currentTick + 10); entity.activatedImmunityTick = Math.max(entity.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 10); -@@ -178,6 +178,7 @@ public class PistonMovingBlockEntity extends BlockEntity { +@@ -182,6 +182,7 @@ public class PistonMovingBlockEntity extends BlockEntity { } private static void moveEntityByPiston(Direction direction, Entity entity, double distance, Direction movementDirection) { + if (entity instanceof net.minecraft.world.entity.player.Player player && player.isCreativeFlyOrSpectator()) return; // Leaves - creative no clip NOCLIP.set(direction); - entity.move(MoverType.PISTON, new Vec3(distance * (double)movementDirection.getStepX(), distance * (double)movementDirection.getStepY(), distance * (double)movementDirection.getStepZ())); - NOCLIP.set((Direction)null); + entity.move( + MoverType.PISTON, diff --git a/patches/server/0065-Optimized-dragon-respawn.patch b/patches/server/0065-Optimized-dragon-respawn.patch index 64e84979..e956aefd 100644 --- a/patches/server/0065-Optimized-dragon-respawn.patch +++ b/patches/server/0065-Optimized-dragon-respawn.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Optimized dragon respawn diff --git a/src/main/java/net/minecraft/world/level/block/state/pattern/BlockPattern.java b/src/main/java/net/minecraft/world/level/block/state/pattern/BlockPattern.java -index d0a047fd8849e9210dc9424325561f5a1b9998df..b665410788aa7c889dc214c2a97a9c29080b6001 100644 +index ee99519ebd46b1db3e76e7eb86e5cc121c867dc4..63f6f1328c4e39cc1f35480166ae5e22df943119 100644 --- a/src/main/java/net/minecraft/world/level/block/state/pattern/BlockPattern.java +++ b/src/main/java/net/minecraft/world/level/block/state/pattern/BlockPattern.java -@@ -60,7 +60,7 @@ public class BlockPattern { +@@ -59,7 +59,7 @@ public class BlockPattern { } @Nullable - private BlockPattern.BlockPatternMatch matches(BlockPos frontTopLeft, Direction forwards, Direction up, LoadingCache cache) { + public BlockPattern.BlockPatternMatch matches(BlockPos frontTopLeft, Direction forwards, Direction up, LoadingCache cache) { // Leaves - private -> public - for(int i = 0; i < this.width; ++i) { - for(int j = 0; j < this.height; ++j) { - for(int k = 0; k < this.depth; ++k) { + for (int i = 0; i < this.width; i++) { + for (int j = 0; j < this.height; j++) { + for (int k = 0; k < this.depth; k++) { diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java -index 7e9c502a7bcda445333adc250a3106f33d38c128..a54723f8f893f2445467d0056082c92eb121185f 100644 +index d4f903c402765c6e8e1db99e148613748f530726..939f1d6958c93819e188946c2173c2668f6d90a1 100644 --- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java +++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java @@ -45,6 +45,7 @@ import net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhase; diff --git a/patches/server/0066-Enchantment-mending-compatibility-infinity.patch b/patches/server/0066-Enchantment-mending-compatibility-infinity.patch index 10b529f0..23b03f1a 100644 --- a/patches/server/0066-Enchantment-mending-compatibility-infinity.patch +++ b/patches/server/0066-Enchantment-mending-compatibility-infinity.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Enchantment mending compatibility infinity diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java -index 518d85a13c37a2f7d32ca0718323181048559986..881d661326cbca3c5340a33a990f122737a37ef3 100644 +index 04c39359585d909dedbdfd78f6cbdc06b926607a..aef23527fe185df4929dffb96d8e705910bcabe0 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java @@ -19,6 +19,6 @@ public class ArrowInfiniteEnchantment extends Enchantment { @Override public boolean checkCompatibility(Enchantment other) { -- return other instanceof MendingEnchantment ? false : super.checkCompatibility(other); -+ return (!top.leavesmc.leaves.LeavesConfig.mendingCompatibilityInfinity && other instanceof MendingEnchantment) ? false : super.checkCompatibility(other); // Leaves - mendingCompatibilityInfinity +- return !(other instanceof MendingEnchantment) && super.checkCompatibility(other); ++ return (top.leavesmc.leaves.LeavesConfig.mendingCompatibilityInfinity || !(other instanceof MendingEnchantment)) && super.checkCompatibility(other); // Leaves - mendingCompatibilityInfinity } } diff --git a/patches/server/0067-Shave-snow-layers.patch b/patches/server/0067-Shave-snow-layers.patch index b0d8029d..638b5e16 100644 --- a/patches/server/0067-Shave-snow-layers.patch +++ b/patches/server/0067-Shave-snow-layers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Shave snow layers diff --git a/src/main/java/net/minecraft/world/item/ShovelItem.java b/src/main/java/net/minecraft/world/item/ShovelItem.java -index 21212462e6b415e96536a27b2c009d1562f18946..b620a6fe52bd1f86ca24f79e1ebf8879aed33961 100644 +index 9aba0211f37501bbd19b583d22fa83eae32390d9..8e496f0256091a2ad82537c76b1ce7125dc5a0da 100644 --- a/src/main/java/net/minecraft/world/item/ShovelItem.java +++ b/src/main/java/net/minecraft/world/item/ShovelItem.java @@ -11,10 +11,12 @@ import net.minecraft.tags.BlockTags; @@ -21,7 +21,7 @@ index 21212462e6b415e96536a27b2c009d1562f18946..b620a6fe52bd1f86ca24f79e1ebf8879 import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; -@@ -34,6 +36,22 @@ public class ShovelItem extends DiggerItem { +@@ -43,6 +45,22 @@ public class ShovelItem extends DiggerItem { return InteractionResult.PASS; } else { Player player = context.getPlayer(); diff --git a/patches/server/0072-No-block-update-command.patch b/patches/server/0072-No-block-update-command.patch index 3c1eb718..571e6cbf 100644 --- a/patches/server/0072-No-block-update-command.patch +++ b/patches/server/0072-No-block-update-command.patch @@ -55,17 +55,17 @@ index 82cad323e4fba9aea082047d3eb6c4351681d9af..8a9b471b3cfff45a6c78d8fffa0efb33 FluidState fluid1 = this.getNewLiquid(world, pos, world.getBlockState(pos)); int i = this.getSpreadDelay(world, pos, state, fluid1); diff --git a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java -index 87db9febbbf53702be0e1e89a95db99e823713e5..d21b9aa7812053bbd05e07b3f037697590b10ace 100644 +index 106af2b2c7ff72c7549975aef75cdcff8d9a7d97..5807f624d72f5f83ec28491236153710d29c4e9a 100644 --- a/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java +++ b/src/main/java/net/minecraft/world/level/redstone/CollectingNeighborUpdater.java -@@ -46,6 +46,7 @@ public class CollectingNeighborUpdater implements NeighborUpdater { +@@ -48,6 +48,7 @@ public class CollectingNeighborUpdater implements NeighborUpdater { } private void addAndRun(BlockPos pos, CollectingNeighborUpdater.NeighborUpdates entry) { + if (top.leavesmc.leaves.command.NoBlockUpdateCommand.isNoBlockUpdate()) return; // Leaves - no block update boolean bl = this.count > 0; boolean bl2 = this.maxChainedNeighborUpdates >= 0 && this.count >= this.maxChainedNeighborUpdates; - ++this.count; + this.count++; diff --git a/src/main/java/net/minecraft/world/level/redstone/InstantNeighborUpdater.java b/src/main/java/net/minecraft/world/level/redstone/InstantNeighborUpdater.java index 2708251ebc1995e71fb0e5dca9e158a3005f8a8a..e28351b379677fec356b6efec2d882ee20e7bd48 100644 --- a/src/main/java/net/minecraft/world/level/redstone/InstantNeighborUpdater.java diff --git a/patches/server/0079-Faster-chunk-serialization.patch b/patches/server/0079-Faster-chunk-serialization.patch index e1d08b60..90179dd7 100644 --- a/patches/server/0079-Faster-chunk-serialization.patch +++ b/patches/server/0079-Faster-chunk-serialization.patch @@ -25,7 +25,7 @@ index 8bafd5fd7499ba4a04bf706cfd1e156073716e21..7082022412dc75e3d84c74acd19bb845 + void compact(Palette srcPalette, Palette dstPalette, short[] out); // Leaves - faster chunk serialization } diff --git a/src/main/java/net/minecraft/util/SimpleBitStorage.java b/src/main/java/net/minecraft/util/SimpleBitStorage.java -index 453c1d7e01970fd817d27f59c3b00ffc70e8ca0c..a72aced047b7fa80a3484fc0b60eaa0c18a52b19 100644 +index 8d7d763bf51cac556057645e6169c9447993189b..ba7e275627a2c253259cd4585eae2c7b08ce1983 100644 --- a/src/main/java/net/minecraft/util/SimpleBitStorage.java +++ b/src/main/java/net/minecraft/util/SimpleBitStorage.java @@ -3,6 +3,7 @@ package net.minecraft.util; @@ -35,8 +35,8 @@ index 453c1d7e01970fd817d27f59c3b00ffc70e8ca0c..a72aced047b7fa80a3484fc0b60eaa0c +import net.minecraft.world.level.chunk.Palette; public class SimpleBitStorage implements BitStorage { - private static final int[] MAGIC = new int[]{-1, -1, 0, Integer.MIN_VALUE, 0, 0, 1431655765, 1431655765, 0, Integer.MIN_VALUE, 0, 1, 858993459, 858993459, 0, 715827882, 715827882, 0, 613566756, 613566756, 0, Integer.MIN_VALUE, 0, 2, 477218588, 477218588, 0, 429496729, 429496729, 0, 390451572, 390451572, 0, 357913941, 357913941, 0, 330382099, 330382099, 0, 306783378, 306783378, 0, 286331153, 286331153, 0, Integer.MIN_VALUE, 0, 3, 252645135, 252645135, 0, 238609294, 238609294, 0, 226050910, 226050910, 0, 214748364, 214748364, 0, 204522252, 204522252, 0, 195225786, 195225786, 0, 186737708, 186737708, 0, 178956970, 178956970, 0, 171798691, 171798691, 0, 165191049, 165191049, 0, 159072862, 159072862, 0, 153391689, 153391689, 0, 148102320, 148102320, 0, 143165576, 143165576, 0, 138547332, 138547332, 0, Integer.MIN_VALUE, 0, 4, 130150524, 130150524, 0, 126322567, 126322567, 0, 122713351, 122713351, 0, 119304647, 119304647, 0, 116080197, 116080197, 0, 113025455, 113025455, 0, 110127366, 110127366, 0, 107374182, 107374182, 0, 104755299, 104755299, 0, 102261126, 102261126, 0, 99882960, 99882960, 0, 97612893, 97612893, 0, 95443717, 95443717, 0, 93368854, 93368854, 0, 91382282, 91382282, 0, 89478485, 89478485, 0, 87652393, 87652393, 0, 85899345, 85899345, 0, 84215045, 84215045, 0, 82595524, 82595524, 0, 81037118, 81037118, 0, 79536431, 79536431, 0, 78090314, 78090314, 0, 76695844, 76695844, 0, 75350303, 75350303, 0, 74051160, 74051160, 0, 72796055, 72796055, 0, 71582788, 71582788, 0, 70409299, 70409299, 0, 69273666, 69273666, 0, 68174084, 68174084, 0, Integer.MIN_VALUE, 0, 5}; -@@ -201,4 +202,44 @@ public class SimpleBitStorage implements BitStorage { + private static final int[] MAGIC = new int[]{ +@@ -389,4 +390,44 @@ public class SimpleBitStorage implements BitStorage { super(message); } } @@ -82,7 +82,7 @@ index 453c1d7e01970fd817d27f59c3b00ffc70e8ca0c..a72aced047b7fa80a3484fc0b60eaa0c + // Leaves end - faster chunk serialization } diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java -index f8de91393564b3691c17339ac9196cc0fc1cf748..63c45b6f625fbab5e1d7513132f4d89fcab7a23d 100644 +index 01f5b946fabbe34f31110e75973dab9f39897346..54c7d9bed0fead691d06691086f04cc2521dbe07 100644 --- a/src/main/java/net/minecraft/util/ZeroBitStorage.java +++ b/src/main/java/net/minecraft/util/ZeroBitStorage.java @@ -3,6 +3,7 @@ package net.minecraft.util; @@ -93,7 +93,7 @@ index f8de91393564b3691c17339ac9196cc0fc1cf748..63c45b6f625fbab5e1d7513132f4d89f public class ZeroBitStorage implements BitStorage { public static final long[] RAW = new long[0]; -@@ -72,4 +73,6 @@ public class ZeroBitStorage implements BitStorage { +@@ -71,4 +72,6 @@ public class ZeroBitStorage implements BitStorage { public BitStorage copy() { return this; } @@ -112,7 +112,7 @@ index acae3eb30e0689048937f479dc3070f0688abdad..029b62acf1d9f8479ab64a55c12f00ba int onResize(int newBits, T object); } diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java -index 983799520ce052d98c9231f4f7925492d4f7d5c9..7ecc67f7cd1493da37025adda152a3bd098130a2 100644 +index adfbdca12fbdee2602feb0158674166d5256e49e..7f823b131c3a50a99077665ed688b53862b9fb52 100644 --- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java +++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java @@ -23,8 +23,25 @@ import net.minecraft.util.Mth; @@ -139,9 +139,9 @@ index 983799520ce052d98c9231f4f7925492d4f7d5c9..7ecc67f7cd1493da37025adda152a3bd + // Leaves end - faster chunk serialization + private static final int MIN_PALETTE_BITS = 0; - private final PaletteResize dummyPaletteResize = (newSize, added) -> { - return 0; -@@ -302,30 +319,78 @@ public class PalettedContainer implements PaletteResize, PalettedContainer + private final PaletteResize dummyPaletteResize = (newSize, added) -> 0; + public final IdMap registry; +@@ -304,28 +321,78 @@ public class PalettedContainer implements PaletteResize, PalettedContainer public synchronized PalettedContainerRO.PackedData pack(IdMap idList, PalettedContainer.Strategy paletteProvider) { // Paper - synchronize this.acquire(); @@ -151,9 +151,7 @@ index 983799520ce052d98c9231f4f7925492d4f7d5c9..7ecc67f7cd1493da37025adda152a3bd - int i = paletteProvider.size(); - int[] is = new int[i]; - this.data.storage.unpack(is); -- swapPalette(is, (id) -> { -- return hashMapPalette.idFor(this.data.palette.valueFor(id)); -- }); +- swapPalette(is, id -> hashMapPalette.idFor(this.data.palette.valueFor(id))); - int j = paletteProvider.calculateBitsForSerialization(idList, hashMapPalette.getSize()); - Optional optional; - if (j != 0) { @@ -241,7 +239,7 @@ index 983799520ce052d98c9231f4f7925492d4f7d5c9..7ecc67f7cd1493da37025adda152a3bd } private static void swapPalette(int[] is, IntUnaryOperator applier) { -@@ -365,17 +430,47 @@ public class PalettedContainer implements PaletteResize, PalettedContainer +@@ -364,13 +431,47 @@ public class PalettedContainer implements PaletteResize, PalettedContainer @Override public void count(PalettedContainer.CountConsumer counter) { @@ -262,12 +260,8 @@ index 983799520ce052d98c9231f4f7925492d4f7d5c9..7ecc67f7cd1493da37025adda152a3bd + } } else { - Int2IntOpenHashMap int2IntOpenHashMap = new Int2IntOpenHashMap(); -- this.data.storage.getAll((key) -> { -- int2IntOpenHashMap.addTo(key, 1); -- }); -- int2IntOpenHashMap.int2IntEntrySet().forEach((entry) -> { -- counter.accept(this.data.palette.valueFor(entry.getIntKey()), entry.getIntValue()); -- }); +- this.data.storage.getAll(key -> int2IntOpenHashMap.addTo(key, 1)); +- int2IntOpenHashMap.int2IntEntrySet().forEach(entry -> counter.accept(this.data.palette.valueFor(entry.getIntKey()), entry.getIntValue())); + int len = this.data.palette().getSize(); + + // Do not allocate huge arrays if we're using a large palette diff --git a/patches/server/0084-Store-mob-counts-in-an-array.patch b/patches/server/0084-Store-mob-counts-in-an-array.patch index 55723081..3f8c487c 100644 --- a/patches/server/0084-Store-mob-counts-in-an-array.patch +++ b/patches/server/0084-Store-mob-counts-in-an-array.patch @@ -6,24 +6,20 @@ Subject: [PATCH] Store mob counts in an array This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java b/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java -index 84c766e09898cfc07d6e07e80f4b9aa318050a62..a42098cc027ed3c1ec75542b800520514f87608a 100644 +index 09199c574169057ae6e52ee7df277c03fa6ba5c2..11427a5bafc8833f03dd9f5136923f11c09d06af 100644 --- a/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java +++ b/src/main/java/net/minecraft/world/level/LocalMobCapCalculator.java -@@ -48,15 +48,28 @@ public class LocalMobCapCalculator { +@@ -43,13 +43,26 @@ public class LocalMobCapCalculator { static class MobCounts { private final Object2IntMap counts = new Object2IntOpenHashMap<>(MobCategory.values().length); + public final int[] arrCounts = new int[MobCategory.values().length]; // Leaves - store mob counts in an array public void add(MobCategory spawnGroup) { -- this.counts.computeInt(spawnGroup, (group, density) -> { -- return density == null ? 1 : density + 1; -- }); +- this.counts.computeInt(spawnGroup, (group, density) -> density == null ? 1 : density + 1); + // Leaves start - store mob counts in an array + if (!top.leavesmc.leaves.LeavesConfig.storeMobCountsInArray) { -+ this.counts.computeInt(spawnGroup, (group, density) -> { -+ return density == null ? 1 : density + 1; -+ }); ++ this.counts.computeInt(spawnGroup, (group, density) -> density == null ? 1 : density + 1); + } else { + this.arrCounts[spawnGroup.ordinal()]++; + } diff --git a/patches/server/0086-Optimize-noise-generation.patch b/patches/server/0086-Optimize-noise-generation.patch index de9db46a..9815ecd5 100644 --- a/patches/server/0086-Optimize-noise-generation.patch +++ b/patches/server/0086-Optimize-noise-generation.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize noise generation This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/world/level/levelgen/synth/ImprovedNoise.java b/src/main/java/net/minecraft/world/level/levelgen/synth/ImprovedNoise.java -index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0bae1dc35b 100644 +index 9a97e5cd23d839183ac4d243d28df92af3119fe7..a2892eb6aa1604a49ba0494a2c98e47f605f0327 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/synth/ImprovedNoise.java +++ b/src/main/java/net/minecraft/world/level/levelgen/synth/ImprovedNoise.java @@ -11,6 +11,27 @@ public final class ImprovedNoise { @@ -35,9 +35,9 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b + // Leaves end - optimize noise generation + public ImprovedNoise(RandomSource random) { - this.xo = random.nextDouble() * 256.0D; - this.yo = random.nextDouble() * 256.0D; -@@ -43,9 +64,20 @@ public final class ImprovedNoise { + this.xo = random.nextDouble() * 256.0; + this.yo = random.nextDouble() * 256.0; +@@ -41,9 +62,20 @@ public final class ImprovedNoise { int i = Mth.floor(d); int j = Mth.floor(e); int k = Mth.floor(f); @@ -59,22 +59,22 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b + } + // Leaves end - optimize noise generation double o; - if (yScale != 0.0D) { + if (yScale != 0.0) { double m; -@@ -55,12 +87,24 @@ public final class ImprovedNoise { +@@ -53,12 +85,24 @@ public final class ImprovedNoise { m = h; } -- o = (double)Mth.floor(m / yScale + (double)1.0E-7F) * yScale; +- o = (double)Mth.floor(m / yScale + 1.0E-7F) * yScale; + // Leaves start - optimize noise generation + if (!top.leavesmc.leaves.LeavesConfig.optimizeNoiseGeneration) { -+ o = (double)Mth.floor(m / yScale + (double)1.0E-7F) * yScale; ++ o = (double)Mth.floor(m / yScale + 1.0E-7F) * yScale; + } else { + o = Math.floor(m / yScale + (double)1.0E-7F) * yScale; + } + // Leaves end - optimize noise generation } else { - o = 0.0D; + o = 0.0; } - return this.sampleAndLerp(i, j, k, g, h - o, l, h); @@ -88,7 +88,7 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b } public double noiseWithDerivative(double x, double y, double z, double[] ds) { -@@ -70,10 +114,19 @@ public final class ImprovedNoise { +@@ -68,10 +112,19 @@ public final class ImprovedNoise { int i = Mth.floor(d); int j = Mth.floor(e); int k = Mth.floor(f); @@ -112,7 +112,7 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b } private static double gradDot(int hash, double x, double y, double z) { -@@ -85,24 +138,90 @@ public final class ImprovedNoise { +@@ -83,24 +136,90 @@ public final class ImprovedNoise { } private double sampleAndLerp(int sectionX, int sectionY, int sectionZ, double localX, double localY, double localZ, double fadeLocalY) { @@ -123,13 +123,13 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b - int m = this.p(j + sectionY); - int n = this.p(j + sectionY + 1); - double d = gradDot(this.p(k + sectionZ), localX, localY, localZ); -- double e = gradDot(this.p(m + sectionZ), localX - 1.0D, localY, localZ); -- double f = gradDot(this.p(l + sectionZ), localX, localY - 1.0D, localZ); -- double g = gradDot(this.p(n + sectionZ), localX - 1.0D, localY - 1.0D, localZ); -- double h = gradDot(this.p(k + sectionZ + 1), localX, localY, localZ - 1.0D); -- double o = gradDot(this.p(m + sectionZ + 1), localX - 1.0D, localY, localZ - 1.0D); -- double p = gradDot(this.p(l + sectionZ + 1), localX, localY - 1.0D, localZ - 1.0D); -- double q = gradDot(this.p(n + sectionZ + 1), localX - 1.0D, localY - 1.0D, localZ - 1.0D); +- double e = gradDot(this.p(m + sectionZ), localX - 1.0, localY, localZ); +- double f = gradDot(this.p(l + sectionZ), localX, localY - 1.0, localZ); +- double g = gradDot(this.p(n + sectionZ), localX - 1.0, localY - 1.0, localZ); +- double h = gradDot(this.p(k + sectionZ + 1), localX, localY, localZ - 1.0); +- double o = gradDot(this.p(m + sectionZ + 1), localX - 1.0, localY, localZ - 1.0); +- double p = gradDot(this.p(l + sectionZ + 1), localX, localY - 1.0, localZ - 1.0); +- double q = gradDot(this.p(n + sectionZ + 1), localX - 1.0, localY - 1.0, localZ - 1.0); - double r = Mth.smoothstep(localX); - double s = Mth.smoothstep(fadeLocalY); - double t = Mth.smoothstep(localZ); @@ -143,13 +143,13 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b + int m = this.p(j + sectionY); + int n = this.p(j + sectionY + 1); + double d = gradDot(this.p(k + sectionZ), localX, localY, localZ); -+ double e = gradDot(this.p(m + sectionZ), localX - 1.0D, localY, localZ); -+ double f = gradDot(this.p(l + sectionZ), localX, localY - 1.0D, localZ); -+ double g = gradDot(this.p(n + sectionZ), localX - 1.0D, localY - 1.0D, localZ); -+ double h = gradDot(this.p(k + sectionZ + 1), localX, localY, localZ - 1.0D); -+ double o = gradDot(this.p(m + sectionZ + 1), localX - 1.0D, localY, localZ - 1.0D); -+ double p = gradDot(this.p(l + sectionZ + 1), localX, localY - 1.0D, localZ - 1.0D); -+ double q = gradDot(this.p(n + sectionZ + 1), localX - 1.0D, localY - 1.0D, localZ - 1.0D); ++ double e = gradDot(this.p(m + sectionZ), localX - 1.0, localY, localZ); ++ double f = gradDot(this.p(l + sectionZ), localX, localY - 1.0, localZ); ++ double g = gradDot(this.p(n + sectionZ), localX - 1.0, localY - 1.0, localZ); ++ double h = gradDot(this.p(k + sectionZ + 1), localX, localY, localZ - 1.0); ++ double o = gradDot(this.p(m + sectionZ + 1), localX - 1.0, localY, localZ - 1.0); ++ double p = gradDot(this.p(l + sectionZ + 1), localX, localY - 1.0, localZ - 1.0); ++ double q = gradDot(this.p(n + sectionZ + 1), localX - 1.0, localY - 1.0, localZ - 1.0); + double r = Mth.smoothstep(localX); + double s = Mth.smoothstep(fadeLocalY); + double t = Mth.smoothstep(localZ); @@ -222,7 +222,7 @@ index fb84d703b4461343d50510d7c9be32fc1f09ed22..0e025df446d0243275c13bca7efd7a0b private double sampleWithDerivative(int sectionX, int sectionY, int sectionZ, double localX, double localY, double localZ, double[] ds) { diff --git a/src/main/java/net/minecraft/world/level/levelgen/synth/PerlinNoise.java b/src/main/java/net/minecraft/world/level/levelgen/synth/PerlinNoise.java -index 97ef7288ea935f3d17c5b7a9eba642143c786c2b..c71dc320b055c5b1981561894617be05dae35653 100644 +index 35820670837376bcad8891241724d5b946fbd31f..7fd2ddcc8db7ef4e49ccf3bf13b17ef960b93159 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/synth/PerlinNoise.java +++ b/src/main/java/net/minecraft/world/level/levelgen/synth/PerlinNoise.java @@ -26,6 +26,10 @@ public class PerlinNoise { @@ -234,12 +234,12 @@ index 97ef7288ea935f3d17c5b7a9eba642143c786c2b..c71dc320b055c5b1981561894617be05 + private final double [] amplitudesArray; + // Leaves end - optimize noise generation - /** @deprecated */ @Deprecated -@@ -131,6 +135,10 @@ public class PerlinNoise { - this.lowestFreqInputFactor = Math.pow(2.0D, (double)(-j)); - this.lowestFreqValueFactor = Math.pow(2.0D, (double)(i - 1)) / (Math.pow(2.0D, (double)i) - 1.0D); - this.maxValue = this.edgeValue(2.0D); + public static PerlinNoise createLegacyForBlendedNoise(RandomSource random, IntStream octaves) { +@@ -127,6 +131,10 @@ public class PerlinNoise { + this.lowestFreqInputFactor = Math.pow(2.0, (double)(-j)); + this.lowestFreqValueFactor = Math.pow(2.0, (double)(i - 1)) / (Math.pow(2.0, (double)i) - 1.0); + this.maxValue = this.edgeValue(2.0); + // Leaves start - optimize noise generation + this.octaveSamplersCount = this.noiseLevels.length; + this.amplitudesArray = this.amplitudes.toDoubleArray(); @@ -247,14 +247,14 @@ index 97ef7288ea935f3d17c5b7a9eba642143c786c2b..c71dc320b055c5b1981561894617be05 } protected double maxValue() { -@@ -142,7 +150,30 @@ public class PerlinNoise { +@@ -138,7 +146,30 @@ public class PerlinNoise { } public double getValue(double x, double y, double z) { -- return this.getValue(x, y, z, 0.0D, 0.0D, false); +- return this.getValue(x, y, z, 0.0, 0.0, false); + // Leaves start - optimize noise generation + if (!top.leavesmc.leaves.LeavesConfig.optimizeNoiseGeneration) { -+ return this.getValue(x, y, z, 0.0D, 0.0D, false); ++ return this.getValue(x, y, z, 0.0, 0.0, false); + } else { + double d = 0.0; + double e = this.lowestFreqInputFactor; @@ -278,4 +278,4 @@ index 97ef7288ea935f3d17c5b7a9eba642143c786c2b..c71dc320b055c5b1981561894617be05 + // Leaves end - optimize noise generation } - /** @deprecated */ + @Deprecated diff --git a/patches/server/0088-Reduce-array-allocations.patch b/patches/server/0088-Reduce-array-allocations.patch index 81c5cbfa..033b70e6 100644 --- a/patches/server/0088-Reduce-array-allocations.patch +++ b/patches/server/0088-Reduce-array-allocations.patch @@ -142,18 +142,18 @@ index 06648f9751fd8a322d0809ffebf6a544596ee1a4..40e957a4364c8017072dcd81fcb7cf2c @Override diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java -index eea9866aecb7189455319d83561fcef35a777d7a..68d8caf3c912d9f578bf7214d068e60b7c59b2ef 100644 +index 23916b011ed0645ab284fb080c9555921290d875..83ace0d17691ec743a4b92de34d4de5a9ac6ff5b 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java -@@ -17,6 +17,7 @@ import javax.annotation.Nullable; +@@ -18,6 +18,7 @@ import javax.annotation.Nullable; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.ReportedException; +import top.leavesmc.leaves.util.ArrayConstants; public class CompoundTag implements Tag { - public static final Codec CODEC = Codec.PASSTHROUGH.comapFlatMap((dynamic) -> { -@@ -420,7 +421,7 @@ public class CompoundTag implements Tag { + public static final Codec CODEC = Codec.PASSTHROUGH +@@ -409,7 +410,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, ByteArrayTag.TYPE, var3)); } @@ -162,7 +162,7 @@ index eea9866aecb7189455319d83561fcef35a777d7a..68d8caf3c912d9f578bf7214d068e60b } public int[] getIntArray(String key) { -@@ -432,7 +433,7 @@ public class CompoundTag implements Tag { +@@ -421,7 +422,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, IntArrayTag.TYPE, var3)); } @@ -171,7 +171,7 @@ index eea9866aecb7189455319d83561fcef35a777d7a..68d8caf3c912d9f578bf7214d068e60b } public long[] getLongArray(String key) { -@@ -444,7 +445,7 @@ public class CompoundTag implements Tag { +@@ -433,7 +434,7 @@ public class CompoundTag implements Tag { throw new ReportedException(this.createReport(key, LongArrayTag.TYPE, var3)); } @@ -202,7 +202,7 @@ index ff13d67151c50ea11a45117e524c7524e2b1a202..c25d23c9c2ed887ce9ae7f07cd8aa0d1 @Override diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java -index 13b0a965eaee5ba2f6da420c3c02dc719fa73dd6..94f4339c0876feedd896527bdb7ce2d40d61d04e 100644 +index 35d03c7128e0cc9b3e0a9ecf109c17dab927c4a4..e6036459ee5dcd70ca9b945eca12114afb895e3f 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -57,6 +57,7 @@ import org.apache.commons.lang3.Validate; @@ -227,7 +227,7 @@ index b2183c298b0c68daee41238735621ff002338a68..3957ab1ebd7e84cfe0bef81a8cce566d for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b51d308258d012a8bdd38f60dc519d4f832cde0b..05fd44a5095d51ac22222c01de3221c395c132e1 100644 +index 9e95045f10904744f7cbf6e4203f8cbe762a9afc..d27633948861fe72480126cd16b4daa40c5cced0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -177,6 +177,7 @@ import org.bukkit.event.weather.LightningStrikeEvent; @@ -257,7 +257,7 @@ index b51d308258d012a8bdd38f60dc519d4f832cde0b..05fd44a5095d51ac22222c01de3221c3 return ret; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 703d2bf9f486a4effba2c265c117b8a24a8bb65f..6745b01c324589ae14b4162729e087efb29116d8 100644 +index 3867eded99e72de706655d875d2e47ae5b135b48..2730718b162c20110145798dbb0eaad0b139e99b 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -242,6 +242,7 @@ import org.bukkit.inventory.EquipmentSlot; @@ -343,7 +343,7 @@ index 7e133752ccb1ea7c0b4fa781feb1a88e2cfdcf6d..b2a8a6f3a6a2934f30d9212bd9356510 public boolean isEmpty() { diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java -index 63c45b6f625fbab5e1d7513132f4d89fcab7a23d..820d53aa8806796284c9803f949d3b3d8c054999 100644 +index 54c7d9bed0fead691d06691086f04cc2521dbe07..cebccf16bb0ea0a5085e3ab312ae570b80508e84 100644 --- a/src/main/java/net/minecraft/util/ZeroBitStorage.java +++ b/src/main/java/net/minecraft/util/ZeroBitStorage.java @@ -4,9 +4,10 @@ import java.util.Arrays; @@ -359,7 +359,7 @@ index 63c45b6f625fbab5e1d7513132f4d89fcab7a23d..820d53aa8806796284c9803f949d3b3d public ZeroBitStorage(int size) { diff --git a/src/main/java/net/minecraft/world/entity/EquipmentSlot.java b/src/main/java/net/minecraft/world/entity/EquipmentSlot.java -index 2e324276ea4cd9e528c6a3f9a9ba394b378fe075..8d949983a30f27a60982f6b406151408faacb18a 100644 +index 8b4dd6ff53d2d61c71f04c37389ac645766305c4..0ff2e701439128abd8ac1bdb3ad9ccf7ff81528d 100644 --- a/src/main/java/net/minecraft/world/entity/EquipmentSlot.java +++ b/src/main/java/net/minecraft/world/entity/EquipmentSlot.java @@ -15,6 +15,7 @@ public enum EquipmentSlot implements StringRepresentable { @@ -371,7 +371,7 @@ index 2e324276ea4cd9e528c6a3f9a9ba394b378fe075..8d949983a30f27a60982f6b406151408 private EquipmentSlot(EquipmentSlot.Type type, int entityId, int armorStandId, String name) { this.type = type; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d934a51781615d92561ab558022040ee5eb91592..4a743b38d32dc31e3867900e13fffd12505a8710 100644 +index ffa9ada2e803bc77f8cae4be81ac4b5c2eee0b7f..0a038e46f68011391f5dee5f7609d3192ea0f8da 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3166,7 +3166,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -384,7 +384,7 @@ index d934a51781615d92561ab558022040ee5eb91592..4a743b38d32dc31e3867900e13fffd12 for (int j = 0; j < i; ++j) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 9fa6b43768ad5608db9232d464a455eca453b7fd..42aa72f4a665f550013d1172121950cfc3bb88a3 100644 +index 06c80f363fec3e9c824b9bbbcb7608fff7659c41..a4a0f99784ba5a0af851ff43eaf4ca10b6e96b1d 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1089,7 +1089,7 @@ public abstract class Mob extends LivingEntity implements Targeting { @@ -414,7 +414,7 @@ index 9fa6b43768ad5608db9232d464a455eca453b7fd..42aa72f4a665f550013d1172121950cf int i = aenumitemslot.length; for (int j = 0; j < i; ++j) { -@@ -1458,7 +1458,7 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1459,7 +1459,7 @@ public abstract class Mob extends LivingEntity implements Targeting { t0.setInvulnerable(this.isInvulnerable()); if (flag) { t0.setCanPickUpLoot(this.canPickUpLoot()); @@ -462,15 +462,17 @@ index d772cf80fa3831e1c79d601ea09a073da089e2c5..4699f5fd794a7ef1f430e801bd35f1c6 public class ShapedRecipe extends io.papermc.paper.inventory.recipe.RecipeBookExactChoiceRecipe implements CraftingRecipe { // Paper - improve exact recipe choices diff --git a/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java b/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java -index 6c2e8049c2197ddc912c1a0fc99c87beae81e25b..be13baa7b51c4ad377b50d8ca8f7cfad3c870390 100644 +index 8343e175a7221f7b0e83c39cd5350683a0649f8d..6cff058e409e7f7d1effbf87d7cd17520f0c24b2 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java +++ b/src/main/java/net/minecraft/world/item/enchantment/Enchantments.java -@@ -43,8 +43,10 @@ public class Enchantments { +@@ -63,10 +63,10 @@ public class Enchantments { public static final Enchantment MULTISHOT = register("multishot", new MultiShotEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.MAINHAND)); public static final Enchantment QUICK_CHARGE = register("quick_charge", new QuickChargeEnchantment(Enchantment.Rarity.UNCOMMON, EquipmentSlot.MAINHAND)); public static final Enchantment PIERCING = register("piercing", new ArrowPiercingEnchantment(Enchantment.Rarity.COMMON, EquipmentSlot.MAINHAND)); - public static final Enchantment MENDING = register("mending", new MendingEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.values())); -- public static final Enchantment VANISHING_CURSE = register("vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.values())); +- public static final Enchantment VANISHING_CURSE = register( +- "vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.values()) +- ); + // Leaves start - reduce array allocations + public static final Enchantment MENDING = Enchantments.register("mending", new MendingEnchantment(Enchantment.Rarity.RARE, EquipmentSlot.VALUES)); + public static final Enchantment VANISHING_CURSE = Enchantments.register("vanishing_curse", new VanishingCurseEnchantment(Enchantment.Rarity.VERY_RARE, EquipmentSlot.VALUES)); @@ -479,7 +481,7 @@ index 6c2e8049c2197ddc912c1a0fc99c87beae81e25b..be13baa7b51c4ad377b50d8ca8f7cfad private static Enchantment register(String name, Enchantment enchantment) { return Registry.register(BuiltInRegistries.ENCHANTMENT, name, enchantment); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 6071b5463073cb250579ee66d2312b61cef34605..35eba785e68e400f5651a085c60f1f8acea333e9 100644 +index e32f8d7f6804a3f0822e0069822d56a3dc873a6a..b219ff03ae82b9d94ba32304671428cf9987329a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -95,6 +95,7 @@ import org.bukkit.craftbukkit.util.CraftSpawnCategory; diff --git a/patches/server/0089-Optimize-sun-burn-tick.patch b/patches/server/0089-Optimize-sun-burn-tick.patch index b29d59ab..d6c629ff 100644 --- a/patches/server/0089-Optimize-sun-burn-tick.patch +++ b/patches/server/0089-Optimize-sun-burn-tick.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize sun burn tick This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2d3fe02aab536876db949dce184395f731c5d31c..63e5a05d2dab763ee7ed9517f5a2807ddff7645b 100644 +index 4b0e6e5366294f74c24a3bbd97699ede15706954..8b5c464eed35364edb441012ce5e7ecf8f03e004 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2036,8 +2036,22 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -34,10 +34,10 @@ index 2d3fe02aab536876db949dce184395f731c5d31c..63e5a05d2dab763ee7ed9517f5a2807d public void absMoveTo(double x, double y, double z, float yaw, float pitch) { this.absMoveTo(x, y, z); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 42aa72f4a665f550013d1172121950cfc3bb88a3..95c2c91ce4c45dcd8e896a8859a9e2fdebe8b6ba 100644 +index a4a0f99784ba5a0af851ff43eaf4ca10b6e96b1d..f41ed311f9368a0ab81a613238cd5a2468aae706 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1724,15 +1724,41 @@ public abstract class Mob extends LivingEntity implements Targeting { +@@ -1725,15 +1725,41 @@ public abstract class Mob extends LivingEntity implements Targeting { } diff --git a/patches/server/0090-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch b/patches/server/0090-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch index 12d5102d..7d79e0bc 100644 --- a/patches/server/0090-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch +++ b/patches/server/0090-Reduce-lambda-and-Optional-allocation-in-EntityBased.patch @@ -7,20 +7,18 @@ Subject: [PATCH] Reduce lambda and Optional allocation in This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java -index 2f9f15d99f8b31e9f13f7f32378b2a9e09bcb5e5..623f6713a5294ba54baf6319b222a2f35940d458 100644 +index 3527f1621ef9b4f3f8d8bbb93379f13ff141c3be..ac349d03b10dac5794b069972394ee87c7bac5b3 100644 --- a/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java +++ b/src/main/java/net/minecraft/world/level/EntityBasedExplosionDamageCalculator.java -@@ -15,9 +15,21 @@ public class EntityBasedExplosionDamageCalculator extends ExplosionDamageCalcula +@@ -15,8 +15,20 @@ 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); -- }); +- return super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState) +- .map(max -> this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, max)); + if (!top.leavesmc.leaves.LeavesConfig.removeDamageLambda) { -+ return super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState).map((max) -> { -+ return this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, max); -+ }); ++ return super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState) ++ .map(max -> this.source.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState, max)); + } else { + Optional optionalBlastResistance = super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState); + if (optionalBlastResistance.isPresent()) { diff --git a/patches/server/0091-Use-optimized-collection.patch b/patches/server/0091-Use-optimized-collection.patch index e0ac5342..f4f7924b 100644 --- a/patches/server/0091-Use-optimized-collection.patch +++ b/patches/server/0091-Use-optimized-collection.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use optimized collection This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index b460bef510213f10a913c162d9a167146c6b019d..3d682670ae0ae6da7492633d2688dc31086e3665 100644 +index 234897e942df0023307418566211a549a32124e9..86207dd0f1f666588535d03f5576fbe4e2267eeb 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -237,7 +237,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @@ -19,10 +19,10 @@ index b460bef510213f10a913c162d9a167146c6b019d..3d682670ae0ae6da7492633d2688dc31 this.chunkSaveCooldowns = new Long2LongOpenHashMap(); this.unloadQueue = Queues.newConcurrentLinkedQueue(); diff --git a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java -index 50a9f33aa31e9273c7c52d4bb2b02f0f884f7ba5..53021c7d173b3c067322e356fead0949aac3fc60 100644 +index ebad17e6ec90a7f385cd38c5ec6c2772798d4562..6865a46614adc7dd8077ee37677d087e816a1cec 100644 --- a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java +++ b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java -@@ -13,7 +13,7 @@ import java.util.Map; +@@ -14,7 +14,7 @@ import java.util.Map.Entry; import java.util.stream.Collectors; public class ClassInstanceMultiMap extends AbstractCollection { @@ -31,17 +31,8 @@ index 50a9f33aa31e9273c7c52d4bb2b02f0f884f7ba5..53021c7d173b3c067322e356fead0949 private final Class baseClass; private final List allInstances = Lists.newArrayList(); -@@ -58,7 +58,7 @@ public class ClassInstanceMultiMap extends AbstractCollection { - if (!this.baseClass.isAssignableFrom(type)) { - throw new IllegalArgumentException("Don't know how to search for " + type); - } else { -- List list = this.byClass.computeIfAbsent(type, (typeClass) -> { -+ List list = this.byClass.computeIfAbsent(type, (typeClass) -> { // Leaves - dev fix - return this.allInstances.stream().filter(typeClass::isInstance).collect(Collectors.toList()); - }); - return Collections.unmodifiableCollection(list); 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 e1f3890dd63332a5af3aa08cd4ba24ef2eaf233a..abc8db6d878d853e0b7f1b8197e86409f6735fc3 100644 +index a2a1de65dfd420185ed0e52e28c7000fde3dd959..ebd95344e81d016464a587dfa00b49e02d4a1c41 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 @@ -20,8 +20,10 @@ import org.slf4j.Logger; @@ -58,10 +49,10 @@ index e1f3890dd63332a5af3aa08cd4ba24ef2eaf233a..abc8db6d878d853e0b7f1b8197e86409 private final java.util.function.Function createInstance; // Leaves - reduce entity allocations 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 676f5485a4ca9252e911213dcda8d51776b637b6..a7d6545876f2209f3ce9a07d3eff19369f255dc3 100644 +index 38af5c7280366fd6ec077f3d914ea5f3ee77451a..4dd4dae9060694f81622f33904806584a799c04c 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 -@@ -28,7 +28,7 @@ public class GoalSelector { +@@ -29,7 +29,7 @@ public class GoalSelector { } }; private final Map lockedFlags = new EnumMap<>(Goal.Flag.class); diff --git a/patches/server/0092-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch b/patches/server/0092-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch index 7603f6e2..e5dfa9c6 100644 --- a/patches/server/0092-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch +++ b/patches/server/0092-Avoid-Class-isAssignableFrom-call-in-ClassInstanceMu.patch @@ -6,20 +6,19 @@ Subject: [PATCH] Avoid Class#isAssignableFrom call in ClassInstanceMultiMap This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java -index 53021c7d173b3c067322e356fead0949aac3fc60..820343861893a0aba55ede10ac2a2594de4438d0 100644 +index 6865a46614adc7dd8077ee37677d087e816a1cec..0a4ad5082de0fc5a54bd92e1d3be1a59dbedc6bd 100644 --- a/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java +++ b/src/main/java/net/minecraft/util/ClassInstanceMultiMap.java -@@ -55,14 +55,24 @@ public class ClassInstanceMultiMap extends AbstractCollection { +@@ -56,13 +56,24 @@ public class ClassInstanceMultiMap extends AbstractCollection { } public Collection find(Class type) { - if (!this.baseClass.isAssignableFrom(type)) { - throw new IllegalArgumentException("Don't know how to search for " + type); - } else { -- List list = this.byClass.computeIfAbsent(type, (typeClass) -> { // Leaves - dev fix -- return this.allInstances.stream().filter(typeClass::isInstance).collect(Collectors.toList()); -- }); -- return Collections.unmodifiableCollection(list); +- List list = this.byClass +- .computeIfAbsent(type, typeClass -> this.allInstances.stream().filter(typeClass::isInstance).collect(Collectors.toList())); +- return (Collection)Collections.unmodifiableCollection(list); + // Leaves start - avoid Class#isAssignableFrom call in ClassInstanceMultiMap + Collection collection = this.byClass.get(type); + if (collection == null) { diff --git a/patches/server/0095-Cache-ominous-banner-item.patch b/patches/server/0095-Cache-ominous-banner-item.patch index f26b7e1d..f5a43270 100644 --- a/patches/server/0095-Cache-ominous-banner-item.patch +++ b/patches/server/0095-Cache-ominous-banner-item.patch @@ -6,23 +6,25 @@ Subject: [PATCH] Cache ominous banner item This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java -index f4e5ada556a7fc7adac9b8d3e75ace483f753782..31a26dc4b6fb22fa27e7e6de0c7a32df04849271 100644 +index 96f5ccfa0369ca5dd7a327126dbe9b3cfe86ec1b..1dd6c937194cd16cd7219bf55317818decff9959 100644 --- a/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java +++ b/src/main/java/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java -@@ -15,7 +15,7 @@ public record EntityEquipmentPredicate(Optional head, Optional CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "head").forGetter(EntityEquipmentPredicate::head), ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "chest").forGetter(EntityEquipmentPredicate::chest), ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "legs").forGetter(EntityEquipmentPredicate::legs), ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "feet").forGetter(EntityEquipmentPredicate::feet), ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "mainhand").forGetter(EntityEquipmentPredicate::mainhand), ExtraCodecs.strictOptionalField(ItemPredicate.CODEC, "offhand").forGetter(EntityEquipmentPredicate::offhand)).apply(instance, EntityEquipmentPredicate::new); - }); -- public static final EntityEquipmentPredicate CAPTAIN = EntityEquipmentPredicate.Builder.equipment().head(ItemPredicate.Builder.item().of(Items.WHITE_BANNER).hasNbt(Raid.getLeaderBannerInstance().getTag())).build(); +@@ -30,9 +30,7 @@ public record EntityEquipmentPredicate( + ) + .apply(instance, EntityEquipmentPredicate::new) + ); +- public static final EntityEquipmentPredicate CAPTAIN = EntityEquipmentPredicate.Builder.equipment() +- .head(ItemPredicate.Builder.item().of(Items.WHITE_BANNER).hasNbt(Raid.getLeaderBannerInstance().getTag())) +- .build(); + public static final EntityEquipmentPredicate CAPTAIN = EntityEquipmentPredicate.Builder.equipment().head(ItemPredicate.Builder.item().of(Items.WHITE_BANNER).hasNbt(top.leavesmc.leaves.LeavesConfig.cacheOminousBannerItem ? Raid.LEADER_BANNER.getTag() : Raid.getLeaderBannerInstance().getTag())).build(); // Leaves - cache ominous banner item public boolean matches(@Nullable Entity entity) { - if (entity instanceof LivingEntity livingEntity) { + return entity instanceof LivingEntity livingEntity diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index eaa2943b667967f93f28d9d794d702fdaeb670ec..5ceef34c59f1fca9a539ce93aa1814568c361926 100644 +index bf2c23fad919820512ce031cf28a000b249b2876..261b1a52e219b61973db04aace7429e5d80efb91 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -693,7 +693,14 @@ public class Raid { +@@ -703,7 +703,14 @@ public class Raid { this.level.getRaids().setDirty(); } diff --git a/patches/server/0097-Skip-cloning-advancement-criteria.patch b/patches/server/0097-Skip-cloning-advancement-criteria.patch index 738fa534..665e79c6 100644 --- a/patches/server/0097-Skip-cloning-advancement-criteria.patch +++ b/patches/server/0097-Skip-cloning-advancement-criteria.patch @@ -6,13 +6,13 @@ Subject: [PATCH] Skip cloning advancement criteria This patch is Powered by Gale(https://github.com/GaleMC/Gale) diff --git a/src/main/java/net/minecraft/advancements/Advancement.java b/src/main/java/net/minecraft/advancements/Advancement.java -index a053d30f171c0c022888f098313b50f73c434180..b0904b5b0a7eff80f66759febd893ae1cc68ced8 100644 +index 366ce8120b0cc7136d2756070d710ec65ae7f44d..15644df3e3cc35d0061679340e82acc04042e2ca 100644 --- a/src/main/java/net/minecraft/advancements/Advancement.java +++ b/src/main/java/net/minecraft/advancements/Advancement.java -@@ -40,7 +40,7 @@ public record Advancement(Optional parent, Optional parent, Optional display, AdvancementRewards rewards, Map> criteria, AdvancementRequirements requirements, boolean sendsTelemetryEvent) { +@@ -62,7 +62,7 @@ public record Advancement( + AdvancementRequirements requirements, + boolean sendsTelemetryEvent + ) { - this(parent, display, rewards, Map.copyOf(criteria), requirements, sendsTelemetryEvent, display.map(Advancement::decorateName)); + this(parent, display, rewards, !top.leavesmc.leaves.LeavesConfig.skipCloningAdvancementCriteria ? Map.copyOf(criteria) : criteria, requirements, sendsTelemetryEvent, display.map(Advancement::decorateName)); // Leaves - skip cloning advancement criteria } diff --git a/patches/server/0104-Force-peaceful-mode-switch.patch b/patches/server/0104-Force-peaceful-mode-switch.patch index 4e29e9b5..3fb5664c 100644 --- a/patches/server/0104-Force-peaceful-mode-switch.patch +++ b/patches/server/0104-Force-peaceful-mode-switch.patch @@ -107,10 +107,10 @@ index 3e10668ca548472238bb4bb0a80a89f169a71496..aaea6e5701e23c5023bb990712bde7af boolean spawnThisTick = true; int limit = enumcreaturetype.getMaxInstancesPerChunk(); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 01797d9791f19dfda4b168218eadeaae97f11eab..88ab671678da7617d8e22176d64b69101e7f4a33 100644 +index 00357d78182b3ff87e3d9a45705b072af56739c8..f30320f4e45d5afacb31339cf7c54a55573ad43f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2442,6 +2442,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2450,6 +2450,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { return CraftFeatureFlag.getFromNMS(this.getHandle().enabledFeatures()).stream().map(FeatureFlag.class::cast).collect(Collectors.toUnmodifiableSet()); } diff --git a/patches/server/0106-Replay-Mod-API.patch b/patches/server/0106-Replay-Mod-API.patch index 77b7158c..470125aa 100644 --- a/patches/server/0106-Replay-Mod-API.patch +++ b/patches/server/0106-Replay-Mod-API.patch @@ -94,7 +94,7 @@ index 676a1499747b071515479130875157263d3a8352..e5ef298dc1df9cc42b3d349939a966b7 if (((List) object).size() >= i) { return (List) object; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ee9031bbb0dde7394c1fdb6f3cc0f5f87361a97f..9478d8da5d7c7c594d5629aba3042b5ef141da04 100644 +index 791e6680db77d3ec464168e5225d3ab0844b5e84..7fd45603c33730e3cb8d3aa1180ecd30f253e0f5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1606,7 +1606,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - PlayerList playerList = context.getSource().getServer().getPlayerList(); -- return SharedSuggestionProvider.suggest(playerList.getPlayers().stream().filter((player) -> { -+ return SharedSuggestionProvider.suggest(playerList.realPlayers.stream().filter((player) -> { // Leaves - only real player - return !playerList.isOp(player.getGameProfile()); - }).map((player) -> { - return player.getGameProfile().getName(); +@@ -25,7 +25,7 @@ public class OpCommand { + (context, builder) -> { + PlayerList playerList = context.getSource().getServer().getPlayerList(); + return SharedSuggestionProvider.suggest( +- playerList.getPlayers() ++ playerList.realPlayers // Leaves - only real player + .stream() + .filter(player -> !playerList.isOp(player.getGameProfile())) + .map(player -> player.getGameProfile().getName()), diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 06f21b59c7a152c02d03508c1f9c6799ae3abb58..cb1b08063abf7cf2c1b44922b2d9f50ccf0effa7 100644 +index 2730718b162c20110145798dbb0eaad0b139e99b..7f8b5195ac50f153411eb6713c6a861864cc8886 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -299,7 +299,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -431,10 +431,10 @@ index 12f8ed45dc280a9ad7e975b1922cc9309c3d53b8..2254ab17bc087c2a54a15588b908c55e // Special case complex part, since there is no extra entity type for them if (entity instanceof EnderDragonPart complexPart) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e77bf7f432387bdfa7f69d31b014e8cd254fd4ca..578343e048bc48d36cd6d26dcebb6f7567913b13 100644 +index 44f4665db613c558078df5bb49106e4ca5679dfe..be198fa712ced7b61de16bdbc1f13acd2306cb22 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2136,7 +2136,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2138,7 +2138,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(Player player) { diff --git a/patches/server/0108-Leaves-I18n.patch b/patches/server/0108-Leaves-I18n.patch index 233992be..3b2cd2eb 100644 --- a/patches/server/0108-Leaves-I18n.patch +++ b/patches/server/0108-Leaves-I18n.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Leaves I18n diff --git a/src/main/java/net/minecraft/locale/Language.java b/src/main/java/net/minecraft/locale/Language.java -index 571fdf253ebc5cf2a3ec120c53293b37b770836d..800cadbb379cb90d5351c6d73f994713265a3f8a 100644 +index a9bca1d10553f1406f7dbce3f7c40378b6abdc10..aa7f4f738c637ffc3d50f2bdb5ee61ffdc6cea1f 100644 --- a/src/main/java/net/minecraft/locale/Language.java +++ b/src/main/java/net/minecraft/locale/Language.java -@@ -30,6 +30,41 @@ public abstract class Language { +@@ -32,6 +32,41 @@ public abstract class Language { public static final String DEFAULT = "en_us"; private static volatile Language instance = loadDefault(); @@ -48,7 +48,7 @@ index 571fdf253ebc5cf2a3ec120c53293b37b770836d..800cadbb379cb90d5351c6d73f994713 + // Leaves end - i18n + private static Language loadDefault() { - ImmutableMap.Builder builder = ImmutableMap.builder(); + Builder builder = ImmutableMap.builder(); BiConsumer biConsumer = builder::put; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java index 6725bbf2d966ae900e9b5efa619875c386bb9526..5ddeae61955be0e212db8467804aa42a88f61f04 100644 diff --git a/patches/server/0109-Fix-minecraft-hopper-not-work-without-player.patch b/patches/server/0109-Fix-minecraft-hopper-not-work-without-player.patch index d3046161..08d2799d 100644 --- a/patches/server/0109-Fix-minecraft-hopper-not-work-without-player.patch +++ b/patches/server/0109-Fix-minecraft-hopper-not-work-without-player.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Fix minecraft hopper not work without player diff --git a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java -index fc35cfc9d045f3e5b6a50af1d0ba83b6e322091f..48ae92dc7c4ec06d73fd1616d24ecd9c2cbda49e 100644 +index 761142374f793a1cd4228936b21a68d7a0458894..97367882f7643b9abe221ccb907e220c05ab588c 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java -@@ -88,6 +88,13 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper - +@@ -86,6 +86,13 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper + } } + // Leaves start - tick every diff --git a/patches/server/0117-CCE-update-suppression.patch b/patches/server/0117-CCE-update-suppression.patch index 3e149527..69470653 100644 --- a/patches/server/0117-CCE-update-suppression.patch +++ b/patches/server/0117-CCE-update-suppression.patch @@ -5,10 +5,10 @@ Subject: [PATCH] CCE update suppression diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -index dd40b975b72f7bd16f2c491a36c39b7098c66f2b..bb9ac66ab47cb37f545d319630ff28e600c8a038 100644 +index fb7cffcf77a89202cb87b347bea518cc89987afd..95376a06e850e14f3cd131a776f264a1dab592ee 100644 --- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -@@ -265,17 +265,21 @@ public class ShulkerBoxBlock extends BaseEntityBlock { +@@ -254,17 +254,21 @@ public class ShulkerBoxBlock extends BaseEntityBlock { @Override public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { diff --git a/patches/server/0122-Copper-Bulb-1-gt-delay.patch b/patches/server/0122-Copper-Bulb-1-gt-delay.patch index 728300e0..c76c0f27 100644 --- a/patches/server/0122-Copper-Bulb-1-gt-delay.patch +++ b/patches/server/0122-Copper-Bulb-1-gt-delay.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Copper Bulb 1 gt delay diff --git a/src/main/java/net/minecraft/world/level/block/CopperBulbBlock.java b/src/main/java/net/minecraft/world/level/block/CopperBulbBlock.java -index 762c6e68b1a6f084a610de834fd2becb291bf017..5dcb7c8ae993b4376ea5117d77519a355264167f 100644 +index 3ce239c7833e1d23f5345b6af2cd3b1269828a6f..4b20a9812852c98da7199b1c9f1c21aa19681148 100644 --- a/src/main/java/net/minecraft/world/level/block/CopperBulbBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CopperBulbBlock.java -@@ -31,17 +31,27 @@ public class CopperBulbBlock extends Block { +@@ -30,14 +30,26 @@ public class CopperBulbBlock extends Block { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { if (oldState.getBlock() != state.getBlock() && world instanceof ServerLevel serverLevel) { @@ -21,7 +21,6 @@ index 762c6e68b1a6f084a610de834fd2becb291bf017..5dcb7c8ae993b4376ea5117d77519a35 + } + // Leaves end - copper bulb 1 gt delay } -- } @Override @@ -36,11 +35,9 @@ index 762c6e68b1a6f084a610de834fd2becb291bf017..5dcb7c8ae993b4376ea5117d77519a35 + } + // Leaves end - copper bulb 1 gt delay } -- } - public void checkAndFlip(BlockState state, ServerLevel world, BlockPos pos) { -@@ -57,6 +67,15 @@ public class CopperBulbBlock extends Block { +@@ -54,6 +66,15 @@ public class CopperBulbBlock extends Block { } } diff --git a/patches/server/0123-Crafter-1-gt-delay.patch b/patches/server/0123-Crafter-1-gt-delay.patch index 736b3c5e..cba3f79e 100644 --- a/patches/server/0123-Crafter-1-gt-delay.patch +++ b/patches/server/0123-Crafter-1-gt-delay.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Crafter 1 gt delay diff --git a/src/main/java/net/minecraft/world/level/block/CrafterBlock.java b/src/main/java/net/minecraft/world/level/block/CrafterBlock.java -index 5afac5007bbd2010bb955eea6331875b52441b80..39072e41f640b6284813bac71fc9154982f31ee9 100644 +index 00b8cf2261a8b26cd05647ab1e2591e556915d8b..41f620637788cb449afcf6aca49adc5b11aedad3 100644 --- a/src/main/java/net/minecraft/world/level/block/CrafterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/CrafterBlock.java -@@ -75,7 +75,7 @@ public class CrafterBlock extends BaseEntityBlock { +@@ -76,7 +76,7 @@ public class CrafterBlock extends BaseEntityBlock { boolean bl2 = state.getValue(TRIGGERED); BlockEntity blockEntity = world.getBlockEntity(pos); if (bl && !bl2) { @@ -17,19 +17,19 @@ index 5afac5007bbd2010bb955eea6331875b52441b80..39072e41f640b6284813bac71fc91549 world.setBlock(pos, state.setValue(TRIGGERED, Boolean.valueOf(true)), 2); this.setBlockEntityTriggered(blockEntity, true); } else if (!bl && bl2) { -@@ -146,7 +146,7 @@ public class CrafterBlock extends BaseEntityBlock { +@@ -130,7 +130,7 @@ public class CrafterBlock extends BaseEntityBlock { } if (state.getValue(TRIGGERED)) { - world.scheduleTick(pos, this, 4); + world.scheduleTick(pos, this, !top.leavesmc.leaves.LeavesConfig.crafter1gt ? 4 : 1); // Leaves - crafter 1 gt delay } - } -@@ -174,13 +174,13 @@ public class CrafterBlock extends BaseEntityBlock { + +@@ -156,13 +156,13 @@ public class CrafterBlock extends BaseEntityBlock { + protected void dispenseFrom(BlockState state, ServerLevel world, BlockPos pos) { - BlockEntity optional = world.getBlockEntity(pos); - if (optional instanceof CrafterBlockEntity crafterBlockEntity) { + if (world.getBlockEntity(pos) instanceof CrafterBlockEntity crafterBlockEntity) { - Optional optional = getPotentialResults(world, crafterBlockEntity); - if (optional.isEmpty()) { + Optional optional1 = getPotentialResults(world, crafterBlockEntity); diff --git a/patches/server/0125-Protection-stacking.patch b/patches/server/0125-Protection-stacking.patch index c5a3054b..dc685297 100644 --- a/patches/server/0125-Protection-stacking.patch +++ b/patches/server/0125-Protection-stacking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Protection stacking diff --git a/src/main/java/net/minecraft/world/item/enchantment/ProtectionEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ProtectionEnchantment.java -index ba8bd0df934f28c5dae6fd8a85ec0b73f6d3aa31..cdb7dea2dc9fcafcdb7eaf8750a7c637bffc00e9 100644 +index 6a75ede277c2515214ce5181d177edd8e0006ab7..28451f664f39f23fe7102cfeef85e2962cca35b3 100644 --- a/src/main/java/net/minecraft/world/item/enchantment/ProtectionEnchantment.java +++ b/src/main/java/net/minecraft/world/item/enchantment/ProtectionEnchantment.java @@ -48,6 +48,11 @@ public class ProtectionEnchantment extends Enchantment { @@ -17,6 +17,6 @@ index ba8bd0df934f28c5dae6fd8a85ec0b73f6d3aa31..cdb7dea2dc9fcafcdb7eaf8750a7c637 + return super.checkCompatibility(other); + } + // Leaves end - protection stacking - if (other instanceof ProtectionEnchantment protectionEnchantment) { - if (this.type == protectionEnchantment.type) { - return false; + return other instanceof ProtectionEnchantment protectionEnchantment + ? this.type != protectionEnchantment.type + && (this.type == ProtectionEnchantment.Type.FALL || protectionEnchantment.type == ProtectionEnchantment.Type.FALL) diff --git a/patches/server/0130-Renewable-coral.patch b/patches/server/0130-Renewable-coral.patch index acfb2c4f..6d31c834 100644 --- a/patches/server/0130-Renewable-coral.patch +++ b/patches/server/0130-Renewable-coral.patch @@ -56,11 +56,11 @@ index b461508e9efcea07acc621507b4c27ce45307714..1473aa6fee5342398edb9e2ac57301ff + // Leaves end - renewable coral } diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/CoralFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/CoralFeature.java -index 4b9fc715e8055e4593faba7514e0827e585d2a56..66a963c4750210ce1d90ad5a1a5926664e8e0436 100644 +index 64c20f4dce1c93d6835ced2235532df77451216b..e83feb12522e77d3664b7c917118f7ef52bd7431 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/feature/CoralFeature.java +++ b/src/main/java/net/minecraft/world/level/levelgen/feature/CoralFeature.java -@@ -33,6 +33,12 @@ public abstract class CoralFeature extends Feature { - return optional.isEmpty() ? false : this.placeFeature(worldGenLevel, randomSource, blockPos, optional.get().defaultBlockState()); +@@ -34,6 +34,12 @@ public abstract class CoralFeature extends Feature { + return !optional.isEmpty() && this.placeFeature(worldGenLevel, randomSource, blockPos, optional.get().defaultBlockState()); } + // Leaves start - renewable coral @@ -72,23 +72,6 @@ index 4b9fc715e8055e4593faba7514e0827e585d2a56..66a963c4750210ce1d90ad5a1a592666 protected abstract boolean placeFeature(LevelAccessor world, RandomSource random, BlockPos pos, BlockState state); protected boolean placeCoralBlock(LevelAccessor world, RandomSource random, BlockPos pos, BlockState state) { -@@ -57,12 +63,12 @@ public abstract class CoralFeature extends Feature { - BuiltInRegistries.BLOCK.getTag(BlockTags.WALL_CORALS).flatMap((blocks) -> { - return blocks.getRandomElement(random); - }).map(Holder::value).ifPresent((block) -> { -- BlockState blockState = block.defaultBlockState(); -- if (blockState.hasProperty(BaseCoralWallFanBlock.FACING)) { -- blockState = blockState.setValue(BaseCoralWallFanBlock.FACING, direction); -+ BlockState blockState1 = block.defaultBlockState(); -+ if (blockState1.hasProperty(BaseCoralWallFanBlock.FACING)) { -+ blockState1 = blockState1.setValue(BaseCoralWallFanBlock.FACING, direction); - } - -- world.setBlock(blockPos2, blockState, 2); -+ world.setBlock(blockPos2, blockState1, 2); - }); - } - } diff --git a/src/main/java/top/leavesmc/leaves/util/FertilizableCoral.java b/src/main/java/top/leavesmc/leaves/util/FertilizableCoral.java new file mode 100644 index 0000000000000000000000000000000000000000..575fdfd268626e89111c04a81a133d69c8adf931 diff --git a/patches/server/0136-fix-next-steps.patch b/patches/server/0136-Fix-next-steps.patch similarity index 53% rename from patches/server/0136-fix-next-steps.patch rename to patches/server/0136-Fix-next-steps.patch index 9ef7fe1e..c646d7ca 100644 --- a/patches/server/0136-fix-next-steps.patch +++ b/patches/server/0136-Fix-next-steps.patch @@ -1,54 +1,32 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: silvery0113 Date: Fri, 5 Apr 2024 12:32:17 +0800 -Subject: [PATCH] fix next steps +Subject: [PATCH] Fix next steps diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7d1cd7b98e44e0b6c0d1f29df25ad45c0946548d..e29667480aec47ebf729321747e43bacf45b43f2 100644 +index c4146a74a2a1a13bd09b04b8d6303cc932c400bf..c4a7839845919f5bcc513e845bd666fe0f24d6be 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1155,15 +1155,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop jlist = new PlayerListComponent(this.server); diff --git a/patches/server/0137-Bytebuf-API-Impl.patch b/patches/server/0137-Bytebuf-API.patch similarity index 98% rename from patches/server/0137-Bytebuf-API-Impl.patch rename to patches/server/0137-Bytebuf-API.patch index dd437b47..da338c75 100644 --- a/patches/server/0137-Bytebuf-API-Impl.patch +++ b/patches/server/0137-Bytebuf-API.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Lumine1909 <3556577839@qq.com> Date: Fri, 12 Apr 2024 20:13:20 -0400 -Subject: [PATCH] bytebuf-api-impl +Subject: [PATCH] Bytebuf API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -25,10 +25,10 @@ index 70b4f5dc96e285184bd3e676397c6bddd193db37..5e2b61e191f29c59d614c0f3f5bcc17b + // Leaves end - Bytebuf API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 578343e048bc48d36cd6d26dcebb6f7567913b13..4cf5cd83653ff8de2cd4fe62630ed26b07df9ebd 100644 +index be198fa712ced7b61de16bdbc1f13acd2306cb22..d53e88a4261ddddc744c3c48b61564749f3ac28f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3388,6 +3388,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3390,6 +3390,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleDuration() { this.getHandle().resetLastActionTime(); } @@ -45,7 +45,7 @@ index 578343e048bc48d36cd6d26dcebb6f7567913b13..4cf5cd83653ff8de2cd4fe62630ed26b + // Leaves end - Bytebuf API // Paper end - public Player.Spigot spigot() + // Paper start - Add chunk view API diff --git a/src/main/java/org/leavesmc/leaves/packet/WrappedPacket.java b/src/main/java/org/leavesmc/leaves/packet/WrappedPacket.java new file mode 100644 index 0000000000000000000000000000000000000000..dc0dde18d3ae300657d92e20ae3e17136b8b72f4