diff options
author | Wesley Wolfe <weswolf@aol.com> | 2013-04-24 03:03:38 -0500 |
---|---|---|
committer | Wesley Wolfe <weswolf@aol.com> | 2013-04-24 03:03:38 -0500 |
commit | 83c3aa188bbde405f584f7b66e4fe5cab90aff35 (patch) | |
tree | 82989bb58a863d2aacc2785319f1d99472863ca4 /src/main/java/net/minecraft/server/EntityEnderDragon.java | |
parent | 708b0e6ae1fc3b545fc423ebe5eb9cdb67be7efb (diff) | |
download | craftbukkit-83c3aa188bbde405f584f7b66e4fe5cab90aff35.tar craftbukkit-83c3aa188bbde405f584f7b66e4fe5cab90aff35.tar.gz craftbukkit-83c3aa188bbde405f584f7b66e4fe5cab90aff35.tar.lz craftbukkit-83c3aa188bbde405f584f7b66e4fe5cab90aff35.tar.xz craftbukkit-83c3aa188bbde405f584f7b66e4fe5cab90aff35.zip |
Rework EntityExplodeEvent. Fixes BUKKIT-4140. Adds BUKKIT-4141
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityEnderDragon.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityEnderDragon.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java index decb9057..e020e7f5 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -34,6 +34,7 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { private Entity bT; public int bR = 0; public EntityEnderCrystal bS = null; + private Explosion explosionSource = new Explosion(null, this, Double.NaN, Double.NaN, Double.NaN, Float.NaN); // CraftBukkit - reusable source for CraftTNTPrimed.getSource() public EntityEnderDragon(World world) { super(world); @@ -439,9 +440,29 @@ public class EntityEnderDragon extends EntityLiving implements IComplex { // This flag literally means 'Dragon hit something hard' (Obsidian, White Stone or Bedrock) and will cause the dragon to slow down. // We should consider adding an event extension for it, or perhaps returning true if the event is cancelled. return flag; + } else if (event.getYield() == 0F) { + // Yield zero ==> no drops + for (org.bukkit.block.Block block : event.blockList()) { + this.world.setAir(block.getX(), block.getY(), block.getZ()); + } } else { for (org.bukkit.block.Block block : event.blockList()) { - craftWorld.explodeBlock(block, event.getYield()); + int blockId = block.getTypeId(); + + if (blockId == 0) { + continue; + } + + int blockX = block.getX(); + int blockY = block.getY(); + int blockZ = block.getZ(); + + if (Block.byId[blockId].a(explosionSource)) { + Block.byId[blockId].dropNaturally(this.world, blockX, blockY, blockZ, block.getData(), event.getYield(), 0); + } + Block.byId[blockId].wasExploded(world, blockX, blockY, blockZ, explosionSource); + + this.world.setAir(blockX, blockY, blockZ); } } // CraftBukkit end |