aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOwen <[email protected]>2022-05-06 11:21:24 -0400
committerGitHub <[email protected]>2022-05-06 17:21:24 +0200
commitf3a8a0b953a835501d530177e088939c1db48e46 (patch)
treef8d8716be18d93ec83c147fea9e4069934a62e91
parenta117da6b268fff7213ac7e293e058bedb3ecadec (diff)
downloadPaper-f3a8a0b953a835501d530177e088939c1db48e46.tar.gz
Paper-f3a8a0b953a835501d530177e088939c1db48e46.zip
FallingBlock auto expire setting (#7037)
-rw-r--r--patches/api/0383-FallingBlock-auto-expire-setting.patch34
-rw-r--r--patches/server/0903-FallingBlock-auto-expire-setting.patch68
2 files changed, 102 insertions, 0 deletions
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 <[email protected]>
+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 <[email protected]>
+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<BlockPos> DATA_START_POS = SynchedEntityData.defineId(FallingBlockEntity.class, EntityDataSerializers.BLOCK_POS);
++ public boolean autoExpire = true; // Paper - Auto expire setting
+
+ public FallingBlockEntity(EntityType<? extends FallingBlockEntity> 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) {