From 359beb44876591e93dfec57afbd13e75a43891ea Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sun, 8 Mar 2015 04:52:37 -0500 Subject: [PATCH] PaperSpigot TNT Changes PaperSpigot communal TNT modification patch Original authors for individual changes are listed w/in PaperSpigotWorldConfig diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java index 1daba4e..dd1ad68 100644 --- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java +++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java @@ -36,6 +36,12 @@ public class EntityTNTPrimed extends Entity { this.lastY = d1; this.lastZ = d2; this.source = entityliving; + + // PaperSpigot start - Fix TNT directional bias + if (this.world.paperSpigotConfig.fixTNTDirectionBias) { + this.motX = this.motZ = 0; + } + // PaperSpigot end } protected void h() {} @@ -63,6 +69,12 @@ public class EntityTNTPrimed extends Entity { } // PaperSpigot end + // PaperSpigot start - Configurable TNT Height Limit + if (this.world.paperSpigotConfig.tntHeightLimit != 0 && this.locY > this.world.paperSpigotConfig.tntHeightLimit) { + this.die(); + } + // PaperSpigot end + this.motX *= 0.9800000190734863D; this.motY *= 0.9800000190734863D; this.motZ *= 0.9800000190734863D; @@ -97,7 +109,15 @@ public class EntityTNTPrimed extends Entity { server.getPluginManager().callEvent(event); if (!event.isCancelled()) { - this.world.createExplosion(this, this.locX, this.locY + (double) (this.length / 2.0F), this.locZ, event.getRadius(), event.getFire(), true); + // PaperSpigot start - Configurable legacy TNT explosion height + double locY = this.locY; + + if (!this.world.paperSpigotConfig.legacyTNTExplosionHeight) { + locY += this.length / 2.0F; + } + + this.world.createExplosion(this, this.locX, locY, this.locZ, event.getRadius(), event.getFire(), true); + // PaperSpigot end } // CraftBukkit end } @@ -132,4 +152,12 @@ public class EntityTNTPrimed extends Entity { public float getHeadHeight() { return 0.0F; } + + /** + * PaperSpigot - Configurable TNT water movement + */ + @Override + public boolean aL() { + return world.paperSpigotConfig.tntMovesInWater; + } } diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java index a6d8532..ceb5e64 100644 --- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java @@ -192,4 +192,35 @@ public class PaperSpigotWorldConfig { netherVoidTopDamage = getBoolean( "nether-ceiling-void-damage", false ); } + + public boolean fixTNTDirectionBias; + public boolean tntMovesInWater; + public boolean legacyTNTExplosionHeight; + public int tntHeightLimit; + private void tntChanges() + { + // Original Authors: Iceee + fixTNTDirectionBias = getBoolean( "tnt-gameplay.fix-directional-bias", false ); + // Original Author: Byteflux + tntMovesInWater = getBoolean( "tnt-gameplay.moves-in-water", true ); + // Original Author: Byteflux + legacyTNTExplosionHeight = getBoolean( "tnt-gameplay.legacy-explosion-height", false ); + // Original Author: Somebody \o/ + tntHeightLimit = getInt( "tnt-gameplay.tnt-entity-height-limit", 0 ); + + log( "Fix TNT directional bias: " + fixTNTDirectionBias ); + log( "TNT moves in water: " + tntMovesInWater ); + log( "Use legacy TNT explosion height " + legacyTNTExplosionHeight ); + if ( tntHeightLimit != 0 ) { + log( "TNT height limit set at " + tntHeightLimit ); + } else { + log( "TNT height limit disabled" ); + } + if (PaperSpigotConfig.version < 7) { + System.err.println( "==========================================" ); + System.err.println( " Many TNT Related Settings Have Moved " ); + System.err.println( " Please check your config in paper.yml! " ); + System.err.println( "==========================================" ); + } + } } -- 1.9.1