Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: ccb9614e #548: LivingEntity - add methods for getting/setting invisibility CraftBukkit Changes: f8d4da08 #743: LivingEntity - add methods for getting/setting invisibility Spigot Changes: 17d78dbd Rebuild patches
77 lines
3.9 KiB
Diff
77 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Byteflux <byte@byteflux.net>
|
|
Date: Tue, 1 Mar 2016 14:14:15 -0600
|
|
Subject: [PATCH] Drop falling block and tnt entities at the specified height
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 8ee2b9bb1bce698fce50ac1b3fc477fcafd0542c..d59b82b7bb1f6d1b231f4e394e0a67a3d154d7be 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -119,4 +119,14 @@ public class PaperWorldConfig {
|
|
keepSpawnInMemory = getBoolean("keep-spawn-loaded", true);
|
|
log("Keep spawn chunk loaded: " + keepSpawnInMemory);
|
|
}
|
|
+
|
|
+ public int fallingBlockHeightNerf;
|
|
+ public int entityTNTHeightNerf;
|
|
+ private void heightNerfs() {
|
|
+ fallingBlockHeightNerf = getInt("falling-block-height-nerf", 0);
|
|
+ entityTNTHeightNerf = getInt("tnt-entity-height-nerf", 0);
|
|
+
|
|
+ if (fallingBlockHeightNerf != 0) log("Falling Block Height Limit set to Y: " + fallingBlockHeightNerf);
|
|
+ if (entityTNTHeightNerf != 0) log("TNT Entity Height Limit set to Y: " + entityTNTHeightNerf);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index f44048171d70f183f0bbdfb835211fba6da73cb4..d8766f302ed6512d3b4e8bb6508a71e5c8910b54 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1765,6 +1765,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
return this.a(itemstack, 0.0F);
|
|
}
|
|
|
|
+ @Nullable public final EntityItem dropItem(ItemStack itemstack, float offset) { return this.a(itemstack, offset); } // Paper - OBFHELPER
|
|
@Nullable
|
|
public EntityItem a(ItemStack itemstack, float f) {
|
|
if (itemstack.isEmpty()) {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
index 53f49e76fe54392b4bb905b6990835820397877d..fbb795ac767fee6d88cfa9f7f17c6a1f89bbbf2d 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
@@ -85,6 +85,17 @@ public class EntityFallingBlock extends Entity {
|
|
}
|
|
|
|
this.move(EnumMoveType.SELF, this.getMot());
|
|
+
|
|
+ // Paper start - Configurable EntityFallingBlock height nerf
|
|
+ if (this.world.paperConfig.fallingBlockHeightNerf != 0 && this.locY() > this.world.paperConfig.fallingBlockHeightNerf) {
|
|
+ if (this.dropItem && this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) {
|
|
+ this.a(block);
|
|
+ }
|
|
+
|
|
+ this.die();
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
if (!this.world.isClientSide) {
|
|
blockposition = this.getChunkCoordinates();
|
|
boolean flag = this.block.getBlock() instanceof BlockConcretePowder;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
index ea4ecd9833c33cf3bf0257030f63d0c1693ad9ff..71404a34d27dd7771ea1145085a6a6e4dc7589b0 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
@@ -54,6 +54,12 @@ public class EntityTNTPrimed extends Entity {
|
|
}
|
|
|
|
this.move(EnumMoveType.SELF, this.getMot());
|
|
+ // Paper start - Configurable TNT entity height nerf
|
|
+ if (this.world.paperConfig.entityTNTHeightNerf != 0 && this.locY() > this.world.paperConfig.entityTNTHeightNerf) {
|
|
+ this.die();
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
this.setMot(this.getMot().a(0.98D));
|
|
if (this.onGround) {
|
|
this.setMot(this.getMot().d(0.7D, -0.5D, 0.7D));
|