diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index c7e09a639..60a330866 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -640,4 +640,5 @@ item.schrabidium_hammer.name=Schrabidiumhammer item.euphemium_stopper.name=Stopper item.matchstick.name=Streichholz -item.redcoil_capacitor.name=Rotspulenkondensator \ No newline at end of file +item.redcoil_capacitor.name=Rotspulenkondensator +item.detonator.name=Fernzünder \ No newline at end of file diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 6f0e2f152..afab3fee3 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -641,4 +641,5 @@ item.schrabidium_hammer.name=Schrabidium Hammer item.euphemium_stopper.name=Stopper item.matchstick.name=Matchstick -item.redcoil_capacitor.name=Redcoil Capacitor \ No newline at end of file +item.redcoil_capacitor.name=Redcoil Capacitor +item.detonator.name=Detonator \ No newline at end of file diff --git a/assets/hbm/textures/blocks/transmutator_bottom.png b/assets/hbm/textures/blocks/transmutator_bottom.png new file mode 100644 index 000000000..03e57ddf7 Binary files /dev/null and b/assets/hbm/textures/blocks/transmutator_bottom.png differ diff --git a/assets/hbm/textures/blocks/transmutator_side.png b/assets/hbm/textures/blocks/transmutator_side.png new file mode 100644 index 000000000..daa0d5a08 Binary files /dev/null and b/assets/hbm/textures/blocks/transmutator_side.png differ diff --git a/assets/hbm/textures/blocks/transmutator_top.png b/assets/hbm/textures/blocks/transmutator_top.png new file mode 100644 index 000000000..fef402116 Binary files /dev/null and b/assets/hbm/textures/blocks/transmutator_top.png differ diff --git a/assets/hbm/textures/items/detonator.png b/assets/hbm/textures/items/detonator.png new file mode 100644 index 000000000..d83e1640e Binary files /dev/null and b/assets/hbm/textures/items/detonator.png differ diff --git a/assets/hbm/textures/items/euphemium_stopper.png b/assets/hbm/textures/items/euphemium_stopper.png index 5e5333d35..e50299a3e 100644 Binary files a/assets/hbm/textures/items/euphemium_stopper.png and b/assets/hbm/textures/items/euphemium_stopper.png differ diff --git a/assets/hbm/textures/items/schrabidium_hammer.png b/assets/hbm/textures/items/schrabidium_hammer.png index 6fdd9a88e..88fa578d3 100644 Binary files a/assets/hbm/textures/items/schrabidium_hammer.png and b/assets/hbm/textures/items/schrabidium_hammer.png differ diff --git a/com/hbm/blocks/BlockCrashedBomb.java b/com/hbm/blocks/BlockCrashedBomb.java index 5e9ad6d83..4879d7ec3 100644 --- a/com/hbm/blocks/BlockCrashedBomb.java +++ b/com/hbm/blocks/BlockCrashedBomb.java @@ -5,6 +5,8 @@ import java.util.Map; import java.util.Random; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.explosion.ExplosionParticleB; +import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -22,7 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockCrashedBomb extends BlockContainer { +public class BlockCrashedBomb extends BlockContainer implements IBomb { protected BlockCrashedBomb(Material p_i45386_1_) { super(p_i45386_1_); @@ -75,4 +77,20 @@ public class BlockCrashedBomb extends BlockContainer { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } } + + public void explode(World world, int x, int y, int z) { + if (!world.isRemote) + { + EntityNukeExplosionAdvanced entity0 = new EntityNukeExplosionAdvanced(world); + entity0.posX = x; + entity0.posY = y; + entity0.posZ = z; + entity0.destructionRange = 35; + entity0.speed = 25; + entity0.coefficient = 10.0F; + + world.spawnEntityInWorld(entity0); + ExplosionParticleB.spawnMush(world, x, y - 3, z); + } + } } diff --git a/com/hbm/blocks/BombFlameWar.java b/com/hbm/blocks/BombFlameWar.java index ec2789995..a42f6a8b1 100644 --- a/com/hbm/blocks/BombFlameWar.java +++ b/com/hbm/blocks/BombFlameWar.java @@ -1,12 +1,14 @@ package com.hbm.blocks; import com.hbm.explosion.ExplosionChaos; +import com.hbm.interfaces.IBomb; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.world.World; -public class BombFlameWar extends Block { +public class BombFlameWar extends Block implements IBomb { public World worldObj; @@ -26,4 +28,10 @@ public class BombFlameWar extends Block { } } + public void explode(World world, int x, int y, int z) { + ExplosionChaos.explode(world, x, y, z, 15); + ExplosionChaos.spawnExplosion(world, x, y, z, 75); + ExplosionChaos.flameDeath(world, x, y, z, 100); + } + } diff --git a/com/hbm/blocks/BombFloat.java b/com/hbm/blocks/BombFloat.java index 15523d024..4541e5907 100644 --- a/com/hbm/blocks/BombFloat.java +++ b/com/hbm/blocks/BombFloat.java @@ -1,6 +1,8 @@ package com.hbm.blocks; import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -12,7 +14,7 @@ import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BombFloat extends Block { +public class BombFloat extends Block implements IBomb { public World worldObj; @@ -48,4 +50,10 @@ public class BombFloat extends Block { } } + public void explode(World world, int x, int y, int z) { + world.setBlock(x, y, z, Blocks.air); + ExplosionChaos.floater(world, x, y, z, 15, 50); + ExplosionChaos.move(world, x, y, z, 15, 0, 50, 0); + } + } diff --git a/com/hbm/blocks/BombMulti.java b/com/hbm/blocks/BombMulti.java index 3272c4afb..45e08895e 100644 --- a/com/hbm/blocks/BombMulti.java +++ b/com/hbm/blocks/BombMulti.java @@ -10,21 +10,24 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -public class BombMulti extends BlockContainer { +public class BombMulti extends BlockContainer implements IBomb { public TileEntityBombMulti tetn = new TileEntityBombMulti(); @@ -244,7 +247,7 @@ public class BombMulti extends BlockContainer { if(this.poisonRadius > 0) { - ExplosionNukeGeneric.waste(world, x, y, z, this.poisonRadius); + ExplosionNukeGeneric.wasteNoSchrab(world, x, y, z, this.poisonRadius); } if(this.gasCloud > 0) @@ -306,5 +309,20 @@ public class BombMulti extends BlockContainer { float f = 0.0625F; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); } + + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + float f = 0.0625F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + public void explode(World world, int x, int y, int z) { + TileEntityBombMulti entity = (TileEntityBombMulti) world.getTileEntity(x, y, z); + if(/*entity.getExplosionType() != 0*/entity.isLoaded()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + igniteTestBomb(world, x, y, z); + } + } } \ No newline at end of file diff --git a/com/hbm/blocks/BombThermo.java b/com/hbm/blocks/BombThermo.java index 166bd2d29..7875bd0ba 100644 --- a/com/hbm/blocks/BombThermo.java +++ b/com/hbm/blocks/BombThermo.java @@ -3,6 +3,7 @@ package com.hbm.blocks; import java.util.Random; import com.hbm.explosion.ExplosionThermo; +import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -15,7 +16,7 @@ import net.minecraft.item.Item; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BombThermo extends Block { +public class BombThermo extends Block implements IBomb { private World worldObj; @@ -73,4 +74,20 @@ public class BombThermo extends Block { } } + public void explode(World world, int x, int y, int z) { + world.setBlock(x, y, z, Blocks.air); + if(this == ModBlocks.therm_endo) + { + ExplosionThermo.freeze(world, x, y, z, 15); + ExplosionThermo.freezer(world, x, y, z, 20); + } + + if(this == ModBlocks.therm_exo) + { + ExplosionThermo.scorch(world, x, y, z, 15); + ExplosionThermo.setEntitiesOnFire(world, x, y, z, 20); + } + + world.createExplosion(null, x, y, z, 5.0F, true); + } } diff --git a/com/hbm/blocks/DetCord.java b/com/hbm/blocks/DetCord.java index e88c7b2f7..c4055e61c 100644 --- a/com/hbm/blocks/DetCord.java +++ b/com/hbm/blocks/DetCord.java @@ -2,13 +2,17 @@ package com.hbm.blocks; import java.util.Random; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.interfaces.IBomb; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.world.Explosion; import net.minecraft.world.World; -public class DetCord extends Block { +public class DetCord extends Block implements IBomb { protected DetCord(Material p_i45394_1_) { super(p_i45394_1_); @@ -38,4 +42,8 @@ public class DetCord extends Block { return null; } + public void explode(World world, int x, int y, int z) { + world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true); + } + } diff --git a/com/hbm/blocks/Guide.java b/com/hbm/blocks/Guide.java index b29ff1649..c814ef912 100644 --- a/com/hbm/blocks/Guide.java +++ b/com/hbm/blocks/Guide.java @@ -194,6 +194,7 @@ public class Guide extends Block { pages2.appendTag(new NBTTagString(Library.book214)); pages2.appendTag(new NBTTagString(Library.book215)); pages2.appendTag(new NBTTagString(Library.book216)); + pages2.appendTag(new NBTTagString(Library.book217)); book2.stackTagCompound.setTag("pages", pages2); player.inventory.addItemStackToInventory(book2); diff --git a/com/hbm/blocks/LaunchPad.java b/com/hbm/blocks/LaunchPad.java index 7e5845661..b4874f58c 100644 --- a/com/hbm/blocks/LaunchPad.java +++ b/com/hbm/blocks/LaunchPad.java @@ -19,6 +19,7 @@ import com.hbm.entity.EntityMissileMirv; import com.hbm.entity.EntityMissileNuclear; import com.hbm.entity.EntityMissileRain; import com.hbm.entity.EntityMissileStrong; +import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -40,7 +41,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class LaunchPad extends BlockContainer { +public class LaunchPad extends BlockContainer implements IBomb { public TileEntityLaunchPad tetn = new TileEntityLaunchPad(); public static boolean keepInventory = false; @@ -408,5 +409,160 @@ public class LaunchPad extends BlockContainer { { return Item.getItemFromBlock(ModBlocks.launch_pad); } + + public void explode(World p_149695_1_, int x, int y, int z) + { + TileEntityLaunchPad entity = (TileEntityLaunchPad) p_149695_1_.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.slots[1] != null && entity.slots[1].getItem() == ModItems.designator && entity.slots[1].stackTagCompound != null) + { + int xCoord = entity.slots[1].stackTagCompound.getInteger("xCoord"); + int zCoord = entity.slots[1].stackTagCompound.getInteger("zCoord"); + + if(xCoord == entity.xCoord && zCoord == entity.zCoord) + { + xCoord += 1; + } + + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_generic && entity.power >= 75000) + { + EntityMissileGeneric missile = new EntityMissileGeneric(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_anti_ballistic && entity.power >= 75000) + { + EntityMissileAntiBallistic missile = new EntityMissileAntiBallistic(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary && entity.power >= 75000) + { + EntityMissileIncendiary missile = new EntityMissileIncendiary(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster && entity.power >= 75000) + { + EntityMissileCluster missile = new EntityMissileCluster(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster && entity.power >= 75000) + { + EntityMissileBunkerBuster missile = new EntityMissileBunkerBuster(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_strong && entity.power >= 75000) + { + EntityMissileStrong missile = new EntityMissileStrong(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_incendiary_strong && entity.power >= 75000) + { + EntityMissileIncendiaryStrong missile = new EntityMissileIncendiaryStrong(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_cluster_strong && entity.power >= 75000) + { + EntityMissileClusterStrong missile = new EntityMissileClusterStrong(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_buster_strong && entity.power >= 75000) + { + EntityMissileBusterStrong missile = new EntityMissileBusterStrong(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_burst && entity.power >= 75000) + { + EntityMissileBurst missile = new EntityMissileBurst(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_inferno && entity.power >= 75000) + { + EntityMissileInferno missile = new EntityMissileInferno(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_rain && entity.power >= 75000) + { + EntityMissileRain missile = new EntityMissileRain(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_drill && entity.power >= 75000) + { + EntityMissileDrill missile = new EntityMissileDrill(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear && entity.power >= 75000) + { + EntityMissileNuclear missile = new EntityMissileNuclear(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_endo && entity.power >= 75000) + { + EntityMissileEndo missile = new EntityMissileEndo(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_exo && entity.power >= 75000) + { + EntityMissileExo missile = new EntityMissileExo(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + if(entity.slots[0] != null && entity.slots[0].getItem() == ModItems.missile_nuclear_cluster && entity.power >= 75000) + { + EntityMissileMirv missile = new EntityMissileMirv(p_149695_1_, xCoord, zCoord, x + 0.5F, y + 2F, z + 0.5F); + p_149695_1_.spawnEntityInWorld(missile); + entity.power -= 75000; + + entity.slots[0] = null; + } + } + } + } } diff --git a/com/hbm/blocks/MachineGenerator.java b/com/hbm/blocks/MachineGenerator.java index 37b04d5b8..229b65e3e 100644 --- a/com/hbm/blocks/MachineGenerator.java +++ b/com/hbm/blocks/MachineGenerator.java @@ -141,7 +141,7 @@ public class MachineGenerator extends BlockContainer { if(entity != null && entity.isLoaded) { p_149723_1_.createExplosion(null, p_149723_2_, p_149723_3_, p_149723_4_, 18.0F, true); - ExplosionNukeGeneric.waste(p_149723_1_, p_149723_2_, p_149723_3_, p_149723_4_, 35); + ExplosionNukeGeneric.wasteNoSchrab(p_149723_1_, p_149723_2_, p_149723_3_, p_149723_4_, 35); p_149723_1_.setBlock(p_149723_2_, p_149723_3_, p_149723_4_, Blocks.flowing_lava); } } diff --git a/com/hbm/blocks/MachineSchrabidiumTransmutator.java b/com/hbm/blocks/MachineSchrabidiumTransmutator.java index b77b9eaed..33843808b 100644 --- a/com/hbm/blocks/MachineSchrabidiumTransmutator.java +++ b/com/hbm/blocks/MachineSchrabidiumTransmutator.java @@ -26,6 +26,25 @@ public class MachineSchrabidiumTransmutator extends BlockContainer { private final Random field_149933_a = new Random(); private Random rand; private static boolean keepInventory; + + @SideOnly(Side.CLIENT) + //private IIcon iconFront; + private IIcon iconTop; + private IIcon iconBottom; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + (":transmutator_top")); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + (":transmutator_bottom")); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":transmutator_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); + } protected MachineSchrabidiumTransmutator(Material p_i45386_1_) { super(p_i45386_1_); diff --git a/com/hbm/blocks/NukeBoy.java b/com/hbm/blocks/NukeBoy.java index df5716acf..20fbcca0c 100644 --- a/com/hbm/blocks/NukeBoy.java +++ b/com/hbm/blocks/NukeBoy.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.entity.EntityNukeCloudSmall; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -20,7 +21,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeBoy extends BlockContainer { +public class NukeBoy extends BlockContainer implements IBomb { public TileEntityNukeBoy tetn = new TileEntityNukeBoy(); @@ -209,4 +210,18 @@ public class NukeBoy extends BlockContainer { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } } + + public void explode(World world, int x, int y, int z) { + TileEntityNukeBoy entity = (TileEntityNukeBoy) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z); + } + } + } } diff --git a/com/hbm/blocks/NukeFleija.java b/com/hbm/blocks/NukeFleija.java index b196a8121..b7013c9a1 100644 --- a/com/hbm/blocks/NukeFleija.java +++ b/com/hbm/blocks/NukeFleija.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Random; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -21,7 +22,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeFleija extends BlockContainer { +public class NukeFleija extends BlockContainer implements IBomb { public TileEntityNukeFleija tetn = new TileEntityNukeFleija(); @@ -190,4 +191,18 @@ public class NukeFleija extends BlockContainer { } } + public void explode(World world, int x, int y, int z) { + TileEntityNukeFleija entity = (TileEntityNukeFleija) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.fleijaRadius); + } + } + } + } diff --git a/com/hbm/blocks/NukeGadget.java b/com/hbm/blocks/NukeGadget.java index c0b51dbda..fe5f6ada3 100644 --- a/com/hbm/blocks/NukeGadget.java +++ b/com/hbm/blocks/NukeGadget.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.entity.EntityNukeCloudSmall; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -22,7 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeGadget extends BlockContainer { +public class NukeGadget extends BlockContainer implements IBomb { public TileEntityNukeGadget tetn = new TileEntityNukeGadget(); @@ -455,4 +456,18 @@ public class NukeGadget extends BlockContainer { world.setBlock(x, y + 1, z, Blocks.fire); } }*/ + + public void explode(World world, int x, int y, int z) { + TileEntityNukeGadget entity = (TileEntityNukeGadget) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z); + } + } + } } diff --git a/com/hbm/blocks/NukeMan.java b/com/hbm/blocks/NukeMan.java index d9c3e121c..d12367234 100644 --- a/com/hbm/blocks/NukeMan.java +++ b/com/hbm/blocks/NukeMan.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.entity.EntityNukeCloudSmall; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -22,7 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeMan extends BlockContainer { +public class NukeMan extends BlockContainer implements IBomb { public TileEntityNukeMan tetn = new TileEntityNukeMan(); @@ -454,4 +455,18 @@ public class NukeMan extends BlockContainer { world.setBlock(x, y + 1, z, Blocks.fire); } }*/ + + public void explode(World world, int x, int y, int z) { + TileEntityNukeMan entity = (TileEntityNukeMan) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z); + } + } + } } diff --git a/com/hbm/blocks/NukeMike.java b/com/hbm/blocks/NukeMike.java index a0d0ccf66..c7bf3d360 100644 --- a/com/hbm/blocks/NukeMike.java +++ b/com/hbm/blocks/NukeMike.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.entity.EntityNukeCloudBig; import com.hbm.entity.EntityNukeCloudSmall; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -23,7 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeMike extends BlockContainer { +public class NukeMike extends BlockContainer implements IBomb { public TileEntityNukeMike tetn = new TileEntityNukeMike(); @@ -216,4 +217,26 @@ public class NukeMike extends BlockContainer { } } + public void explode(World world, int x, int y, int z) { + TileEntityNukeMike entity = (TileEntityNukeMike) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady() && !entity.isFilled()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.manRadius); + } + + if(entity.isFilled()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.mikeRadius); + } + } + } + } diff --git a/com/hbm/blocks/NukePrototype.java b/com/hbm/blocks/NukePrototype.java index 7f7a262be..33a09120e 100644 --- a/com/hbm/blocks/NukePrototype.java +++ b/com/hbm/blocks/NukePrototype.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Random; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -22,7 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukePrototype extends BlockContainer { +public class NukePrototype extends BlockContainer implements IBomb { public TileEntityNukePrototype tetn = new TileEntityNukePrototype(); @@ -201,4 +202,18 @@ public class NukePrototype extends BlockContainer { } } + public void explode(World world, int x, int y, int z) { + TileEntityNukePrototype entity = (TileEntityNukePrototype) world.getTileEntity(x, y, z); + //if (world.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.prototypeRadius); + } + } + } + } diff --git a/com/hbm/blocks/NukeTsar.java b/com/hbm/blocks/NukeTsar.java index d7e6de8e6..a66706ab0 100644 --- a/com/hbm/blocks/NukeTsar.java +++ b/com/hbm/blocks/NukeTsar.java @@ -5,6 +5,7 @@ import java.util.Map; import java.util.Random; import com.hbm.entity.EntityNukeExplosionAdvanced; +import com.hbm.interfaces.IBomb; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -21,7 +22,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class NukeTsar extends BlockContainer { +public class NukeTsar extends BlockContainer implements IBomb { public TileEntityNukeTsar tetn = new TileEntityNukeTsar(); @@ -199,4 +200,26 @@ public class NukeTsar extends BlockContainer { } } + public void explode(World world, int x, int y, int z) { + TileEntityNukeTsar entity = (TileEntityNukeTsar) world.getTileEntity(x, y, z); + //if (p_149695_1_.isBlockIndirectlyGettingPowered(x, y, z)) + { + if(entity.isReady() && !entity.isFilled()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.manRadius); + } + + if(entity.isFilled()) + { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + entity.clearSlots(); + world.setBlockToAir(x, y, z); + igniteTestBomb(world, x, y, z, MainRegistry.tsarRadius); + } + } + } + } diff --git a/com/hbm/blocks/TileEntityMachineBattery.java b/com/hbm/blocks/TileEntityMachineBattery.java index 5d7f14347..ac68d8c60 100644 --- a/com/hbm/blocks/TileEntityMachineBattery.java +++ b/com/hbm/blocks/TileEntityMachineBattery.java @@ -136,8 +136,9 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.power = nbt.getShort("power"); + this.conducts = nbt.getBoolean("conducts"); slots = new ItemStack[getSizeInventory()]; for(int i = 0; i < list.tagCount(); i++) @@ -155,6 +156,7 @@ public class TileEntityMachineBattery extends TileEntity implements ISidedInvent public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setShort("power", (short) power); + nbt.setBoolean("conducts", conducts); NBTTagList list = new NBTTagList(); for(int i = 0; i < slots.length; i++) diff --git a/com/hbm/blocks/YellowBarrel.java b/com/hbm/blocks/YellowBarrel.java index 623460634..7bd5ccda2 100644 --- a/com/hbm/blocks/YellowBarrel.java +++ b/com/hbm/blocks/YellowBarrel.java @@ -37,7 +37,7 @@ public class YellowBarrel extends BlockContainer { public void explode(World p_149695_1_, int x, int y, int z) { p_149695_1_.createExplosion(null, x, y, z, 18.0F, true); - ExplosionNukeGeneric.waste(p_149695_1_, x, y, z, 35); + ExplosionNukeGeneric.wasteNoSchrab(p_149695_1_, x, y, z, 35); } @Override diff --git a/com/hbm/entity/EntityGrenadePoison.java b/com/hbm/entity/EntityGrenadePoison.java index 3eaee4aa0..776581987 100644 --- a/com/hbm/entity/EntityGrenadePoison.java +++ b/com/hbm/entity/EntityGrenadePoison.java @@ -47,7 +47,7 @@ public class EntityGrenadePoison extends EntityThrowable { this.setDead(); this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.0F, true); - ExplosionNukeGeneric.waste(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); + ExplosionNukeGeneric.wasteNoSchrab(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 10); } } diff --git a/com/hbm/explosion/ExplosionNukeGeneric.java b/com/hbm/explosion/ExplosionNukeGeneric.java index ff43fdcd0..b7ddcbe0d 100644 --- a/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/com/hbm/explosion/ExplosionNukeGeneric.java @@ -372,4 +372,126 @@ public class ExplosionNukeGeneric { } } } + + + + public static void wasteNoSchrab(World world, int x, int y, int z, int radius) + { + int r = radius; + int r2 = r*r; + int r22 = r2/2; + for (int xx = -r; xx < r; xx++) + { + int X = xx+x; + int XX = xx*xx; + for (int yy = -r; yy < r; yy++) + { + int Y = yy+y; + int YY = XX+yy*yy; + for (int zz = -r; zz < r; zz++) + { + int Z = zz+z; + int ZZ = YY+zz*zz; + if (ZZ