From c626f585827ca7415686b1cdc1010944a8e2cb97 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 29 Jul 2021 20:38:46 +0200 Subject: [PATCH] volcanoes! --- src/main/java/com/hbm/blocks/ModBlocks.java | 49 ++++++- .../com/hbm/blocks/bomb/BlockVolcano.java | 78 +++++++++++ .../java/com/hbm/blocks/bomb/LaunchPad.java | 29 +--- .../com/hbm/blocks/fluid/CoriumBlock.java | 2 +- .../com/hbm/blocks/fluid/VolcanicBlock.java | 127 ++++++++++++++++++ .../com/hbm/blocks/fluid/VolcanicFluid.java | 31 +++++ .../java/com/hbm/blocks/generic/BlockOre.java | 6 +- .../com/hbm/blocks/generic/BlockOutgas.java | 3 +- .../java/com/hbm/crafting/RodRecipes.java | 4 + .../entity/missile/EntityMissileVolcano.java | 61 +++++++++ .../hbm/entity/projectile/EntityShrapnel.java | 125 ++++++++++------- .../java/com/hbm/explosion/ExplosionNT.java | 7 +- .../com/hbm/explosion/ExplosionThermo.java | 5 + .../java/com/hbm/explosion/nt/Mark5Ausf2.java | 2 +- .../hbm/handler/guncfg/Gun50BMGFactory.java | 3 + .../hbm/handler/guncfg/GunEnergyFactory.java | 10 ++ .../handler/nei/SmithingRecipeHandler.java | 4 +- .../com/hbm/inventory/OreDictManager.java | 3 + .../java/com/hbm/inventory/SILEXRecipes.java | 44 ++++-- src/main/java/com/hbm/items/ModItems.java | 36 ++++- .../com/hbm/items/machine/ItemRBMKRod.java | 4 +- src/main/java/com/hbm/main/ClientProxy.java | 12 ++ src/main/java/com/hbm/main/MainRegistry.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../java/com/hbm/packet/TEMissilePacket.java | 2 + .../entity/projectile/RenderShrapnel.java | 10 +- .../entity/rocket/RenderMissileNuclear.java | 19 ++- .../tileentity/RenderLaunchPadTier1.java | 6 + src/main/resources/assets/hbm/lang/de_DE.lang | 7 + src/main/resources/assets/hbm/lang/en_US.lang | 7 + .../assets/hbm/textures/blocks/basalt.png | Bin 0 -> 893 bytes .../hbm/textures/blocks/basalt_asbestos.png | Bin 0 -> 929 bytes .../hbm/textures/blocks/basalt_brick.png | Bin 0 -> 556 bytes .../hbm/textures/blocks/basalt_overlay.png | Bin 0 -> 947 bytes .../hbm/textures/blocks/basalt_polished.png | Bin 0 -> 730 bytes .../hbm/textures/blocks/basalt_smooth.png | Bin 0 -> 362 bytes .../hbm/textures/blocks/basalt_sulfur.png | Bin 0 -> 924 bytes .../hbm/textures/blocks/basalt_tiles.png | Bin 0 -> 298 bytes .../textures/blocks/depth_nether_brick.png | Bin 0 -> 809 bytes .../textures/blocks/depth_nether_tiles.png | Bin 0 -> 780 bytes .../blocks/sellafield_framed_base.png | Bin 0 -> 445 bytes .../textures/blocks/volcanic_lava_flowing.png | Bin 0 -> 10100 bytes .../blocks/volcanic_lava_flowing.png.mcmeta | 5 + .../textures/blocks/volcanic_lava_still.png | Bin 0 -> 10228 bytes .../blocks/volcanic_lava_still.png.mcmeta | 45 +++++++ .../hbm/textures/blocks/volcano_core.png | Bin 0 -> 1452 bytes .../textures/blocks/volcano_core.png.mcmeta | 5 + .../hbm/textures/items/missile_volcano.png | Bin 0 -> 295 bytes .../hbm/textures/items/rbmk_fuel_hea241.png | Bin 0 -> 585 bytes .../hbm/textures/items/rbmk_fuel_hen.png | Bin 0 -> 531 bytes .../hbm/textures/items/rbmk_pellet_hea241.png | Bin 0 -> 318 bytes .../hbm/textures/items/rbmk_pellet_hen.png | Bin 0 -> 279 bytes .../assets/hbm/textures/items/rtg_unit.png | Bin 264 -> 267 bytes .../hbm/textures/items/warhead_volcano.png | Bin 0 -> 299 bytes .../hbm/textures/models/missileNeonV.png | Bin 0 -> 9257 bytes 55 files changed, 647 insertions(+), 106 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/bomb/BlockVolcano.java create mode 100644 src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java create mode 100644 src/main/java/com/hbm/blocks/fluid/VolcanicFluid.java create mode 100644 src/main/java/com/hbm/entity/missile/EntityMissileVolcano.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_brick.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_polished.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_smooth.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/basalt_tiles.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/depth_nether_brick.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/depth_nether_tiles.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/sellafield_framed_base.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/volcanic_lava_flowing.png.mcmeta create mode 100755 src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/volcanic_lava_still.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/volcano_core.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/volcano_core.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/items/missile_volcano.png create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_fuel_hea241.png create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_fuel_hen.png create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_pellet_hea241.png create mode 100644 src/main/resources/assets/hbm/textures/items/rbmk_pellet_hen.png create mode 100644 src/main/resources/assets/hbm/textures/items/warhead_volcano.png create mode 100644 src/main/resources/assets/hbm/textures/models/missileNeonV.png 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 0000000000000000000000000000000000000000..8cc74f42ccc54baea5748bb17a1ed72888cb4edc GIT binary patch literal 893 zcmV-@1A_dCP)X@0C;r8|xfcj7<#Paeofk1%9#zp|%-rfK(o6Ve` zp99d;)I>g?N0KCtkB^z2o+gz_Ay_OHe=HVbbaa%@&riO-zEBhefS;cq>~=e)Qi-dp zD+EEn=kpPXL`WnOM59r3TU%S2-EL=pf1m&7cDw25==dkw+1VkR&GP*G41g@lSglrc zdwYA@>FFtjLV<;a1r$X=6h#gX56S2AxZQ4ccXxSudLkN);&3?l{QN|(*At7y5dQxD z{E{RQkH_ig=s=cbWLd`PbW$pnP*s(SiwiVOLy{zZe}9oAiHnO1ip3(jiHQlVTCJk0 zD)D%n@9%GFwHl%*GC4Vk*X!l(?vDHWdzzb@vDs|IVlj+HBcdoG=yW>&;^HEmot+F0 z4$|D*OtDyGdwZKorGhAmw6?ZlwOYyLatsd-)7I8TCX=C3sZb9P3x-kKBg|$qv$L}RJUl$$@pw2mIH0w)6`#)sfX-krXhx%vv9U12w0Hv9Uog7{p?+kWQx&+-|pjX=#b>?ryrex(J8E|BkDw%D}(?LqkJ^!(jk=dU{Bw z)0E3)LZJ}C#>R%fsi}#Nj}P+sJU>4_yuZJ5c6LUwSR|E7Q79A;MUh-ChoUGL3O zGRb5To!9Ht`uqE7Z*M0Y4x=avCX)$G(}+YO2!epBs`U2uBFi$OD3VMj0kGL@2;<}9 z{*#jvDwPTri-o$nI&N-mP*s)H)m3V>8ZMWMKp=p_;b3lVj**cOWLc)GtBd~tDw%zH TGK)Vf00000NkvXXu0mjfY5S(k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..b808e9ec0ad00949cc438210533351a7599553db GIT binary patch literal 929 zcmV;S177@zP)dBzWtn(9&hhavnM?+g$%M=0Vq#(fv)PQcwY3#hRhgTc zLs1kC4h}dwJ7acsmi_&Gg25m*n+=D-E;Br>EK3*+H+@ z1K@Pp@Oph*TwHK{eGNcUQxm;?J+xS@yng)yBO@bRU0u-tAj=N~0s&N2<@WX#y}pS^ zB*M+j4GxC`fN(fWqfSeqPy}Fgb(Qt?b%ce5g}U8t=koF&G#U-=kK8l}0&m{@g2&?_ z91f$`>see}B%jZdN~Hkk?)LHS-6mQ|l2}_?qf{y}IXOwOSj1wnAj>k6T>R+mIkB#}tq@pwoklO&T#oK7d(+cDbP9n@5X-JLx| zQRMOQ5m6M`*x2Cy{vKgyXsE8LDz#dTL?XeBM8FM)YKGRU0n49*^U4xyWWS^!NAU_xk~8 z$Y!%hoo+N54FDhND&Kzh4b^Iua=FaSO@>G$g3IN?*=}cGV31Pj0f1O6hNii>dFk_K z&(Q02^nDhfy}g6tU71iQM7dn%UFsLx5V;~KT)sO5k-+&twt~yBoqqq_U*5H`NbfW$|IRf23eNb-rhz#Gc$uurz4xq zQmIt1+wJ)MK6H%@M5EFF?|nWW>2#X?{X;}iq+BkeC<>ZfF1KVb7?321bUKY72vjOE zmzUS{_67LV`w2#qf#O|>_wWDW#fz`-dOzmr>5+WCKtoSY4=XDxY;JC1GMTVitwf_y z&d<-W+Z-eke{*_rPBXKi6otPKn>tt}15YYgPdCvmbcda@4B9~}Dgka4kP|z9 zeghOM^c^XZ72lt8?>Ww1UteR>G-$19+m@=TD9e(zZRz`-Ih0cT{{E8ZIWb0dyB(tM zd(P)G=kpl=Yb|wMr=-K-Kv|Xmc<)h40nl|Fi^T#_RTb9Slwgd(TAKpPvP5f*b1wa> zstV`atw>Q6gb+|lVT?(E-uv`fYw_NvCY#L$A;gVA-}gK`Jfz?`lfRgcqm*JCM?{SA zzeP-1nB#okB<+EqF}XJv0ANg z&XGMmJ>66IgJBrR^BgH9S(Y&j0{}6`+X&Ck&j=w>!g9Gxl;7UoczJoDX&Q!M;OFOu z^?HqzGWkWkzrWwjJ}v2VIx&tTr_$;;ilQLTbA%8n zd1^FQNKBXW3+EhlT@zzuxm=>P=5ROwH)GAcBIep_trLs3Z5hXrx~{R--r0GMg;FX> zWv#_pO9%k~DJ3yRj4`SB#L^f;2m$f+^>wE}*L6HTK4OfaX&Rh!?Du=t>op;SzqpB)LM@JM21)iUu z6#$FHLLd+zl}eG%=gDL;F+mXiZf6} zNZ@cd08mvGgTcV;?5rPPcXyXSAb_yAxTx3F)v><5uJE52fXn6bdpsUgRi&z`isj{H zlF1}@cXt3pqfteYBw1KnThsUU_Q>UOjE|3#&1Mlrk&TTFGMS9xa=BtFD=Yq+n;UL# zZ*e#ryuH0)G#Uwq!x(;kepYQZ8<9u^kHXa{2M_@Nh@h^*)=; z#@E*uHk*yZ!$b1d<#L%wB*MqXhw}UT8xuv*+uz?W`+Pn^p%CZi=hW2H zV7J=|hr^gmCPY!hAPB3(Bk%9;lu9K8uh*;ld_IguBZWc%o6W}d_BKsTO;{`zhKGj%*xufzp`n3;g9F9w zcE@B{_5&D7rP69TomQHgn>)V0zuDd0RqE^OcQj4w({&wHRTWLsI!q=Ls;Vk3mn$|m zH|Ga9J3B*=BuO`$%}O?#rJ|xDW;7a^nVIpM&1Q~|k4YwzTwPt^bUGCvHa|b_4+eu+ ztybdkIR98I7A7Yr7?bpUs()7D+Yssa=A=CMG7hxVZTLg4gS1Y;26`>S`24p|!P@e*p%6 VrkqTs1gHQ2002ovPDHLkV1gl;v{V29 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3827895caaf153258f82d911bc138e8e65fe63ff GIT binary patch literal 730 zcmV<00ww*4P)zK@<;aR;8+Y?T##iMaUA3OKKuP1 z-}jl#W=O|zczSxmvMh`-XswY_BBkVTI3T5DI-RmyE;$~L{QLKhwryE1mpnf|BaJcK z+}uzU1>5bG^?HqzlJR)VcsvH+>+1{KwvkdYpU?4qpXG81fGo?B*Vk77qA23(>IxwQ zN-2yn-JoSz04SyKeV;T<`T6<5c3qbs2)dJlARvxo!Z1W@jcwZ$MFGHMGU4v-j>F-= z@pwE*O_GGNED=KBx-Lag@c#bZov*dVaU71vBkT2=s;V%?;JPlO(FmDk8F`*_eSO^- zIh{^%90#p6!{Lyss!&SNG!0Tp0Gg&D%QB?rd8BEIF$O6maU8SVZfV=LtGcdn9EZBD zX_|(*t{IQVL{WsaEQ{fANEAhUe}9wbIYJ2XJZCf-VT>V;W1=V`&vSg=r>ZIdilR8h zxY=yj?RIFb(OTnqUI&$wlKp;9S(X@M*zfm*VMq`JR8@s7gdj;0w%aXD(_oCDsw#%V zAxV;u=Q+Q>zi6#lEEb%pU9DDlo_F%#Y!<+7x5M{+lv1>9ORv|Xu4~S~rD;l06l^w| z6G%!a=JPrC_xD}4T5HlYrD+=4wnYfRYPF&)OFln85khc#dwco?&-3W_`@Frqad~-( zWm!0m!^g)*N1$!nD5Xe}gfI-r^PJgi#^2u`@*I_ASp-3VQi{c5f$O?VCKCpO0d-w> zGO{cqiXy@=Bn(5WhldCA^72Am*8pAPd3)QoR8_@bFz8b7eZOPmKY`SVM)OeMVgLXD M07*qoM6N<$g5EJy%>V!Z literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a8f81601cb074925e80d2dce24f375c844b01ab3 GIT binary patch literal 362 zcmV-w0hRuVP)+^FS}X3(uep5%M4jgez~}P;Af-e~2~{QM3_$PwCNQ(X-dYE&r_nJeB%~3OG?Wrnz&iNJI{2jw{FU~pV z+rqDq;^zq)aTB2~i1%6Ef6sMZ62xJ3UqP)kYOOEd>+c-Ie@2kcO6~a>7XSbN07*qo IM6N<$g6i6#H~;_u literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4cb52468115025b375f712a0bea49f61f969b0a2 GIT binary patch literal 924 zcmV;N17rM&P)6}NMJIV zSYBSHQmK&3rO){AbZ$5X@Vb>^EAJI*p5)Oyi+uLJ*e;Jy&=7x~H82X-^uK(Is;Y>hh|lMvtE-Evt1E_whw=OU zl*?sQRsF9q91df%*|@#EMUo`q@i>7%fR2t1CMG5Th{xl2yfjZMFV?-`m?u{{1DV`w1jTqF%3~sw&2Exg4`tEcpF?E-o$*1c4?`sMaK& zg%zX@1(UJD-9s1hL4lE|l_ydWL90^!+l*mgV1SjC6*f0FvDs`m91ga&wm3UG!|8j& yWi>$YpASeR5?HNPOyXy>Ii^|vRiUr1kADI5KzD!a(=fvT0000R}BrfDe4 z@~i8=aoaZLd8X?+j4_Pk2*8!!thKyeFNR^jaU9ll1t3Wh0IvMz`##oMilX50cyPbp zIgW!gO>te9E5CW3M-)Z8-*1*>A&z52gtl#2*Oe>RB7%sZl*0FYrfDJ!LxLb62m-EL wH%&v|_w4&l*L7^$hB4;B zQLA`M2sXwThHbXPIsHEI=k>LdQqpWTNm?!ZNHU!+sI0{SX_~URzbEQ;+3ojOr6`S| z9fth(@PH13fU2%>Qqt;l@Y9qqD@crCc6-Zgx8qorU<_4R^3!C3^EFl|^mK}TI~>qb zGH5ioo6Q*2HO;D`l#Wl3kvo(^iYTu5n>VbUe}y0=`EP zvFFhp^*Fq4Xoex((^CfhK3WK}`5d!c;-o~MzaLWPj=bEHWf|Y9iozIjU|S2uCnt=1 zJ*;zxqTuy#KvJW%MoNjS3y6}0R@&p@;)4EYL?i^(Ih2&V9}amp8esurEv-}CbbCFLFhl`wc@A~Wez`>d@#zzy(V!Is%x`XZt!una zlku?2-Q$d_vomVv=%1cqouk!mQ#!}boes<0D_ROczS+=hG}!Ls nw$qaf}XOx2x!#<9WN~=XdYupPmS^jHYdw zq-1c8Gzi$dyr4}G@af@!APh;<6cL7;4hNRjQa(MgPgA}=K4RjSsq4tn6t5)XJg2H_ zPOi;y4)kYgv%#t=pc%jFU~pJM>$JyHm6^PJRL04DE=w4fb4RU9LO0KI*F z#(Phw6rr`$=QA?P*i{uu2>v}DY3rKX)e2z@#q~Aq<-&Nm@ORrHe*N&l3nB19fR>WB zs*pl(Y8t%v2}I#99+b$*J$r&M{UM`j@*qd=z1|rh0s&1VlRHjrVL{4y=oU z5lFADaNZLq2|e&Oj`{TMGg=D4{rx?$)|9&)-89iF#gEG+Wz+EfCgb-%KcinZRF@v- zJqv4jvX*06BL6E(#^VtoCc^ogyeL>Km%P8bV^I`%AL6{nJBd&VJDbr=6RFnp&Y>@L zP3;`HR|NVM1;#K-5&-6D$}9|NrwJ_tSrpL=fs13#U59+LSa6kP5Jj)gy{Bm!{&{|8 zyVGqcEAix5rvgGU>)$xcbOYk0L z3^s~zeUEqY^}%Mp$00qGYc!5sRU?6!F^rcB!_@J|Uk^w(&cR literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..0cff1cc226b1f128ee7addbdfe6517182479923e GIT binary patch literal 445 zcmV;u0Yd(XP)jG57Ur}vKb-hUWGgi^{XOew8m zGh@z4t(EgUzW{U2B^5wbm;96xBElGhl+yA-ME*zt%#08MAq0Hy0N!)XnNkWOLQ08J z%9n62P}LFyDIqV{g nM>eo-rh6bF^xoIq$T{;5w)swufV|9*00000NkvXXu0mjfrij76 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6dfed38e15551abf952d5098680e659d65cfb88e GIT binary patch literal 10100 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�@8t2V^!U@AyI>KTv*UJuTurt7uyc2jEBLO8GY}31h zdZ*wQ4QQras*=l;fSfl2Af)o}^lNib@N4Qu=l!+naA_G5t5*51-oWFVuVC5T)bXB1 zLIOPVaYSg2wW`wXwg_I)er#RB0WgvvS#s=GAT(iq=Y^1S^&<4ZBy75}qr6EYC5E2g zoPZYC9V-P}W~POI-)5^$&HJyI9P&{=#VI%LYK3|mD94XJzrDE(eIztT^oO_F;u;9# z%v>D^s0|+{QB+tM>(3JML|&xNXuqj@)t{54r7=wIpsk-t@R=<-~nB zA5g0fk)tzS+6_TAU{5ugqoeIBo<)T*vC$X*|G?zs$wX(fo*wTz*$T9Za1GO-Hn(5b z2+G}=6Fa)ypO`@c{yYE^2GZJVev4kVn%hSzDfnmh$Ky4f#7OHHwR!Cz zrH`b;C408?lS%{skb$$Nf*kOI5kqU8rG3Pj(4j9kB7bX`h0CFGoDrDenXu2|V3OiF z84b*u_A^zpztKib^a3_OQTR;s&8glJV z-UMT_N7JMP6S4EVsm)IC{_i|oGY4RZ+Pp1J6|_lt(Yyyos*3+Oh62MOo5Kx}Cv zyy%muq22XOoxj9R;mrM>;POweey$QWe^6X(c6zlWl z3F>XZzu=LE+z#JT?m|FXOYeQ?Eyv!j))p%wzsJ(&MRT`snHL#ZoJw{FjKcqwL62o~ z%}&71)Bx+blP7pIL%Vz1IbC~LC%A{ z$;%s-&}9R#1klGIM*XwKw{24~64wMSG4!1c$2+4?Pfl{laXfHa^iG4q7X$OP@ao-07d;PVnmI{vL(XMf-JNSEivW1OM1Mle;*s~;F?D{KZ*_d{2SG`!Kc0F1>Ad%XItkePM~!t>MPih zg^nslf#DrUFQbXP2lZOn1kOeFzxy20KU_V(0wpY&k>-m;kF#vFxVVh8OeI;Hq<9=j zNq#*Mcbh^@!v-UN+cfXq{CutCuF-Y=E{9n`^rR{7BH|2zX3@ht{;lrypA7UbfB&rh zrGrgITgkhxQTh^hYe;#NqSZvi9ze^zgA}|Iw>PD(%J+f;p-HJBOwDyfhu3&IuPwQ7 z+&H3f7y#qdI8lUW^FU0;a;B;&U%Y4M?$KcwX?;PpKcukulk<^Y=7!y=?{SpoG0GlYNA!2we5ZJI;~(z_W0Y|V;WNEm?B168+?oF z0KF#Lr#20xg?fL@0>7aLR9x^Sjuhw+LE@a! zeYr}n%@@1t;DCpnjXYbAEIppc7D19OO0fj_a!G5?(3B%6;+3-ykVUMgr_Chw0QY+E zdEoKNa;3kHl?_Mf>UCMg>oA>Z)GsN_&(qI{bLgwPwFix|m(g}Fi%pFnGrPCHjcp0% zmGu^`2{L4_{nJsaZBceGpg2bt(;xCgzHb?CtSaWvp|vN&)+q00004b3#c}2nYxW zdaOaUo~37m zo`wVsW+VXu8hV+xnfV(1P3C`c^96P@CX^68Oz1t`LXTo*zkEX|N}_{J z-1|MkEXCjq_R#=;G{H|jx4%5WPfKj9u%izCwj>lD7K*S80H~g0_uu>(w}10n41hmh z;3oxs8NdfL5RGH(qdw7g$?VHZLKaX1gBv)a5B9nJ*>9n&FkxO$yq%*u3J72oHZiy# zY-0xr{(4Sw&?i)Z{2~LT@K+1+=cm{~f~krUG@wCS1wis-gdHS=!c)Auh7yt=?c??{ z=6`B}kb6~)^*`L##8x!kq^W4F5W4mL@@xu7_mbNk5& z7=`Uesx<1_NBg3iFAVg-31d4GhzPDzh)Y+u2K!q}mu z$|~}k0^2p%N1NEa5w>RtX^Dyz(Wb*4jF^9UL4KM8ppy=6E5>a9Z+}es`5R`R9%IJ| zv;X!DVHrrzbF@;DL{`b|0d}iHmw!74%(NS|Hck0p;cfiN$~UtZ#;8M@m6t8fpyB=3&U&NBP-7{Bn?y#elE6F*Hc%30KAj6Yux z<^}VwF37Kz*jN#bWBjrr%nQP@!Y>0B(9SacU;hE~|L3baJg9S_s(D~X9qc$pg~05$ z*TRFupf@eiM~|5Q@;Q~SWDSZ_;X#l@!;U&6-xG|f>jlwn7gmA%qCi`eKCQby@bLO1~Dou14=7w*J6hj_oz$q!7g@p zh`*XsoaES%BYHeW^&C~rMLmeA<^_gT&4WonSV6MeCwga>ka<+k2@j5DV2|(@DIqN> zPUld`viDb8R@f2RP-F3Sp3yOc#s9=pI_s)JGlLb;&R!Z6UIL1qDC>v zxCg&}Mf!F@`o$T#=g7|%YaWa(JOBGnpsYCikH3;XI~bv~vrq;)dqZ#*HWYptNMA4T z(-IvE5A3Le-R?sfsIownmQV&ZKKs+bikikyulBgd&3}GQezhbTbx;QUv?TdnA3rOE z2LpqS70QlWd!GQ&{+Q0gF=_*}Qm9zY!~P#Wpt#CNU#GAN*hJy>dYI8){E+;sQ_|;G zsIKMqr!Qa?NH3RYwI-E{tOVJxL&)U->i_9`7?pHLe*C@m%)9;hEBs_BVQnG5D9{~6 z@YmSBqxYi`#fxkF+~eO|q5oai|5fq&im)s(TYa?CXbsvx@GDkf1;B>dAbw{PJMOb# zHz;p%R@qXHw&IlpMm5PuKHNiFEeLxvrMOvQ69qwdpt}>?-hk-w0A;mgqwPDCfl!nb zM>kaS0-adUkUZ+*4o3i_Uz|~86=Ai)KIlm(YiF=qUBbM8c|rPWg1=e{jd#0Lg(pnw zQ#lRj4ycZ1_|HBh{p?N6gR2E$;c4=sNom!!sIF!9#kIgBR@k8<`oSLQH>bjbs*vQc zJ&T`vDj%=|Lv%30juZU(oMx}fp1eJU%tA3M01;GdA zU)|#NBcg|0{G>n`AXX^5nP9hi^#1rU(Kx1Bt`Cs(XvT8kS!NZgqZt2BKVN4I^#a7Yr#NRL3*AMvOuTd!N6cgU8+TaUzGUClBy`#`0UR{tA=ll>abfq zZvR%2%5HUPW-dt{b@5YAdY%g>VkK+fX9X>tw|eM)B8vprt_5d__6MXdCghh(*#!g9 z{s7ber%%bhK5qd!|KttTvLe3{9t0myc+_SrAJ|tde3FkINho(eJ|zF<4As%XgDc?y z7V?_{Z56>!up>wB@eb+pD?%2?-(I5sU9b8pe>@=+9@CH5P#c&IY?uwGR#2{3DcE2G zx7)*vdzg-jlx1EmTK?%kVnI&r70BC%5%_g1=he4n`#3-;%Wm z%YYqPlD#g$2MOOd)Apd$vBEtWlf1t}SV_c&c_E@B^%&K)*sU%UC4OFzznM~8E^8Wh zP#x7SaFv!|6(~jjPu?T_%^e=#D+p^IL=R%@Zl7wgB>j3KJm@Iw$dG)nPyWprtb(k8 zzs}IzH4of&2lwt6JM7^vr`W9&TS+kKj)sn*cy=Od0JQg3r6t-bqQ?WN7xIGQXhK*9 z`hWCLPNrMW?5E$5pG>KW66I$FR7lOxHMqSV$w!aq9B$*!=cKO|*q%j2b+r}(gn;ck z!o0vx3lzU7r83!!vF|>BGN6VIlp;ULQ0|zp3}~hB3r|>zo-#VtM2`nj2VE50{^ktr zEUM@5=L^sfmTMlkM?L&?it4CZA8f|BgH7DQCVcXS{3PS{lVfb}JN3fYGW;h`(F4cz zfBGEV(Wsuopo9nZ(I(0nh!jdI8q{@S$#d-tdf=!o=lH87UPIDzY<%%AwpP``*N1^> zah`s8hM#-fR!k^L^7D-7K}@yqq?b#gtq!(lMI%+qN<@4!apM zdojUZ3&qt2*xf#+|M3C&>q|oFrPTTKSk8k<&4YOXg-4IOXr&;L5;&~DJ=w-o#ggcQ zhg6qySOsqX<|TeATZ#$zTMrtnuaoZG5&4@bJ}>bnH<y!@j0_6-k)@U^L;RqXo)Xim(?A?r|^tD}!eJBDVG(0%ZMIStfMK{*z z?iZyTDnRsuJ^1aZ1d>0Ug4HdBP&G_?4t&M@tBKSRN@0hF3H%s*Ms}?%dvRd;%bwu;}>l8m(l74lK>O2Rl@aJ<`R4?j1If#k& z2UOFH&2Xijwr%1;xu+A53d~U?BNupX8%Q1Rr2SVfzk49Z`0B zh_Xt!Z&kY{p^!z!D9O^38}gH^6`>nn{Kd|ynoGT;v?6-gL-m}TPOE_3l;SFVyTFb* zgk>PVT9Rx_U1{t%7J<2}ZJoN%%Fi=&N8$DcC}&BWB|Vz9JU}VzgC54cBZs6*EdC}V z{pyOa4EVGp*6^#5Q_&W)?NM4}ya);yRLvaMZ<>eRl;gD#=lA-}n#$^!YTtG4u2wr5G+ z+ah{*3wJQ0Dm=wWPWpDy9{2uyQTq!4$^c5qLDW<%{(MeIJ%k{~w^G=C2b8RM`f}DP zd7X5K-rd4qiA^RSFezyM?eh{9$q}!Hj&PG0#cz&8l}$4_ zGeaOf%190s?(qPBli{3^x(bFA2lfGTF^#U5);fUyPTh2>B zCl;fep-Mf`<1xCU@kTrYoF#f7<}^N_HU#r2w(Ow{^=n2l%ua(7i+Wm4{Sl$?#- z4%H-+DBMi&H!11S4BMAo@RKEOKf;a^jNMG6gsVZRoe}%zXjc1+18g!N0n#@Md|LCM zk`Om~+{G52WN&~!oszzqP-Ow1)%bon5!2dgFtzvW1AbnjoyAnw3*37<=usk7>9eKuEFj(DFb~VKbm0D*EiU!IeJi6Bt!8~Ll)X1GpvBZ)0Bt_P+VnoE>w`d zUJzCb+|Xdhar^C!S!=ht_^SoQRffOL=>PaJ$saiU*%agFrId8LJ%Pro5Qo2O+kCK_ zi3ID-HB}x+zdV!DS9oAZKG-37x`TUnEV#N{lAmYbE3{SQr&F;ArX{r_f~`N?poIqj zVOe3jmO_cu6_$ZeWTeMg%L5fF+`*`gM$@cx^KXAED#Y&gu(ga)R(2vR1Ga034!4>8 z;#;a^h0#ugMS3(7*RrFqTOILKYx)KsNFH^m=0(ec^f<%zjMNK$+E|(L=Hze_)s=(B zUoBBql(}wrF!kt;!p}=om5J&MMID}fNA%tUw6pDphFlbk-Hb)O)DDl-Oa|PrgI|<{ zEKpo!=w~NXMJWqa^Psp{Vh07$(;cdtOs?=EMcIy`|Ir@fe{_i3?ohS9NhS3{!-Gm} zP}OxUkw{MlU|Ae|ng ztwwb%$@{w$-(E0#F@Zeb(?BSfq@N!Po$IjEO3o2~wWLZtDnFeP9ggYj53zfLb^01v zBtI$e*I65d$w4eF6QpD|{%kH;cqWyowxR_?7Np3mUsd7J&dM5XsP;HCVFkr;21l8s z^-$JAb=2DN-WyQ7nM$rq3Wk4rh~4Uwe|wJcHzjscO5QLps1{y=rvuS$4?0G0Hge?W z8Nml;pS+E>agF-2}x2px|*B5nT4&1gQ+8>BYH=sL88W;Tz$p`!E z?x&8mi0Q8fo%vjg9c2K=Ag> z1r%P4hEhJfnw3=Zg5<+J{M4a)863|s7)A2YE;_NyekCr2zfQ%Ft@QyC7HyXLw^N}K zU~HnGC{de9YYE!EBdYU)jp=&-3s3sxDf6#xMXmK~9;8Q8$OF1>#Bgy2oyf^#w|W#u zH_V=0OM;csLQS4@aR(zzbTDd7X@Bb_QDz16mot)wG11|+w8gG7^0NiLrc<@7MDAB} zk!<}Rzf1b;M7rE1RGA1X^^0%YjKnH*7O0Tp&!0|F#nD7m$WC8M`wiJPZN#-~c(AT3 zBW$PP!5ov{6jaYH2)BjEx>dl9ja)?tvakUu{{g#`pks}{_2`~s<5z#&TZOr}Q!0_h zOEoLeiIJ5aC)fvF{M#wTc}5ii+yDK0=$!%ivtx{(iato{6F0voq{K6IA1ShEXYp3c zVUq=J{`%z|9>j{_k9LW^_ke1i!>?bH9%cAdAX=6XS@NR^#oIYPlU8D*m;FtNX-eFt zt1GG`lhW_a6qr(6m#tnRR;?W->1<`+^P>r~PmhHMArNgk>~4>yiKUH@+6@i;j}OEO zb4ba956r)skRIjItWJzXW49v~c&H1FI-O@fe?fYbN#{GiDG1Y2Fjq^M!BY?2?{hzje}!y8r>8-$_0lTqB3D15#DYTeb(k8Wg@ z=f3U3k_Y@vMs&DM^5GuQyJOtYh>J7)qh0A_e0C;qDoSzmUQF7Ni3+ia{LO;=^)=c_ zv>FvDk$3erhEgS7=C z#4A%uc;IMHWZShOEC=fy^H&Q@H7l8ab4Bo9ke^HmS&-_j_6?d>!-Hh6+m^_7tINi( zew3_2jj5J2%YaP`c4&xpd)WOE`ST0mK~b{(Km35s!I;Ibzs2O&o@mQ4{QgKhl;aHB zQRt2mL$2Oltfop!!ZL9Ae}0V}8vJdE>2xi_KiVbw;31?-_~{GM*9$00LMqtGpI?w3 z&7{V*3RMP*lbmH%)%xIciro^g)Q)3#Ee(m;H`nMF6Uj&)sLB-`r-&YQ$*(iWDvVAH z!3T<0S29v{QBZ||>x$9jucf$RL!m9$O+)V|PpJO-8$w)SRIJ3UezlO5w@UiWU5oBH z<}YVdrKEb3*7Lu6MRAf#!?Kw(shV0*Dco*{YFVM?Qh+rt)lsMoWKO02a}#Ps-?T#Q zrXe}pBz=A*MQ5xa6Cw?N@(7&>Wc}Hk;=06C%Yg1EFpcI>_^Y`LcrC*{rS7j5MDM>N z3HJIDo?S@MwfU1>aEAHkXKhL+2hyBtF10GbpUv@aZ^(}(*q+0u0V93&J3Lqh?2ZgL z*{v?~-<-AESlpI`pS>ZU$eapR)jYT}cV;{C7s-2D*zEzGoj!{%-*Wq_vvpDK1HGqx zqNh73ceq7z(5LtPVSD+-NzTn*za{jjT^mGq9G~!}3LtqP!9rw}y{(<_dka@QL z)yJ&nDe0>@)oR76gmPL^T~AmZT@$j3P_8I_U{$LWf=A82nqW6$=*OZDbUo*0#8+y0 zFml*L4i{bf>;59e;Db~t|LIe4FVeE@vuZ1Rtd^CuRacN4)|OEw;#?d?tMd9~l047rQ$k{mmJsng{Gikvx=+uD_5N$ACNNp`-eG4OEjr z@PXUEJwYcIRB4IP4w83ABp+_!(~9)h$C4-p;X!1`pUXAObB7HVl7akz~!Q%nSJsGsK zR;VWc>GRpWeRum&4Ukf{ z?ha&=_xh;x^#Yw(^dM@TykYVvn#P6H={%@&9tCF@R1nLpo z`U(u#Q7k1=T4G1;_wztm)h?z^#B|8tE?^~Pd-To-yVoQA^bAvF0Uay)@72oVYT1qm z*!|u*L=A*Ry~uxej*5lkMjOGDdw+~81M^>>$%g>pwm=OX`P+rm(RUUw)K_iPK#XaB zE}B3&3oHpfNIsm1Yf;s2)&}fOM71bEh$K1hFEheoUCH0)!8(9cVn{w1k$*EG#7g>& z5fukoRP$ON)E+ukq3Uf^k!?MryB}WFS5&2?)CYw(oo$kST9mD^H)((s_gnN`wf@}ZrQZE~QRmbf2{(BlsJcp-xg%_sN1 zKN1;h6>MnSj6h0c zhfHmayTdNUNk(zJ5FQQ{zBXCxIL5udg?~FG{bsT*f4umK_MILkdeR49$>q+M5);!U z#qk2SAJO0I!8isc+*z;3xaJov{4-2VKS;NcCnUM*P%+UlQ%a@&O?& zNuP-`qhp1xo$RJH;tqQF(@eaDEZ`1$*l|qpaIkX2OI^|9WOkPaX`*vQ(|Z+6FS zbtJi(-g{UE{7pe9?(;x*Oc^3*igcQ4JAcaxWl@t6dhnkPBQN@L)F7P!3UDVuB7{I zvF1T@xgc*=^|WB{0e_JZO4^gSN~|V>x|;nohDu>Mt$%5BaGee5tdWzKqwmukG~Pi%kD(j2VHd6tgE^^Jka9~ zCfpXF6um#*CH?eFWN!WP7dh#tXJR_sRdPnYEPpi<9>@bh(gJN&h*fJI)Cs4os%JGj zZHqtw_<6znlT(>T_u?PefoV@^YVhhQxePh^>Eb&)*zRDrW1`)z=)f!x ztZxOSzmdABxCpHnZ?@F9ZRsV4+d?#P*AOmp$-+8m{y%vD7&gRpZRRdo9vIMdR^H=5 zEdBSUVX0VE!h_pVK-w6PiIJ@Qefr?#g#1J-0ON1hx!&AY!vnk9#nm8fCtx<#r+8R+ zOan@Ncdu)Q#-A-DxJU_E!0pHAT3||dyj=4@)yBKBs?|mL@!}p2@D*x1#znTBUouq* z$$m%l&_wdW4lJspL~2?j5gRjDRWb>ad-9Wv z^tFr?snp-$!AVYjB0R7IE7p$>*iDBXcOVZG=V`mhezKHDRSvrt`=BRhJ(8k+>g6b} zi|}MPrmEzGz7GT$0ySYS_uYucdpx+3DOp0eH&w5!9J2m0t9f8RjS}?G{SFVRqLi?0 zcsc4|x5aPqmo*Q|3@_Xk_wqm)$DHZHgRD>3E?|DXj;N-1flZCQDuSTgApOG z2y=z5pJy@c^E>;|`f5vzuf-03mj`w;#_q)EfkFA}v^}Phr=#{DRk0#E?6z5V_f=eEGDVf&;enq* zl}%bXtF0pWXh-Jt&*%3741f(yezy1y59~dtvHQ|e_mgEin@71G)4s=pR?cq7 zkn`;)m#sQ&*Q6`A=x;?&tEyZZuu>;=hz`4wnSPxE)cQD-(mqJu8A#8yF;>DdNc!%@ z*u4QNnNnpF?6#x-<9({sGyl623E_biq2U8YCGs-`ezqjq1&9f=6n~n@Rau2Uos++r zwLHj=7jm^*9gH10JfK$MSo+h9qVVlm2~fS9wDOjX^;+4H!`Mwn@D<8xDQ}P0XJJT7 ze52l=e)?XuPf}D_K&3CIveG*-c4+RgK*dT3ePF1>)YHR_MF>br&vJ_2 zUf?f;1tBe^!_hwYx)YN=pMg~^)|!WjoB95b-DwrX3e)?(hzd%i*TP*M+-VEl;X!N2 z3=IaSTA!e*#kP%UJ#{-YwNVvX9=PoecE5*x&_(&vy04%V{g1b0k4sS@Ef4ORP+qRi zpUer10wbo1EXZtex#mHv=>6dyc6>|zW=2tuRkRaQiNzn^;XxC5O}nVd0>#@~+(X$3 zf04B_3amoAUTYr2wKGwFo}ZT7{_GrO&hPO+cqy)C+ptuoe*CaLaeLpd*?5Ns%|e4D zQS$CccmQ>*FG}pTBiij^4`enmeK8?=*roTUk0CF){hK3-le`rdG)7dFtqnJTYFgm0 zQ(<80DPG**&lc^^dZaI>G60qsd6uWR^9-}yi3wRHXJzfJ>H0yCyFAcI^BWN3L{zy_ z_{nm;U4Wkj>_FkOvMqO89+Ze-m%f~~#!FN3H$1TYbtpIcAMM8^A8xg?i>A5syRYQ1 zISY!q91;oW_9N`WF8(ZQA1J=hgMoB0WbnI|ytP}yhGzKZ??CRk`QoJnUKV7q4Qd|L zA)UXO%4qGwE}=o%s=`lF(l0Kg%4^*Hro$!rFCsn4WxFwqPw!~Q*b=2j6idFrSE*;fMeCnd2c?g91T>LH%?7)!xV2s`Cq4KxV z^|oEZ@E`5BeI=C`q9^^|%L9M4B>#3M<-ea7_*o!iIeu{>|FaM1fuZ-41Kh(KidWON zq1|=@1_pmL!`vMY2zT5|m6rIETkJzgto(R!&)v>n&16Cnns$h3x26f>oB#4w;-db& zkQTD7DO2;HdFk%&;enUM)V)r7s74RF^nNIhteAFTrX|T?7yGb_do(0e73uRC$zhk_ zzj#Wu$hrN$Udn9Z(6tRL(++6VzwKZjcJY&(>Q;Wj#!m{;FHU64WFqmOKAXr_TgAqw z|8TJK)3V+F=wVkNQjd)__kLHgH|wT43L|)u#|=YT%F$MbX_d*;WJB)Y>#3=pYa98h znX#}VCxuqS1N$8w)UV`VK=Pw)*wEtYVx+&OV+E_V=vI-HXBeB%E~$^SF8*ZE=86ef zpqPG#2M+}(Hg~AnbGObi{#W0pNF-A0?|+Y##^@nuY}>g!;F{T00~y+uodx6&ug~^6_f^+4Xv$r~XZhyM+j~QoH9N z42<+#b=RzWE6|P`hqNRh3wMtPNUHZg-o`!NMCGq$!h@k<_~(bMR#J%}dGGh|06BR5 z@j`yN!cW#b2sQH>9t{8Nd$`vVif<>R&u-hQMaK#iS@P$T`#kVhOR8ELsmYIAJjqPgy00001v@bzzszrVCl9u9qzu0|ZngMQDR}L=lQyBE)L| zAu2>eVvs*#VvG=tQ9*xH0og z5RFDDDk>rpi4ciIFijKFG}$xu4AE#5(=>@jqeP=oj?8Z3(;FIzMx$;}%d+V1?q);c zq#qy@3bFB~I#TH_3JVJvGGqvY2M=cN0?AXyN3q&^hz*I82qDmg5J)Lme10-tmHk3< zU5Z3JOe)>Q`-5h&&aA;q#?XsPXsoV9%7@A4^UV8s3_^6HODO@6QU(rx5T1>pX}po2 zNxmtMs26-352LoKXqtwU6321e95{}HqA0vAAH__@cz@6=01U%G2!Z1`6ciNjT6QWs zCN*Oi2BA<00No1!pzAt%aS8ShZZ#~+0zg&O!1vYK0TLs_n8_Hbq9~}UiYEnN^Z0r` zG;4To@ID;JLDMvJU8i!)NgAtbS))HeD&55+Uk^tqEiIMnNBjuj>wj094!|mVABlLF z6`j-gV90(_=`KDhoQLB$baZsk*4BnnR#qk>kqDb^KE*44KM-ghUDsJ@?Pc`D1kH6R z)*3S~3R-6{M7WIP7~~K0hv?TTv8WiVy-#(-1F~4mjNg!C_q(JHr`an3%{0L9UN6<^DU8 zt2&Tid0zI<0|0U19E+PuF$|6MgXWX(%p-(gYw<-tf!E|gA|7U8!vvr=51!i}yFL%h zWUOBvWLq+PR(uRI8Kb!_h29qr))gJ}H7{-|Mbk7iO=H=`9S{z)Eb|~=PR{b`pI3Nr zsNydGvMrea54O+f0N{n1VXWw?A`uVs`sL{ZDQVjBrt&ZOO3U?44J6aAavA;=(z<6BBWF zW5uClFCKjRyussJ-F1KmyGA!N^T*o)i5w6Qo@~0q-#ic=^y?3fEG_Ki501T3)VDwA ziwBL>wY~hooZX?m{Xxa1cB~l>3u0QCUhGF#Z2SV_1 zJk!5FnBP!JA|CG7A5@Mw`u})fCS$BlAAmwgj12eYLAE8sN^37zkTBg}yT^md`_BU< ztkLgcee4i(ej0VvA9&#G$%9XZ9`^mx=VMQy7niW;;P8R_121^LJcv!65YXGxAEeS< z*XMzE<(_TotrPL^fAa@RTFcoop<&?uVB5%g-ydXKGJX1kU9-E{S$>8uZahKN+!Y9W!zO0000=weieV>n^hG_-$8xUYUdGnNv=K@AbXxk<%2HnzY?me|gpG zSsGmo7GkX7*G-#lEZ)6zijviQ#vMmD1`53{E+~zywUjB4VQ*NLdE)b**LOph7|QzF zmrhyqzIxko;oRFwEfQuaaT}%t@gFns{i@U<;H2*PiF2mvU;a;<=P-Woa*}8Z33ZK} qrnb-X#Exdy`*l1qId$q$zW&^1$-fJ2^#p-FW$<+Mb6Mw<&;$VGws9u_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..57478d3f35c1dd039c0fe0e47fd10d1f5298f515 GIT binary patch literal 585 zcmV-P0=E5$P)9#eg59N_UWuVllD{?10VlJyl}K!JbwTS{WN0N`&6k9s8w z0e(3{FR$Bg^|sUEsXZHsUpRe*A6=KZ*DsO*m`XogyQOXP)ez=5QV>8t^(O$%Z?OL(nO%pVG4_glqj;W(xJ5e4XF`z z3Vwip0Hq5`WCgkurhtN)0wT-yo$Pgqb|}c6>~lfJWF3%r-5c$`dpompHwV`Yv+l;@ zSI3g3DZ}9q=NzYRPuJ2?Z`yC|OQ}?%R;y91Rv8QiEb^0=Cn`;=HBc^>na}4`DitP^ z$qLs(W#I5&SFE)dWANT1A{6=I!LDdD6V2lBcuWnr4TuOLf-webEnh#r%hyCR0MKkU zsn_fDdc8bWx`;dH==b|^4Ft5?ZAPOJ0M5B}W%QTus-bSfy~o=E(CKuRG7wV#;p|+c zsV>3YhfkT!W^}vVrTBxrHd&Uz*&CIf+CXT#`%j*eWf@75Fr7~Gu2Ab~HyC4<`o74c z8weQ)Cob~n2EvQSdyn^ig>S^b;)#nqx`E$)3!)qND>7iMMMUu4ukh#w{mq?6M{r&yGmbbY&#FbMMhbDb6*|*JmK0^`a%tIU0?|FGH`p8!g?H;V1gF VOgL}kcGmy^002ovPDHLkV1mu_`hoxe literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..03c9d8cbfdb006c3730fb6689814b5f6e3fd0a57 GIT binary patch literal 318 zcmV-E0m1%>P)NklST5JjH@6-|&u%_tP~tie3g9)cn0k(ePhvY?@hoFXx? zi9yiiRlc+S^POY?V8HM}fZ!^w;3~ouxUb7xdQ$z+!O3FBB-~(86l7Tjz&MU{U1vff zuaLPk+n_x=B2N;t!3Lz1U$JxEUBOb8B>=-PtU;~y+Hc$TSfG>wpss7L-!#p+2>{YG zMJdIyENd@G60bfKScxSRwA^-YPI6f=&$Czm{I2L88Gx#)n5GGMuh92B0MGfk|B*r> d%QpBwyZ|x+Peg3c@hHDUy6 zO4n2=sH_tkkjj=xY$;Jv=Bs=^-_yx=@TCr^LepHfFdl|mwD%?HjLWi6mL&kj7>c5Z zf_6dIT{l(rao_g*xc4+o z9+m`zAUBbDl-* ZJpkvSO#rmSf<6EM002ovPDHLkV1f_6V|M@m delta 220 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 literal 0 HcmV?d00001