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 06f6fe4d1be4b14c45d2576561201c9386988dc1..eacb8a407fe99af2c13f23c12b5544696bda8890 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -63,6 +63,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); @@ -177,7 +178,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); } @@ -323,6 +324,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 } @@ -357,6 +359,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) {