diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 212e18b56..e22ac0f85 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -122,6 +122,16 @@ public class ModBlocks { public static Block depth_brick; public static Block depth_tiles; + public static Block depth_nether_brick; + public static Block depth_nether_tiles; + + public static Block basalt; + public static Block basalt_sulfur; + public static Block basalt_asbestos; + public static Block basalt_smooth; + public static Block basalt_brick; + public static Block basalt_polished; + public static Block basalt_tiles; public static Block cluster_iron; public static Block cluster_titanium; @@ -1032,6 +1042,12 @@ public class ModBlocks { public static Fluid corium_fluid; public static final Material fluidcorium = (new MaterialLiquid(MapColor.brownColor)); + public static Block volcanic_lava_block; + public static Fluid volcanic_lava_fluid; + public static final Material fluidvolcanic = (new MaterialLiquid(MapColor.redColor)); + + public static Block volcano_core; + public static Block dummy_block_igenerator; public static Block dummy_port_igenerator; public static Block dummy_block_centrifuge; @@ -1184,11 +1200,21 @@ public class ModBlocks { cluster_depth_titanium = new BlockOre(Material.rock).setBlockName("cluster_depth_titanium").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cluster_depth_titanium"); cluster_depth_tungsten = new BlockOre(Material.rock).setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); - depth_brick = new BlockGeneric(Material.rock).setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":depth_brick"); - depth_tiles = new BlockGeneric(Material.rock).setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); + depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); + depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); + depth_nether_brick = new BlockDepth().setBlockName("depth_nether_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_brick"); + depth_nether_tiles = new BlockDepth().setBlockName("depth_nether_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_tiles"); stone_depth_nether = new BlockDepth().setBlockName("stone_depth_nether").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":stone_depth_nether"); ore_depth_nether_neodymium = new BlockOre(Material.rock).setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium"); + + basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); + basalt_sulfur = new BlockOre(Material.rock).setBlockName("basalt_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_sulfur"); + basalt_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("basalt_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_asbestos"); + basalt_smooth = new BlockGeneric(Material.rock).setBlockName("basalt_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_smooth"); + basalt_brick = new BlockGeneric(Material.rock).setBlockName("basalt_brick").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_brick"); + basalt_polished = new BlockGeneric(Material.rock).setBlockName("basalt_polished").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_polished"); + basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles"); ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium"); ore_weidanium = new BlockGeneric(Material.rock).setBlockName("ore_weidanium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_weidanium"); @@ -1910,6 +1936,8 @@ public class ModBlocks { absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); + + volcano_core = new BlockVolcano().setBlockName("volcano_core").setHardness(15.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); statue_elb = new DecoBlockAlt(Material.iron).setBlockName("#null").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY); statue_elb_g = new DecoBlockAlt(Material.iron).setBlockName("#void").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY); @@ -1936,6 +1964,10 @@ public class ModBlocks { FluidRegistry.registerFluid(corium_fluid); corium_block = new CoriumBlock(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F); + volcanic_lava_fluid = new VolcanicFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("volcanic_lava_fluid"); + FluidRegistry.registerFluid(volcanic_lava_fluid); + volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); + dummy_block_igenerator = new DummyBlockIGenerator(Material.iron).setBlockName("dummy_block_igenerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_port_igenerator = new DummyBlockIGenerator(Material.iron).setBlockName("dummy_port_igenerator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_centrifuge = new DummyBlockCentrifuge(Material.iron).setBlockName("dummy_block_centrifuge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2095,6 +2127,10 @@ public class ModBlocks { //Nether depth ores GameRegistry.registerBlock(ore_depth_nether_neodymium, ItemBlockDepth.class, ore_depth_nether_neodymium.getUnlocalizedName()); + //Basalt ores + GameRegistry.registerBlock(basalt_sulfur, basalt_sulfur.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_asbestos, basalt_asbestos.getUnlocalizedName()); + //End Ores GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); @@ -2113,6 +2149,13 @@ public class ModBlocks { GameRegistry.registerBlock(depth_brick, ItemBlockDepth.class, depth_brick.getUnlocalizedName()); GameRegistry.registerBlock(depth_tiles, ItemBlockDepth.class, depth_tiles.getUnlocalizedName()); GameRegistry.registerBlock(stone_depth_nether, ItemBlockDepth.class, stone_depth_nether.getUnlocalizedName()); + GameRegistry.registerBlock(depth_nether_brick, ItemBlockDepth.class, depth_nether_brick.getUnlocalizedName()); + GameRegistry.registerBlock(depth_nether_tiles, ItemBlockDepth.class, depth_nether_tiles.getUnlocalizedName()); + GameRegistry.registerBlock(basalt, basalt.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_smooth, basalt_smooth.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_brick, basalt_brick.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_polished, basalt_polished.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_tiles, basalt_tiles.getUnlocalizedName()); //Blocks GameRegistry.registerBlock(block_uranium, ItemBlockHazard.class, block_uranium.getUnlocalizedName()); @@ -2750,6 +2793,7 @@ public class ModBlocks { GameRegistry.registerBlock(balefire, balefire.getUnlocalizedName()); GameRegistry.registerBlock(fire_digamma, fire_digamma.getUnlocalizedName()); GameRegistry.registerBlock(digamma_matter, digamma_matter.getUnlocalizedName()); + GameRegistry.registerBlock(volcano_core, volcano_core.getUnlocalizedName()); //AMS GameRegistry.registerBlock(ams_base, ams_base.getUnlocalizedName()); @@ -2810,6 +2854,7 @@ public class ModBlocks { GameRegistry.registerBlock(toxic_block, toxic_block.getUnlocalizedName()); GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); + GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); //Multiblock Dummy Blocks GameRegistry.registerBlock(dummy_block_igenerator, dummy_block_igenerator.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java new file mode 100644 index 000000000..cf8db8aac --- /dev/null +++ b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java @@ -0,0 +1,78 @@ +package com.hbm.blocks.bomb; + +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class BlockVolcano extends Block { + + public BlockVolcano() { + super(Material.iron); + } + + @Override + public int tickRate(World world) { + return 5; + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + + if(!world.isRemote) + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + if(!world.isRemote) { + List attribs = Arrays.asList(new ExAttrib[] {ExAttrib.NODROP, ExAttrib.LAVA_V, ExAttrib.NOSOUND, ExAttrib.ALLMOD, ExAttrib.NOHURT}); + + ExplosionNT explosion = new ExplosionNT(world, null, x + 0.5, y + rand.nextInt(15) + 1.5, z + 0.5, 7); + explosion.addAllAttrib(attribs); + explosion.explode(); + + ExplosionNT explosion2 = new ExplosionNT(world, null, x + 0.5 + rand.nextGaussian() * 3, rand.nextInt(y), z + 0.5 + rand.nextGaussian() * 3, 10); + explosion2.addAllAttrib(attribs); + explosion2.explode(); + + world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world)); + + int rX = x - 10 + rand.nextInt(21); + int rY = y + rand.nextInt(11); + int rZ = z - 10 + rand.nextInt(21); + + if(world.getBlock(rX, rY, rZ) == Blocks.air && world.getBlock(rX, rY - 1, rZ) == ModBlocks.volcanic_lava_block) + world.setBlock(rX, rY, rZ, ModBlocks.volcanic_lava_block); + + for(int i = 0; i < 3; i++) { + EntityShrapnel frag = new EntityShrapnel(world); + frag.setLocationAndAngles(x + 0.5, y + 1.5, z + 0.5, 0.0F, 0.0F); + frag.motionY = 1D + rand.nextDouble(); + frag.motionX = rand.nextGaussian() * 0.2D; + frag.motionZ = rand.nextGaussian() * 0.2D; + frag.setVolcano(true); + world.spawnEntityInWorld(frag); + } + + NBTTagCompound dPart = new NBTTagCompound(); + dPart.setString("type", "vanillaExt"); + dPart.setString("mode", "volcano"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, x + 0.5, y + 10, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 10, z + 0.5, 250)); + } + } +} diff --git a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java index a2a388052..d9ce29d1f 100644 --- a/src/main/java/com/hbm/blocks/bomb/LaunchPad.java +++ b/src/main/java/com/hbm/blocks/bomb/LaunchPad.java @@ -6,31 +6,7 @@ import org.apache.logging.log4j.Level; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; -import com.hbm.entity.missile.EntityCarrier; -import com.hbm.entity.missile.EntityMissileAntiBallistic; -import com.hbm.entity.missile.EntityMissileBHole; -import com.hbm.entity.missile.EntityMissileBunkerBuster; -import com.hbm.entity.missile.EntityMissileBurst; -import com.hbm.entity.missile.EntityMissileBusterStrong; -import com.hbm.entity.missile.EntityMissileCluster; -import com.hbm.entity.missile.EntityMissileClusterStrong; -import com.hbm.entity.missile.EntityMissileDoomsday; -import com.hbm.entity.missile.EntityMissileDrill; -import com.hbm.entity.missile.EntityMissileEMP; -import com.hbm.entity.missile.EntityMissileEMPStrong; -import com.hbm.entity.missile.EntityMissileEndo; -import com.hbm.entity.missile.EntityMissileExo; -import com.hbm.entity.missile.EntityMissileGeneric; -import com.hbm.entity.missile.EntityMissileIncendiary; -import com.hbm.entity.missile.EntityMissileIncendiaryStrong; -import com.hbm.entity.missile.EntityMissileInferno; -import com.hbm.entity.missile.EntityMissileMicro; -import com.hbm.entity.missile.EntityMissileMirv; -import com.hbm.entity.missile.EntityMissileNuclear; -import com.hbm.entity.missile.EntityMissileRain; -import com.hbm.entity.missile.EntityMissileSchrabidium; -import com.hbm.entity.missile.EntityMissileStrong; -import com.hbm.entity.missile.EntityMissileTaint; +import com.hbm.entity.missile.*; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -279,6 +255,9 @@ public class LaunchPad extends BlockContainer implements IBomb { if(entity.slots[0].getItem() == ModItems.missile_emp_strong) { missile = new EntityMissileEMPStrong(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); } + if(entity.slots[0].getItem() == ModItems.missile_volcano) { + missile = new EntityMissileVolcano(world, x + 0.5F, y + 2F, z + 0.5F, xCoord, zCoord); + } world.spawnEntityInWorld(missile); world.playSoundEffect(x, y, z, "hbm:weapon.missileTakeOff", 2.0F, 1.0F); diff --git a/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java b/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java index d487f5b38..4e20c4087 100644 --- a/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/CoriumBlock.java @@ -84,7 +84,7 @@ public class CoriumBlock extends BlockFluidClassic { ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 1F); } - //TODO: slow down solidification, prevent displacement + //TODO: prevent displacement @Override public void updateTick(World world, int x, int y, int z, Random rand) { diff --git a/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java b/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java new file mode 100644 index 000000000..3969920e2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java @@ -0,0 +1,127 @@ +package com.hbm.blocks.fluid; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.BlockFluidClassic; +import net.minecraftforge.fluids.Fluid; + +public class VolcanicBlock extends BlockFluidClassic { + + @SideOnly(Side.CLIENT) + public static IIcon stillIcon; + @SideOnly(Side.CLIENT) + public static IIcon flowingIcon; + + public VolcanicBlock(Fluid fluid, Material material) { + super(fluid, material); + this.setTickRandomly(true); + this.setQuantaPerBlock(4); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return (side == 0 || side == 1) ? stillIcon : flowingIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + stillIcon = register.registerIcon(RefStrings.MODID + ":volcanic_lava_still"); + flowingIcon = register.registerIcon(RefStrings.MODID + ":volcanic_lava_flowing"); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + super.onNeighborBlockChange(world, x, y, z, block); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block b = getReaction(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + + if(b != null) + world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, b); + } + } + + public Block getReaction(World world, int x, int y, int z) { + + Block b = world.getBlock(x, y, z); + if(b.getMaterial() == Material.water) { + return Blocks.stone; + } + if(b == Blocks.log || b == Blocks.log2) { + return ModBlocks.waste_log; + } + if(b == Blocks.planks) { + return ModBlocks.waste_planks; + } + if(b == Blocks.leaves || b == Blocks.leaves2) { + return Blocks.fire; + } + return null; + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + super.updateTick(world, x, y, z, rand); + + int count = 0; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + + if(b == this) + count++; + } + + if(!world.isRemote && ((!this.isSourceBlock(world, x, y, z) && count < 2) || (rand.nextInt(5) == 0) && count < 5) && world.getBlock(x, y - 1, z).isNormalCube()) { + + int r = rand.nextInt(200); + + if(r < 2) + world.setBlock(x, y, z, ModBlocks.basalt_sulfur); + else if(r == 2) + world.setBlock(x, y, z, ModBlocks.basalt_asbestos); + else + world.setBlock(x, y, z, ModBlocks.basalt); + } + } + + @Override + public boolean canDisplace(IBlockAccess world, int x, int y, int z) { + Block b = world.getBlock(x, y, z); + + if(Blocks.fire.getFlammability(b) > 0) + return true; + + if(b.isReplaceable(world, x, y, z)) + return true; + + return super.canDisplace(world, x, y, z); + } + + @Override + public boolean displaceIfPossible(World world, int x, int y, int z) { + return super.displaceIfPossible(world, x, y, z) || canDisplace(world, x, y, z); + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 0; + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/VolcanicFluid.java b/src/main/java/com/hbm/blocks/fluid/VolcanicFluid.java new file mode 100644 index 000000000..4a1685b44 --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/VolcanicFluid.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.fluid; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.IIcon; +import net.minecraftforge.fluids.Fluid; + +public class VolcanicFluid extends Fluid { + + public VolcanicFluid() { + super("volcanic_lava_fluid"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon() { + return getStillIcon(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getStillIcon() { + return VolcanicBlock.stillIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return VolcanicBlock.flowingIcon; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 8e06a9841..b3a9bb3c2 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -49,7 +49,7 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_niter) { return ModItems.niter; } - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur) { + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur) { return ModItems.sulfur; } if(this == ModBlocks.waste_trinitite || this == ModBlocks.waste_trinitite_red) { @@ -192,7 +192,7 @@ public class BlockOre extends Block { if(this == ModBlocks.deco_asbestos) { return ModItems.ingot_asbestos; } - if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos) { + if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.basalt_asbestos) { return ModItems.ingot_asbestos; } if(this == ModBlocks.ore_lignite) { @@ -234,7 +234,7 @@ public class BlockOre extends Block { if(this == ModBlocks.ore_niter) { return 2 + rand.nextInt(3); } - if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur) { + if(this == ModBlocks.ore_sulfur || this == ModBlocks.ore_nether_sulfur || this == ModBlocks.ore_meteor_sulfur || this == ModBlocks.basalt_sulfur) { return 2 + rand.nextInt(3); } if(this == ModBlocks.ore_rare || this == ModBlocks.ore_gneiss_rare) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index 5104c5db8..9dfd0813b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -65,7 +65,8 @@ public class BlockOutgas extends BlockOre implements IItemHazard { if(this == ModBlocks.ore_asbestos || this == ModBlocks.ore_gneiss_asbestos || this == ModBlocks.block_asbestos || this == ModBlocks.deco_asbestos || this == ModBlocks.brick_asbestos || this == ModBlocks.tile_lab || - this == ModBlocks.tile_lab_cracked || this == ModBlocks.tile_lab_broken) { + this == ModBlocks.tile_lab_cracked || this == ModBlocks.tile_lab_broken || + this == ModBlocks.basalt_asbestos) { return ModBlocks.gas_asbestos; } diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index ea36c55f9..db00b7348 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -160,6 +160,8 @@ public class RodRecipes { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.rbmk_fuel_empty, 1), new Object[] { "ZRZ", "Z Z", "ZRZ", 'Z', "ingotZirconium", 'R', ModItems.rod_quad_empty })); RecipesCommon.addRBMKRod(ModItems.billet_uranium, ModItems.rbmk_fuel_ueu); RecipesCommon.addRBMKRod(ModItems.billet_uranium_fuel, ModItems.rbmk_fuel_meu); + RecipesCommon.addRBMKRod(ModItems.billet_u233, ModItems.rbmk_fuel_heu233); + RecipesCommon.addRBMKRod(ModItems.billet_u235, ModItems.rbmk_fuel_heu235); RecipesCommon.addRBMKRod(ModItems.billet_thorium_fuel, ModItems.rbmk_fuel_thmeu); RecipesCommon.addRBMKRod(ModItems.billet_mox_fuel, ModItems.rbmk_fuel_mox); RecipesCommon.addRBMKRod(ModItems.billet_plutonium_fuel, ModItems.rbmk_fuel_lep); @@ -168,8 +170,10 @@ public class RodRecipes { RecipesCommon.addRBMKRod(ModItems.billet_pu241, ModItems.rbmk_fuel_hep241); RecipesCommon.addRBMKRod(ModItems.billet_americium_fuel, ModItems.rbmk_fuel_lea); RecipesCommon.addRBMKRod(ModItems.billet_am_mix, ModItems.rbmk_fuel_mea); + RecipesCommon.addRBMKRod(ModItems.billet_am241, ModItems.rbmk_fuel_hea241); RecipesCommon.addRBMKRod(ModItems.billet_am242, ModItems.rbmk_fuel_hea242); RecipesCommon.addRBMKRod(ModItems.billet_neptunium_fuel, ModItems.rbmk_fuel_men); + RecipesCommon.addRBMKRod(ModItems.billet_neptunium, ModItems.rbmk_fuel_hen); RecipesCommon.addRBMKRod(ModItems.billet_po210be, ModItems.rbmk_fuel_po210be); RecipesCommon.addRBMKRod(ModItems.billet_ra226be, ModItems.rbmk_fuel_ra226be); RecipesCommon.addRBMKRod(ModItems.billet_pu238be, ModItems.rbmk_fuel_pu238be); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java b/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java new file mode 100644 index 000000000..8ac90c283 --- /dev/null +++ b/src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java @@ -0,0 +1,61 @@ +package com.hbm.entity.missile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityMissileVolcano extends EntityMissileBaseAdvanced { + + public EntityMissileVolcano(World p_i1582_1_) { + super(p_i1582_1_); + } + + public EntityMissileVolcano(World world, float x, float y, float z, int a, int b) { + super(world, x, y, z, a, b); + } + + @Override + public void onImpact() { + + ExplosionLarge.explode(worldObj, posX, posY, posZ, 10.0F, true, true, true); + + for(int x = -1; x <= 1; x++) { + for(int y = -1; y <= 1; y++) { + for(int z = -1; z <= 1; z++) { + worldObj.setBlock((int)Math.floor(posX + x), (int)Math.floor(posY + y), (int)Math.floor(posZ + z), ModBlocks.volcanic_lava_block); + } + } + } + + worldObj.setBlock((int)Math.floor(posX), (int)Math.floor(posY), (int)Math.floor(posZ), ModBlocks.volcano_core); + } + + @Override + public List getDebris() { + List list = new ArrayList(); + + list.add(new ItemStack(ModItems.plate_titanium, 16)); + list.add(new ItemStack(ModItems.plate_steel, 20)); + list.add(new ItemStack(ModItems.plate_aluminium, 12)); + list.add(new ItemStack(ModItems.thruster_large, 1)); + list.add(new ItemStack(ModItems.circuit_targeting_tier4, 1)); + + return list; + } + + @Override + public ItemStack getDebrisRareDrop() { + return null; + } + + @Override + public RadarTargetType getTargetType() { + return RadarTargetType.MISSILE_TIER4; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java index b57b2cffa..833e31df7 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java +++ b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java @@ -1,63 +1,98 @@ package com.hbm.entity.projectile; +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.lib.ModDamageSource; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; +import net.minecraft.init.Blocks; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityShrapnel extends EntityThrowable { - public EntityShrapnel(World p_i1773_1_) - { - super(p_i1773_1_); - this.isImmuneToFire = true; - } + public EntityShrapnel(World p_i1773_1_) { + super(p_i1773_1_); + this.isImmuneToFire = true; + } - public EntityShrapnel(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityShrapnel(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } - @Override + @Override public void entityInit() { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); + } - public EntityShrapnel(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } - - @Override - public void onUpdate() { - super.onUpdate(); - - if(worldObj.isRemote && this.dataWatcher.getWatchableObjectByte(16) == 1) - worldObj.spawnParticle("flame", posX, posY, posZ, 0.0, 0.0, 0.0); - } + public EntityShrapnel(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } - @Override - protected void onImpact(MovingObjectPosition p_70184_1_) - { - if (p_70184_1_.entityHit != null) - { - byte b0 = 15; + @Override + public void onUpdate() { + super.onUpdate(); - p_70184_1_.entityHit.attackEntityFrom(ModDamageSource.shrapnel, b0); - } + if(worldObj.isRemote && this.dataWatcher.getWatchableObjectByte(16) == 1) + worldObj.spawnParticle("flame", posX, posY, posZ, 0.0, 0.0, 0.0); + } - if(this.ticksExisted > 5) { - this.setDead(); - - for(int i = 0; i < 5; i++) - worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); - - worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F); - } - } - - public void setTrail(boolean b) { - this.dataWatcher.updateObject(16, (byte)(b ? 1 : 0)); - } + @Override + protected void onImpact(MovingObjectPosition mop) { + if(mop.entityHit != null) { + byte b0 = 15; + + mop.entityHit.attackEntityFrom(ModDamageSource.shrapnel, b0); + } + + if(this.ticksExisted > 5) { + + if(!worldObj.isRemote) + this.setDead(); + + if(this.dataWatcher.getWatchableObjectByte(16) == 2) { + + if(!worldObj.isRemote) { + if(motionY < -0.2D) { + worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.volcanic_lava_block); + + for(int x = mop.blockX - 1; x <= mop.blockX + 1; x++) { + for(int y = mop.blockY; y <= mop.blockY + 2; y++) { + for(int z = mop.blockZ - 1; z <= mop.blockZ + 1; z++) { + if(worldObj.getBlock(x, y, z) == Blocks.air) + worldObj.setBlock(x, y, z, ModBlocks.gas_monoxide); + } + } + } + } + + if(motionY > 0) { + ExplosionNT explosion = new ExplosionNT(worldObj, null, mop.blockX + 0.5, mop.blockY + 0.5, mop.blockZ + 0.5, 7); + explosion.addAttrib(ExAttrib.NODROP); + explosion.addAttrib(ExAttrib.LAVA_V); + explosion.addAttrib(ExAttrib.NOSOUND); + explosion.addAttrib(ExAttrib.ALLMOD); + explosion.addAttrib(ExAttrib.NOHURT); + explosion.explode(); + } + } + + } else { + + for(int i = 0; i < 5; i++) + worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); + } + + worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F); + } + } + + public void setTrail(boolean b) { + this.dataWatcher.updateObject(16, (byte) (b ? 1 : 0)); + } + + public void setVolcano(boolean b) { + this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0)); + } } diff --git a/src/main/java/com/hbm/explosion/ExplosionNT.java b/src/main/java/com/hbm/explosion/ExplosionNT.java index 1ff1817aa..4a1120ef0 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNT.java +++ b/src/main/java/com/hbm/explosion/ExplosionNT.java @@ -100,7 +100,7 @@ public class ExplosionNT extends Explosion { f1 -= (f3 + 0.3F) * f2; } - if(f1 > 0.0F && (this.exploder == null || this.exploder.func_145774_a(this, this.worldObj, j1, k1, l1, block, f1))) { + if(block != Blocks.air && f1 > 0.0F && (this.exploder == null || this.exploder.func_145774_a(this, this.worldObj, j1, k1, l1, block, f1))) { hashset.add(new ChunkPosition(j1, k1, l1)); } @@ -249,7 +249,7 @@ public class ExplosionNT extends Explosion { } } - if(has(ExAttrib.FIRE) || has(ExAttrib.BALEFIRE) || has(ExAttrib.LAVA)) { + if(has(ExAttrib.FIRE) || has(ExAttrib.BALEFIRE) || has(ExAttrib.LAVA) || has(ExAttrib.LAVA_V)) { iterator = this.affectedBlockPositions.iterator(); while(iterator.hasNext()) { @@ -272,6 +272,8 @@ public class ExplosionNT extends Explosion { this.worldObj.setBlock(i, j, k, ModBlocks.balefire); else if(has(ExAttrib.LAVA)) this.worldObj.setBlock(i, j, k, Blocks.flowing_lava); + else if(has(ExAttrib.LAVA_V)) + this.worldObj.setBlock(i, j, k, ModBlocks.volcanic_lava_block); } } } @@ -297,6 +299,7 @@ public class ExplosionNT extends Explosion { DIGAMMA, DIGAMMA_CIRCUIT, LAVA, //again the same thing but lava + LAVA_V, //again the same thing but volcaniclava ALLMOD, //block placer attributes like fire are applied for all destroyed blocks ALLDROP, //miner TNT! NODROP, //the opposite diff --git a/src/main/java/com/hbm/explosion/ExplosionThermo.java b/src/main/java/com/hbm/explosion/ExplosionThermo.java index 4680323b3..4e92be1b5 100644 --- a/src/main/java/com/hbm/explosion/ExplosionThermo.java +++ b/src/main/java/com/hbm/explosion/ExplosionThermo.java @@ -121,6 +121,11 @@ public class ExplosionThermo { public static void freezeDest(World world, int x, int y, int z) { Block block = world.getBlock(x, y, z); + if(block == ModBlocks.volcanic_lava_block) + { + world.setBlock(x, y, z, Blocks.cobblestone); + } + if(block == Blocks.grass) { world.setBlock(x, y, z, ModBlocks.frozen_grass); diff --git a/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java b/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java index 90be4997a..6097939c7 100644 --- a/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java +++ b/src/main/java/com/hbm/explosion/nt/Mark5Ausf2.java @@ -220,7 +220,7 @@ public class Mark5Ausf2 implements IExplosionLogic { private void repopulate() { boolean didYouDoLiterallyAnything = false; - this.length += 5; + this.length *= 2; double bow = length * Math.PI; int bowCount = (int) Math.ceil(bow * getResolutionMult()); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 52a5c515c..dd2b328b6 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -310,6 +310,7 @@ public class Gun50BMGFactory { bullet.spread *= inaccuracy; bullet.dmgMin = 20; bullet.dmgMax = 25; + bullet.style = bullet.STYLE_FLECHETTE; return bullet; } @@ -322,6 +323,7 @@ public class Gun50BMGFactory { bullet.spread *= inaccuracy; bullet.dmgMin = 50; bullet.dmgMax = 65; + bullet.style = bullet.STYLE_FLECHETTE; bullet.bHit = new IBulletHitBehavior() { @@ -348,6 +350,7 @@ public class Gun50BMGFactory { bullet.spread *= inaccuracy; bullet.dmgMin = 30; bullet.dmgMax = 40; + bullet.style = bullet.STYLE_FLECHETTE; bullet.bHit = new IBulletHitBehavior() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 104dcfbc1..c096cc280 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -378,6 +378,16 @@ public class GunEnergyFactory { data.setDouble("mY", bullet.motionY - 0.2 + bullet.worldObj.rand.nextGaussian() * 0.05); data.setDouble("mZ", bullet.motionZ + bullet.worldObj.rand.nextGaussian() * 0.05); MainRegistry.proxy.effectNT(data); + } else { + + int x = (int)Math.floor(bullet.posX); + int y = (int)Math.floor(bullet.posY); + int z = (int)Math.floor(bullet.posZ); + + if(bullet.worldObj.getBlock(x, y, z) == ModBlocks.volcanic_lava_block && bullet.worldObj.getBlockMetadata(x, y, z) == 0) { + bullet.worldObj.setBlock(x, y, z, Blocks.obsidian); + bullet.setDead(); + } } } }; diff --git a/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java index c0e9cb408..5f6bc7ecb 100644 --- a/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/SmithingRecipeHandler.java @@ -122,7 +122,8 @@ public class SmithingRecipeHandler extends TemplateRecipeHandler { transferRects.add(new RecipeTransferRect(new Rectangle(56, 24, 18, 18), "ntmSmithing")); transferRects.add(new RecipeTransferRect(new Rectangle(92, 24, 18, 18), "ntmSmithing")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(39, 60, 60, 50), "ntmSmithing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(56 + 9, 24 - 9, 18, 18), "ntmSmithing")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(56 + 9 - 18 * 2, 24 - 9, 18, 18), "ntmSmithing")); guiGui.add(GUIAnvil.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); @@ -130,6 +131,7 @@ public class SmithingRecipeHandler extends TemplateRecipeHandler { @Override public void drawExtras(int recipe) { + loadTransferRects(); RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 73bf3a8e7..3b8e21dce 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -242,6 +242,9 @@ public class OreDictManager { OreDictionary.registerOre("oreStarmetal", ModBlocks.ore_meteor_starmetal); OreDictionary.registerOre("oreAsbestos", ModBlocks.ore_asbestos); + OreDictionary.registerOre("oreSulfur", ModBlocks.basalt_sulfur); + OreDictionary.registerOre("oreAsbestos", ModBlocks.basalt_asbestos); + OreDictionary.registerOre("blockThorium", ModBlocks.block_thorium); OreDictionary.registerOre("blockUranium", ModBlocks.block_uranium); OreDictionary.registerOre("blockTitanium", ModBlocks.block_titanium); diff --git a/src/main/java/com/hbm/inventory/SILEXRecipes.java b/src/main/java/com/hbm/inventory/SILEXRecipes.java index dcdf092cc..90e0e81a0 100644 --- a/src/main/java/com/hbm/inventory/SILEXRecipes.java +++ b/src/main/java/com/hbm/inventory/SILEXRecipes.java @@ -94,13 +94,37 @@ public class SILEXRecipes { // MEU // recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i), new SILEXRecipe(600, 100) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i)) ); + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 90 - i * 12)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i)) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i + 5), new SILEXRecipe(600, 100) .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 89 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 89 - i * 12)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i)) ); + + // HEU233 // + recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i), new SILEXRecipe(600, 100) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 90 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i)) ); + + recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i + 5), new SILEXRecipe(600, 100) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 89 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i)) ); + + // MEU // + recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i), new SILEXRecipe(600, 100) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 90 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i)) ); + + recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i + 5), new SILEXRecipe(600, 100) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 89 - i * 20)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i)) ); @@ -209,14 +233,14 @@ public class SILEXRecipes { .addOut(new WeightedRandomObject(new ItemStack(Items.gold_nugget), 5 + 10 * i)) ); // BALEFIRE // - recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i), new SILEXRecipe(400, 100) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_greater), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mercury), 10 + 20 * i)) ); + recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire, 1, i), new SILEXRecipe(400, 100) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_balefire), 90 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 10 + 20 * i)) ); - recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i + 5), new SILEXRecipe(400, 100) + recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire, 1, i + 5), new SILEXRecipe(400, 100) .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_greater), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mercury), 10 + 20 * i)) ); + .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_balefire), 89 - i * 20)) + .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 10 + 20 * i)) ); // FLASHGOLD // recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire_gold, 1, i), new SILEXRecipe(600, 100) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index ab55ee161..d4e2644db 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -979,8 +979,10 @@ public class ModItems { public static ItemRBMKRod rbmk_fuel_hep241; public static ItemRBMKRod rbmk_fuel_lea; public static ItemRBMKRod rbmk_fuel_mea; + public static ItemRBMKRod rbmk_fuel_hea241; public static ItemRBMKRod rbmk_fuel_hea242; public static ItemRBMKRod rbmk_fuel_men; + public static ItemRBMKRod rbmk_fuel_hen; public static ItemRBMKRod rbmk_fuel_mox; public static ItemRBMKRod rbmk_fuel_les; public static ItemRBMKRod rbmk_fuel_mes; @@ -1004,8 +1006,10 @@ public class ModItems { public static ItemRBMKPellet rbmk_pellet_hep241; public static ItemRBMKPellet rbmk_pellet_lea; public static ItemRBMKPellet rbmk_pellet_mea; + public static ItemRBMKPellet rbmk_pellet_hea241; public static ItemRBMKPellet rbmk_pellet_hea242; public static ItemRBMKPellet rbmk_pellet_men; + public static ItemRBMKPellet rbmk_pellet_hen; public static ItemRBMKPellet rbmk_pellet_mox; public static ItemRBMKPellet rbmk_pellet_les; public static ItemRBMKPellet rbmk_pellet_mes; @@ -1159,6 +1163,7 @@ public class ModItems { public static Item missile_drill; public static Item missile_nuclear; public static Item missile_nuclear_cluster; + public static Item missile_volcano; public static Item missile_endo; public static Item missile_exo; public static Item missile_doomsday; @@ -3340,13 +3345,15 @@ public class ModItems { rbmk_pellet_heu235 = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Uranium-235").addRadiation(ItemHazard.uf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_heu235").setTextureName(RefStrings.MODID + ":rbmk_pellet_heu235"); rbmk_pellet_thmeu = (ItemRBMKPellet) new ItemRBMKPellet("Thorium with MEU Driver Fuel").addRadiation(ItemHazard.thf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_thmeu").setTextureName(RefStrings.MODID + ":rbmk_pellet_thmeu"); rbmk_pellet_lep = (ItemRBMKPellet) new ItemRBMKPellet("Low Enriched Plutonium-239").addRadiation(ItemHazard.puf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_lep").setTextureName(RefStrings.MODID + ":rbmk_pellet_lep"); - rbmk_pellet_mep = (ItemRBMKPellet) new ItemRBMKPellet("Medium Enriched Plutonium-239").addRadiation(ItemHazard.purg * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_mep").setTextureName(RefStrings.MODID + ":rbmk_pellet_mep"); + rbmk_pellet_mep = (ItemRBMKPellet) new ItemRBMKPellet("Medium Enriched Plutonium-239").addRadiation(ItemHazard.npf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_mep").setTextureName(RefStrings.MODID + ":rbmk_pellet_mep"); rbmk_pellet_hep239 = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Plutonium-239").addRadiation(ItemHazard.pu239 * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_hep239").setTextureName(RefStrings.MODID + ":rbmk_pellet_hep239"); rbmk_pellet_hep241 = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Plutonium-241").addRadiation(ItemHazard.pu241 * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_hep241").setTextureName(RefStrings.MODID + ":rbmk_pellet_hep241"); rbmk_pellet_lea = (ItemRBMKPellet) new ItemRBMKPellet("Low Enriched Americium-242").addRadiation(ItemHazard.amf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_lea").setTextureName(RefStrings.MODID + ":rbmk_pellet_lea"); rbmk_pellet_mea = (ItemRBMKPellet) new ItemRBMKPellet("Medium Enriched Americium-242").addRadiation(ItemHazard.amrg * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_mea").setTextureName(RefStrings.MODID + ":rbmk_pellet_mea"); + rbmk_pellet_hea241 = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Americium-241").addRadiation(ItemHazard.am241 * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_hea241").setTextureName(RefStrings.MODID + ":rbmk_pellet_hea241"); rbmk_pellet_hea242 = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Americium-242").addRadiation(ItemHazard.am242 * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_hea242").setTextureName(RefStrings.MODID + ":rbmk_pellet_hea242"); rbmk_pellet_men = (ItemRBMKPellet) new ItemRBMKPellet("Medium Enriched Neptunium-237").addRadiation(ItemHazard.npf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_men").setTextureName(RefStrings.MODID + ":rbmk_pellet_men"); + rbmk_pellet_hen = (ItemRBMKPellet) new ItemRBMKPellet("Highly Enriched Neptunium-237").addRadiation(ItemHazard.np237 * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_hen").setTextureName(RefStrings.MODID + ":rbmk_pellet_hen"); rbmk_pellet_mox = (ItemRBMKPellet) new ItemRBMKPellet("Mixed LEU & LEP Oxide").addRadiation(ItemHazard.mox * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_mox").setTextureName(RefStrings.MODID + ":rbmk_pellet_mox"); rbmk_pellet_les = (ItemRBMKPellet) new ItemRBMKPellet("Low Enriched Schrabidium-326").addRadiation(ItemHazard.saf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_les").setTextureName(RefStrings.MODID + ":rbmk_pellet_les"); rbmk_pellet_mes = (ItemRBMKPellet) new ItemRBMKPellet("Medium Enriched Schrabidium-326").addRadiation(ItemHazard.saf * ItemHazard.billet).toItem().setUnlocalizedName("rbmk_pellet_mes").setTextureName(RefStrings.MODID + ":rbmk_pellet_mes"); @@ -3392,7 +3399,7 @@ public class ModItems { .setUnlocalizedName("rbmk_fuel_heu235").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu235"); rbmk_fuel_thmeu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_thmeu) .setYield(100000000D) - .setStats(10) + .setStats(12) .setFunction(EnumBurnFunc.PLATEU) .setMeltingPoint(3350) .addRadiation(ItemHazard.thf * ItemHazard.rod_rbmk).toItem() @@ -3444,6 +3451,15 @@ public class ModItems { .setMeltingPoint(2386) .addRadiation(ItemHazard.amrg * ItemHazard.rod_rbmk).toItem() .setUnlocalizedName("rbmk_fuel_mea").setTextureName(RefStrings.MODID + ":rbmk_fuel_mea"); + rbmk_fuel_hea241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea241) + .setYield(100000000D) + .setStats(65, 15) + .setFunction(EnumBurnFunc.SQUARE_ROOT) + .setHeat(1.75D) + .setMeltingPoint(2386) + .setNeutronTypes(NType.FAST, NType.FAST) + .addRadiation(ItemHazard.am241 * ItemHazard.rod_rbmk).toItem() + .setUnlocalizedName("rbmk_fuel_hea241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea241"); rbmk_fuel_hea242 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea242) .setYield(100000000D) .setStats(45) @@ -3460,6 +3476,14 @@ public class ModItems { .setNeutronTypes(NType.FAST, NType.FAST) .addRadiation(ItemHazard.npf * ItemHazard.rod_rbmk).toItem() .setUnlocalizedName("rbmk_fuel_men").setTextureName(RefStrings.MODID + ":rbmk_fuel_men"); + rbmk_fuel_hen = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hen) + .setYield(100000000D) + .setStats(40) + .setFunction(EnumBurnFunc.SQUARE_ROOT) + .setMeltingPoint(2800) + .setNeutronTypes(NType.FAST, NType.FAST) + .addRadiation(ItemHazard.np237 * ItemHazard.rod_rbmk).toItem() + .setUnlocalizedName("rbmk_fuel_hen").setTextureName(RefStrings.MODID + ":rbmk_fuel_hen"); rbmk_fuel_mox = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mox) .setYield(100000000D) .setStats(40) @@ -3517,7 +3541,7 @@ public class ModItems { .setYield(100000000D) .setStats(0D, 20) .setFunction(EnumBurnFunc.PASSIVE) - .setHeat(0.05D) + .setHeat(0.035D) .setDiffusion(0.5D) .setMeltingPoint(700) .addRadiation(ItemHazard.rabe * ItemHazard.rod_rbmk).toItem() @@ -3647,6 +3671,7 @@ public class ModItems { missile_drill = new Item().setUnlocalizedName("missile_drill").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_drill"); missile_nuclear = new Item().setUnlocalizedName("missile_nuclear").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_nuclear"); missile_nuclear_cluster = new Item().setUnlocalizedName("missile_nuclear_cluster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_nuclear_cluster"); + missile_volcano = new Item().setUnlocalizedName("missile_volcano").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_volcano"); missile_endo = new Item().setUnlocalizedName("missile_endo").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_endo"); missile_exo = new Item().setUnlocalizedName("missile_exo").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_exo"); missile_doomsday = new Item().setUnlocalizedName("missile_doomsday").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_doomsday"); @@ -6303,8 +6328,10 @@ public class ModItems { GameRegistry.registerItem(rbmk_fuel_hep241, rbmk_fuel_hep241.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_lea, rbmk_fuel_lea.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_mea, rbmk_fuel_mea.getUnlocalizedName()); + GameRegistry.registerItem(rbmk_fuel_hea241, rbmk_fuel_hea241.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_hea242, rbmk_fuel_hea242.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_men, rbmk_fuel_men.getUnlocalizedName()); + GameRegistry.registerItem(rbmk_fuel_hen, rbmk_fuel_hen.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_mox, rbmk_fuel_mox.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_les, rbmk_fuel_les.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_mes, rbmk_fuel_mes.getUnlocalizedName()); @@ -6329,8 +6356,10 @@ public class ModItems { GameRegistry.registerItem(rbmk_pellet_hep241, rbmk_pellet_hep241.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_lea, rbmk_pellet_lea.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_mea, rbmk_pellet_mea.getUnlocalizedName()); + GameRegistry.registerItem(rbmk_pellet_hea241, rbmk_pellet_hea241.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_hea242, rbmk_pellet_hea242.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_men, rbmk_pellet_men.getUnlocalizedName()); + GameRegistry.registerItem(rbmk_pellet_hen, rbmk_pellet_hen.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_mox, rbmk_pellet_mox.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_les, rbmk_pellet_les.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_mes, rbmk_pellet_mes.getUnlocalizedName()); @@ -6424,6 +6453,7 @@ public class ModItems { GameRegistry.registerItem(missile_drill, missile_drill.getUnlocalizedName()); GameRegistry.registerItem(missile_nuclear, missile_nuclear.getUnlocalizedName()); GameRegistry.registerItem(missile_nuclear_cluster, missile_nuclear_cluster.getUnlocalizedName()); + GameRegistry.registerItem(missile_volcano, missile_volcano.getUnlocalizedName()); GameRegistry.registerItem(missile_endo, missile_endo.getUnlocalizedName()); GameRegistry.registerItem(missile_exo, missile_exo.getUnlocalizedName()); GameRegistry.registerItem(missile_doomsday, missile_doomsday.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index f4dd83ba0..fd293503c 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -236,7 +236,7 @@ public class ItemRBMKRod extends Item implements IItemHazard { case PASSIVE: return selfRate * enrichment; case LOG_TEN: return Math.log10(flux + 1) * 0.5D * reactivity; case PLATEU: return (1 - Math.pow(Math.E, -flux / 25D)) * reactivity; - case ARCH: return Math.max(flux - (flux * flux / 100000D) * reactivity, 0D); + case ARCH: return Math.max(flux - (flux * flux / 100000D) / 100D * reactivity, 0D); case SIGMOID: return reactivity / (1 + Math.pow(Math.E, -(flux - 50D) / 10D)); case SQUARE_ROOT: return Math.sqrt(flux) * reactivity / 10D; case LINEAR: return flux / 100D * reactivity; @@ -257,7 +257,7 @@ public class ItemRBMKRod extends Item implements IItemHazard { case PASSIVE: return EnumChatFormatting.RED + "" + selfRate; case LOG_TEN: return "log10(x + 1" + (selfRate > 0 ? (EnumChatFormatting.RED + " + " + selfRate) : "") + EnumChatFormatting.WHITE + ") * 0.5 * " + reactivity; case PLATEU: return "(1 - e^-" + x + " / 25)) * " + reactivity; - case ARCH: return "(" + x + " - " + x + "² / 100000) * " + reactivity + " [0;∞]"; + case ARCH: return "(" + x + " - " + x + "² / 100000) / 100 * " + reactivity + " [0;∞]"; case SIGMOID: return reactivity + " / (1 + e^(-(" + x + " - 50) / 10)"; case SQUARE_ROOT: return "sqrt(" + x + ") * " + reactivity + " / 10"; case LINEAR: return x + " / 100 * " + reactivity; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index f8b31f1b6..788a60e5a 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -473,6 +473,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileDrill.class, new RenderMissileHuge()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileNuclear.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileMirv.class, new RenderMissileMirv()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileVolcano.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntityMIRV.class, new RenderMirv()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsday.class, new RenderMissileDoomsday()); RenderingRegistry.registerEntityRenderingHandler(EntityCarrier.class, new RenderCarrierMissile()); @@ -916,6 +917,17 @@ public class ClientProxy extends ServerProxy { fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); } + if("volcano".equals(data.getString("mode"))) { + fx = new net.minecraft.client.particle.EntitySmokeFX(world, x, y, z, mX, mY, mZ); + float scale = 100; + ReflectionHelper.setPrivateValue(net.minecraft.client.particle.EntitySmokeFX.class, (net.minecraft.client.particle.EntitySmokeFX)fx, scale, "smokeParticleScale", "field_70587_a"); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 200 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + fx.noClip = true; + fx.motionY = 2.5 + rand.nextDouble(); + fx.motionX = rand.nextGaussian() * 0.2; + fx.motionZ = rand.nextGaussian() * 0.2; + } + if("cloud".equals(data.getString("mode"))) { fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 55610a57f..e94e26c9b 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -650,6 +650,7 @@ public class MainRegistry { EntityRegistry.registerModEntity(EntityNukeExplosionNT.class, "entity_ntm_explosion_nt", 156, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityQuasar.class, "entity_digamma_quasar", 157, this, 250, 1, true); EntityRegistry.registerModEntity(EntitySpear.class, "entity_digamma_spear", 158, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityMissileVolcano.class, "entity_missile_volcano", 159, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 9800a81f4..5f49351b8 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -824,6 +824,7 @@ public class ResourceManager { public static final ResourceLocation missileHuge_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileHuge_BU.png"); public static final ResourceLocation missileNuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeon.png"); public static final ResourceLocation missileMIRV_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonH.png"); + public static final ResourceLocation missileVolcano_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileNeonV.png"); public static final ResourceLocation missileEndo_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileEndo.png"); public static final ResourceLocation missileExo_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileExo.png"); public static final ResourceLocation missileDoomsday_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileDoomsday.png"); diff --git a/src/main/java/com/hbm/packet/TEMissilePacket.java b/src/main/java/com/hbm/packet/TEMissilePacket.java index 33a5ad205..389a4666c 100644 --- a/src/main/java/com/hbm/packet/TEMissilePacket.java +++ b/src/main/java/com/hbm/packet/TEMissilePacket.java @@ -80,6 +80,8 @@ public class TEMissilePacket implements IMessage { type = 24; if(stack.getItem() == ModItems.missile_emp_strong) type = 25; + if(stack.getItem() == ModItems.missile_volcano) + type = 26; } } diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java index 673f5528f..080565365 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java @@ -18,16 +18,20 @@ public class RenderShrapnel extends Render { } @Override - public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { + public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); GL11.glScalef(1.0F, 1.0F, 1.0F); GL11.glRotatef(180, 1, 0, 0); - GL11.glRotatef((rocket.ticksExisted % 360) * 10, 1, 1, 1); + GL11.glRotatef((rocket.ticksExisted % 360) * 10 + p_76986_9_, 1, 1, 1); bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png")); + boolean scale = rocket.getDataWatcher().getWatchableObjectByte(16) == 2; + + if(scale) + GL11.glScaled(3, 3, 3); + mine.renderAll(0.0625F); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java index 556007e6c..7719b2612 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileNuclear.java @@ -2,6 +2,7 @@ package com.hbm.render.entity.rocket; import org.lwjgl.opengl.GL11; +import com.hbm.entity.missile.EntityMissileVolcano; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -13,15 +14,19 @@ public class RenderMissileNuclear extends Render { public RenderMissileNuclear() { } @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + public void doRender(Entity missile, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - bindTexture(ResourceManager.missileNuclear_tex); - ResourceManager.missileNuclear.renderAll(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glRotatef(missile.prevRotationYaw + (missile.rotationYaw - missile.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(missile.prevRotationPitch + (missile.rotationPitch - missile.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + if(missile instanceof EntityMissileVolcano) + bindTexture(ResourceManager.missileVolcano_tex); + else + bindTexture(ResourceManager.missileNuclear_tex); + + ResourceManager.missileNuclear.renderAll(); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index 43a3989b0..647764a1d 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -191,6 +191,12 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { bindTexture(ResourceManager.missileStrong_EMP_tex); ResourceManager.missileStrong.renderAll(); } + if(state == 26) + { + GL11.glScalef(1.5F, 1.5F, 1.5F); + bindTexture(ResourceManager.missileVolcano_tex); + ResourceManager.missileNuclear.renderAll(); + } GL11.glEnable(GL11.GL_CULL_FACE); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index fff66451d..4326a036f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2562,6 +2562,13 @@ tile.barrel_plastic.name=Sicheres Fass™ tile.barrel_steel.name=Stahlfass tile.barrel_tcalloy.name=Technetiumstahlfass tile.barricade.name=Sandsäcke +tile.basalt.name=Basalt +tile.basalt_asbestos.name=Asbestreicher Basalt +tile.basalt_brick.name=Basaltziegel +tile.basalt_polished.name=Polierter Basalt +tile.basalt_smooth.name=Glatter Basalt +tile.basalt_sulfur.name=Schwefelreicher Basalt +tile.basalt_tiles.name=Basaltfliesen tile.blast_door.name=Abschluss-Sprengtür tile.block_actinium.name=Actiniumblock tile.block_advanced_alloy.name=Fortgeschrittener Legierungsblock diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index cf79f9cf6..618f34c1d 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2630,6 +2630,13 @@ tile.barrel_plastic.name=Safe Barrel™ tile.barrel_steel.name=Steel Barrel tile.barrel_tcalloy.name=Technetium Steel Barrel tile.barricade.name=Sand Bags +tile.basalt.name=Basalt +tile.basalt_asbestos.name=Asbestos-Rich Basalt +tile.basalt_brick.name=Basalt Bricks +tile.basalt_polished.name=Polished Basalt +tile.basalt_smooth.name=Smooth Basalt +tile.basalt_sulfur.name=Sulfur-Rich Basalt +tile.basalt_tiles.name=Basalt Tiles tile.blast_door.name=Sliding Blast Door tile.block_actinium.name=Block of Actinium tile.block_advanced_alloy.name=Block of Advanced Alloy diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt.png b/src/main/resources/assets/hbm/textures/blocks/basalt.png new file mode 100644 index 000000000..8cc74f42c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png b/src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png new file mode 100644 index 000000000..b808e9ec0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_brick.png b/src/main/resources/assets/hbm/textures/blocks/basalt_brick.png new file mode 100644 index 000000000..f4c9514ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_brick.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png b/src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png new file mode 100644 index 000000000..dba5f8339 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_polished.png b/src/main/resources/assets/hbm/textures/blocks/basalt_polished.png new file mode 100644 index 000000000..3827895ca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_polished.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_smooth.png b/src/main/resources/assets/hbm/textures/blocks/basalt_smooth.png new file mode 100644 index 000000000..a8f81601c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_smooth.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png b/src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png new file mode 100644 index 000000000..4cb524681 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_tiles.png b/src/main/resources/assets/hbm/textures/blocks/basalt_tiles.png new file mode 100644 index 000000000..35d972dae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/basalt_tiles.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/depth_nether_brick.png b/src/main/resources/assets/hbm/textures/blocks/depth_nether_brick.png new file mode 100644 index 000000000..36a0ebd3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/depth_nether_brick.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/depth_nether_tiles.png b/src/main/resources/assets/hbm/textures/blocks/depth_nether_tiles.png new file mode 100644 index 000000000..8b6bf7065 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/depth_nether_tiles.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sellafield_framed_base.png b/src/main/resources/assets/hbm/textures/blocks/sellafield_framed_base.png new file mode 100644 index 000000000..0cff1cc22 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sellafield_framed_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png new file mode 100755 index 000000000..6dfed38e1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png.mcmeta new file mode 100755 index 000000000..df9c61a80 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png new file mode 100755 index 000000000..450f57030 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png.mcmeta new file mode 100755 index 000000000..55438bf34 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/volcano_core.png b/src/main/resources/assets/hbm/textures/blocks/volcano_core.png new file mode 100644 index 000000000..8b6bb34a7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/volcano_core.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/volcano_core.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/volcano_core.png.mcmeta new file mode 100644 index 000000000..fc4bc9855 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/volcano_core.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 4 + } +} diff --git a/src/main/resources/assets/hbm/textures/items/missile_volcano.png b/src/main/resources/assets/hbm/textures/items/missile_volcano.png new file mode 100644 index 000000000..c40d47fe3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/missile_volcano.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hea241.png b/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hea241.png new file mode 100644 index 000000000..57478d3f3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hea241.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hen.png b/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hen.png new file mode 100644 index 000000000..f5d75ccee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/rbmk_fuel_hen.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hea241.png b/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hea241.png new file mode 100644 index 000000000..03c9d8cbf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hea241.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hen.png b/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hen.png new file mode 100644 index 000000000..59dd27d3f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/rbmk_pellet_hen.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rtg_unit.png b/src/main/resources/assets/hbm/textures/items/rtg_unit.png index 7675d8390..acd7254f3 100644 Binary files a/src/main/resources/assets/hbm/textures/items/rtg_unit.png and b/src/main/resources/assets/hbm/textures/items/rtg_unit.png differ diff --git a/src/main/resources/assets/hbm/textures/items/warhead_volcano.png b/src/main/resources/assets/hbm/textures/items/warhead_volcano.png new file mode 100644 index 000000000..f3bf97049 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/warhead_volcano.png differ diff --git a/src/main/resources/assets/hbm/textures/models/missileNeonV.png b/src/main/resources/assets/hbm/textures/models/missileNeonV.png new file mode 100644 index 000000000..9053496e0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missileNeonV.png differ