diff --git a/build.gradle.kts b/build.gradle.kts index 9a667814d..2b0dfa995 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.5" + id("io.papermc.paperweight.patcher") version "1.5.8" } val paperMavenPublicUrl = "https://papermc.io/repo/repository/maven-public/" diff --git a/patches/api/0020-Non-saveable-entities.patch b/patches/api/0020-Non-saveable-entities.patch new file mode 100644 index 000000000..265dd9d6f --- /dev/null +++ b/patches/api/0020-Non-saveable-entities.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Sat, 21 Oct 2023 11:27:53 -0500 +Subject: [PATCH] Non-saveable entities + + +diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java +index d340ddcf6924cc834455de3acbbac91ab9c66e39..fdbbc12276d302f99cea81629b628b853d088ecf 100644 +--- a/src/main/java/org/bukkit/entity/Entity.java ++++ b/src/main/java/org/bukkit/entity/Entity.java +@@ -1065,4 +1065,19 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent + */ + @NotNull String getScoreboardEntryName(); + // Paper end - entity scoreboard name ++ ++ // Slice start ++ /** ++ * Returns true if the entity can be saved. If false, the entity will never be serialized or saved. ++ */ ++ boolean isSaveable(); ++ ++ /** ++ * Sets whether the entity can be serialized and saved to disk. ++ * ++ * @param saveable the saveable status ++ * @see #isSaveable() ++ */ ++ void setSaveable(boolean saveable); ++ // Slice end + } diff --git a/patches/server/0038-Non-saveable-entities.patch b/patches/server/0038-Non-saveable-entities.patch new file mode 100644 index 000000000..9b9e939ca --- /dev/null +++ b/patches/server/0038-Non-saveable-entities.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Sat, 21 Oct 2023 11:27:52 -0500 +Subject: [PATCH] Non-saveable entities + + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index 119f839051d691ff09805d22b95186cdb38403af..1005d605f77a229665a73763522874161c5e3865 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -417,6 +417,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + public boolean freezeLocked = false; // Paper - Freeze Tick Lock API + public boolean collidingWithWorldBorder; // Paper + public boolean fixedPose = false; // Paper ++ public boolean saveable = true; // Slice + + public void setOrigin(@javax.annotation.Nonnull Location location) { + this.origin = location.toVector(); +diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +index 060e064625969610539dbf969ce773b877a7c579..4bb962f90c80a2fa912e56193ba51b3d320b41d9 100644 +--- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java ++++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +@@ -112,6 +112,8 @@ public class EntityStorage implements EntityPersistentStorage { + ListTag listTag = new ListTag(); + final java.util.Map, Integer> savedEntityCounts = new java.util.HashMap<>(); // Paper + entities.forEach((entity) -> { // diff here: use entities parameter ++ if (!entity.saveable) return; // Slice ++ + // Paper start + final EntityType entityType = entity.getType(); + final int saveLimit = level.paperConfig().chunks.entityPerChunkSaveLimit.getOrDefault(entityType, -1); +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +index 315d8260e196709ed9084272aa640f11e327c0a8..f31def9330245dbb54c246f8a013a3524af5b8e4 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -1523,4 +1523,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + return this.getHandle().getScoreboardName(); + } + // Paper end - entity scoreboard name ++ ++ // Slice start ++ @Override ++ public boolean isSaveable() { ++ return this.entity.saveable; ++ } ++ ++ @Override ++ public void setSaveable(boolean saveable) { ++ this.entity.saveable = saveable; ++ } ++ // Slice end + }