diff --git a/gradle.properties b/gradle.properties index 0f805fc0..703a9670 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = cn.dreeam.leaf mcVersion = 1.20.6 version = 1.20.6-R0.1-SNAPSHOT -galeCommit = 8a47f583dfe7bf9f4ae448c572ccbacdeccdaad8 +galeCommit = 4ddda03524476d9a6e925241c288edab709e973d org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5208d7e1..cee8b1b9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-rc-1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-rc-2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0004-Purpur-API-Changes.patch b/patches/api/0004-Purpur-API-Changes.patch index a6db9f20..b00356d6 100644 --- a/patches/api/0004-Purpur-API-Changes.patch +++ b/patches/api/0004-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 1bbb0334799623b7d50beb920f35bd5f591471d1 +Commit: 2842b97ddf051139e4f76b54ec1731e73e0140ba Patches below are removed in this patch: Pufferfish-API-Changes.patch diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index 516d630f..ea0fa9e0 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 1bbb0334799623b7d50beb920f35bd5f591471d1 +Commit: 2842b97ddf051139e4f76b54ec1731e73e0140ba diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 43f4deacef349502cbb207aafc4f9cb7a75177c5..6b692c24a62e2172116a6b9c371b1c0e2411c27e 100644 diff --git a/patches/server/0008-Pufferfish-Dynamic-Activation-of-Brain.patch b/patches/server/0008-Pufferfish-Dynamic-Activation-of-Brain.patch index 193704c3..4895c93f 100644 --- a/patches/server/0008-Pufferfish-Dynamic-Activation-of-Brain.patch +++ b/patches/server/0008-Pufferfish-Dynamic-Activation-of-Brain.patch @@ -44,10 +44,10 @@ index d27be346b91f390e06702d654058cab4d3f39b8c..e3fdd0677b3029be0ddc5f59489f66e2 if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed entity.discard(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5613659b44f83d07a253882e227ee1e604695417..9a87e5cb9708dc0879e4fd70d7cecbfea50c730e 100644 +index f30b3aba1ee92aa6cb5425862502b0fdfe6e9768..16993e38aeb0748e298f9b0a91d0e8bc722066a6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -427,6 +427,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -426,6 +426,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean fixedPose = false; // Paper - Expand Pose API @@ -69,7 +69,7 @@ index a46bf73c608641bf1f00fd55242de71a0f2ee06e..58298a1f85f462abc4f07deffe913abb private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index e0e7c35fa9c9395eec5b4504e250ee2d58f98e30..c9240785d65227b33f2b1cce28cb3de9d854ad8b 100644 +index 2d91941eb780de588202113700f68cca853eb62b..1eb7d8ac91e0799c012fabb503558ae9da69ac72 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -242,10 +242,10 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti @@ -198,7 +198,7 @@ index 53dbe9d296a89d23b19f2551b20b464731ee800e..40dad395aabb04c21ac26fadce823ce8 TadpoleAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 55d2144af223a2813b784e6e249fe94f610ef079..1bf1e2714f210188202a97219765428f9cf2c956 100644 +index a6b6dd1715f7cb278b66381cbb0dd9d7069ce6ed..79ef4a1a4f4d404121087e2e6bcc3855556a88db 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -190,8 +190,10 @@ public class Goat extends Animal { diff --git a/patches/server/0010-Pufferfish-Entity-TTL.patch b/patches/server/0010-Pufferfish-Entity-TTL.patch index c25d4dd6..d381f0cb 100644 --- a/patches/server/0010-Pufferfish-Entity-TTL.patch +++ b/patches/server/0010-Pufferfish-Entity-TTL.patch @@ -7,10 +7,10 @@ Original license: GPL v3 Original project: https://github.com/pufferfish-gg/Pufferfish diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9a87e5cb9708dc0879e4fd70d7cecbfea50c730e..66857a4f55c2505228f015764930e3309db3c20a 100644 +index 16993e38aeb0748e298f9b0a91d0e8bc722066a6..1ea7d87ce569af8c693c63f33f5479bd20f41bf4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -868,6 +868,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -867,6 +867,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public void tick() { diff --git a/patches/server/0011-Purpur-Server-Changes.patch b/patches/server/0011-Purpur-Server-Changes.patch index 35bca903..2cca3cf4 100644 --- a/patches/server/0011-Purpur-Server-Changes.patch +++ b/patches/server/0011-Purpur-Server-Changes.patch @@ -8,7 +8,7 @@ TODO - Dreeam: Check TODOs in ServerGamePacketListenerImpl & Fix-pufferfish-issu Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 1bbb0334799623b7d50beb920f35bd5f591471d1 +Commit: 2842b97ddf051139e4f76b54ec1731e73e0140ba Patches below are removed in this patch: Metrics changes in Purpur-config-files.patch @@ -828,7 +828,7 @@ index e3c6e5cf297d32c62bc6bb9f8682a665e98470a1..2d3f733c70ff63f7d0d272b205496ad1 // Paper end } diff --git a/src/main/java/net/minecraft/server/commands/EnchantCommand.java b/src/main/java/net/minecraft/server/commands/EnchantCommand.java -index 84f1ba6275f04624f46ccd772924b5e075e7b205..bfb455fb74f0a9645212f90acb54f68d1c7d9772 100644 +index 84f1ba6275f04624f46ccd772924b5e075e7b205..5178d120e6bb5774e073fdabad0b4668b0de36c0 100644 --- a/src/main/java/net/minecraft/server/commands/EnchantCommand.java +++ b/src/main/java/net/minecraft/server/commands/EnchantCommand.java @@ -70,7 +70,7 @@ public class EnchantCommand { @@ -845,7 +845,7 @@ index 84f1ba6275f04624f46ccd772924b5e075e7b205..bfb455fb74f0a9645212f90acb54f68d if (!itemStack.isEmpty()) { if (enchantment2.canEnchant(itemStack) - && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment2)) { -+ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur ++ && EnchantmentHelper.isEnchantmentCompatible(EnchantmentHelper.getEnchantmentsForCrafting(itemStack).keySet(), enchantment2) || (org.purpurmc.purpur.PurpurConfig.allowUnsafeEnchantCommand && !itemStack.hasEnchantment(enchantment2))) { // Purpur itemStack.enchant(enchantment2, level); i++; } else if (targets.size() == 1) { @@ -1102,7 +1102,7 @@ index 759062d219ff490a3cb19e710c4d18e3e08288e0..8f74c2ec5252b6265549589310d74233 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index db3c9d0d1428549ca6955120661cae38e40f7f8a..f1e4ed6f62472737a534fc457aa483d0725e92e3 100644 +index 73f7d1af9ec545535d980afaa0ed11bb7e82f2b4..cb2683c7e090a8d040b581bc95a0505998f17f43 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -77,7 +77,7 @@ public class ServerEntity { @@ -1300,7 +1300,7 @@ index e3fdd0677b3029be0ddc5f59489f66e28f5c2853..b9d9ef327753272a537bebccc54d9fbc } // Paper end - Fix merchant inventory not closing on entity removal diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b5222917f066323 100644 +index 9be1ba758cc3cac54501c39c05ea057dedeae610..fd3f177012d82fe774069b4c53f7efef3e9b991f 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -299,6 +299,10 @@ public class ServerPlayer extends Player { @@ -1314,7 +1314,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); -@@ -609,6 +613,9 @@ public class ServerPlayer extends Player { +@@ -610,6 +614,9 @@ public class ServerPlayer extends Player { }); } @@ -1324,7 +1324,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 } @Override -@@ -685,6 +692,9 @@ public class ServerPlayer extends Player { +@@ -686,6 +693,9 @@ public class ServerPlayer extends Player { }); } @@ -1334,7 +1334,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 } // CraftBukkit start - World fallback code, either respawn location or global spawn -@@ -814,6 +824,15 @@ public class ServerPlayer extends Player { +@@ -815,6 +825,15 @@ public class ServerPlayer extends Player { this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this); @@ -1350,7 +1350,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 } private void updatePlayerAttributes() { -@@ -1077,6 +1096,7 @@ public class ServerPlayer extends Player { +@@ -1078,6 +1097,7 @@ public class ServerPlayer extends Player { })); PlayerTeam scoreboardteam = this.getTeam(); @@ -1358,7 +1358,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 if (scoreboardteam != null && scoreboardteam.getDeathMessageVisibility() != Team.Visibility.ALWAYS) { if (scoreboardteam.getDeathMessageVisibility() == Team.Visibility.HIDE_FOR_OTHER_TEAMS) { this.server.getPlayerList().broadcastSystemToTeam(this, ichatbasecomponent); -@@ -1180,6 +1200,16 @@ public class ServerPlayer extends Player { +@@ -1181,6 +1201,16 @@ public class ServerPlayer extends Player { if (this.isInvulnerableTo(source)) { return false; } else { @@ -1375,7 +1375,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 boolean flag = this.server.isDedicatedServer() && this.isPvpAllowed() && source.is(DamageTypeTags.IS_FALL); if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { -@@ -1323,6 +1353,7 @@ public class ServerPlayer extends Player { +@@ -1324,6 +1354,7 @@ public class ServerPlayer extends Player { playerlist.sendPlayerPermissionLevel(this); worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); @@ -1383,7 +1383,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 // CraftBukkit end this.setServerLevel(worldserver); -@@ -1478,7 +1509,7 @@ public class ServerPlayer extends Player { +@@ -1479,7 +1510,7 @@ public class ServerPlayer extends Player { return entitymonster.isPreventingPlayerRest(this); }); @@ -1392,7 +1392,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1518,7 +1549,19 @@ public class ServerPlayer extends Player { +@@ -1519,7 +1550,19 @@ public class ServerPlayer extends Player { }); if (!this.serverLevel().canSleepThroughNights()) { @@ -1413,7 +1413,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 } ((ServerLevel) this.level()).updateSleepingPlayerList(); -@@ -1640,6 +1683,7 @@ public class ServerPlayer extends Player { +@@ -1641,6 +1684,7 @@ public class ServerPlayer extends Player { @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -1421,7 +1421,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 this.connection.send(new ClientboundBlockUpdatePacket(this.level(), sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos(), front)); } -@@ -1974,6 +2018,26 @@ public class ServerPlayer extends Player { +@@ -1975,6 +2019,26 @@ public class ServerPlayer extends Player { this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -1448,7 +1448,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2299,8 +2363,68 @@ public class ServerPlayer extends Player { +@@ -2300,8 +2364,68 @@ public class ServerPlayer extends Player { public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -1517,7 +1517,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 public ServerStatsCounter getStats() { return this.stats; } -@@ -2874,4 +2998,50 @@ public class ServerPlayer extends Player { +@@ -2875,4 +2999,50 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -1569,7 +1569,7 @@ index 54eabdbe28ef05a9f29d692c0e0bb998859825cb..89200d0e0ff60514d22c1cde4b522291 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 5cedce1f432f6b809b25269242a16477682c824f..6d194797d8fe2cd6e5652d596f4bc66ffc3b6375 100644 +index 1047027610624c9ba4bb5afd5d7f0714a062b198..7424246750d6ceca1acd5d9ebfd48f0d66504c5d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -400,6 +400,7 @@ public class ServerPlayerGameMode { @@ -1643,7 +1643,7 @@ index c3a1969e7d3e42b2f0fd0dd0a3d6a5f1dc9b1a1e..bc14f7ae7c5d3dab3a3fc1ce56c975c3 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5c1e1ffcd63ab01ddea88acfc2744411f882dc24..c53e01260b4ca6f637b3d55798cda4cab822b5fe 100644 +index 0228be9bce81e688e739b3e9e625783bf135ea75..2d9495b94a03f0d31eb1c4c728834b4dcd909a73 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -336,6 +336,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2256,7 +2256,7 @@ index f43bf280999ff3860cc702def50cc62b131eb1bd..66d9e99a351f5fc6cf58be3bee4397d9 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb0943e8d996 100644 +index 1ea7d87ce569af8c693c63f33f5479bd20f41bf4..b96be9429a43439e27558d6f945d7c11fffa6b73 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -163,7 +163,7 @@ import org.bukkit.plugin.PluginManager; @@ -2268,7 +2268,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 // CraftBukkit start private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation -@@ -341,6 +341,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -340,6 +340,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; @@ -2276,7 +2276,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 public boolean noPhysics; public final RandomSource random; public int tickCount; -@@ -382,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -381,7 +382,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -2285,7 +2285,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -429,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -428,6 +429,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean fixedPose = false; // Paper - Expand Pose API public boolean activatedPriorityReset = false; // Pufferfish - DAB public int activatedPriority = org.dreeam.leaf.config.modules.opt.DynamicActivationofBrain.maximumActivationPrio; // Pufferfish - DAB (golf score) @@ -2293,7 +2293,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -561,6 +563,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -560,6 +562,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } @@ -2319,7 +2319,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 public final boolean hardCollides() { return this.hardCollides; } -@@ -581,7 +602,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -580,7 +601,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; @@ -2328,7 +2328,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 this.remainingFireTicks = -this.getFireImmuneTicks(); this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); -@@ -961,10 +982,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -960,10 +981,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -2341,7 +2341,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 this.onBelowWorld(); } -@@ -1879,7 +1901,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1878,7 +1900,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -2350,7 +2350,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -1952,7 +1974,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1951,7 +1973,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -2359,7 +2359,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 Entity entity = this.getVehicle(); if (entity instanceof Boat entityboat) { -@@ -2584,6 +2606,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2583,6 +2605,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -2371,7 +2371,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2731,6 +2758,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2730,6 +2757,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end @@ -2383,7 +2383,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -3115,6 +3147,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3114,6 +3146,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -2397,7 +2397,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3154,6 +3193,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3153,6 +3192,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -2412,7 +2412,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -3232,12 +3279,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3231,12 +3278,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } @@ -2429,7 +2429,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } this.isInsidePortal = true; -@@ -3462,7 +3512,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3461,7 +3511,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -2438,7 +2438,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } public int getAirSupply() { -@@ -3929,7 +3979,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3928,7 +3978,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean canChangeDimensions() { @@ -2447,7 +2447,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { -@@ -4230,6 +4280,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4229,6 +4279,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } @@ -2468,7 +2468,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 @Override public void sendSystemMessage(Component message) {} -@@ -4517,6 +4581,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4516,6 +4580,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.yRotO = this.getYRot(); } @@ -2481,7 +2481,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { if (false && this.touchingUnloadedChunk()) { // Gale - Airplane - reduce entity fluid lookups if no fluids - cost of a lookup here is the same cost as below, so skip return false; -@@ -4925,7 +4995,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4924,7 +4994,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { @@ -2490,7 +2490,7 @@ index 66857a4f55c2505228f015764930e3309db3c20a..a1fae61c8d238b06915037eacec2cb09 } public void onExplosionHit(@Nullable Entity entity) {} -@@ -5097,4 +5167,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5096,4 +5166,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -2649,10 +2649,10 @@ index a207a31d80a302dbdfe80f8727222542d3a78da2..f5debc8ddc496cd3e2d8b253511ee5cc public int getValue() { return this.value; diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..3e2ea26c23e88c395856b65001f2895db6a52bd4 100644 +index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..b69d924fa8034eabbf4aab8d3434f4f4e2529373 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java -@@ -23,6 +23,39 @@ public class GlowSquid extends Squid { +@@ -23,6 +23,38 @@ public class GlowSquid extends Squid { super(type, world); } @@ -2662,7 +2662,6 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..3e2ea26c23e88c395856b65001f2895d + return level().purpurConfig.glowSquidRidable; + } + -+ + @Override + public boolean isControllable() { + return level().purpurConfig.glowSquidControllable; @@ -2693,7 +2692,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..3e2ea26c23e88c395856b65001f2895d protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7c7e9f40b1d46b1780f55e1cfbf89b6dbd82f2ae..d06c5d16d312187b6a53c8995d524c0ec2d9f921 100644 +index 337ad7a9e7a49f5fc8d89187168347ee84ff3e01..335de9b1272eab2428a45de35f820f93d0dbc314 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -228,9 +228,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -3018,7 +3017,7 @@ index 7c7e9f40b1d46b1780f55e1cfbf89b6dbd82f2ae..d06c5d16d312187b6a53c8995d524c0e this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 54cc3b7baa0988972151319245e0ff89151efa5e..1f787798b6d557a2379546f9a4910a7e7a12b178 100644 +index b8862f6535ad688a0caf8cb31d0d52b2dd3015b1..3a9ab3be32524b4e84588880a4055786410fdd0f 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -74,6 +74,7 @@ import net.minecraft.world.item.SpawnEggItem; @@ -4357,7 +4356,7 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 5a7b1be351834a6b8889b1380cede1be025cb302..1691a98caabf27ea092a9b422649ac84bc0a7235 100644 +index e336934f37075a827843e4b1bb2b6b660d2c60c9..4541e72bc93b19df6aecc781b4e381a7224aa4a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -4468,16 +4467,16 @@ index 5a7b1be351834a6b8889b1380cede1be025cb302..1691a98caabf27ea092a9b422649ac84 ItemStack itemstack = player.getItemInHand(hand); if (itemstack.is(Items.BUCKET) && !this.isBaby()) { -@@ -101,7 +152,7 @@ public class Cow extends Animal { - PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand); +@@ -102,7 +153,7 @@ public class Cow extends Animal { if (event.isCancelled()) { + player.containerMenu.sendAllDataToRemote(); // Paper - Fix inventory desync - return InteractionResult.PASS; + return tryRide(player, hand); // Purpur } // CraftBukkit end -@@ -110,6 +161,10 @@ public class Cow extends Animal { +@@ -111,6 +162,10 @@ public class Cow extends Animal { player.setItemInHand(hand, itemstack1); return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -4488,7 +4487,7 @@ index 5a7b1be351834a6b8889b1380cede1be025cb302..1691a98caabf27ea092a9b422649ac84 } else { return super.mobInteract(player, hand); } -@@ -125,4 +180,69 @@ public class Cow extends Animal { +@@ -126,4 +181,69 @@ public class Cow extends Animal { public EntityDimensions getDefaultDimensions(Pose pose) { return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } @@ -7028,7 +7027,7 @@ index 40dad395aabb04c21ac26fadce823ce8b4f79b3a..e6861fd5f9817ec54294976f0e93952b TadpoleAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 1bf1e2714f210188202a97219765428f9cf2c956..65d01a9c1b2d66446eb08a4a2bcdbe8284ce9e43 100644 +index 79ef4a1a4f4d404121087e2e6bcc3855556a88db..47edb3ee02eeb0e2e6a2d817ab8193dc26cd2bec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -91,6 +91,38 @@ public class Goat extends Animal { @@ -7079,7 +7078,7 @@ index 1bf1e2714f210188202a97219765428f9cf2c956..65d01a9c1b2d66446eb08a4a2bcdbe82 this.getBrain().tick((ServerLevel) this.level(), this); GoatAi.updateActivity(this); super.customServerAiStep(); -@@ -392,6 +424,7 @@ public class Goat extends Animal { +@@ -393,6 +425,7 @@ public class Goat extends Animal { // Paper start - Goat ram API public void ram(net.minecraft.world.entity.LivingEntity entity) { @@ -13630,10 +13629,10 @@ index 786e4a8700cb84b16dd9b8892a0d1d5803924d81..b108ca4c7900ccf6a14ebea01c21c103 // CraftBukkit start Level world = pointer.level(); diff --git a/src/main/java/net/minecraft/world/item/ArmorStandItem.java b/src/main/java/net/minecraft/world/item/ArmorStandItem.java -index 1634a7d5ff06583408cf2f02f2b5f90931b1e02a..fd83261f64c6469aebde8ab13a6777b9b269cea2 100644 +index 066a6e5ed2632a55324ec0d10f2f8a6bf3f30a0f..1921ecf2c0a9f18c93d207692fb9c2db58c9358f 100644 --- a/src/main/java/net/minecraft/world/item/ArmorStandItem.java +++ b/src/main/java/net/minecraft/world/item/ArmorStandItem.java -@@ -58,6 +58,14 @@ public class ArmorStandItem extends Item { +@@ -59,6 +59,14 @@ public class ArmorStandItem extends Item { return InteractionResult.FAIL; } // CraftBukkit end @@ -13863,7 +13862,7 @@ index 4ebd634cff286b10868e26eeb3ecf34abdcab22e..7dc811335caa46870d1d895899a1e6c2 com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) user.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity()); if (event.callEvent() && world.addFreshEntity(entityegg)) { diff --git a/src/main/java/net/minecraft/world/item/EndCrystalItem.java b/src/main/java/net/minecraft/world/item/EndCrystalItem.java -index ded33fd166cbb95917f7e321875acc4222caff46..da43fd53a5c44cc0ed7d1fa5297b77c43a894fc5 100644 +index 50312825fade96ccc8c1231ca1eaf6c36d892746..ba33679991bed0c53adf17f173675380bdf1f755 100644 --- a/src/main/java/net/minecraft/world/item/EndCrystalItem.java +++ b/src/main/java/net/minecraft/world/item/EndCrystalItem.java @@ -27,7 +27,7 @@ public class EndCrystalItem extends Item { @@ -13933,23 +13932,23 @@ index 530167ce8e5bb72a418f8ec61411e38a5892fd72..35dc7546793dba34bf6debad3f214f61 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/net/minecraft/world/item/HoeItem.java b/src/main/java/net/minecraft/world/item/HoeItem.java -index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5d41eb6a6 100644 +index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..6251c6226c59763b27b79e541b7e7089ea804ff8 100644 --- a/src/main/java/net/minecraft/world/item/HoeItem.java +++ b/src/main/java/net/minecraft/world/item/HoeItem.java -@@ -46,15 +46,23 @@ public class HoeItem extends DiggerItem { +@@ -46,15 +46,25 @@ public class HoeItem extends DiggerItem { public InteractionResult useOn(UseOnContext context) { Level level = context.getLevel(); BlockPos blockPos = context.getClickedPos(); - Pair, Consumer> pair = TILLABLES.get(level.getBlockState(blockPos).getBlock()); - if (pair == null) { -- return InteractionResult.PASS; -- } else { -- Predicate predicate = pair.getFirst(); -- Consumer consumer = pair.getSecond(); + // Purpur start + Block clickedBlock = level.getBlockState(blockPos).getBlock(); + var tillable = level.purpurConfig.hoeTillables.get(clickedBlock); -+ if (tillable == null) { return InteractionResult.PASS; } else { ++ if (tillable == null) { + return InteractionResult.PASS; + } else { +- Predicate predicate = pair.getFirst(); +- Consumer consumer = pair.getSecond(); + Predicate predicate = tillable.condition().predicate(); + Consumer consumer = (ctx) -> { + level.setBlock(blockPos, tillable.into().defaultBlockState(), 11); @@ -13967,7 +13966,7 @@ index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5 if (!level.isClientSide) { consumer.accept(context); if (player != null) { -@@ -62,7 +70,7 @@ public class HoeItem extends DiggerItem { +@@ -62,7 +72,7 @@ public class HoeItem extends DiggerItem { } } @@ -13977,18 +13976,18 @@ index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5 return InteractionResult.PASS; } diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0d04028f1 100644 +index 5bb861930d2e81d48d33121100d797ebca4394ea..b65671c7c3f507c7b3c9baf62e267c4ef6ca23f5 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -475,6 +475,7 @@ public final class ItemStack implements DataComponentHolder { - world.preventPoiUpdated = true; // CraftBukkit - SPIGOT-5710 +@@ -476,6 +476,7 @@ public final class ItemStack implements DataComponentHolder { + world.isBlockPlaceCancelled = true; // Paper - prevent calling cleanup logic when undoing a block place upon a cancelled BlockPlaceEvent for (BlockState blockstate : blocks) { blockstate.update(true, false); + ((CraftBlock) blockstate.getBlock()).getNMS().getBlock().forgetPlacer(); // Purpur } + world.isBlockPlaceCancelled = false; // Paper - prevent calling cleanup logic when undoing a block place upon a cancelled BlockPlaceEvent world.preventPoiUpdated = false; - -@@ -506,6 +507,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -508,6 +509,7 @@ public final class ItemStack implements DataComponentHolder { if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context } @@ -13996,7 +13995,7 @@ index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0 world.notifyAndUpdatePhysics(newblockposition, null, oldBlock, block, world.getBlockState(newblockposition), updateFlag, 512); // send null chunk as chunk.k() returns false by this point } -@@ -636,6 +638,16 @@ public final class ItemStack implements DataComponentHolder { +@@ -638,6 +640,16 @@ public final class ItemStack implements DataComponentHolder { return this.isDamageableItem() && this.getDamageValue() > 0; } @@ -14013,7 +14012,7 @@ index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0 public int getDamageValue() { return Mth.clamp((Integer) this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -653,7 +665,7 @@ public final class ItemStack implements DataComponentHolder { +@@ -655,7 +667,7 @@ public final class ItemStack implements DataComponentHolder { int j; if (amount > 0) { @@ -14022,7 +14021,7 @@ index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0 int k = 0; for (int l = 0; j > 0 && l < amount; ++l) { -@@ -729,6 +741,12 @@ public final class ItemStack implements DataComponentHolder { +@@ -731,6 +743,12 @@ public final class ItemStack implements DataComponentHolder { this.hurtAndBreak(amount, randomsource, entity, () -> { // Paper - Add EntityDamageItemEvent entity.broadcastBreakEvent(slot); Item item = this.getItem(); @@ -14035,7 +14034,7 @@ index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0 // CraftBukkit start - Check for item breaking if (this.count == 1 && entity instanceof net.minecraft.world.entity.player.Player) { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((net.minecraft.world.entity.player.Player) entity, this); -@@ -1210,6 +1228,16 @@ public final class ItemStack implements DataComponentHolder { +@@ -1212,6 +1230,16 @@ public final class ItemStack implements DataComponentHolder { return !((ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY)).isEmpty(); } @@ -14053,7 +14052,7 @@ index 1856d56b2ef1f8839bf2526133b945be637ef062..ae3e1ebb26a04e744e5db3ebd68196e0 return (ItemEnchantments) this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY); } diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index d00b59efb754594cf532f8598f4b6d3b29693232..42b322879629afb2d2fc64a215f010f5d5ce9e02 100644 +index d00b59efb754594cf532f8598f4b6d3b29693232..55f753668ccb769e2f7af50bda69c41b09238130 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java @@ -338,7 +338,7 @@ public class Items { @@ -14070,7 +14069,7 @@ index d00b59efb754594cf532f8598f4b6d3b29693232..42b322879629afb2d2fc64a215f010f5 ); public static final Item GLOW_BERRIES = registerItem( - "glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) -+ "glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) // Purpur ++ "glow_berries", new org.purpurmc.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, new Item.Properties().food(Foods.GLOW_BERRIES)) // Purpur ); public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( @@ -14101,7 +14100,7 @@ index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042 return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java -index 66074445d3908b9bb1c8d70e1e27d057720ec8e5..0fd4f2ab929df479360755a3f1e58a933ae59520 100644 +index d524fcc191cb95d6ec7f12ae7fceeb8077bb08fc..4b8cebb321eddc852b4ec7def7f51d781f67927b 100644 --- a/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java @@ -120,8 +120,9 @@ public class MinecartItem extends Item { @@ -14116,7 +14115,7 @@ index 66074445d3908b9bb1c8d70e1e27d057720ec8e5..0fd4f2ab929df479360755a3f1e58a93 ItemStack itemstack = context.getItemInHand(); if (world instanceof ServerLevel) { -@@ -146,6 +147,6 @@ public class MinecartItem extends Item { +@@ -147,6 +148,6 @@ public class MinecartItem extends Item { itemstack.shrink(1); return InteractionResult.sidedSuccess(world.isClientSide); @@ -14489,10 +14488,10 @@ index eb152f9ab41fc7b7219f9be26b574d61506c55d5..e9e0c91299b2669e0ff452176bf9758c Set set = Sets.newHashSet(); boolean flag = true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ba2c1672a018dbd0a179e71f7166fb9df87782dd..45adf5a7c46ee4e3a06e62fbbb22548175359180 100644 +index c97b031c6beca995599642b26dcb888f4977ed5f..8be636ef55f8f2cb0ed1edad42156b742281b044 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -175,6 +175,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -176,6 +176,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Gale end - Gale configuration public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray @@ -14500,7 +14499,7 @@ index ba2c1672a018dbd0a179e71f7166fb9df87782dd..45adf5a7c46ee4e3a06e62fbbb225481 public final co.aikar.timings.WorldTimingsHandler timings; // Paper public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; -@@ -185,6 +186,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -186,6 +187,49 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final io.papermc.paper.util.math.ThreadUnsafeRandom randomTickRandom = new io.papermc.paper.util.math.ThreadUnsafeRandom(this.random.nextLong()); // Gale - Pufferfish - move random tick random @@ -14550,7 +14549,7 @@ index ba2c1672a018dbd0a179e71f7166fb9df87782dd..45adf5a7c46ee4e3a06e62fbbb225481 public CraftWorld getWorld() { return this.world; } -@@ -224,6 +268,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -225,6 +269,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.galeConfig = galeWorldConfigCreator.apply(this.spigotConfig); // Gale - Gale configuration @@ -14559,7 +14558,7 @@ index ba2c1672a018dbd0a179e71f7166fb9df87782dd..45adf5a7c46ee4e3a06e62fbbb225481 this.generator = gen; this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); -@@ -1908,4 +1954,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1909,4 +1955,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end - optimize redstone (Alternate Current) @@ -16956,7 +16955,7 @@ index 9d93130f23addb18b97d7f5ec013faef17a74529..29d2fb87a65778926aea2cfc7a5b486c + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 32002eb8b7fd81ef1d0e2ca79292ccb1354b3b02..c10ad40f02009006552691642c057b328904f4b8 100644 +index 4cd21c40653dae6bb7ee145a67b5c849bd4f3093..14379b1d2e53abdc57edf2bcd25c3248463ab442 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -409,6 +409,20 @@ public final class CraftServer implements Server { @@ -17004,7 +17003,7 @@ index 32002eb8b7fd81ef1d0e2ca79292ccb1354b3b02..c10ad40f02009006552691642c057b32 this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1576,6 +1593,55 @@ public final class CraftServer implements Server { +@@ -1577,6 +1594,55 @@ public final class CraftServer implements Server { return true; } @@ -17060,7 +17059,7 @@ index 32002eb8b7fd81ef1d0e2ca79292ccb1354b3b02..c10ad40f02009006552691642c057b32 @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3046,6 +3112,18 @@ public final class CraftServer implements Server { +@@ -3047,6 +3113,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -17079,7 +17078,7 @@ index 32002eb8b7fd81ef1d0e2ca79292ccb1354b3b02..c10ad40f02009006552691642c057b32 @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3328,4 +3406,15 @@ public final class CraftServer implements Server { +@@ -3329,4 +3407,15 @@ public final class CraftServer implements Server { } // Gale end - YAPFA - last tick time - API @@ -17476,7 +17475,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..5c1cda88080850314dac196dbe71ff12 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index aa351df679f300018367244c7ccb3e5a59e9276f..b452ebbe11145987fb5e66b39993898457322080 100644 +index 2d4e49f386be35ee8912c1bca38f74b8d8926f3a..9060380754e5553b1628f17402bcb80ba9042fae 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -505,7 +505,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0012-Fix-Pufferfish-and-Purpur-patches.patch b/patches/server/0012-Fix-Pufferfish-and-Purpur-patches.patch index 986de404..6586bf0e 100644 --- a/patches/server/0012-Fix-Pufferfish-and-Purpur-patches.patch +++ b/patches/server/0012-Fix-Pufferfish-and-Purpur-patches.patch @@ -112,10 +112,10 @@ index b9d9ef327753272a537bebccc54d9fbc16ed3bdc..f8d11853af6bfc08d1bd8a0f537fd576 j = this.levelData.getDayTime() + 24000L; TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (j - j % 24000L) - this.getDayTime()); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a1fae61c8d238b06915037eacec2cb0943e8d996..47928af7b85543fe74ad7272286df4e8b1921426 100644 +index b96be9429a43439e27558d6f945d7c11fffa6b73..b152cf0c89e735470ea61b4bb0d88f3467f1a8d0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -568,13 +568,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -567,13 +567,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur start - copied from Mob @@ -148,7 +148,7 @@ index a1fae61c8d238b06915037eacec2cb0943e8d996..47928af7b85543fe74ad7272286df4e8 return true; } } -@@ -891,7 +907,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -890,7 +906,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void tick() { // Pufferfish start - entity TTL if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) { @@ -158,7 +158,7 @@ index a1fae61c8d238b06915037eacec2cb0943e8d996..47928af7b85543fe74ad7272286df4e8 } // Pufferfish end - entity TTL diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d06c5d16d312187b6a53c8995d524c0ec2d9f921..d55d869f0a389d58d001e59e26b1b5912b5c94a8 100644 +index 335de9b1272eab2428a45de35f820f93d0dbc314..d112423b368ccfd2041974aac0274564eefa6010 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1068,17 +1068,19 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -186,7 +186,7 @@ index d06c5d16d312187b6a53c8995d524c0ec2d9f921..d55d869f0a389d58d001e59e26b1b591 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 1f787798b6d557a2379546f9a4910a7e7a12b178..6264d70f45be0aaee26c0ed0478228ceb36614d0 100644 +index 3a9ab3be32524b4e84588880a4055786410fdd0f..e4c8a9571bccbdad7e4f369e50a79a1423b3d15e 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -747,7 +747,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti diff --git a/patches/server/0015-Remove-Timings.patch b/patches/server/0015-Remove-Timings.patch index 4ed6fa24..a4f38e29 100644 --- a/patches/server/0015-Remove-Timings.patch +++ b/patches/server/0015-Remove-Timings.patch @@ -1715,10 +1715,10 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..ac67dd7a30616fe70f73426e332972b7 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 45adf5a7c46ee4e3a06e62fbbb22548175359180..99a8f683bdd5c89db7caff161ef0d23b351cc7b4 100644 +index 8be636ef55f8f2cb0ed1edad42156b742281b044..e77db67592e13a06133cafb364f227686fcc336b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -176,7 +176,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -177,7 +177,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur @@ -1726,7 +1726,7 @@ index 45adf5a7c46ee4e3a06e62fbbb22548175359180..99a8f683bdd5c89db7caff161ef0d23b public static BlockPos lastPhysicsProblem; // Spigot private org.spigotmc.TickLimiter entityLimiter; private org.spigotmc.TickLimiter tileLimiter; -@@ -352,7 +351,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -353,7 +352,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public void onBorderSetDamageSafeZOne(WorldBorder border, double safeZoneRadius) {} }); // CraftBukkit end @@ -1734,7 +1734,7 @@ index 45adf5a7c46ee4e3a06e62fbbb22548175359180..99a8f683bdd5c89db7caff161ef0d23b this.entityLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.entityMaxTickTime); this.tileLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.tileMaxTickTime); this.chunkPacketBlockController = this.paperConfig().anticheat.antiXray.enabled ? new com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray(this, executor) : com.destroystokyo.paper.antixray.ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray -@@ -1317,15 +1315,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1318,15 +1316,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1750,7 +1750,7 @@ index 45adf5a7c46ee4e3a06e62fbbb22548175359180..99a8f683bdd5c89db7caff161ef0d23b // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1354,9 +1349,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1355,9 +1350,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -1819,7 +1819,7 @@ index 8dc1436fe78759cee5247cc28e8a18999e738a1b..ce3cc2d4b8cdfae98c02e03f7290c611 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public CraftPersistentDataContainer persistentDataContainer; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 35147d7a6649708c2b068065eb44831f40c3ab8e..1a2ef85cd8a62824b23f4212a5e2a70ce89e344f 100644 +index f2a1787ba10bcb67ad5a2a36165bac55ea7f0a3e..184b69dc39749734f8176d3f3c2bf9f690a099f0 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java @@ -792,7 +792,6 @@ public class LevelChunk extends ChunkAccess { @@ -1862,7 +1862,7 @@ index 35147d7a6649708c2b068065eb44831f40c3ab8e..1a2ef85cd8a62824b23f4212a5e2a70c @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c10ad40f02009006552691642c057b328904f4b8..97890866386b382e131e624011ad16cce413a752 100644 +index 14379b1d2e53abdc57edf2bcd25c3248463ab442..a3e90368e1e34c08508a54fc8c279f12b2bf763e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -472,7 +472,6 @@ public final class CraftServer implements Server { diff --git a/patches/server/0030-Leaves-Server-Utils.patch b/patches/server/0030-Leaves-Server-Utils.patch index 143a21d5..d22b27f4 100644 --- a/patches/server/0030-Leaves-Server-Utils.patch +++ b/patches/server/0030-Leaves-Server-Utils.patch @@ -9,10 +9,10 @@ Original project: https://github.com/LeavesMC/Leaves Commit: 87bfa2d2bbc597c8351ec8776b14c5a6166ed01c diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 47928af7b85543fe74ad7272286df4e8b1921426..638709c6393cb7f3ca4e3328b50ae8c0294953e1 100644 +index b152cf0c89e735470ea61b4bb0d88f3467f1a8d0..1da09a313f73c35be5b1b46da6b489a599f745f4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -431,6 +431,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -430,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean activatedPriorityReset = false; // Pufferfish - DAB public int activatedPriority = org.dreeam.leaf.config.modules.opt.DynamicActivationofBrain.maximumActivationPrio; // Pufferfish - DAB (golf score) public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API @@ -20,7 +20,7 @@ index 47928af7b85543fe74ad7272286df4e8b1921426..638709c6393cb7f3ca4e3328b50ae8c0 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -2627,6 +2628,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2626,6 +2627,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); } // Purpur end @@ -28,7 +28,7 @@ index 47928af7b85543fe74ad7272286df4e8b1921426..638709c6393cb7f3ca4e3328b50ae8c0 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2779,6 +2781,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2778,6 +2780,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess immuneToFire = nbt.getBoolean("Purpur.FireImmune"); } // Purpur end @@ -40,7 +40,7 @@ index 47928af7b85543fe74ad7272286df4e8b1921426..638709c6393cb7f3ca4e3328b50ae8c0 } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -5223,4 +5230,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5222,4 +5229,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // Purpur end diff --git a/patches/server/0043-Optimize-Minecart-collisions.patch b/patches/server/0043-Optimize-Minecart-collisions.patch index 5d9cd313..b19b502f 100644 --- a/patches/server/0043-Optimize-Minecart-collisions.patch +++ b/patches/server/0043-Optimize-Minecart-collisions.patch @@ -75,10 +75,10 @@ index e7a1ce585c9e552e6f9ce9acd26fdfe5c43e0b5d..f9ae853fa762f103cfc6d7ad6f975ce0 this.updateInWaterStateAndDoFluidPushing(); if (this.isInLava()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 99a8f683bdd5c89db7caff161ef0d23b351cc7b4..04bef9b8d5551bc76f4be593b92f5bcf5521a4fd 100644 +index e77db67592e13a06133cafb364f227686fcc336b..968186bef3ff92cfdc23241d67233407b629263e 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1562,12 +1562,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1563,12 +1563,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return this.getChunk(chunkX, chunkZ, ChunkStatus.FULL, false); } diff --git a/patches/server/0044-Reduce-canSee-work.patch b/patches/server/0044-Reduce-canSee-work.patch index 6c5231b4..20c1c05a 100644 --- a/patches/server/0044-Reduce-canSee-work.patch +++ b/patches/server/0044-Reduce-canSee-work.patch @@ -7,10 +7,10 @@ Co-authored by: Martijn Muijsers Co-authored by: MachineBreaker diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 04bef9b8d5551bc76f4be593b92f5bcf5521a4fd..9342c3d4d9d1c5afadceb3a257734e6b4fa17504 100644 +index 968186bef3ff92cfdc23241d67233407b629263e..25e93a0a58b0ecf02f2669fc8f01ef2f2f938dc7 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -379,17 +379,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -380,17 +380,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable { for (int i = 0, len = entities.size(); i < len; ++i) { Entity entity = entities.get(i); diff --git a/patches/server/0052-Plazma-Add-missing-purpur-configuration-options.patch b/patches/server/0052-Plazma-Add-missing-purpur-configuration-options.patch index c6295bd7..5bef8c01 100644 --- a/patches/server/0052-Plazma-Add-missing-purpur-configuration-options.patch +++ b/patches/server/0052-Plazma-Add-missing-purpur-configuration-options.patch @@ -194,7 +194,7 @@ index 3102be6066b0a8065cc0c80b5c4a5d369dc35b72..7feb830447da1f487de66d1dba1c1d1f super.customServerAiStep(); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java -index b04f7ce0805453f6c737fa9dc11c4129ca64e934..7ee2e841b364928620f36bd65b39aab354f9051e 100644 +index e0aec3b3e04d603dc208029554f981c6b9e6b43e..8d45048622be6b85bf9f31badd71cd9364c41f0b 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java @@ -45,7 +45,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @@ -206,7 +206,7 @@ index b04f7ce0805453f6c737fa9dc11c4129ca64e934..7ee2e841b364928620f36bd65b39aab3 } public ChestBoat(Level world, double d0, double d1, double d2) { -@@ -172,7 +172,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain +@@ -170,7 +170,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @Override public int getContainerSize() { diff --git a/patches/server/0060-Fix-MC-2025.patch b/patches/server/0060-Fix-MC-2025.patch index cd3161be..ac83b20e 100644 --- a/patches/server/0060-Fix-MC-2025.patch +++ b/patches/server/0060-Fix-MC-2025.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-2025 Mojang issues: https://bugs.mojang.com/browse/MC-2025 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 638709c6393cb7f3ca4e3328b50ae8c0294953e1..386fd36c56787966537df63337534c039e6858d0 100644 +index 1da09a313f73c35be5b1b46da6b489a599f745f4..a1af147bdf54a5001a8c65c97f309a2a4ec71567 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2629,6 +2629,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2628,6 +2628,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end nbttagcompound.put("Leaves.Data", leavesData); // Leaves - leaves ex data @@ -26,7 +26,7 @@ index 638709c6393cb7f3ca4e3328b50ae8c0294953e1..386fd36c56787966537df63337534c03 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2706,6 +2716,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2705,6 +2715,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.reapplyPosition(); } diff --git a/patches/server/0062-Including-5s-in-getTPS.patch b/patches/server/0062-Including-5s-in-getTPS.patch index cdc326bf..3a15af54 100644 --- a/patches/server/0062-Including-5s-in-getTPS.patch +++ b/patches/server/0062-Including-5s-in-getTPS.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS() diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index a5a7a5fc506c0ca094f37d26b2b27192d09a0a66..6828fee616a77c9816851a29da1cee4921c11d5c 100644 +index 88bc9033981662e8ba62b833eac2a0301ab504da..15208e87f583f2670fa4b2ffcef2a6c774f2ef6f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3153,6 +3153,8 @@ public final class CraftServer implements Server { +@@ -3154,6 +3154,8 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { diff --git a/patches/server/0066-Improve-Purpur-AFK-system.patch b/patches/server/0066-Improve-Purpur-AFK-system.patch index 028d5fe5..36f3344a 100644 --- a/patches/server/0066-Improve-Purpur-AFK-system.patch +++ b/patches/server/0066-Improve-Purpur-AFK-system.patch @@ -9,7 +9,7 @@ AFK command & command cooldown AFK title message diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index c0bd91b1cab7066f9582d2c734f61ee50e76098d..13d066f4d0c115445b807db22d365ad14926b734 100644 +index 00a9348b4585d9e69364e0d1ac88a59f43ebeee6..21f1b80794e2234c7fe34959ca03190617659bb0 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -250,6 +250,7 @@ public class Commands { @@ -21,10 +21,10 @@ index c0bd91b1cab7066f9582d2c734f61ee50e76098d..13d066f4d0c115445b807db22d365ad1 org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 3bbb3b5444976c859d7f357aa4283947b45f3100..cc9f8e8f871b64028351e4d061b7f01d1b9ca0be 100644 +index 9b97d5ca67c0e53f318a54465708e21ae906e994..0e772d847d9a9b4000bcb9547f07663f17d9f2a4 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2369,6 +2369,8 @@ public class ServerPlayer extends Player { +@@ -2370,6 +2370,8 @@ public class ServerPlayer extends Player { // Purpur Start private boolean isAfk = false; @@ -33,7 +33,7 @@ index 3bbb3b5444976c859d7f357aa4283947b45f3100..cc9f8e8f871b64028351e4d061b7f01d @Override public void setAfk(boolean afk) { -@@ -2406,6 +2408,9 @@ public class ServerPlayer extends Player { +@@ -2407,6 +2409,9 @@ public class ServerPlayer extends Player { String prefix = (split.length > 0 ? split[0] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListPrefix, ""); String suffix = (split.length > 1 ? split[1] : "").replace(org.purpurmc.purpur.PurpurConfig.afkTabListSuffix, ""); if (afk) { @@ -44,7 +44,7 @@ index 3bbb3b5444976c859d7f357aa4283947b45f3100..cc9f8e8f871b64028351e4d061b7f01d } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index cc9c30b8555e0509162a82c4a01de9fc51ba59af..7830e21dce33ad389441227d728750606dcd3c56 100644 +index 01fe83e04ed8ce8d91dad5feffe164346fa8a13e..4300ba74bd91e3229c8721d4b2c160eaa9f8a456 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2254,8 +2254,34 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0072-Matter-Secure-Seed.patch b/patches/server/0072-Matter-Secure-Seed.patch index d6a4ba48..53e25b76 100644 --- a/patches/server/0072-Matter-Secure-Seed.patch +++ b/patches/server/0072-Matter-Secure-Seed.patch @@ -205,7 +205,7 @@ index 927bdebdb8ae01613f0cea074b3367bd7ffe9ab1..652e471c85cc12e934958103f7ce203a StructureSet.StructureSelectionEntry structureset_a1; diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java -index a6b6e5ea191c0e2cd7a2e4f01b89d8af40a83c1b..6acf180e65e8a30e71e2c472ce34b63998e5a458 100644 +index 713fced29fbd819ee6f151c7f3e462f58a21d5e6..46bb51933ca8977a263872058e4bed071f622235 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGeneratorStructureState.java @@ -39,6 +39,11 @@ import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStruct @@ -581,7 +581,7 @@ index 82b4bd669c57b18fb0b443bcd94495023cd5a528..2d336a8bb12e9e41b717caf883d39de1 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index b56ba8d477a86dc983a2170f99fa29bb7472a081..1d84882a613fd3d602df0eccd27e1b0381aaadd4 100644 +index 15208e87f583f2670fa4b2ffcef2a6c774f2ef6f..4b00b6d66ebe578778e103335747183b9e44c94c 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -266,6 +266,10 @@ import net.md_5.bungee.api.chat.BaseComponent; // Spigot @@ -595,7 +595,7 @@ index b56ba8d477a86dc983a2170f99fa29bb7472a081..1d84882a613fd3d602df0eccd27e1b03 public final class CraftServer implements Server { private final String serverName = io.papermc.paper.ServerBuildInfo.buildInfo().brandName(); // Paper private final String serverVersion; -@@ -1362,7 +1366,7 @@ public final class CraftServer implements Server { +@@ -1363,7 +1367,7 @@ public final class CraftServer implements Server { iregistrycustom_dimension = leveldataanddimensions.dimensions().dimensionsRegistryAccess(); } else { LevelSettings worldsettings; diff --git a/patches/server/0078-Don-t-save-primed-tnt-entity.patch b/patches/server/0077-Don-t-save-primed-tnt-entity.patch similarity index 100% rename from patches/server/0078-Don-t-save-primed-tnt-entity.patch rename to patches/server/0077-Don-t-save-primed-tnt-entity.patch diff --git a/patches/server/0077-Skip-null-banner-pattern.patch b/patches/server/0077-Skip-null-banner-pattern.patch deleted file mode 100644 index a468e5ea..00000000 --- a/patches/server/0077-Skip-null-banner-pattern.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> -Date: Thu, 9 May 2024 20:30:32 -0400 -Subject: [PATCH] Skip null banner pattern - -Try to fix https://github.com/PaperMC/Paper/issues/10677 -And waiting https://github.com/PaperMC/Paper/pull/10740 - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -index 6a3b0c7f0cc3ffb17a231383ad103fa792d7b7ba..3286a2a485dab1fb35910ffa350b1d85fde3ad80 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java -@@ -79,6 +79,7 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta { - List patterns = entityTag.layers(); - for (int i = 0; i < Math.min(patterns.size(), 20); i++) { - BannerPatternLayers.Layer p = patterns.get(i); -+ if (p.pattern() == null || p.pattern().value() == null) continue; // Leaf - Skip null banner pattern - DyeColor color = DyeColor.getByWoolData((byte) p.color().getId()); - PatternType pattern = CraftPatternType.minecraftHolderToBukkit(p.pattern()); - diff --git a/patches/server/0079-Don-t-save-falling-block-entity.patch b/patches/server/0078-Don-t-save-falling-block-entity.patch similarity index 100% rename from patches/server/0079-Don-t-save-falling-block-entity.patch rename to patches/server/0078-Don-t-save-falling-block-entity.patch