(boolean aEffects)
| 143 | } |
| 144 | |
| 145 | @Override |
| 146 | public void doExplosionB(boolean aEffects) { |
| 147 | mWorld.playSoundEffect(explosionX, explosionY, explosionZ, SFX.MC_EXPLODE, 4, (1 + (mWorld.rand.nextFloat() - mWorld.rand.nextFloat()) * 0.2F) * 0.7F); |
| 148 | mWorld.spawnParticle(explosionSize >= 2 && isSmoking ? "hugeexplosion" : "largeexplode", explosionX, explosionY, explosionZ, 1, 0, 0); |
| 149 | if (isSmoking) { |
| 150 | @SuppressWarnings("rawtypes") |
| 151 | Iterator tIterator = affectedBlockPositions.iterator(); |
| 152 | while (tIterator.hasNext()) { |
| 153 | final ChunkPosition tPos = (ChunkPosition)tIterator.next(); |
| 154 | final Block tBlock = mWorld.getBlock(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ); |
| 155 | if (aEffects) { |
| 156 | double d0 = (tPos.chunkPosX + mWorld.rand.nextFloat()); |
| 157 | double d1 = (tPos.chunkPosY + mWorld.rand.nextFloat()); |
| 158 | double d2 = (tPos.chunkPosZ + mWorld.rand.nextFloat()); |
| 159 | double d3 = d0 - explosionX; |
| 160 | double d4 = d1 - explosionY; |
| 161 | double d5 = d2 - explosionZ; |
| 162 | double d6 = MathHelper.sqrt_double(d3 * d3 + d4 * d4 + d5 * d5); |
| 163 | d3 /= d6; |
| 164 | d4 /= d6; |
| 165 | d5 /= d6; |
| 166 | double d7 = 0.5D / (d6 / explosionSize + 0.1D); |
| 167 | d7 *= (mWorld.rand.nextFloat() * mWorld.rand.nextFloat() + 0.3F); |
| 168 | d3 *= d7; |
| 169 | d4 *= d7; |
| 170 | d5 *= d7; |
| 171 | mWorld.spawnParticle("explode", (d0 + explosionX) / 2, (d1 + explosionY) / 2, (d2 + explosionZ) / 2, d3, d4, d5); |
| 172 | mWorld.spawnParticle("smoke", d0, d1, d2, d3, d4, d5); |
| 173 | } |
| 174 | if (tBlock.getMaterial() != Material.air) { |
| 175 | if (tBlock.canDropFromExplosion(this)) tBlock.dropBlockAsItemWithChance(mWorld, tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ, mWorld.getBlockMetadata(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ), 1 / explosionSize, 0); |
| 176 | tBlock.onBlockExploded(mWorld, tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ, this); |
| 177 | } |
| 178 | } |
| 179 | } |
| 180 | if (isFlaming) { |
| 181 | @SuppressWarnings("rawtypes") |
| 182 | Iterator tIterator = affectedBlockPositions.iterator(); |
| 183 | while (tIterator.hasNext()) { |
| 184 | final ChunkPosition tPos = (ChunkPosition)tIterator.next(); |
| 185 | final Block tBlock = mWorld.getBlock(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ), tAbove = mWorld.getBlock(tPos.chunkPosX, tPos.chunkPosY - 1, tPos.chunkPosZ); |
| 186 | if (tBlock.getMaterial() == Material.air && tAbove.func_149730_j() && RNGSUS.nextInt(3) == 0) { |
| 187 | mWorld.setBlock(tPos.chunkPosX, tPos.chunkPosY, tPos.chunkPosZ, Blocks.fire); |
| 188 | } |
| 189 | } |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | @SuppressWarnings("rawtypes") |
| 194 | @Override public Map func_77277_b() {return field_77288_k;} |
no test coverage detected