From f3a8a0b953a835501d530177e088939c1db48e46 Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Fri, 6 May 2022 11:21:24 -0400 Subject: [PATCH] FallingBlock auto expire setting (#7037) --- ...383-FallingBlock-auto-expire-setting.patch | 34 ++++++++++ ...903-FallingBlock-auto-expire-setting.patch | 68 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 patches/api/0383-FallingBlock-auto-expire-setting.patch create mode 100644 patches/server/0903-FallingBlock-auto-expire-setting.patch diff --git a/patches/api/0383-FallingBlock-auto-expire-setting.patch b/patches/api/0383-FallingBlock-auto-expire-setting.patch new file mode 100644 index 0000000000..90c104c7ce --- /dev/null +++ b/patches/api/0383-FallingBlock-auto-expire-setting.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Sun, 5 Dec 2021 14:58:55 -0500 +Subject: [PATCH] FallingBlock auto expire setting + + +diff --git a/src/main/java/org/bukkit/entity/FallingBlock.java b/src/main/java/org/bukkit/entity/FallingBlock.java +index 14cb0d770561151570ab4399ca5facff43076819..ae8fab2395e56d25227b5877b8648510c73bf948 100644 +--- a/src/main/java/org/bukkit/entity/FallingBlock.java ++++ b/src/main/java/org/bukkit/entity/FallingBlock.java +@@ -65,4 +65,23 @@ public interface FallingBlock extends Entity { + default org.bukkit.Location getSourceLoc() { + return this.getOrigin(); + } ++ // Paper Start - Auto expire setting ++ /** ++ * Sets if this falling block should expire after: ++ * - 30 seconds ++ * - 5 seconds and is outside of the world ++ * ++ * @return if this behavior occurs ++ */ ++ boolean doesAutoExpire(); ++ ++ /** ++ * Sets if this falling block should expire after: ++ * - 30 seconds ++ * - 5 seconds and is outside of the world ++ * ++ * @param autoExpires if this behavior should occur ++ */ ++ void shouldAutoExpire(boolean autoExpires); ++ // Paper End - Auto expire setting + } diff --git a/patches/server/0903-FallingBlock-auto-expire-setting.patch b/patches/server/0903-FallingBlock-auto-expire-setting.patch new file mode 100644 index 0000000000..4f899227c5 --- /dev/null +++ b/patches/server/0903-FallingBlock-auto-expire-setting.patch @@ -0,0 +1,68 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> +Date: Sun, 5 Dec 2021 14:58:17 -0500 +Subject: [PATCH] FallingBlock auto expire setting + + +diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +index 46102c28d10b11ecbafd3dda2de66982eaed8a00..318ea6ebf4c13a984b3815f00bf6cb3856ff6fe0 100644 +--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java ++++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +@@ -61,6 +61,7 @@ public class FallingBlockEntity extends Entity { + @Nullable + public CompoundTag blockData; + protected static final EntityDataAccessor DATA_START_POS = SynchedEntityData.defineId(FallingBlockEntity.class, EntityDataSerializers.BLOCK_POS); ++ public boolean autoExpire = true; // Paper - Auto expire setting + + public FallingBlockEntity(EntityType type, Level world) { + super(type, world); +@@ -175,7 +176,7 @@ public class FallingBlockEntity extends Entity { + } + + if (!this.onGround && !flag1) { +- if (!this.level.isClientSide && (this.time > 100 && (blockposition.getY() <= this.level.getMinBuildHeight() || blockposition.getY() > this.level.getMaxBuildHeight()) || this.time > 600)) { ++ if (!this.level.isClientSide && ((this.time > 100 && autoExpire) && (blockposition.getY() <= this.level.getMinBuildHeight() || blockposition.getY() > this.level.getMaxBuildHeight()) || (this.time > 600 && autoExpire))) { // Paper - Auto expire setting + if (this.dropItem && this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + this.spawnAtLocation((ItemLike) block); + } +@@ -321,6 +322,7 @@ public class FallingBlockEntity extends Entity { + if (this.blockData != null) { + nbt.put("TileEntityData", this.blockData); + } ++ if (!autoExpire) {nbt.putBoolean("Paper.AutoExpire", false);} // Paper - AutoExpire setting + + } + +@@ -367,6 +369,10 @@ public class FallingBlockEntity extends Entity { + int srcZ = nbt.getInt("SourceLoc_z"); + this.setOrigin(new org.bukkit.Location(level.getWorld(), srcX, srcY, srcZ)); + } ++ ++ if (nbt.contains("Paper.AutoExpire")) { ++ this.autoExpire = nbt.getBoolean("Paper.AutoExpire"); ++ } + // Paper end + } + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java +index 0de415236fe9997fc3ffedba20b8df68647cb822..87c413c2f3b59ae9ef36e5becc10b29a81348022 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFallingBlock.java +@@ -58,6 +58,17 @@ public class CraftFallingBlock extends CraftEntity implements FallingBlock { + public void setHurtEntities(boolean hurtEntities) { + this.getHandle().hurtEntities = hurtEntities; + } ++ // Paper Start - Auto expire setting ++ @Override ++ public boolean doesAutoExpire() { ++ return this.getHandle().autoExpire; ++ } ++ ++ @Override ++ public void shouldAutoExpire(boolean autoExpires) { ++ this.getHandle().autoExpire = autoExpires; ++ } ++ // Paper End - Auto expire setting + + @Override + public void setTicksLived(int value) {