diff --git a/patches/server/0020-PlayerLoadStatsEvent.patch b/patches/server/0020-PlayerLoadStatsEvent.patch index df1f0e1fe..04a7c0349 100644 --- a/patches/server/0020-PlayerLoadStatsEvent.patch +++ b/patches/server/0020-PlayerLoadStatsEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] PlayerLoadStatsEvent diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 98290d00c4f472afa5d6db4d6bfd99c30086ceb0..88080493c2b97a2199fad3bd8605bca8bd0bcff8 100644 +index 2d6a0e30e47e4df22fd9aba1aca0f1f0d03740d2..f2658cb7540a4e2a575bf935de278dd06a820f59 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1489,7 +1489,7 @@ public abstract class PlayerList { +@@ -1495,7 +1495,7 @@ public abstract class PlayerList { } } diff --git a/patches/server/0031-Equipment-Packet-Caching.patch b/patches/server/0030-Equipment-Packet-Caching.patch similarity index 78% rename from patches/server/0031-Equipment-Packet-Caching.patch rename to patches/server/0030-Equipment-Packet-Caching.patch index 051512026..e252af544 100644 --- a/patches/server/0031-Equipment-Packet-Caching.patch +++ b/patches/server/0030-Equipment-Packet-Caching.patch @@ -24,45 +24,11 @@ index 5a8f850b447fc3a4bd0eb0c505bbdfc8be7115e8..34d74735b7a7d258c6bd14bb7e540693 public ClientboundSetEquipmentPacket(FriendlyByteBuf buf) { this.entity = buf.readVarInt(); EquipmentSlot[] equipmentSlots = EquipmentSlot.values(); -diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..248a4af1b9c6684502570c879efae20a36558414 100644 ---- a/src/main/java/net/minecraft/server/level/ServerEntity.java -+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -325,27 +325,8 @@ public class ServerEntity { - sender.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); - } - -- if (this.entity instanceof LivingEntity) { -- List> list = Lists.newArrayList(); -- EquipmentSlot[] aenumitemslot = EquipmentSlot.values(); -- int i = aenumitemslot.length; -- -- for (int j = 0; j < i; ++j) { -- EquipmentSlot enumitemslot = aenumitemslot[j]; -- ItemStack itemstack = ((LivingEntity) this.entity).getItemBySlot(enumitemslot); -- -- if (!itemstack.isEmpty()) { -- // Paper start - prevent oversized data -- final ItemStack sanitized = LivingEntity.sanitizeItemStack(itemstack.copy(), false); -- list.add(Pair.of(enumitemslot, ((LivingEntity) this.entity).stripMeta(sanitized, false))); // Paper - remove unnecessary item meta -- // Paper end -- } -- } -- -- if (!list.isEmpty()) { -- sender.accept(new ClientboundSetEquipmentPacket(this.entity.getId(), list)); -- } -- ((LivingEntity) this.entity).detectEquipmentUpdatesPublic(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending -+ if (this.entity instanceof LivingEntity livingEntity) { -+ livingEntity.sendEquipment(sender, player); // Slice - } - - if (!this.entity.getPassengers().isEmpty()) { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 1625dea60a5880b04b34d36732370e65ab86e528..e7d7d2db99cac771ebf20755911ed8e78df93af1 100644 +index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f04512c5d9db7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -263,6 +263,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -262,6 +262,8 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper @@ -71,7 +37,7 @@ index 1625dea60a5880b04b34d36732370e65ab86e528..e7d7d2db99cac771ebf20755911ed8e7 @Override public float getBukkitYaw() { -@@ -3105,6 +3107,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3110,6 +3112,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (map != null) { this.handleHandSwap(map); if (!map.isEmpty()) { @@ -79,7 +45,7 @@ index 1625dea60a5880b04b34d36732370e65ab86e528..e7d7d2db99cac771ebf20755911ed8e7 this.handleEquipmentChanges(map); } } -@@ -3197,7 +3200,25 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3202,7 +3205,25 @@ public abstract class LivingEntity extends Entity implements Attackable { } }); @@ -106,7 +72,7 @@ index 1625dea60a5880b04b34d36732370e65ab86e528..e7d7d2db99cac771ebf20755911ed8e7 } // Paper start - hide unnecessary item meta -@@ -4531,4 +4552,74 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4543,4 +4564,74 @@ public abstract class LivingEntity extends Entity implements Attackable { public static record Fallsounds(SoundEvent small, SoundEvent big) { } @@ -182,10 +148,10 @@ index 1625dea60a5880b04b34d36732370e65ab86e528..e7d7d2db99cac771ebf20755911ed8e7 + // Slice end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 030fd330b13197d752a2d4c48628b9efd2c2c776..ecb39b5d3b8c96bb019fdd5b4977f7e22a8ebdcc 100644 +index 1f1ef68a9a449a4a90c284f34a397ab4b6d905f6..3efaa46456a38eac7431552f92761ed1c9b76f5f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1099,4 +1099,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1118,4 +1118,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0030-Shared-Data-Storage.patch b/patches/server/0030-Shared-Data-Storage.patch deleted file mode 100644 index 9151a6f23..000000000 --- a/patches/server/0030-Shared-Data-Storage.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Mon, 12 Jun 2023 14:09:36 -0500 -Subject: [PATCH] Shared Data Storage - - -diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index a6f58b3457b7477015c5c6d969e7d83017dd3fa1..7f2070bd2d7eb7f0256a96df00103d20c45e65a0 100644 ---- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -331,6 +331,7 @@ public class GlobalConfiguration extends ConfigurationPart { - public boolean useDimensionTypeForCustomSpawners = false; - public boolean strictAdvancementDimensionCheck = false; - public IntOr.Default compressionLevel = IntOr.Default.USE_DEFAULT; -+ public String sharedDataFolder = ""; // Slice - } - - public BlockUpdates blockUpdates; -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index d91ad3622592ece58877f975cdcbf984e61219d7..67a16d32e73099b5b6e1e406341fc6b982cceaa6 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -2,6 +2,7 @@ package net.minecraft.server; - - import com.google.common.base.Preconditions; - import com.google.common.base.Splitter; -+import com.google.common.base.Strings; - import com.google.common.collect.ImmutableList; - import co.aikar.timings.Timings; - import com.destroystokyo.paper.event.server.PaperServerListPingEvent; -@@ -308,6 +309,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { - AtomicReference atomicreference = new AtomicReference(); -@@ -407,6 +409,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop factory = MapItemSavedData.factory(); - final MapItemSavedData map = storage.readSavedData(factory.deserializer(), factory.type(), id); -- storage.cache.put(id, map); - if (map != null) { -+ storage.cache.put(id, map); - map.id = id; - new MapInitializeEvent(map.mapView).callEvent(); - return map; -@@ -2123,12 +2123,22 @@ public class ServerLevel extends Level implements WorldGenLevel { - @Override - public void setMapData(String id, MapItemSavedData state) { - state.id = id; // CraftBukkit -- this.getServer().overworld().getDataStorage().set(id, state); -+ this.getServer().getMapDataStorage().set(id, state); // Slice - } - - @Override - public int getFreeMapId() { -- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex.factory(), "idcounts")).getFreeAuxValueForMap(); -+ // Slice start -+ DimensionDataStorage storage = this.getServer().getMapDataStorage(); -+ MapIndex mapIndex = storage.get(MapIndex.factory(), "idcounts"); -+ if (mapIndex == null) { -+ mapIndex = new MapIndex(); -+ } -+ int newId = mapIndex.getFreeAuxValueForMap(); -+ storage.set("idcounts", mapIndex); -+ storage.save(); -+ return newId; -+ // Slice end - } - - // Paper start - helper function for configurable spawn radius diff --git a/patches/server/0032-Add-canDespawn-to-Warden.patch b/patches/server/0031-Add-canDespawn-to-Warden.patch similarity index 88% rename from patches/server/0032-Add-canDespawn-to-Warden.patch rename to patches/server/0031-Add-canDespawn-to-Warden.patch index a2130545b..b6e891244 100644 --- a/patches/server/0032-Add-canDespawn-to-Warden.patch +++ b/patches/server/0031-Add-canDespawn-to-Warden.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add canDespawn to Warden diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 73871f456a85bda1e51f54986d0e61fb629822e8..fb0079c527d91e6f6f0ad7ab926418e2fc90c984 100644 +index 940b8d0b89d7e55c938aefbe80ee71b0db3dacb8..ed5521bda42708b22e1128069d7b47d051c3358c 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -589,7 +589,7 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -593,7 +593,7 @@ public class EntityType implements FeatureElement, EntityTypeT }), (entity) -> { entity.load(nbt); }, () -> { @@ -18,10 +18,10 @@ index 73871f456a85bda1e51f54986d0e61fb629822e8..fb0079c527d91e6f6f0ad7ab926418e2 } diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index b2bc3a832c310448046ccde37a04918aa6d63197..a4cef5d81b0eeef933440bc7f96a9a8ef3a5afdf 100644 +index 9f1b7c629644931074293151ed58a523ca6d488c..175d019f65499cf7a5743914d2c0b06f3c081eda 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -111,6 +111,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -112,6 +112,7 @@ public class Warden extends Monster implements VibrationSystem { private final VibrationSystem.User vibrationUser = new Warden.VibrationUser(); private VibrationSystem.Data vibrationData = new VibrationSystem.Data(); AngerManagement angerManagement = new AngerManagement(this::canTargetEntity, Collections.emptyList()); @@ -49,7 +49,7 @@ index 03f16a5541de6bc95407aaa24741570c1993dc9e..07600fdd32a058d0e3f9828efdc18f5e } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java -index 46e3cc146a4b109c4baaf94f42d825646abade68..b248150c047890f45fae75716e40e495752f3732 100644 +index c284eb96a1e330078076cbe61f0f6e2ff4ed89bd..b9ffe3d49f0253353fb2b726f974effe18e521ec 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java @@ -86,4 +86,11 @@ public class CraftWarden extends CraftMonster implements org.bukkit.entity.Warde diff --git a/patches/server/0033-Save-DimensionDataStorage-async.patch b/patches/server/0032-Save-DimensionDataStorage-async.patch similarity index 62% rename from patches/server/0033-Save-DimensionDataStorage-async.patch rename to patches/server/0032-Save-DimensionDataStorage-async.patch index 9a3fb6e3c..f3bba0b8d 100644 --- a/patches/server/0033-Save-DimensionDataStorage-async.patch +++ b/patches/server/0032-Save-DimensionDataStorage-async.patch @@ -4,8 +4,22 @@ Date: Mon, 26 Jun 2023 16:45:00 -0500 Subject: [PATCH] Save DimensionDataStorage async +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index a530dd1b15093803ffb87848f4c28dcf5da6476c..cd6c890c1f1084759d4e75f9c2d869541b974435 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -2137,8 +2137,8 @@ public class ServerLevel extends Level implements WorldGenLevel { + if (existing == null && !storage.cache.containsKey(id)) { + final net.minecraft.world.level.saveddata.SavedData.Factory factory = MapItemSavedData.factory(); + final MapItemSavedData map = storage.readSavedData(factory.deserializer(), factory.type(), id); +- storage.cache.put(id, map); + if (map != null) { ++ storage.cache.put(id, map); + map.id = id; + new MapInitializeEvent(map.mapView).callEvent(); + return map; diff --git a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java -index f921f55e815a4da01828e025881a7a03591c3978..f44dbf56062148ff442141bc0058accc275617b2 100644 +index d051e8c1db6b5c42b8df0be54d9d48ba0e7b0077..f90f7fc66396091bdeb98bc3271b68bca693ee15 100644 --- a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java +++ b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java @@ -9,6 +9,8 @@ import java.io.FileInputStream; @@ -17,7 +31,7 @@ index f921f55e815a4da01828e025881a7a03591c3978..f44dbf56062148ff442141bc0058accc import java.util.function.Function; import javax.annotation.Nullable; import net.minecraft.SharedConstants; -@@ -17,11 +19,12 @@ import net.minecraft.nbt.NbtIo; +@@ -18,11 +20,12 @@ import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtUtils; import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.saveddata.SavedData; @@ -31,7 +45,7 @@ index f921f55e815a4da01828e025881a7a03591c3978..f44dbf56062148ff442141bc0058accc private final DataFixer fixerUpper; private final File dataFolder; -@@ -50,7 +53,7 @@ public class DimensionDataStorage { +@@ -51,7 +54,7 @@ public class DimensionDataStorage { SavedData savedData = this.cache.get(id); if (savedData == null && !this.cache.containsKey(id)) { savedData = this.readSavedData(type.deserializer(), type.type(), id); @@ -40,7 +54,7 @@ index f921f55e815a4da01828e025881a7a03591c3978..f44dbf56062148ff442141bc0058accc } return (T)savedData; -@@ -118,11 +121,12 @@ public class DimensionDataStorage { +@@ -119,11 +122,12 @@ public class DimensionDataStorage { } public void save() { diff --git a/patches/server/0035-Disable-feature-generation.patch b/patches/server/0034-Disable-feature-generation.patch similarity index 98% rename from patches/server/0035-Disable-feature-generation.patch rename to patches/server/0034-Disable-feature-generation.patch index 6b81b98cf..332b79b61 100644 --- a/patches/server/0035-Disable-feature-generation.patch +++ b/patches/server/0034-Disable-feature-generation.patch @@ -150,7 +150,7 @@ index f945fae50983424091b58f83ed14f2e8f2621619..b4c16e355ebadf06b9405c06e2b598e7 + public boolean place(FeaturePlaceContext context) {return false;} } diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java -index 3c474c8fc937df5aebfb063be8109053a91e8bb4..2a36bba04d584fdccbb06dc4991064a245082991 100644 +index 7c252dd2bd314f06703ac9356410c52b21198d12..7a34e16db1b51f4283112c8c99a84322213823fa 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java +++ b/src/main/java/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java @@ -30,103 +30,7 @@ public class MonsterRoomFeature extends Feature { @@ -233,7 +233,7 @@ index 3c474c8fc937df5aebfb063be8109053a91e8bb4..2a36bba04d584fdccbb06dc4991064a2 - - if (ad == 1) { - this.safeSetBlock(worldGenLevel, blockPos4, StructurePiece.reorient(worldGenLevel, blockPos4, Blocks.CHEST.defaultBlockState()), predicate); -- RandomizableContainerBlockEntity.setLootTable(worldGenLevel, randomSource, blockPos4, BuiltInLootTables.SIMPLE_DUNGEON); +- RandomizableContainer.setBlockEntityLootTable(worldGenLevel, randomSource, blockPos4, BuiltInLootTables.SIMPLE_DUNGEON); - break; - } - } diff --git a/patches/server/0037-Change-KeepAlive-interval.patch b/patches/server/0036-Change-KeepAlive-interval.patch similarity index 86% rename from patches/server/0037-Change-KeepAlive-interval.patch rename to patches/server/0036-Change-KeepAlive-interval.patch index d4106be4b..dea3aaf84 100644 --- a/patches/server/0037-Change-KeepAlive-interval.patch +++ b/patches/server/0036-Change-KeepAlive-interval.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Change KeepAlive interval diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 598f807f0d0caac98b81e0e2991f1bd497c4534e..8530ab430704243caafe3ca311e05597f20f5167 100644 +index d28d0ef6105ddeb562ddf31ae9088739856941fc..6a9bbe6b9efd068e4c7a2aec5baa0cb7d481a027 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -202,7 +202,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -215,7 +215,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause } } else { diff --git a/patches/server/0040-ChunkStatusChangeEvent.patch b/patches/server/0038-ChunkStatusChangeEvent.patch similarity index 97% rename from patches/server/0040-ChunkStatusChangeEvent.patch rename to patches/server/0038-ChunkStatusChangeEvent.patch index 366256ef1..2463ff2e5 100644 --- a/patches/server/0040-ChunkStatusChangeEvent.patch +++ b/patches/server/0038-ChunkStatusChangeEvent.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cryptite -Date: Mon, 6 Nov 2023 08:19:45 -0600 +Date: Sun, 22 Oct 2023 08:41:08 -0500 Subject: [PATCH] ChunkStatusChangeEvent diff --git a/patches/server/0038-Light-fix.patch b/patches/server/0038-Light-fix.patch deleted file mode 100644 index 0d301748e..000000000 --- a/patches/server/0038-Light-fix.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Mon, 6 Nov 2023 08:13:50 -0600 -Subject: [PATCH] Light fix - - -diff --git a/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java -index cbedb6f002bc01daa16d349421c4ef04d4bcbcb2..b332eb3e9daf9d04cc2e03979dff9074438d7b0f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java -@@ -800,9 +800,8 @@ public abstract class DelegatedGeneratorAccess implements WorldGenLevel { - return this.handle.setBlock(pos, state, flags); - } - -- @Override - public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) { -- return this.handle.setBlock(pos, state, flags, maxUpdateDepth); -+ return this.handle.setBlock(pos, state, flags, maxUpdateDepth, true); - } - - @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/util/TransformerGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/TransformerGeneratorAccess.java -index b4b297945fb601701aac845d09e88fb74b09c3fa..26aba6fc86f66b38f6b2349df74d9c988a3fed57 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/TransformerGeneratorAccess.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/TransformerGeneratorAccess.java -@@ -89,6 +89,11 @@ public class TransformerGeneratorAccess extends DelegatedGeneratorAccess { - return this.setCraftBlock(pos, (CraftBlockState) CraftBlockStates.getBlockState(pos, state, null), flags, maxUpdateDepth); - } - -+ @Override -+ public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth, boolean checkLight) { -+ return false; -+ } -+ - @Override - public boolean setBlock(BlockPos pos, BlockState state, int flags) { - return this.setBlock(pos, state, flags, 512); diff --git a/patches/server/0039-Do-not-save-Persistent-Entities.patch b/patches/server/0039-Do-not-save-Persistent-Entities.patch deleted file mode 100644 index 65e3508ed..000000000 --- a/patches/server/0039-Do-not-save-Persistent-Entities.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Mon, 6 Nov 2023 08:17:46 -0600 -Subject: [PATCH] Do not save Persistent Entities - - -diff --git a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java -index 7e8dc9e8f381abfdcce2746edc93122d623622d1..985fb335be637190c56d6aed2047ef20fc635b58 100644 ---- a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java -+++ b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java -@@ -118,7 +118,7 @@ public final class ChunkEntitySlices { - // removed by us below - continue; - } -- if (entity.shouldBeSaved()) { -+ if (entity.shouldBeSaved() || !entity.persist) { // Slice - Ensure non-persisting entities are still removed - entity.setRemoved(Entity.RemovalReason.UNLOADED_TO_CHUNK); - if (entity.isVehicle()) { - // we cannot assume that these entities are contained within this chunk, because entities can -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6f60cadb034de8bbe52351a100916879ca98d977..05a883a556d35423b22087f88ca12d252e5081bf 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4756,7 +4756,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - - @Override - public boolean shouldBeSaved() { -- return this.removalReason != null && !this.removalReason.shouldSave() ? false : (this.isPassenger() ? false : !this.isVehicle() || !this.hasAnyPlayerPassengers()); // Paper - rewrite chunk system - it should check if the entity has ANY player passengers -+ return this.persist && this.removalReason != null && !this.removalReason.shouldSave() ? false : (this.isPassenger() ? false : !this.isVehicle() || !this.hasAnyPlayerPassengers()); // Paper - rewrite chunk system - it should check if the entity has ANY player passengers // Slice - add persists check - } - - @Override