diff --git a/patches/server/0031-Remove-lambda-from-ticking-guard.patch b/patches/server/0029-Remove-lambda-from-ticking-guard.patch
similarity index 93%
rename from patches/server/0031-Remove-lambda-from-ticking-guard.patch
rename to patches/server/0029-Remove-lambda-from-ticking-guard.patch
index f0cb252..ab65e10 100644
--- a/patches/server/0031-Remove-lambda-from-ticking-guard.patch
+++ b/patches/server/0029-Remove-lambda-from-ticking-guard.patch
@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 4a5857f2454090fc87ecd1cc9d0a39c31918d197..a6ebe6bb04744a53937d729b9cec028463e19ac1 100644
+index ac903433a7ab524e1f65f23fa943ee0aeaf8fa6d..254c80c60bdeaf8d3b65777648f7e863a4480a31 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -717,7 +717,20 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -781,7 +781,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
entity.stopRiding();
}
@@ -57,10 +57,10 @@ index 4a5857f2454090fc87ecd1cc9d0a39c31918d197..a6ebe6bb04744a53937d729b9cec0284
}
}
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index a48b1639ffa83ae2d1e614d32a339f08366da57c..d756e2ac71eced0de81b921f3215f51600b6b768 100644
+index f40d3ef570eb7d079d30f88470d95b3de12695ee..15f3c2dd02dad613c272382dec3639819c2d7d56 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
-@@ -1432,15 +1432,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
+@@ -1487,15 +1487,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
try {
tickConsumer.accept(entity);
} catch (Throwable throwable) {
diff --git a/patches/server/0033-SIMD-support.patch b/patches/server/0030-SIMD-support.patch
similarity index 92%
rename from patches/server/0033-SIMD-support.patch
rename to patches/server/0030-SIMD-support.patch
index 8b24383..5181fd7 100644
--- a/patches/server/0033-SIMD-support.patch
+++ b/patches/server/0030-SIMD-support.patch
@@ -13,7 +13,7 @@ As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/build.gradle.kts b/build.gradle.kts
-index badd1433e27e2e95b165618de280cba1ff10a69d..5ebc35cadc960d428e8a91642ddce0875078d790 100644
+index ead700089f8867e38699db409c13162f1014f58a..a19a0ecf3a6af07b0f7fe687e7fada392f37a4d1 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -78,6 +78,7 @@ tasks.withType {
@@ -33,10 +33,10 @@ index badd1433e27e2e95b165618de280cba1ff10a69d..5ebc35cadc960d428e8a91642ddce087
doFirst {
workingDir.mkdirs()
diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
-index 66477f772ffb9271cf647dfb7567d75c3d5145fb..13a51c939b8bd17584a474217823150688af809f 100644
+index cb9e42fea57856f9ab649e33df26071db1b7790f..1f158ed7ed5c115e892311d5f72a9131659f9d65 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
-@@ -933,6 +933,46 @@ public class Metrics {
+@@ -936,6 +936,46 @@ public class Metrics {
metrics.addCustomChart(new Metrics.DrilldownPie("gale_semantic_version", () -> semanticVersionMap));
// Gale end - semantic version - include in metrics
@@ -84,19 +84,19 @@ index 66477f772ffb9271cf647dfb7567d75c3d5145fb..13a51c939b8bd17584a4742178231506
}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index 8538024c6345e79d08643e2d68ca146542b7860a..94e86acd4bc9c2be7c07fbd17364ba7bf9edb094 100644
+index 7c3e5d77a63b433c3212c8aab5a37d2af5634091..8ff28f6f40f35e6523ec6fac2d5f0de7c84630c5 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-@@ -20,6 +20,8 @@ import java.util.Locale;
+@@ -19,6 +19,8 @@ import java.util.List;
+ import java.util.Locale;
import java.util.Optional;
- import java.util.function.BooleanSupplier;
import javax.annotation.Nullable;
+
+import gg.pufferfish.pufferfish.simd.SIMDDetection;
import net.minecraft.DefaultUncaughtExceptionHandler;
import net.minecraft.DefaultUncaughtExceptionHandlerWithName;
import net.minecraft.SharedConstants;
-@@ -58,6 +60,7 @@ import net.minecraft.world.level.GameType;
+@@ -57,6 +59,7 @@ import net.minecraft.world.level.GameType;
import net.minecraft.world.level.block.entity.SkullBlockEntity;
import net.minecraft.world.level.storage.LevelStorageSource;
import org.galemc.gale.command.GaleCommands;
@@ -104,7 +104,7 @@ index 8538024c6345e79d08643e2d68ca146542b7860a..94e86acd4bc9c2be7c07fbd17364ba7b
import org.slf4j.Logger;
// CraftBukkit start
-@@ -246,6 +249,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+@@ -243,6 +246,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); // Paper - start metrics
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // Paper - load version history now
diff --git a/patches/server/0034-Make-book-writing-configurable.patch b/patches/server/0031-Make-book-writing-configurable.patch
similarity index 84%
rename from patches/server/0034-Make-book-writing-configurable.patch
rename to patches/server/0031-Make-book-writing-configurable.patch
index c18ed49..82e5e0d 100644
--- a/patches/server/0034-Make-book-writing-configurable.patch
+++ b/patches/server/0031-Make-book-writing-configurable.patch
@@ -22,24 +22,15 @@ you to easily disable books, should you want to preemptively remove this
functionality before additional exploits are found.
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index fcccf989c25f0a259b160c4ff7873f7009e64d14..793967c558feaf35de8043f26318ef9707bf8e1c 100644
+index b5d5dbc50a7b8c40739a15f164ffd08fdc534f9c..c13aadf03462faf04bf0fc50525a130112debdff 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -193,6 +193,8 @@ import net.minecraft.world.phys.Vec3;
- import net.minecraft.world.phys.shapes.BooleanOp;
- import net.minecraft.world.phys.shapes.Shapes;
- import net.minecraft.world.phys.shapes.VoxelShape;
-+import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions;
-+import org.galemc.gale.configuration.GaleGlobalConfiguration;
- import org.slf4j.Logger;
-
- // CraftBukkit start
-@@ -1157,6 +1159,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -1172,6 +1172,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
@Override
public void handleEditBook(ServerboundEditBookPacket packet) {
+ // Gale start - Pufferfish - make book writing configurable
-+ if (!(GaleGlobalConfiguration.get().gameplayMechanics.enableBookWriting || this.player.getBukkitEntity().hasPermission(CraftDefaultPermissions.writeBooks) || this.player.getBukkitEntity().hasPermission("pufferfish.usebooks"))) {
++ if (!(org.galemc.gale.configuration.GaleGlobalConfiguration.get().gameplayMechanics.enableBookWriting || this.player.getBukkitEntity().hasPermission(org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions.writeBooks) || this.player.getBukkitEntity().hasPermission("pufferfish.usebooks"))) {
+ return;
+ }
+ // Gale end - Pufferfish - make book writing configurable
diff --git a/patches/server/0035-Optimize-entity-coordinate-key.patch b/patches/server/0032-Optimize-entity-coordinate-key.patch
similarity index 93%
rename from patches/server/0035-Optimize-entity-coordinate-key.patch
rename to patches/server/0032-Optimize-entity-coordinate-key.patch
index cf92b5b..297bdcf 100644
--- a/patches/server/0035-Optimize-entity-coordinate-key.patch
+++ b/patches/server/0032-Optimize-entity-coordinate-key.patch
@@ -35,10 +35,10 @@ index 31b92bd48828cbea25b44a9f0f96886347aa1ae6..036c1a287db04c0191e5f84b027ea68d
public static long getChunkKey(final ChunkPos pos) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index b77c6dd82273af34f4633e2b002122313c570d56..135e3b8f131b0919b9c98fecf7383fff059db9d1 100644
+index dfaa2b671ec33f3e275b532f5adb20ce10205163..77d7fd1d521427d18c7aff978ade74280eaf4846 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -315,7 +315,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -316,7 +316,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public double yo;
public double zo;
private Vec3 position;
diff --git a/patches/server/0036-Reduce-in-wall-checks.patch b/patches/server/0033-Reduce-in-wall-checks.patch
similarity index 84%
rename from patches/server/0036-Reduce-in-wall-checks.patch
rename to patches/server/0033-Reduce-in-wall-checks.patch
index 2620e0e..97b5ba9 100644
--- a/patches/server/0036-Reduce-in-wall-checks.patch
+++ b/patches/server/0033-Reduce-in-wall-checks.patch
@@ -28,22 +28,22 @@ but is so much cheaper than the suffocation check that it's worth
keeping it.
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-index 94d9ec424e549be4874e35e31b1c0ac115b89e39..e5df16e415d6c8dc8547a59af373ae2918ec42dc 100644
+index 206a1461178706e56f4b3c92c9121dd4177edd4c..244857d69b52e1689d932cab914ed8c1331e96d3 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
-@@ -447,7 +447,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
- boolean flag = this instanceof net.minecraft.world.entity.player.Player;
+@@ -463,7 +463,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
- if (!this.level().isClientSide) {
+ if (world1 instanceof ServerLevel) {
+ worldserver1 = (ServerLevel) world1;
- if (this.isInWall()) {
+ // Gale start - Pufferfish - reduce in wall checks
+ long checkStuckInWallInterval = this.level().galeConfig().smallOptimizations.reducedIntervals.checkStuckInWall;
+ if ((checkStuckInWallInterval <= 1 || (tickCount % checkStuckInWallInterval == 0 && couldPossiblyBeHurt(1.0F))) && this.isInWall()) {
+ // Gale end - Pufferfish - reduce in wall checks
- this.hurt(this.damageSources().inWall(), 1.0F);
+ this.hurtServer(worldserver1, this.damageSources().inWall(), 1.0F);
} else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) {
- double d0 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone();
-@@ -1406,6 +1409,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ double d1 = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone();
+@@ -1432,6 +1435,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
return this.getHealth() <= 0.0F;
}
@@ -57,8 +57,8 @@ index 94d9ec424e549be4874e35e31b1c0ac115b89e39..e5df16e415d6c8dc8547a59af373ae29
+ // Gale end - Pufferfish - reduce in wall checks
+
@Override
- public boolean hurt(DamageSource source, float amount) {
- if (this.isInvulnerableTo(source)) {
+ public boolean hurtServer(ServerLevel world, DamageSource source, float amount) {
+ if (this.isInvulnerableTo(world, source)) {
diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
index 8a0416775d00148bf3478b51d92b00d9d485c667..08a02055b535c024cc806db17bb45fd333a56929 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
diff --git a/patches/server/0037-Make-chat-order-verification-configurable.patch b/patches/server/0034-Make-chat-order-verification-configurable.patch
similarity index 100%
rename from patches/server/0037-Make-chat-order-verification-configurable.patch
rename to patches/server/0034-Make-chat-order-verification-configurable.patch
diff --git a/patches/server/0038-Make-ender-dragon-respawn-attempt-after-placing-end-.patch b/patches/server/0035-Make-ender-dragon-respawn-attempt-after-placing-end-.patch
similarity index 97%
rename from patches/server/0038-Make-ender-dragon-respawn-attempt-after-placing-end-.patch
rename to patches/server/0035-Make-ender-dragon-respawn-attempt-after-placing-end-.patch
index fac503a..9006a31 100644
--- a/patches/server/0038-Make-ender-dragon-respawn-attempt-after-placing-end-.patch
+++ b/patches/server/0035-Make-ender-dragon-respawn-attempt-after-placing-end-.patch
@@ -26,7 +26,7 @@ search to attempt respawning the ender dragon whenever a player places
an end crystal.
diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
-index 5f51e64cb0611a4ba6bdcdcacbcba1063a7f3a5c..50312825fade96ccc8c1231ca1eaf6c36d892746 100644
+index b62db8c7c8c57e43869ee239ebf4b02f112355d9..9f92b9addaedb4bae06b32226a74c8e5ddc6c2a2 100644
--- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java
+++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java
@@ -55,11 +55,13 @@ public class EndCrystalItem extends Item {
diff --git a/patches/server/0039-Make-saving-fireworks-configurable.patch b/patches/server/0036-Make-saving-fireworks-configurable.patch
similarity index 93%
rename from patches/server/0039-Make-saving-fireworks-configurable.patch
rename to patches/server/0036-Make-saving-fireworks-configurable.patch
index a98e556..7609b5d 100644
--- a/patches/server/0039-Make-saving-fireworks-configurable.patch
+++ b/patches/server/0036-Make-saving-fireworks-configurable.patch
@@ -20,10 +20,10 @@ launcher can very easily fill a chunk.
Prevent saving Fireworks so that chunk unloads will wipe a chunks fireworks in this case.
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
-index 09d465947a5720e05c350d455c86002682104079..6c5f67138af166b87e588664b22198cbf3285c73 100644
+index 8a4e7e1c0c4919d2ee34121c14f9665b9ad95273..7bd7045128f1f55a687047eafd895971ec12e565 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
-@@ -358,4 +358,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
+@@ -381,4 +381,11 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
return DoubleDoubleImmutablePair.of(d0, d1);
}
diff --git a/patches/server/0040-Reduce-hopper-item-checks.patch b/patches/server/0037-Reduce-hopper-item-checks.patch
similarity index 89%
rename from patches/server/0040-Reduce-hopper-item-checks.patch
rename to patches/server/0037-Reduce-hopper-item-checks.patch
index 2189887..0bbc7c0 100644
--- a/patches/server/0040-Reduce-hopper-item-checks.patch
+++ b/patches/server/0037-Reduce-hopper-item-checks.patch
@@ -17,25 +17,18 @@ Licensed under: MIT (https://opensource.org/licenses/MIT)
Only do an item "suck in" action once per second
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 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..adbe1c6aad0abe367280b75c4d6691ac5e26bc30 100644
+index 0f086af57a5ff08c264dcbf89a8c3931ec73a609..cf8efbb5df9a2142c403fd3972b6b4124fcd81ad 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
-@@ -22,12 +22,14 @@ import net.minecraft.world.entity.EntityType;
+@@ -12,6 +12,7 @@ import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.MoverType;
import net.minecraft.world.entity.SlotAccess;
import net.minecraft.world.entity.TraceableEntity;
+import net.minecraft.world.entity.vehicle.MinecartHopper;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
- import net.minecraft.world.item.Items;
- import net.minecraft.world.level.Level;
- import net.minecraft.world.level.gameevent.GameEvent;
- import net.minecraft.world.level.portal.DimensionTransition;
-+import net.minecraft.world.phys.AABB;
- import net.minecraft.world.phys.Vec3;
- // CraftBukkit start
- import net.minecraft.server.MinecraftServer;
-@@ -233,11 +235,31 @@ public class ItemEntity extends Entity implements TraceableEntity {
+ import net.minecraft.world.level.Explosion;
+@@ -234,11 +235,31 @@ public class ItemEntity extends Entity implements TraceableEntity {
}
// CraftBukkit end
this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
@@ -54,7 +47,7 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..adbe1c6aad0abe367280b75c4d6691ac
+ return;
+ }
+ if (config.temporaryImmunity.duration > 0 && this.isAlive() && this.onGround && !this.isRemoved() && (config.temporaryImmunity.nearbyItemMaxAge == -1 || this.age <= config.temporaryImmunity.nearbyItemMaxAge) && this.age % Math.max(1, config.temporaryImmunity.checkForMinecartNearItemInterval) == 0 && config.temporaryImmunity.maxItemHorizontalDistance >= 0 && config.temporaryImmunity.maxItemVerticalDistance >= 0) {
-+ AABB aabb = this.getBoundingBox().inflate(config.temporaryImmunity.maxItemHorizontalDistance, config.temporaryImmunity.maxItemVerticalDistance, config.temporaryImmunity.maxItemHorizontalDistance);
++ net.minecraft.world.phys.AABB aabb = this.getBoundingBox().inflate(config.temporaryImmunity.maxItemHorizontalDistance, config.temporaryImmunity.maxItemVerticalDistance, config.temporaryImmunity.maxItemHorizontalDistance);
+ for (Entity entity : this.level().getEntities(this, aabb)) {
+ if (entity instanceof MinecartHopper) {
+ ((MinecartHopper) entity).pickupImmunity = MinecraftServer.currentTick + config.temporaryImmunity.duration;
@@ -67,7 +60,7 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..adbe1c6aad0abe367280b75c4d6691ac
// Spigot start - copied from above
@Override
public void inactiveTick() {
-@@ -258,7 +280,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
+@@ -259,7 +280,13 @@ public class ItemEntity extends Entity implements TraceableEntity {
}
// CraftBukkit end
this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
@@ -82,18 +75,18 @@ index 4423973d4d9a2c3879d98d1d4c8b8c117c677ac5..adbe1c6aad0abe367280b75c4d6691ac
// Spigot end
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 d7f8464bf3eed0e42a5fc7f14a5b243d171f8b5e..7b69243130829334c1a592026adf8fce3609f25c 100644
+index d81a6874e8b25f098df619f84c359e146c7f64de..f799c993754802583f9b9c0cf8c7220bebd92f8d 100644
--- a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
+++ b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
-@@ -17,6 +17,7 @@ import net.minecraft.world.level.block.state.BlockState;
-
+@@ -21,6 +21,7 @@ import net.minecraft.world.level.block.state.properties.RailShape;
public class MinecartHopper extends AbstractMinecartContainer implements Hopper {
private boolean enabled = true;
+ private boolean consumedItemThisFrame = false;
+ public int pickupImmunity = 0; // Gale - EMC - reduce hopper item checks
public MinecartHopper(EntityType extends MinecartHopper> type, Level world) {
super(type, world);
-@@ -136,4 +137,12 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper
+@@ -149,4 +150,12 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper
}
// Paper end
@@ -120,7 +113,7 @@ index 5f042e294db605827000123252b0df646968f897..e1cc15f28fe8da23b74ff4504c5b2da2
double getLevelY();
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 cab403efd471bb61835224eea4e99570d34dcaaa..99fc84e10a10f3d4eededd6ce7be7700e3c3a8e4 100644
+index 5ebbdb94d9b91c442ff60eb6872f740ebd790fa0..c893eecf67c65d68298da0c607f3b9b3df22a198 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
@@ -11,6 +11,7 @@ import net.minecraft.core.NonNullList;
diff --git a/patches/server/0041-Reduce-villager-item-re-pickup.patch b/patches/server/0038-Reduce-villager-item-re-pickup.patch
similarity index 100%
rename from patches/server/0041-Reduce-villager-item-re-pickup.patch
rename to patches/server/0038-Reduce-villager-item-re-pickup.patch
diff --git a/patches/server/0042-Variable-entity-wake-up-duration.patch b/patches/server/0039-Variable-entity-wake-up-duration.patch
similarity index 94%
rename from patches/server/0042-Variable-entity-wake-up-duration.patch
rename to patches/server/0039-Variable-entity-wake-up-duration.patch
index 3d32775..7b81ca0 100644
--- a/patches/server/0042-Variable-entity-wake-up-duration.patch
+++ b/patches/server/0039-Variable-entity-wake-up-duration.patch
@@ -19,18 +19,18 @@ index 9ac3c235a7adc42af1ba22aaa4efbce5b006f98d..42306d45d3b8f7807b344422fca7382e
}
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
-index f83c2b35cc279666686be3af558473b5d93bf7cd..86b678aa745e125ceaa271deec00d6290a02d88b 100644
+index 24536f70309f802d45714e06bace339f1d9f1013..d3fd27647aca128aa651bcc07dacd77d326f51c1 100644
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
-@@ -38,6 +38,7 @@ import co.aikar.timings.MinecraftTimings;
- import net.minecraft.world.entity.schedule.Activity;
+@@ -37,6 +37,7 @@ import net.minecraft.world.entity.projectile.ThrownTrident;
+ import net.minecraft.world.entity.raid.Raider;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
+import org.galemc.gale.configuration.GaleWorldConfiguration;
public class ActivationRange
{
-@@ -70,28 +71,41 @@ public class ActivationRange
+@@ -69,28 +70,41 @@ public class ActivationRange
if (entity.activationType == ActivationType.VILLAGER) {
if (inactiveFor > config.wakeUpInactiveVillagersEvery && world.wakeupInactiveRemainingVillagers > 0) {
world.wakeupInactiveRemainingVillagers--;
diff --git a/patches/server/0043-Do-not-process-chat-commands-before-player-has-joine.patch b/patches/server/0040-Do-not-process-chat-commands-before-player-has-joine.patch
similarity index 87%
rename from patches/server/0043-Do-not-process-chat-commands-before-player-has-joine.patch
rename to patches/server/0040-Do-not-process-chat-commands-before-player-has-joine.patch
index 0ba2305..5d06344 100644
--- a/patches/server/0043-Do-not-process-chat-commands-before-player-has-joine.patch
+++ b/patches/server/0040-Do-not-process-chat-commands-before-player-has-joine.patch
@@ -13,10 +13,10 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-index adba25adaaf32c07e6844faec12bcab860eab194..978aa293c771c065a435d564e4355c837678a92b 100644
+index a0d940312e37d7b74df7103878ff547a45fc5c05..ada9814d24b32140f365eb01a231bc123d99c72e 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
-@@ -297,6 +297,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
+@@ -322,6 +322,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
public boolean joining = true;
public boolean sentListPacket = false;
public boolean supressTrackerForLogin = false; // Paper - Fire PlayerJoinEvent when Player is actually ready
@@ -25,10 +25,10 @@ index adba25adaaf32c07e6844faec12bcab860eab194..978aa293c771c065a435d564e4355c83
public boolean isRealPlayer; // Paper
public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index f51939adef4f69d4f8c4a0ec9b9aee55e7a2ec34..621c60e7818f1edc11d9ca1be20097fbb6a0b02f 100644
+index c13aadf03462faf04bf0fc50525a130112debdff..ad53a045efaa6ed44a5b345586366b7c50e5688a 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -2364,7 +2364,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2385,7 +2385,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
this.disconnectAsync((Component) Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper // Paper - add proper async disconnect
} else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales
this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false));
@@ -38,10 +38,10 @@ index f51939adef4f69d4f8c4a0ec9b9aee55e7a2ec34..621c60e7818f1edc11d9ca1be20097fb
// CraftBukkit start
if (sync) {
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 5e2c4969e77c669acbb4a13c07033cb267c3d586..cce00b627b905793f8c663dc62e74fac895e618d 100644
+index 30de3d1a7792c38ae946f19cb0e14637919b5001..0e2b903dbd783bea891b88902136e1ac9f7fd66c 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -350,6 +350,8 @@ public abstract class PlayerList {
+@@ -353,6 +353,8 @@ public abstract class PlayerList {
return;
}
diff --git a/patches/server/0044-Do-not-log-invalid-statistics.patch b/patches/server/0041-Do-not-log-invalid-statistics.patch
similarity index 97%
rename from patches/server/0044-Do-not-log-invalid-statistics.patch
rename to patches/server/0041-Do-not-log-invalid-statistics.patch
index 9494969..baeb49c 100644
--- a/patches/server/0044-Do-not-log-invalid-statistics.patch
+++ b/patches/server/0041-Do-not-log-invalid-statistics.patch
@@ -13,7 +13,7 @@ As part of: EmpireCraft (https://github.com/starlis/empirecraft)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
-index fb7342f7a5008a283c3400c6313c637de8210dfa..a45353b8a6dd85c74d3e195f89f75f2509d579ad 100644
+index da7e1a69ecb4e6b3be2d8544ac406aa519bd196e..cb6dbdca0f6a858e2f62d7e71ddd7f69ff710d70 100644
--- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java
+++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java
@@ -36,6 +36,7 @@ import net.minecraft.server.level.ServerPlayer;
diff --git a/patches/server/0045-Do-not-log-empty-message-warnings.patch b/patches/server/0042-Do-not-log-empty-message-warnings.patch
similarity index 70%
rename from patches/server/0045-Do-not-log-empty-message-warnings.patch
rename to patches/server/0042-Do-not-log-empty-message-warnings.patch
index 3c941cc..65ad030 100644
--- a/patches/server/0045-Do-not-log-empty-message-warnings.patch
+++ b/patches/server/0042-Do-not-log-empty-message-warnings.patch
@@ -7,23 +7,15 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-index 2da5284b446d3dd72fcac38e0bc77db99f265567..71478e620198f373ad92cf40a49ecbfb14fd326e 100644
+index ad53a045efaa6ed44a5b345586366b7c50e5688a..25e91c5e5f5cf1a9dbb2931b964c754408926788 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
-@@ -194,6 +194,7 @@ import net.minecraft.world.phys.shapes.BooleanOp;
- import net.minecraft.world.phys.shapes.Shapes;
- import net.minecraft.world.phys.shapes.VoxelShape;
- import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions;
-+import org.apache.commons.lang3.StringUtils;
- import org.galemc.gale.configuration.GaleGlobalConfiguration;
- import org.slf4j.Logger;
-
-@@ -2522,7 +2523,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
+@@ -2543,7 +2543,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
// CraftBukkit start
String s = message.signedContent();
if (s.isEmpty()) {
- ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send an empty message");
-+ if (GaleGlobalConfiguration.get().logToConsole.chat.emptyMessageWarning) ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send an empty message"); // Gale - do not log empty message warnings
++ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().logToConsole.chat.emptyMessageWarning) ServerGamePacketListenerImpl.LOGGER.warn(this.player.getScoreboardName() + " tried to send an empty message"); // Gale - do not log empty message warnings
} else if (this.getCraftPlayer().isConversing()) {
final String conversationInput = s;
this.server.processQueue.add(new Runnable() {
diff --git a/patches/server/0046-Do-not-log-ignored-advancements.patch b/patches/server/0043-Do-not-log-ignored-advancements.patch
similarity index 97%
rename from patches/server/0046-Do-not-log-ignored-advancements.patch
rename to patches/server/0043-Do-not-log-ignored-advancements.patch
index c472163..0a1cd57 100644
--- a/patches/server/0046-Do-not-log-ignored-advancements.patch
+++ b/patches/server/0043-Do-not-log-ignored-advancements.patch
@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java
-index 862a4bf003b7f810fb57dbcd150a1417c902b633..c4a5f744c089a7ef1ffbb3a19379fb510fb54af3 100644
+index 8e2eb7b61421ceb063654826941f1a81f6f50bdf..bd29a4dd0e6d403937c16a7b822e0e6865db8be4 100644
--- a/src/main/java/net/minecraft/server/PlayerAdvancements.java
+++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java
@@ -45,6 +45,7 @@ import net.minecraft.server.level.ServerPlayer;
diff --git a/patches/server/0047-Do-not-log-setBlock-in-far-chunks.patch b/patches/server/0044-Do-not-log-setBlock-in-far-chunks.patch
similarity index 97%
rename from patches/server/0047-Do-not-log-setBlock-in-far-chunks.patch
rename to patches/server/0044-Do-not-log-setBlock-in-far-chunks.patch
index e0041cc..a51b15d 100644
--- a/patches/server/0047-Do-not-log-setBlock-in-far-chunks.patch
+++ b/patches/server/0044-Do-not-log-setBlock-in-far-chunks.patch
@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
-index 5a8a33638ceb1d980ffc3e6dd86e7eb11dfd9375..4ec094e06e7707a052f3647871f7d14183e8978f 100644
+index e4b0dc3121101d54394a0c3a413dabf8103b2ea6..4212d2522a0619267902c8230d424495378ee743 100644
--- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java
+++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java
@@ -336,6 +336,7 @@ public class WorldGenRegion implements WorldGenLevel {
diff --git a/patches/server/0048-Do-not-log-unrecognized-recipes.patch b/patches/server/0045-Do-not-log-unrecognized-recipes.patch
similarity index 74%
rename from patches/server/0048-Do-not-log-unrecognized-recipes.patch
rename to patches/server/0045-Do-not-log-unrecognized-recipes.patch
index 14a5ca9..4e587f9 100644
--- a/patches/server/0048-Do-not-log-unrecognized-recipes.patch
+++ b/patches/server/0045-Do-not-log-unrecognized-recipes.patch
@@ -37,25 +37,17 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
-index 8a2584deccbf19de8a18fcfcb9c65318b60afe57..457d774dbfd441abfb108e0a11e675fadcd55092 100644
+index 5c7484ce2850a2eb698a2183b81134b89b0bbcc7..deab78ef1a751d4d01e1ab45864e5ead3a320ad7 100644
--- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java
+++ b/src/main/java/net/minecraft/stats/ServerRecipeBook.java
-@@ -18,6 +18,7 @@ import net.minecraft.resources.ResourceLocation;
- import net.minecraft.server.level.ServerPlayer;
- import net.minecraft.world.item.crafting.RecipeHolder;
- import net.minecraft.world.item.crafting.RecipeManager;
-+import org.galemc.gale.configuration.GaleGlobalConfiguration;
- import org.slf4j.Logger;
+@@ -159,7 +159,7 @@ public class ServerRecipeBook extends RecipeBook {
+ ResourceKey> resourcekey = ResourceKey.create(Registries.RECIPE, ResourceLocation.parse(s));
- import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
-@@ -125,7 +126,7 @@ public class ServerRecipeBook extends RecipeBook {
- Optional> optional = recipeManager.byKey(minecraftkey);
-
- if (optional.isEmpty()) {
-- ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey);
-+ if (GaleGlobalConfiguration.get().logToConsole.unrecognizedRecipes) ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", minecraftkey); // Gale - Purpur - do not log unrecognized recipes
+ if (!validPredicate.test(resourcekey)) {
+- ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", resourcekey);
++ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().logToConsole.unrecognizedRecipes) ServerRecipeBook.LOGGER.error("Tried to load unrecognized recipe: {} removed now.", resourcekey); // Gale - Purpur - do not log unrecognized recipes
} else {
- handler.accept((RecipeHolder) optional.get());
+ handler.accept(resourcekey);
}
diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
index 0844babd79d3743abe240e68a50e082f58e2f01c..360c48ce9f64e7bbfadd56ce4fa2b78c4787734d 100644
diff --git a/patches/server/0049-Do-not-log-legacy-Material-initialization.patch b/patches/server/0046-Do-not-log-legacy-Material-initialization.patch
similarity index 97%
rename from patches/server/0049-Do-not-log-legacy-Material-initialization.patch
rename to patches/server/0046-Do-not-log-legacy-Material-initialization.patch
index b5e6ac7..983e1b5 100644
--- a/patches/server/0049-Do-not-log-legacy-Material-initialization.patch
+++ b/patches/server/0046-Do-not-log-legacy-Material-initialization.patch
@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
-index dc591702d1ad41209bb80e8d05f4ca11f20816f2..38a5b11d52ffcd1e3f7ffe8d617e7d3fd93f07c6 100644
+index 51ae8eddadc87b143b93521a3cef374f1e3a24dc..847d5f5366b5f3b50ef84e2861968ccf81dfe58d 100644
--- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
+++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java
@@ -31,6 +31,7 @@ import org.bukkit.Material;
diff --git a/patches/server/0050-Do-not-log-plugin-library-loads.patch b/patches/server/0047-Do-not-log-plugin-library-loads.patch
similarity index 100%
rename from patches/server/0050-Do-not-log-plugin-library-loads.patch
rename to patches/server/0047-Do-not-log-plugin-library-loads.patch
diff --git a/patches/server/0051-Do-not-log-expired-message-warnings.patch b/patches/server/0048-Do-not-log-expired-message-warnings.patch
similarity index 100%
rename from patches/server/0051-Do-not-log-expired-message-warnings.patch
rename to patches/server/0048-Do-not-log-expired-message-warnings.patch
diff --git a/patches/server/0052-Do-not-log-Not-Secure-marker.patch b/patches/server/0049-Do-not-log-Not-Secure-marker.patch
similarity index 96%
rename from patches/server/0052-Do-not-log-Not-Secure-marker.patch
rename to patches/server/0049-Do-not-log-Not-Secure-marker.patch
index b7283f7..6a256a8 100644
--- a/patches/server/0052-Do-not-log-Not-Secure-marker.patch
+++ b/patches/server/0049-Do-not-log-Not-Secure-marker.patch
@@ -29,7 +29,7 @@ index 14e412ebf75b0e06ab53a1c8f9dd1be6ad1e2680..f962e82e2c70f328a23dc99193d072f8
}
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index cce00b627b905793f8c663dc62e74fac895e618d..1c4051cb47fc2e070cef363bd670dff35baff35b 100644
+index 0e2b903dbd783bea891b88902136e1ac9f7fd66c..de5c66b2d30dd6f00d2e81e6ffd7915875d98cbb 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -102,6 +102,7 @@ import net.minecraft.world.phys.Vec3;
@@ -40,7 +40,7 @@ index cce00b627b905793f8c663dc62e74fac895e618d..1c4051cb47fc2e070cef363bd670dff3
import org.slf4j.Logger;
// CraftBukkit start
-@@ -1397,7 +1398,7 @@ public abstract class PlayerList {
+@@ -1361,7 +1362,7 @@ public abstract class PlayerList {
// Paper end
boolean flag = this.verifyChatTrusted(message);
diff --git a/patches/server/0053-Do-not-log-disconnections-with-null-id.patch b/patches/server/0050-Do-not-log-disconnections-with-null-id.patch
similarity index 97%
rename from patches/server/0053-Do-not-log-disconnections-with-null-id.patch
rename to patches/server/0050-Do-not-log-disconnections-with-null-id.patch
index 2c40b3c..7140f43 100644
--- a/patches/server/0053-Do-not-log-disconnections-with-null-id.patch
+++ b/patches/server/0050-Do-not-log-disconnections-with-null-id.patch
@@ -17,7 +17,7 @@ Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
This can help to hide annoying scanning bots from showing up in console.
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
-index 40638b439966619e9c70a18a32abd95b2178fe9f..2754e5dda2bc50bff302cb569803bc8f1f04a9db 100644
+index 033755682c61c889723c3669b5cff4de147f637e..e2c527456e277d27baff558d59234263eef5ecac 100644
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
@@ -44,6 +44,7 @@ import net.minecraft.util.CryptException;
diff --git a/patches/server/0054-Do-not-log-run-as-root-warning.patch b/patches/server/0051-Do-not-log-run-as-root-warning.patch
similarity index 94%
rename from patches/server/0054-Do-not-log-run-as-root-warning.patch
rename to patches/server/0051-Do-not-log-run-as-root-warning.patch
index 03d0462..5fad351 100644
--- a/patches/server/0054-Do-not-log-run-as-root-warning.patch
+++ b/patches/server/0051-Do-not-log-run-as-root-warning.patch
@@ -41,10 +41,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index 94e86acd4bc9c2be7c07fbd17364ba7bf9edb094..8cbad64897ea764a10f044cabb8f77ffbcb3a7a0 100644
+index 8ff28f6f40f35e6523ec6fac2d5f0de7c84630c5..b62b9ced6de729d2646b5ba7091ede14858a4d65 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-@@ -201,7 +201,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+@@ -198,7 +198,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
}
// Paper start - detect running as root
diff --git a/patches/server/0055-Do-not-log-offline-mode-warning.patch b/patches/server/0052-Do-not-log-offline-mode-warning.patch
similarity index 94%
rename from patches/server/0055-Do-not-log-offline-mode-warning.patch
rename to patches/server/0052-Do-not-log-offline-mode-warning.patch
index 1438817..25a3343 100644
--- a/patches/server/0055-Do-not-log-offline-mode-warning.patch
+++ b/patches/server/0052-Do-not-log-offline-mode-warning.patch
@@ -41,10 +41,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-index 8cbad64897ea764a10f044cabb8f77ffbcb3a7a0..30ddaba93a1b2bb228a9fcdf25e8abab036d9f38 100644
+index b62b9ced6de729d2646b5ba7091ede14858a4d65..6478728a80f2cc207b89980ef8908dc0f473476c 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
-@@ -314,7 +314,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+@@ -311,7 +311,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord";
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support
diff --git a/patches/server/0056-Softly-log-invalid-pool-element-errors.patch b/patches/server/0053-Softly-log-invalid-pool-element-errors.patch
similarity index 100%
rename from patches/server/0056-Softly-log-invalid-pool-element-errors.patch
rename to patches/server/0053-Softly-log-invalid-pool-element-errors.patch
diff --git a/patches/server/0057-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0054-Fix-outdated-server-showing-in-ping-before-server-fu.patch
similarity index 100%
rename from patches/server/0057-Fix-outdated-server-showing-in-ping-before-server-fu.patch
rename to patches/server/0054-Fix-outdated-server-showing-in-ping-before-server-fu.patch
diff --git a/patches/server/0058-Fix-MC-238526.patch b/patches/server/0055-Fix-MC-238526.patch
similarity index 96%
rename from patches/server/0058-Fix-MC-238526.patch
rename to patches/server/0055-Fix-MC-238526.patch
index fe6afb9..3177f58 100644
--- a/patches/server/0058-Fix-MC-238526.patch
+++ b/patches/server/0055-Fix-MC-238526.patch
@@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
-index c9cabb061ebc9172647304431cc3fb2593dd47ba..68375718c4c9ba46439e49cd82a5267aab150f97 100644
+index 8c4532a250f8679d729a35c17e9b5bd339264450..7cdf57f96539e8218b3834f3f24336f93cd6938c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
+++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java
-@@ -71,6 +71,6 @@ public abstract class WaterAnimal extends PathfinderMob {
+@@ -74,6 +74,6 @@ public abstract class WaterAnimal extends PathfinderMob {
i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i);
j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j);
// Paper end - Make water animal spawn height configurable
diff --git a/patches/server/0059-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0056-Fix-cow-rotation-when-shearing-mooshroom.patch
similarity index 65%
rename from patches/server/0059-Fix-cow-rotation-when-shearing-mooshroom.patch
rename to patches/server/0056-Fix-cow-rotation-when-shearing-mooshroom.patch
index 02e009a..12852ac 100644
--- a/patches/server/0059-Fix-cow-rotation-when-shearing-mooshroom.patch
+++ b/patches/server/0056-Fix-cow-rotation-when-shearing-mooshroom.patch
@@ -37,32 +37,25 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
-index 0c21959f57ae88fcd0a4d6dc911c1ce347c96528..5707c6287a691030841fa973e8f7f34a816103e4 100644
+index feeb7bc34ae02e44d7f13f0bae5d175ef924c53a..8ac72f18edaadba69652f8c2f7d672e81a5433da 100644
--- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
+++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java
-@@ -196,12 +196,21 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder {
+ world.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5D), this.getZ(), 1, 0.0D, 0.0D, 0.0D, 0.0D);
++ // Gale start - Purpur - fix cow rotation when shearing mooshroom
++ if (this.level().galeConfig().gameplayMechanics.fixes.keepMooshroomRotationAfterShearing) {
++ entitycow.copyPosition(this);
++ entitycow.yBodyRot = this.yBodyRot;
++ entitycow.setYHeadRot(this.getYHeadRot());
++ entitycow.yRotO = this.yRotO;
++ entitycow.xRotO = this.xRotO;
++ }
++ // Gale end - Purpur - fix cow rotation when shearing mooshroom
+ // Paper start - custom shear drops; moved drop generation to separate method
+ drops.forEach(itemstack1 -> {
+ for (final ItemStack drop : drops) {
diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
index fff9f552a9b3cc4913837077857c78826bf1bdb0..3fa354ceef3ec5ab9bca3f13f23aca586dfe09c4 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
diff --git a/patches/server/0060-Fix-MC-121706.patch b/patches/server/0057-Fix-MC-121706.patch
similarity index 100%
rename from patches/server/0060-Fix-MC-121706.patch
rename to patches/server/0057-Fix-MC-121706.patch
diff --git a/patches/server/0061-Fix-MC-110386.patch b/patches/server/0058-Fix-MC-110386.patch
similarity index 96%
rename from patches/server/0061-Fix-MC-110386.patch
rename to patches/server/0058-Fix-MC-110386.patch
index 4f6a7e4..b4eb70d 100644
--- a/patches/server/0061-Fix-MC-110386.patch
+++ b/patches/server/0058-Fix-MC-110386.patch
@@ -19,7 +19,7 @@ the second will join in the fight against itself,
causing it to attack itself repeatedly. See https://bugs.mojang.com/browse/MC-110386.
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/target/HurtByTargetGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/target/HurtByTargetGoal.java
-index 80ef4b6649da3049f21624926fa38595d76c5da5..7ce47abc44e0dfe8ff90afeb25b14d8d98e6b1cc 100644
+index edfc77ba9c5c7dc4cfe997faff7a34e9b9e9365e..6c72dd5774eccec68d29e04dfc344adb69840abf 100644
--- a/src/main/java/net/minecraft/world/entity/ai/goal/target/HurtByTargetGoal.java
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/target/HurtByTargetGoal.java
@@ -114,6 +114,11 @@ public class HurtByTargetGoal extends TargetGoal {
diff --git a/patches/server/0062-Fix-MC-31819.patch b/patches/server/0059-Fix-MC-31819.patch
similarity index 93%
rename from patches/server/0062-Fix-MC-31819.patch
rename to patches/server/0059-Fix-MC-31819.patch
index 8743fad..3cd5599 100644
--- a/patches/server/0062-Fix-MC-31819.patch
+++ b/patches/server/0059-Fix-MC-31819.patch
@@ -19,10 +19,10 @@ the displayed hunger bar never goes down. Hunger (or any related value, includin
should not go down on peaceful. See https://bugs.mojang.com/browse/MC-31819.
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
-index 09bcbc0ae36e4e69fee87a7e0c49acf496117a39..81fdab6a5fbc39cb942f7b07a132a8f1ef18cb37 100644
+index 61d412c4f1ebd55661cc3f0260468e3ac0efe0bb..7dc22be7e2afeafe0292648a9a20422c39833966 100644
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
-@@ -1907,6 +1907,11 @@ public abstract class Player extends LivingEntity {
+@@ -1853,6 +1853,11 @@ public abstract class Player extends LivingEntity {
}
public void causeFoodExhaustion(float f, EntityExhaustionEvent.ExhaustionReason reason) {
diff --git a/patches/server/0063-Fix-MC-26304.patch b/patches/server/0060-Fix-MC-26304.patch
similarity index 89%
rename from patches/server/0063-Fix-MC-26304.patch
rename to patches/server/0060-Fix-MC-26304.patch
index 328c2d8..31242af 100644
--- a/patches/server/0063-Fix-MC-26304.patch
+++ b/patches/server/0060-Fix-MC-26304.patch
@@ -13,10 +13,10 @@ As part of: Mirai (https://github.com/etil2jz/Mirai)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
-index 0a93bacd62249bae1800ff306b8a7c765b0e5a8b..55873f24a9170626504af109352b04e8bf1352f9 100644
+index 02fc9ce21c7d367055da350d21be4870d4242f3a..4571c2e4a6410c746ac7f34a709f5907ff3aa903 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java
-@@ -47,6 +47,7 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
+@@ -48,6 +48,7 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
public static final int DATA_BREW_TIME = 0;
public static final int DATA_FUEL_USES = 1;
public static final int NUM_DATA_VALUES = 2;
@@ -24,7 +24,7 @@ index 0a93bacd62249bae1800ff306b8a7c765b0e5a8b..55873f24a9170626504af109352b04e8
private NonNullList items;
public int brewTime;
public int recipeBrewTime = 400; // Paper - Add recipeBrewTime
-@@ -313,6 +314,22 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
+@@ -314,6 +315,22 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
}
this.fuel = nbt.getByte("Fuel");
@@ -47,9 +47,9 @@ index 0a93bacd62249bae1800ff306b8a7c765b0e5a8b..55873f24a9170626504af109352b04e8
}
@Override
-@@ -321,6 +338,18 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
+@@ -322,6 +339,18 @@ public class BrewingStandBlockEntity extends BaseContainerBlockEntity implements
nbt.putShort("BrewTime", (short) this.brewTime);
- ContainerHelper.saveAllItems(nbt, this.items, registryLookup);
+ ContainerHelper.saveAllItems(nbt, this.items, registries);
nbt.putByte("Fuel", (byte) this.fuel);
+ // Gale start - Mirai - fix MC-26304
+ if (this.ingredient != null && this.ingredient != Items.AIR) {
diff --git a/patches/server/0064-Make-arrow-movement-resetting-despawn-counter-config.patch b/patches/server/0061-Make-arrow-movement-resetting-despawn-counter-config.patch
similarity index 94%
rename from patches/server/0064-Make-arrow-movement-resetting-despawn-counter-config.patch
rename to patches/server/0061-Make-arrow-movement-resetting-despawn-counter-config.patch
index 3f6bf01..bfa82c2 100644
--- a/patches/server/0064-Make-arrow-movement-resetting-despawn-counter-config.patch
+++ b/patches/server/0061-Make-arrow-movement-resetting-despawn-counter-config.patch
@@ -42,10 +42,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
-index 9ca29b3d4bf8bca5f51f3644e12fcbec2cb5d35e..6b652424786841f147f1c55617defd0e2a994b5f 100644
+index accc246f441c8bf5e1a755cfc0db8f97c0c01c6b..5fbd0612f1d1b0961e03931c26036c74d8265bb3 100644
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
-@@ -356,7 +356,7 @@ public abstract class AbstractArrow extends Projectile {
+@@ -371,7 +371,7 @@ public abstract class AbstractArrow extends Projectile {
Vec3 vec3d = this.getDeltaMovement();
this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F)));
@@ -53,7 +53,7 @@ index 9ca29b3d4bf8bca5f51f3644e12fcbec2cb5d35e..6b652424786841f147f1c55617defd0e
+ if (this.level().galeConfig().gameplayMechanics.arrowMovementResetsDespawnCounter) this.life = 0; // Gale - Purpur - make arrow movement resetting despawn counter configurable
}
- @Override
+ public boolean isInGround() {
diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
index e3e4459da020a85a66360e761adbf6e55920c6c5..f459d398cf9e274b8551540c8a1f707bd609ecb9 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java
diff --git a/patches/server/0065-Make-logging-login-locations-configurable.patch b/patches/server/0062-Make-logging-login-locations-configurable.patch
similarity index 76%
rename from patches/server/0065-Make-logging-login-locations-configurable.patch
rename to patches/server/0062-Make-logging-login-locations-configurable.patch
index 6b546a5..6891318 100644
--- a/patches/server/0065-Make-logging-login-locations-configurable.patch
+++ b/patches/server/0062-Make-logging-login-locations-configurable.patch
@@ -13,23 +13,23 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
-index 32999fcbee6252c208e67bcc17cfb8ebbaad4e5b..9b265924086edfdd29d155a94ad968d62c2fa924 100644
+index de5c66b2d30dd6f00d2e81e6ffd7915875d98cbb..51fc830e8cdae4a283480a06aae8525ac629273d 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
-@@ -483,7 +483,13 @@ public abstract class PlayerList {
+@@ -422,7 +422,13 @@ public abstract class PlayerList {
scoreboard.addPlayerToTeam(player.getScoreboardName(), collideRuleTeam);
}
// Paper end - Configurable player collision
-+ if (GaleGlobalConfiguration.get().logToConsole.playerLoginLocations) { // Gale - JettPack - make logging login location configurable
++ if (org.galemc.gale.configuration.GaleGlobalConfiguration.get().logToConsole.playerLoginLocations) { // Gale - JettPack - make logging login location configurable
PlayerList.LOGGER.info("{}[{}] logged in with entity id {} at ([{}]{}, {}, {})", player.getName().getString(), s1, player.getId(), worldserver1.serverLevelData.getLevelName(), player.getX(), player.getY(), player.getZ());
-+ // Gale start - JettPack - make logging login location configurable
++ // Gale start - JettPack - make logging login location configurable
+ } else {
+ PlayerList.LOGGER.info("{}[{}] logged in with entity id {}", player.getName().getString(), s1, player.getId());
+ }
+ // Gale end - JettPack - make logging login location configurable
- }
-
- public void updateEntireScoreboard(ServerScoreboard scoreboard, ServerPlayer player) {
+ // Paper start - Send empty chunk, so players aren't stuck in the world loading screen with our chunk system not sending chunks when dead
+ if (player.isDeadOrDying()) {
+ net.minecraft.core.Holder plains = worldserver1.registryAccess().lookupOrThrow(net.minecraft.core.registries.Registries.BIOME)
diff --git a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
index 3f8c66b35f1910df7d745056fd8f55d9b035b215..b0da100cf972d4e39b130c99550ebcc763f055ee 100644
--- a/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java
diff --git a/patches/server/0066-Reduce-array-allocations.patch b/patches/server/0063-Reduce-array-allocations.patch
similarity index 64%
rename from patches/server/0066-Reduce-array-allocations.patch
rename to patches/server/0063-Reduce-array-allocations.patch
index dfda349..7ed7c3f 100644
--- a/patches/server/0066-Reduce-array-allocations.patch
+++ b/patches/server/0063-Reduce-array-allocations.patch
@@ -13,42 +13,35 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java
-index ba68998f6ef57b24c72fd833bd7de440de9501cc..0985fdc56db782d17657a09a628533927d6ec4b8 100644
+index 7fed43a1e7bcf35c4d7fd3224837a47fedd59860..adc47f1ca3580a6968d145239ae830734a0ebe4a 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java
+++ b/src/main/java/ca/spottedleaf/moonrise/common/list/EntityList.java
@@ -18,9 +18,7 @@ public final class EntityList implements Iterable {
this.entityToIndex.defaultReturnValue(Integer.MIN_VALUE);
}
-- protected static final Entity[] EMPTY_LIST = new Entity[0];
+- private static final Entity[] EMPTY_LIST = new Entity[0];
-
-- protected Entity[] entities = EMPTY_LIST;
-+ protected Entity[] entities = me.titaniumtown.ArrayConstants.emptyEntityArray; // Gale - JettPack - reduce array allocations
- protected int count;
+- private Entity[] entities = EMPTY_LIST;
++ private Entity[] entities = me.titaniumtown.ArrayConstants.emptyEntityArray; // Gale - JettPack - reduce array allocations
+ private int count;
public int size() {
-diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IBlockDataList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IBlockDataList.java
-index fcfbca333234c09f7c056bbfcd9ac8860b20a8db..c780892d0043cbac80a62f5fbcc32ff41e4595d0 100644
---- a/src/main/java/ca/spottedleaf/moonrise/common/list/IBlockDataList.java
-+++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IBlockDataList.java
-@@ -17,9 +17,7 @@ public final class IBlockDataList {
- this.map.defaultReturnValue(Long.MAX_VALUE);
+diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java
+index 9f3b25bb2439f283f878db93973a02fcdcd14eed..4eb7bf187276f07f807fe181b303dda8e1b9196d 100644
+--- a/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java
++++ b/src/main/java/ca/spottedleaf/moonrise/common/list/IntList.java
+@@ -10,9 +10,7 @@ public final class IntList {
+ this.map.defaultReturnValue(Integer.MIN_VALUE);
}
-- private static final long[] EMPTY_LIST = new long[0];
+- private static final int[] EMPTY_LIST = new int[0];
-
-- private long[] byIndex = EMPTY_LIST;
-+ private long[] byIndex = me.titaniumtown.ArrayConstants.emptyLongArray; // Gale - JettPack - reduce array allocations
- private int size;
+- private int[] byIndex = EMPTY_LIST;
++ private int[] byIndex = me.titaniumtown.ArrayConstants.emptyIntArray; // Gale - JettPack - reduce array allocations
+ private int count;
- public static int getLocationKey(final int x, final int y, final int z) {
-@@ -122,4 +120,4 @@ public final class IBlockDataList {
- public LongIterator getRawIterator() {
- return this.map.values().iterator();
- }
--}
-\ No newline at end of file
-+}
+ public int size() {
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java
index 2e876b918672e8ef3b5197b7e6b1597247fdeaa1..8df9406b77eb3c225ebf88bf76a7adb666452f3b 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/ReferenceList.java
@@ -69,6 +62,21 @@ index 2e876b918672e8ef3b5197b7e6b1597247fdeaa1..8df9406b77eb3c225ebf88bf76a7adb6
}
public ReferenceList(final E[] referenceArray) {
+diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java
+index 2bae9949ef325d0001aa638150fbbdf968367e75..a72d5db6f6a8667c5c839016033bba4d0f16cf13 100644
+--- a/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java
++++ b/src/main/java/ca/spottedleaf/moonrise/common/list/ShortList.java
+@@ -10,9 +10,7 @@ public final class ShortList {
+ this.map.defaultReturnValue(Short.MIN_VALUE);
+ }
+
+- private static final short[] EMPTY_LIST = new short[0];
+-
+- private short[] byIndex = EMPTY_LIST;
++ private short[] byIndex = me.titaniumtown.ArrayConstants.emptyShortArray; // Gale - JettPack - reduce array allocations
+ private short count;
+
+ public int size() {
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java b/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java
index db92261a6cb3758391108361096417c61bc82cdc..1a14fddb36ca3c14d243304db629d0c5aac3906c 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/list/SortedList.java
@@ -90,44 +98,34 @@ index db92261a6cb3758391108361096417c61bc82cdc..1a14fddb36ca3c14d243304db629d0c5
public SortedList(final E[] elements, final Comparator super E> comparator) {
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
-index 5c7f2471a0b15ac2e714527296ad2aa7291999eb..7be7963dc0a59ed64ef635a2e94adb6c534a53e8 100644
+index b3c993a790fc3fab6a408c731deb297f74c959ce..e85a33c477e46f5b4633c0e87cfddcca669a0da7 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
-@@ -187,7 +187,7 @@ public final class ChunkEntitySlices {
- }
- }
+@@ -387,7 +387,7 @@ public final class ChunkEntitySlices {
-- return ret.toArray(new org.bukkit.entity.Entity[0]);
-+ return ret.toArray(me.titaniumtown.ArrayConstants.emptyBukkitEntityArray); // Gale - JettPack - reduce array allocations
- }
+ private static final class BasicEntityList {
- public void callEntitiesLoadEvent() {
-diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java
-index 748ab4d637ce463272bae4fdbab6842a27385126..6a3f1d5362b29db321d6c03d0f5ab5e6c915a02d 100644
---- a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java
-+++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java
-@@ -1113,7 +1113,7 @@ public final class CollisionUtil {
- }
+- private static final Entity[] EMPTY = new Entity[0];
++ private static final Entity[] EMPTY = me.titaniumtown.ArrayConstants.emptyEntityArray; // Gale - JettPack - reduce array allocations
+ private static final int DEFAULT_CAPACITY = 4;
- private static final ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.MergedVoxelCoordinateList EMPTY = new ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.MergedVoxelCoordinateList(
-- new double[] { 0.0 }, 0.0, new int[0], new int[0], 0
-+ new double[] { 0.0 }, 0.0, me.titaniumtown.ArrayConstants.emptyIntArray, me.titaniumtown.ArrayConstants.emptyIntArray, 0 // Gale - JettPack - reduce array allocations
- );
+ private E[] storage;
+diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
+index 58d9187adc188b693b6becc400f766e069bf1bf5..e3de64c7e7699547b7470080ff85efc5fbc6c2ee 100644
+--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
++++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
+@@ -15,10 +15,8 @@ import net.minecraft.world.level.entity.LevelCallback;
- private static int[] getIndices(final int length) {
-diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/EmptyStreamForMoveCall.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/EmptyStreamForMoveCall.java
-index 673103f160cbe577c6e05f998706af4e6850011b..2c1eb34f1539555ba1988a2eeeea7b2f59eb610c 100644
---- a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/EmptyStreamForMoveCall.java
-+++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/EmptyStreamForMoveCall.java
-@@ -102,7 +102,7 @@ public final class EmptyStreamForMoveCall implements java.util.stream.Stream<
- @org.jetbrains.annotations.NotNull
- @Override
- public Object[] toArray() {
-- return new Object[0];
-+ return me.titaniumtown.ArrayConstants.emptyObjectArray; // Gale - JettPack - reduce array allocations
- }
+ public final class ServerEntityLookup extends EntityLookup {
- @org.jetbrains.annotations.NotNull
+- private static final Entity[] EMPTY_ENTITY_ARRAY = new Entity[0];
+-
+ private final ServerLevel serverWorld;
+- public final ReferenceList trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker
++ public final ReferenceList trackerEntities = new ReferenceList<>(me.titaniumtown.ArrayConstants.emptyEntityArray); // Moonrise - entity tracker // Gale - JettPack - reduce array allocations
+
+ public ServerEntityLookup(final ServerLevel world, final LevelCallback worldCallback) {
+ super(world, worldCallback);
diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
index 95d3b42cbe2184b0a04d941f27f7a6e643ef59be..e0dad3b61402b309084a464bc3dfdb80043e69eb 100644
--- a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
@@ -156,10 +154,10 @@ index ae60bd96b5284d54676d8e7e4dd5d170b526ec1e..89562a86cd33ea2b55b284f77dc5d903
}
diff --git a/src/main/java/me/titaniumtown/ArrayConstants.java b/src/main/java/me/titaniumtown/ArrayConstants.java
new file mode 100644
-index 0000000000000000000000000000000000000000..360fdd754849511909c04cb05f8b0a8111b1ad8d
+index 0000000000000000000000000000000000000000..211c5b080919e6e6c360c274963bc6396cd82cff
--- /dev/null
+++ b/src/main/java/me/titaniumtown/ArrayConstants.java
-@@ -0,0 +1,18 @@
+@@ -0,0 +1,19 @@
+// Gale - JettPack - reduce array allocations
+
+package me.titaniumtown;
@@ -169,6 +167,7 @@ index 0000000000000000000000000000000000000000..360fdd754849511909c04cb05f8b0a81
+ private ArrayConstants() {}
+
+ public static final Object[] emptyObjectArray = new Object[0];
++ public static final short[] emptyShortArray = new short[0];
+ public static final int[] emptyIntArray = new int[0];
+ public static final int[] zeroSingletonIntArray = new int[]{0};
+ public static final byte[] emptyByteArray = new byte[0];
@@ -176,7 +175,7 @@ index 0000000000000000000000000000000000000000..360fdd754849511909c04cb05f8b0a81
+ public static final long[] emptyLongArray = new long[0];
+ public static final org.bukkit.entity.Entity[] emptyBukkitEntityArray = new org.bukkit.entity.Entity[0];
+ public static final net.minecraft.world.entity.Entity[] emptyEntityArray = new net.minecraft.world.entity.Entity[0];
-+ public static final net.minecraft.server.level.ServerLevel[] emptyServerLevelArray = new net.minecraft.server.level.ServerLevel[0];
++ //public static final net.minecraft.server.level.ServerLevel[] emptyServerLevelArray = new net.minecraft.server.level.ServerLevel[0];
+}
diff --git a/src/main/java/net/minecraft/nbt/ByteArrayTag.java b/src/main/java/net/minecraft/nbt/ByteArrayTag.java
index 06648f9751fd8a322d0809ffebf6a544596ee1a4..47c09872c8283efaec2eca05b4d74ddea1388942 100644
@@ -286,7 +285,7 @@ index a2920b8a9eff77d9c5d1d7f70ad3abdacba8f0fa..b34ea5d45a69ffcf26275e79006a3d03
protected CipherBase(Cipher cipher) {
this.cipher = cipher;
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
-index 3e550f8e7cd4f4e16f499a8a2a4b95420270f07a..ee4172ab8a0df871f509aeaee8d32f325c148fee 100644
+index e693a003ea8f022eef8b49e4332025b769333b30..1900da381257a00fc3b96d397e298caf2f8c861f 100644
--- a/src/main/java/net/minecraft/network/Connection.java
+++ b/src/main/java/net/minecraft/network/Connection.java
@@ -326,7 +326,7 @@ public class Connection extends SimpleChannelInboundHandler> {
@@ -311,21 +310,8 @@ index 4aa6232bf0f72fcde32d257100bd15b1c5192aaa..2d3f002f85721ff25d95f3f251077926
private static final Codec