Forgotten changelist

This commit is contained in:
Cryptite
2023-12-30 08:04:45 -06:00
parent 25e4980031
commit 409797e02a
10 changed files with 37 additions and 255 deletions

View File

@@ -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 {
}
}

View File

@@ -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<Pair<EquipmentSlot, ItemStack>> 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

View File

@@ -1,129 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
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<TickTa
// Paper start - lag compensation
public static final long SERVER_INIT = System.nanoTime();
// Paper end - lag compensation
+ public @Nullable DimensionDataStorage sharedDataStorage; // Slice
public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) {
AtomicReference<S> atomicreference = new AtomicReference();
@@ -407,6 +409,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.paperConfigurations = services.paperConfigurations(); // Paper
}
+ // Slice start
+ public DimensionDataStorage getMapDataStorage() {
+ return sharedDataStorage != null ? sharedDataStorage : overworld().getDataStorage();
+ }
+ // Slice end
+
private void readScoreboard(DimensionDataStorage persistentStateManager) {
persistentStateManager.computeIfAbsent(this.getScoreboard().dataFactory(), "scoreboard");
}
@@ -873,6 +881,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.isSaving = true;
this.getPlayerList().saveAll(); // Diff on change
flag3 = this.saveAllChunks(suppressLogs, flush, force);
+ if (sharedDataStorage != null) sharedDataStorage.save(); // Slice
} finally {
this.isSaving = false;
}
@@ -1087,6 +1096,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
throw new IllegalStateException("Failed to initialize server");
}
+ // Slice start
+ String sharedDataFolder = io.papermc.paper.configuration.GlobalConfiguration.get().misc.sharedDataFolder;
+ if (!Strings.isNullOrEmpty(sharedDataFolder)) {
+ File sharedDir = new File(sharedDataFolder);
+ sharedDir.mkdirs();
+ this.sharedDataStorage = new DimensionDataStorage(sharedDir, fixerUpper);
+ }
+ // Slice end
+
this.nextTickTime = Util.getMillis();
this.statusIcon = (ServerStatus.Favicon) this.loadStatusIcon().orElse(null); // CraftBukkit - decompile error
this.status = this.buildServerStatus();
@@ -1399,6 +1417,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
level.saveIncrementally(fullSave);
}
}
+ if (sharedDataStorage != null) sharedDataStorage.save(); // Slice
} finally {
this.isSaving = false;
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index aad0d7662d530eaa9256de635401bbcde3263286..f676c0f91cb971317b5d8f3c183544f693475414 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -2102,14 +2102,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
@Override
public MapItemSavedData getMapData(String id) {
// Paper start - Call missing map initialize event & set id
- final DimensionDataStorage storage = this.getServer().overworld().getDataStorage();
+ final DimensionDataStorage storage = this.getServer().getMapDataStorage();
final net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id);
if (existing == null && !storage.cache.containsKey(id)) {
final net.minecraft.world.level.saveddata.SavedData.Factory<MapItemSavedData> 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

View File

@@ -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<T extends Entity> implements FeatureElement, EntityTypeT
@@ -593,7 +593,7 @@ public class EntityType<T extends Entity> 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

View File

@@ -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<MapItemSavedData> 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() {

View File

@@ -150,7 +150,7 @@ index f945fae50983424091b58f83ed14f2e8f2621619..b4c16e355ebadf06b9405c06e2b598e7
+ public boolean place(FeaturePlaceContext<GeodeConfiguration> 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<NoneFeatureConfiguration> {
@@ -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;
- }
- }

View File

@@ -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 {

View File

@@ -1,6 +1,6 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
Date: Mon, 6 Nov 2023 08:19:45 -0600
Date: Sun, 22 Oct 2023 08:41:08 -0500
Subject: [PATCH] ChunkStatusChangeEvent

View File

@@ -1,37 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
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);

View File

@@ -1,32 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cryptite <cryptite@gmail.com>
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