From aa8e492610d0ecd2e7ea5fbae927545203ddc31e Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 21 Jan 2024 00:28:26 +0100 Subject: [PATCH 1/4] molysite, mud hole --- changelog | 20 +++++ .../java/com/hbm/blocks/BlockEnumMulti.java | 12 ++- src/main/java/com/hbm/blocks/BlockRemap.java | 18 +++-- src/main/java/com/hbm/blocks/ModBlocks.java | 33 ++++++-- .../com/hbm/blocks/bomb/BlockVolcano.java | 49 +++++++----- .../java/com/hbm/blocks/fluid/RadBlock.java | 71 +++++++++++++++++ .../java/com/hbm/blocks/fluid/RadFluid.java | 31 ++++++++ .../com/hbm/blocks/fluid/VolcanicBlock.java | 57 ++++++-------- .../com/hbm/blocks/gas/BlockGasClorine.java | 2 +- .../com/hbm/blocks/generic/BlockFissure.java | 15 ++++ .../hbm/blocks/generic/BlockOreBasalt.java | 74 ++++++++++++++++++ .../blocks/generic/BlockSellafieldOre.java | 3 + .../com/hbm/config/FalloutConfigJSON.java | 1 + .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../hbm/entity/effect/EntityFalloutRain.java | 7 +- .../hbm/entity/projectile/EntityShrapnel.java | 11 ++- .../com/hbm/explosion/ExplosionChaos.java | 2 +- .../java/com/hbm/explosion/ExplosionNT.java | 5 +- .../com/hbm/handler/EntityEffectHandler.java | 2 +- .../handler/guncfg/BulletConfigFactory.java | 2 +- .../com/hbm/inventory/OreDictManager.java | 11 ++- .../java/com/hbm/inventory/fluid/Fluids.java | 10 +-- .../inventory/recipes/CombinationRecipes.java | 1 + src/main/java/com/hbm/items/ModItems.java | 6 ++ .../com/hbm/items/armor/ArmorGasMask.java | 4 +- .../java/com/hbm/items/armor/ArmorHEV.java | 3 +- .../com/hbm/items/armor/ItemModGasmask.java | 4 +- .../bomb/TileEntityLaunchTable.java | 2 +- .../TileEntityMachineExposureChamber.java | 18 +++++ .../machine/TileEntityMachineRadGen.java | 14 ++-- src/main/java/com/hbm/util/ArmorRegistry.java | 6 +- src/main/java/com/hbm/util/ArmorUtil.java | 38 ++++----- src/main/resources/assets/hbm/lang/de_DE.lang | 15 +++- src/main/resources/assets/hbm/lang/en_US.lang | 19 +++-- ...t_asbestos.png => ore_basalt_asbestos.png} | Bin ...t_fluorite.png => ore_basalt_fluorite.png} | Bin .../{basalt_gem.png => ore_basalt_gem.png} | Bin .../textures/blocks/ore_basalt_molysite.png | Bin 0 -> 926 bytes ...alt_overlay.png => ore_basalt_overlay.png} | Bin ...asalt_sulfur.png => ore_basalt_sulfur.png} | Bin .../textures/blocks/ore_overlay_radgem.png | Bin 0 -> 162 bytes .../hbm/textures/blocks/rad_lava_flowing.png | Bin 0 -> 10650 bytes .../blocks/rad_lava_flowing.png.mcmeta | 5 ++ .../hbm/textures/blocks/rad_lava_still.png | Bin 0 -> 10616 bytes .../textures/blocks/rad_lava_still.png.mcmeta | 45 +++++++++++ .../hbm/textures/blocks/volcano_rad_core.png | Bin 0 -> 1433 bytes .../blocks/volcano_rad_core.png.mcmeta | 5 ++ .../assets/hbm/textures/items/gem_rad.png | Bin 0 -> 465 bytes .../hbm/textures/items/powder_molysite.png | Bin 0 -> 441 bytes 49 files changed, 495 insertions(+), 128 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/fluid/RadBlock.java create mode 100644 src/main/java/com/hbm/blocks/fluid/RadFluid.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java rename src/main/resources/assets/hbm/textures/blocks/{basalt_asbestos.png => ore_basalt_asbestos.png} (100%) rename src/main/resources/assets/hbm/textures/blocks/{basalt_fluorite.png => ore_basalt_fluorite.png} (100%) rename src/main/resources/assets/hbm/textures/blocks/{basalt_gem.png => ore_basalt_gem.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png rename src/main/resources/assets/hbm/textures/blocks/{basalt_overlay.png => ore_basalt_overlay.png} (100%) rename src/main/resources/assets/hbm/textures/blocks/{basalt_sulfur.png => ore_basalt_sulfur.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/blocks/ore_overlay_radgem.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png create mode 100755 src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png.mcmeta create mode 100644 src/main/resources/assets/hbm/textures/items/gem_rad.png create mode 100644 src/main/resources/assets/hbm/textures/items/powder_molysite.png diff --git a/changelog b/changelog index 8c5d6df54..74a6aa77b 100644 --- a/changelog +++ b/changelog @@ -3,9 +3,24 @@ * The final missing door from 1.12, remade from scratch * Comes with a brand-new model that fits perfectly over 3x3 missile launch tubes * Has a 5x5 frame +* Molysite + * Found in basalt from volcanos + * Can be combination-smelted into iron and chlorine + * Don't make me pull another chlorocalcite +* Rad volcanos + * Created when fallout affects a volcano core + * Uses a new volcanic lava type that produces sellafite, as well as sellafite gem ores +* Radioactive gem + * Created when fallout affects diamond ore, or if radioactive volcanic lava touches diamond ore + * Currenly only used in the radiation powered engine as powerful long-lasting fuel + * When depleted, turns back into a regular diamond ## Changed * Simplified door recipes +* Fissure bombs now require tantalium +* Removed the "nerve agent" hazard class because no gas used it +* Fissures now continuously spawn volcanic lava, making basalt renewable without having an entire volcano +* Volcanic lava now turns diamond ore into gem-rich basalt ## Fixed * Fixed sellafite emerald ore being oredicted as emerald dust @@ -18,3 +33,8 @@ * Fixed material dupe caused by strand caster overflowing * Fixed rampant mode glyphid scout spawn ignoring light level * Fixed glyphid diggers' debris attack being able to break concrete +* Fixed `canLaunch` function of custom missile launch pads demanding a designator, preventing launch pads without designator from working even when the position is supplied by a radar +* Fixed none of the helmets or filters protecting against corrosive gasses (blistering agents) like mustard gas +* Fixed fallout layers being able to generate below roofs +* Fixed exposure chamber not saving anything to NBT besides slots +* Fixed crash caused by wearing the full PaA set and then putting on an HEV helmet (why would anyone ever do this??) diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index d581bfd2d..0dd222f82 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -36,7 +36,7 @@ public class BlockEnumMulti extends BlockMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US)); + this.icons[i] = reg.registerIcon(this.getTextureMultiName(num)); } } else { this.blockIcon = reg.registerIcon(this.getTextureName()); @@ -47,12 +47,20 @@ public class BlockEnumMulti extends BlockMulti { if(this.multiName) { Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); + return getUnlocalizedMultiName(num); } return this.getUnlocalizedName(); } + public String getTextureMultiName(Enum num) { + return this.getTextureName() + "." + num.name().toLowerCase(Locale.US); + } + + public String getUnlocalizedMultiName(Enum num) { + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/com/hbm/blocks/BlockRemap.java b/src/main/java/com/hbm/blocks/BlockRemap.java index c9d66894f..1939b2830 100644 --- a/src/main/java/com/hbm/blocks/BlockRemap.java +++ b/src/main/java/com/hbm/blocks/BlockRemap.java @@ -3,10 +3,12 @@ package com.hbm.blocks; import java.util.ArrayList; import java.util.Random; -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.item.Item; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; @@ -21,12 +23,16 @@ public class BlockRemap extends Block implements ILookOverlay { this.remapMeta = meta; this.setTickRandomly(true); } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int meta, int side) { + return this.remapBlock.getIcon(meta, side); + } @Override - public Block setBlockName(String name) { - super.setBlockName(name); - this.setBlockTextureName(RefStrings.MODID + ":" + name); - return this; + public Item getItemDropped(int meta, Random rand, int fortune) { + return this.remapBlock.getItemDropped(meta, rand, fortune); } @Override diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 31d8488d5..c22a7589b 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -152,10 +152,11 @@ public class ModBlocks { public static Block depth_dnt; public static Block basalt; - public static Block basalt_sulfur; - public static Block basalt_fluorite; - public static Block basalt_asbestos; - public static Block basalt_gem; + public static Block ore_basalt; + @Deprecated public static Block basalt_sulfur; + @Deprecated public static Block basalt_fluorite; + @Deprecated public static Block basalt_asbestos; + @Deprecated public static Block basalt_gem; public static Block basalt_smooth; public static Block basalt_brick; public static Block basalt_polished; @@ -538,6 +539,7 @@ public class ModBlocks { public static Block ore_sellafield_emerald; public static Block ore_sellafield_uranium_scorched; public static Block ore_sellafield_schrabidium; + public static Block ore_sellafield_radgem; public static Block geysir_water; public static Block geysir_chlorine; @@ -1234,6 +1236,9 @@ public class ModBlocks { public static Block volcanic_lava_block; public static Fluid volcanic_lava_fluid; public static final Material fluidvolcanic = (new MaterialLiquid(MapColor.redColor)); + public static Block rad_lava_block; + public static Fluid rad_lava_fluid; + public static final Material fluidradlava = (new MaterialLiquid(MapColor.redColor)); public static Block sulfuric_acid_block; public static Fluid sulfuric_acid_fluid; @@ -1241,6 +1246,7 @@ public class ModBlocks { public static Block concrete_liquid; public static Block volcano_core; + public static Block volcano_rad_core; public static Block dummy_block_ams_limiter; public static Block dummy_port_ams_limiter; @@ -1377,10 +1383,11 @@ public class ModBlocks { stone_deep_cobble = new BlockDeepCobble().setBlockName("stone_deep_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F); 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_fluorite = new BlockOre(Material.rock).setBlockName("basalt_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_fluorite"); - 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_gem = new BlockCluster(Material.rock).setBlockName("basalt_gem").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_gem"); + ore_basalt = new BlockOreBasalt().setBlockName("ore_basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_basalt"); + basalt_sulfur = new BlockRemap(ore_basalt, 0).setBlockName("basalt_sulfur"); + basalt_fluorite = new BlockRemap(ore_basalt, 1).setBlockName("basalt_fluorite"); + basalt_asbestos = new BlockRemap(ore_basalt, 2).setBlockName("basalt_asbestos"); + basalt_gem = new BlockRemap(ore_basalt, 3).setBlockName("basalt_gem"); 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"); @@ -1760,6 +1767,7 @@ public class ModBlocks { ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); ore_sellafield_uranium_scorched = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_uranium_scorched").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_uranium_scorched"); ore_sellafield_schrabidium = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_schrabidium").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_schrabidium"); + ore_sellafield_radgem = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_radgem").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_radgem"); geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); @@ -2369,6 +2377,7 @@ public class ModBlocks { transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch"); volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); + volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_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); @@ -2399,6 +2408,10 @@ public class ModBlocks { FluidRegistry.registerFluid(volcanic_lava_fluid); volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); + rad_lava_fluid = new RadFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("rad_lava_fluid"); + FluidRegistry.registerFluid(rad_lava_fluid); + rad_lava_block = new RadBlock(rad_lava_fluid, Material.lava).setBlockName("rad_lava_block").setResistance(500F); + sulfuric_acid_fluid = new GenericFluid("sulfuric_acid_fluid").setDensity(1840).setViscosity(1000).setTemperature(273); FluidRegistry.registerFluid(sulfuric_acid_fluid); sulfuric_acid_block = new GenericFluidBlock(sulfuric_acid_fluid, Material.water, "sulfuric_acid_still", "sulfuric_acid_flowing").setDamage(ModDamageSource.acid, 5F).setBlockName("sulfuric_acid_block").setResistance(500F); @@ -2543,6 +2556,7 @@ public class ModBlocks { GameRegistry.registerBlock(ore_depth_nether_neodymium, ItemBlockBase.class, ore_depth_nether_neodymium.getUnlocalizedName()); //Basalt ores + register(ore_basalt); GameRegistry.registerBlock(basalt_sulfur, basalt_sulfur.getUnlocalizedName()); GameRegistry.registerBlock(basalt_fluorite, basalt_fluorite.getUnlocalizedName()); GameRegistry.registerBlock(basalt_asbestos, basalt_asbestos.getUnlocalizedName()); @@ -2936,6 +2950,7 @@ public class ModBlocks { register(ore_sellafield_emerald); register(ore_sellafield_uranium_scorched); register(ore_sellafield_schrabidium); + register(ore_sellafield_radgem); GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); //Geysirs @@ -3459,6 +3474,7 @@ public class ModBlocks { GameRegistry.registerBlock(fire_digamma, fire_digamma.getUnlocalizedName()); GameRegistry.registerBlock(digamma_matter, digamma_matter.getUnlocalizedName()); register(volcano_core); + register(volcano_rad_core); //AMS GameRegistry.registerBlock(ams_base, ams_base.getUnlocalizedName()); @@ -3535,6 +3551,7 @@ public class ModBlocks { GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); + GameRegistry.registerBlock(rad_lava_block, rad_lava_block.getUnlocalizedName()); GameRegistry.registerBlock(sulfuric_acid_block, sulfuric_acid_block.getUnlocalizedName()); //GameRegistry.registerBlock(concrete_liquid, concrete_liquid.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java index 2766da2ce..0d586e803 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java @@ -81,8 +81,9 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB } public static class TileEntityVolcanoCore extends TileEntity { - + private static List volcanoExplosion = Arrays.asList(new ExAttrib[] {ExAttrib.NODROP, ExAttrib.LAVA_V, ExAttrib.NOSOUND, ExAttrib.ALLMOD, ExAttrib.NOHURT}); + private static List volcanoRadExplosion = Arrays.asList(new ExAttrib[] {ExAttrib.NODROP, ExAttrib.LAVA_R, ExAttrib.NOSOUND, ExAttrib.ALLMOD, ExAttrib.NOHURT}); public int volcanoTimer; @@ -118,15 +119,28 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB if(this.shouldGrow()) { worldObj.setBlock(xCoord, yCoord + 1, zCoord, this.getBlockType(), this.getBlockMetadata(), 3); - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.volcanic_lava_block); + worldObj.setBlock(xCoord, yCoord, zCoord, getLava()); return; } else if(this.isExtinguishing()) { - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.volcanic_lava_block); + worldObj.setBlock(xCoord, yCoord, zCoord, getLava()); return; } } } } + + public boolean isRadioacitve() { + return this.getBlockType() == ModBlocks.volcano_rad_core; + } + + protected Block getLava() { + if(isRadioacitve()) return ModBlocks.rad_lava_block; + return ModBlocks.volcanic_lava_block; + } + + protected List getExpAttrb() { + return this.isRadioacitve() ? this.volcanoRadExplosion : this.volcanoExplosion; + } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -185,20 +199,15 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB } /* TODO */ - private boolean doesPyroclastic() { - return false; - } - - private double getPyroclasticRange() { - return 0D; - } + private boolean doesPyroclastic() { return false; } + private double getPyroclasticRange() { return 0D; } /** Causes two magma explosions, one from bedrock to the core and one from the core to 15 blocks above. */ private void blastMagmaChannel() { ExplosionNT explosion = new ExplosionNT(worldObj, null, xCoord + 0.5, yCoord + worldObj.rand.nextInt(15) + 1.5, zCoord + 0.5, 7); - explosion.addAllAttrib(volcanoExplosion).explode(); + explosion.addAllAttrib(getExpAttrb()).explode(); ExplosionNT explosion2 = new ExplosionNT(worldObj, null, xCoord + 0.5 + worldObj.rand.nextGaussian() * 3, worldObj.rand.nextInt(yCoord + 1), zCoord + 0.5 + worldObj.rand.nextGaussian() * 3, 10); - explosion2.addAllAttrib(volcanoExplosion).explode(); + explosion2.addAllAttrib(getExpAttrb()).explode(); } /** Causes two magma explosions at a random position around the core, one at normal and one at half range. */ @@ -207,7 +216,7 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB for(int i = 0; i < 2; i++) { double dist = size / (double) (i + 1); ExplosionNT explosion = new ExplosionNT(worldObj, null, xCoord + 0.5 + worldObj.rand.nextGaussian() * dist, yCoord + 0.5 + worldObj.rand.nextGaussian() * dist, zCoord + 0.5 + worldObj.rand.nextGaussian() * dist, 7); - explosion.addAllAttrib(volcanoExplosion).explode(); + explosion.addAllAttrib(getExpAttrb()).explode(); } } @@ -224,7 +233,7 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB if(!b.isAir(worldObj, x, y, z) && b.getExplosionResistance(null) < Blocks.obsidian.getExplosionResistance(null)) { //turn into lava if solid block, otherwise just break - worldObj.setBlock(x, y, z, b.isNormalCube() ? ModBlocks.volcanic_lava_block : Blocks.air); + worldObj.setBlock(x, y, z, b.isNormalCube() ? this.getLava() : Blocks.air); } } } @@ -236,8 +245,8 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB int rY = yCoord + worldObj.rand.nextInt(11); int rZ = zCoord - 10 + worldObj.rand.nextInt(21); - if(worldObj.getBlock(rX, rY, rZ) == Blocks.air && worldObj.getBlock(rX, rY - 1, rZ) == ModBlocks.volcanic_lava_block) - worldObj.setBlock(rX, rY, rZ, ModBlocks.volcanic_lava_block); + if(worldObj.getBlock(rX, rY, rZ) == Blocks.air && worldObj.getBlock(rX, rY - 1, rZ) == this.getLava()) + worldObj.setBlock(rX, rY, rZ, this.getLava()); } /** Creates a 3x3x3 lava sphere around the core. */ @@ -248,7 +257,7 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB for(int k = -1; k <= 1; k++) { if(i != 0 || j != 0 || k != 0) { - worldObj.setBlock(xCoord + i, yCoord + j, zCoord + k, ModBlocks.volcanic_lava_block); + worldObj.setBlock(xCoord + i, yCoord + j, zCoord + k, this.getLava()); } } } @@ -264,7 +273,11 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB frag.motionY = 1D + worldObj.rand.nextDouble(); frag.motionX = worldObj.rand.nextGaussian() * 0.2D; frag.motionZ = worldObj.rand.nextGaussian() * 0.2D; - frag.setVolcano(true); + if(this.isRadioacitve()) { + frag.setRadVolcano(true); + } else { + frag.setVolcano(true); + } worldObj.spawnEntityInWorld(frag); } } diff --git a/src/main/java/com/hbm/blocks/fluid/RadBlock.java b/src/main/java/com/hbm/blocks/fluid/RadBlock.java new file mode 100644 index 000000000..8828bd954 --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/RadBlock.java @@ -0,0 +1,71 @@ +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.World; +import net.minecraftforge.fluids.Fluid; + +public class RadBlock extends VolcanicBlock { + + @SideOnly(Side.CLIENT) public static IIcon stillIconRad; + @SideOnly(Side.CLIENT) public static IIcon flowingIconRad; + + public RadBlock(Fluid fluid, Material material) { + super(fluid, material); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + stillIconRad = register.registerIcon(RefStrings.MODID + ":rad_lava_still"); + flowingIconRad = register.registerIcon(RefStrings.MODID + ":rad_lava_flowing"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return (side == 0 || side == 1) ? stillIconRad : flowingIconRad; + } + + @Override + public void onSolidify(World world, int x, int y, int z, int lavaCount, int basaltCount, Random rand) { + int r = rand.nextInt(400); + + Block above = world.getBlock(x, y + 10, z); + boolean canMakeGem = lavaCount + basaltCount == 6 && lavaCount < 3 && (above == ModBlocks.sellafield_slaked || above == ModBlocks.rad_lava_block); + int meta = 5 + rand.nextInt(3); + + if(r < 2) world.setBlock(x, y, z, ModBlocks.ore_sellafield_diamond, meta, 3); + else if(r == 2) world.setBlock(x, y, z, ModBlocks.ore_sellafield_emerald, meta, 3); + else if(r < 20 && canMakeGem) world.setBlock(x, y, z, ModBlocks.ore_sellafield_radgem, meta, 3); + else world.setBlock(x, y, z, ModBlocks.sellafield_slaked, meta, 3); + } + + @Override + public Block getBasaltForCheck() { + return ModBlocks.sellafield_slaked; + } + + @Override + 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; + if(b == Blocks.diamond_ore) return ModBlocks.ore_sellafield_radgem; + if(b == ModBlocks.ore_uranium || b == ModBlocks.ore_gneiss_uranium) return world.rand.nextInt(5) == 0 ? ModBlocks.ore_sellafield_schrabidium : ModBlocks.ore_sellafield_uranium_scorched; + return null; + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/RadFluid.java b/src/main/java/com/hbm/blocks/fluid/RadFluid.java new file mode 100644 index 000000000..77de22cab --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/RadFluid.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 RadFluid extends Fluid { + + public RadFluid() { + super("rad_lava_fluid"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon() { + return getStillIcon(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getStillIcon() { + return RadBlock.stillIconRad; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return RadBlock.flowingIconRad; + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java b/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java index d81ec02ad..d82d67808 100644 --- a/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/VolcanicBlock.java @@ -51,26 +51,18 @@ public class VolcanicBlock extends BlockFluidClassic { 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); + if(b != null) world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, b, b == ModBlocks.ore_basalt ? 3 : 0, 3); } } 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; - } + 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; + if(b == Blocks.diamond_ore) return ModBlocks.ore_basalt; return null; } @@ -87,30 +79,33 @@ public class VolcanicBlock extends BlockFluidClassic { if(b == this) lavaCount++; - if(b == ModBlocks.basalt) { + if(b == getBasaltForCheck()) { basaltCount++; } } if(!world.isRemote && ((!this.isSourceBlock(world, x, y, z) && lavaCount < 2) || (rand.nextInt(5) == 0) && lavaCount < 5) && world.getBlock(x, y - 1, z) != this) { - - int r = rand.nextInt(200); - - Block above = world.getBlock(x, y + 10, z); - boolean canMakeGem = lavaCount + basaltCount == 6 && lavaCount < 3 && (above == ModBlocks.basalt || above == ModBlocks.volcanic_lava_block); - - if(r < 2) - world.setBlock(x, y, z, ModBlocks.basalt_sulfur); - else if(r == 2) - world.setBlock(x, y, z, ModBlocks.basalt_asbestos); - else if(r == 3) - world.setBlock(x, y, z, ModBlocks.basalt_fluorite); - else if(r < 14 && canMakeGem) - world.setBlock(x, y, z, ModBlocks.basalt_gem); - else - world.setBlock(x, y, z, ModBlocks.basalt); + this.onSolidify(world, x, y, z, lavaCount, basaltCount, rand); } } + + public Block getBasaltForCheck() { + return ModBlocks.basalt; + } + + public void onSolidify(World world, int x, int y, int z, int lavaCount, int basaltCount, Random rand) { + int r = rand.nextInt(200); + + Block above = world.getBlock(x, y + 10, z); + boolean canMakeGem = lavaCount + basaltCount == 6 && lavaCount < 3 && (above == ModBlocks.basalt || above == ModBlocks.volcanic_lava_block); + + if(r < 2) world.setBlock(x, y, z, ModBlocks.ore_basalt, 0, 3); + else if(r == 2) world.setBlock(x, y, z, ModBlocks.ore_basalt, 1, 3); + else if(r == 3) world.setBlock(x, y, z, ModBlocks.ore_basalt, 2, 3); + else if(r == 4) world.setBlock(x, y, z, ModBlocks.ore_basalt, 4, 3); + else if(r < 15 && canMakeGem) world.setBlock(x, y, z, ModBlocks.ore_basalt, 3, 3); + else world.setBlock(x, y, z, ModBlocks.basalt); + } @Override public boolean canDisplace(IBlockAccess world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java b/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java index 19033a933..f35be20f5 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java @@ -40,7 +40,7 @@ public class BlockGasClorine extends BlockGasBase { EntityLivingBase entityLiving = (EntityLivingBase) entity; - if(ArmorRegistry.hasAllProtection(entityLiving, 3, HazardClass.GAS_CHLORINE)) { + if(ArmorRegistry.hasAllProtection(entityLiving, 3, HazardClass.GAS_LUNG)) { ArmorUtil.damageGasMaskFilter(entityLiving, 1); } else { diff --git a/src/main/java/com/hbm/blocks/generic/BlockFissure.java b/src/main/java/com/hbm/blocks/generic/BlockFissure.java index 003bd8e23..dac40abf0 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockFissure.java +++ b/src/main/java/com/hbm/blocks/generic/BlockFissure.java @@ -1,6 +1,9 @@ package com.hbm.blocks.generic; +import java.util.Random; + import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; @@ -11,6 +14,7 @@ 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.World; public class BlockFissure extends Block implements IBlockMultiPass { @@ -21,6 +25,7 @@ public class BlockFissure extends Block implements IBlockMultiPass { this.setBlockTextureName("bedrock"); this.setBlockUnbreakable(); this.setResistance(1_000_000); + this.setTickRandomly(true); } @Override @@ -41,6 +46,16 @@ public class BlockFissure extends Block implements IBlockMultiPass { return this.overlay; } + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + if(world.getBlock(x, y + 1, z).isReplaceable(world, x, y + 1, z)) world.setBlock(x, y + 1, z, ModBlocks.volcanic_lava_block); + } + + @Override + public boolean shouldRenderItemMulti() { + return true; + } + @Override public int getPasses() { return 2; diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java new file mode 100644 index 000000000..51affeaad --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -0,0 +1,74 @@ +package com.hbm.blocks.generic; + +import java.util.Locale; +import java.util.Random; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockOreBasalt extends BlockEnumMulti { + + public BlockOreBasalt() { + super(Material.rock, EnumBasaltOreType.class, true, true); + } + + public static enum EnumBasaltOreType { + SULFUR, + FLUORITE, + ASBESTOS, + GEM, + MOLYSITE + } + + public String getTextureMultiName(Enum num) { + return this.getTextureName() + "_" + num.name().toLowerCase(Locale.US); + } + + public String getUnlocalizedMultiName(Enum num) { + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + if(meta == EnumBasaltOreType.SULFUR.ordinal()) return ModItems.sulfur; + if(meta == EnumBasaltOreType.FLUORITE.ordinal()) return ModItems.fluorite; + if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) return ModItems.ingot_asbestos; + if(meta == EnumBasaltOreType.GEM.ordinal()) return ModItems.gem_volcanic; + if(meta == EnumBasaltOreType.MOLYSITE.ordinal()) return ModItems.powder_molysite; + return super.getItemDropped(meta, rand, fortune); + } + + @Override + public void onEntityWalking(World world, int x, int y, int z, Entity entity) { + int meta = world.getBlockMetadata(x, y, z); + if(meta == EnumBasaltOreType.ASBESTOS.ordinal() && world.getBlock(x, y + 1, z) == Blocks.air) { + if(world.rand.nextInt(10) == 0) world.setBlock(x, y + 1, z, ModBlocks.gas_asbestos); + for(int i = 0; i < 5; i++) world.spawnParticle("townaura", x + world.rand.nextFloat(), y + 1.1, z + world.rand.nextFloat(), 0.0D, 0.0D, 0.0D); + } + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + int meta = world.getBlockMetadata(x, y, z); + if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.air) { + world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.gas_asbestos); + } + } + } + + @Override + public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { + if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) world.setBlock(x, y, z, ModBlocks.gas_asbestos); + super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java index a923c5343..262b2e60e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSellafieldOre.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; import com.hbm.render.block.RenderBlockMultipass; import cpw.mods.fml.relauncher.Side; @@ -69,6 +70,7 @@ public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockM public Item getItemDropped(int meta, Random rand, int fortune) { if(this == ModBlocks.ore_sellafield_diamond) return Items.diamond; if(this == ModBlocks.ore_sellafield_emerald) return Items.emerald; + if(this == ModBlocks.ore_sellafield_radgem) return ModItems.gem_rad; return Item.getItemFromBlock(this); } @@ -97,6 +99,7 @@ public class BlockSellafieldOre extends BlockSellafieldSlaked implements IBlockM if(this == ModBlocks.ore_sellafield_diamond) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); if(this == ModBlocks.ore_sellafield_emerald) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); + if(this == ModBlocks.ore_sellafield_radgem) j1 = MathHelper.getRandomIntegerInRange(rand, 3, 7); return j1; } diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index 645a12413..b962781da 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -87,6 +87,7 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_emerald, m, 1)) .max(i * 5).sol(true).mB(ModBlocks.ore_beryllium)); entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_uranium)); entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_schrabidium, m, 1), new Triplet(ModBlocks.ore_sellafield_uranium_scorched, m, 99)) .max(i * 5).sol(true).mB(ModBlocks.ore_gneiss_uranium)); + entries.add(new FalloutEntry().prim(new Triplet(ModBlocks.ore_sellafield_radgem, m, 1)) .max(i * 5).sol(true).mB(Blocks.diamond_ore)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.rock)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.sand)); entries.add(new FalloutEntry() .prim(new Triplet(ModBlocks.sellafield_slaked, m, 1)).max(i * 5).sol(true).mMa(Material.ground)); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index d820dd9dc..885ec1a96 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -379,7 +379,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.tnt, 1), new Object[] { "DDD", "DSD", "DDD", 'D', ModItems.stick_tnt, 'S', ModItems.safety_fuse }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.semtex, 1), new Object[] { "DDD", "DSD", "DDD", 'D', ModItems.stick_semtex, 'S', ModItems.safety_fuse }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.c4, 1), new Object[] { "DDD", "DSD", "DDD", 'D', ModItems.stick_c4, 'S', ModItems.safety_fuse }); - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.fissure_bomb, 1), new Object[] { "SUS", "RPR", "SUS", 'S', ModBlocks.semtex, 'U', U238.block(), 'R', OreDictManager.getReflector(), 'P', PU239.billet() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.fissure_bomb, 1), new Object[] { "SUS", "RPR", "SUS", 'S', ModBlocks.semtex, 'U', U238.block(), 'R', TA.ingot(), 'P', PU239.billet() }); //IF Grenades diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 40bae46eb..458419d3d 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -164,10 +164,15 @@ public class EntityFalloutRain extends Entity { if(b.getMaterial() == Material.air) continue; if(b == Blocks.bedrock) return; + if(b == ModBlocks.volcano_core) { + worldObj.setBlock(x, y, z, ModBlocks.volcano_rad_core, worldObj.getBlockMetadata(x, y, z), 3); + continue; + } + Block ab = worldObj.getBlock(x, y + 1, z); int meta = worldObj.getBlockMetadata(x, y, z); - if(b != ModBlocks.fallout && (ab == Blocks.air || (ab.isReplaceable(worldObj, x, y + 1, z) && !ab.getMaterial().isLiquid()))) { + if(depth == 0 && b != ModBlocks.fallout && (ab == Blocks.air || (ab.isReplaceable(worldObj, x, y + 1, z) && !ab.getMaterial().isLiquid()))) { double d = dist / 100; diff --git a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java index c7cc1a674..a847e7e96 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java +++ b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java @@ -52,13 +52,14 @@ public class EntityShrapnel extends EntityThrowable { if(!worldObj.isRemote) this.setDead(); - if(this.dataWatcher.getWatchableObjectByte(16) == 2) { + int b = this.dataWatcher.getWatchableObjectByte(16); + if(b == 2 || b == 4) { if(!worldObj.isRemote) { if(motionY < -0.2D) { if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) - worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.volcanic_lava_block); + worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, b == 2 ? ModBlocks.volcanic_lava_block : ModBlocks.rad_lava_block); for(int x = mop.blockX - 1; x <= mop.blockX + 1; x++) { for(int y = mop.blockY; y <= mop.blockY + 2; y++) { @@ -73,7 +74,7 @@ public class EntityShrapnel extends EntityThrowable { 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(b == 2 ? ExAttrib.LAVA_V : ExAttrib.LAVA_R); explosion.addAttrib(ExAttrib.NOSOUND); explosion.addAttrib(ExAttrib.ALLMOD); explosion.addAttrib(ExAttrib.NOHURT); @@ -108,6 +109,10 @@ public class EntityShrapnel extends EntityThrowable { this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0)); } + public void setRadVolcano(boolean b) { + this.dataWatcher.updateObject(16, (byte) (b ? 4 : 0)); + } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index 820f3df46..ea23952ef 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -538,7 +538,7 @@ public class ExplosionChaos { if(entity.getDistance(x, y, z) > range) continue; - if(ArmorRegistry.hasAnyProtection(entity, 3, HazardClass.GAS_CHLORINE, HazardClass.GAS_CORROSIVE)) { + if(ArmorRegistry.hasAnyProtection(entity, 3, HazardClass.GAS_LUNG, HazardClass.GAS_BLISTERING)) { ArmorUtil.damageGasMaskFilter(entity, 1); } else { entity.addPotionEffect(new PotionEffect(Potion.blindness.getId(), 5 * 20, 0)); diff --git a/src/main/java/com/hbm/explosion/ExplosionNT.java b/src/main/java/com/hbm/explosion/ExplosionNT.java index 1f56cc251..5de3072b3 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNT.java +++ b/src/main/java/com/hbm/explosion/ExplosionNT.java @@ -273,6 +273,8 @@ public class ExplosionNT extends Explosion { } } else if(has(ExAttrib.LAVA_V)) { this.worldObj.setBlock(i, j, k, ModBlocks.volcanic_lava_block); + } else if(has(ExAttrib.LAVA_R)) { + this.worldObj.setBlock(i, j, k, ModBlocks.rad_lava_block); } } } @@ -327,7 +329,8 @@ public class ExplosionNT extends Explosion { DIGAMMA, DIGAMMA_CIRCUIT, LAVA, //again the same thing but lava - LAVA_V, //again the same thing but volcaniclava + LAVA_V, //again the same thing but volcanic lava + LAVA_R, //again the same thing but radioactive lava ERRODE, //will turn select blocks into gravel or sand ALLMOD, //block placer attributes like fire are applied for all destroyed blocks ALLDROP, //miner TNT! diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index b9ec033e7..61e96b2b2 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -528,7 +528,7 @@ public class EntityEffectHandler { if(!RadiationConfig.enablePollution) return; - if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_CORROSIVE) && entity.ticksExisted % 60 == 0) { + if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_BLISTERING) && entity.ticksExisted % 60 == 0) { float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.POISON); diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 9e1e8bc13..5dac19082 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -376,7 +376,7 @@ public class BulletConfigFactory { EntityLivingBase entity = (EntityLivingBase) e; - if(ArmorRegistry.hasAllProtection(entity, 3, HazardClass.GAS_CHLORINE)) + if(ArmorRegistry.hasAllProtection(entity, 3, HazardClass.GAS_LUNG)) continue; PotionEffect eff0 = new PotionEffect(Potion.poison.id, duration, 2, true); diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 4995290e8..930675550 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -12,6 +12,7 @@ import static com.hbm.inventory.OreDictManager.DictFrame.*; import static com.hbm.inventory.OreNames.*; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockOreBasalt.EnumBasaltOreType; import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.config.GeneralConfig; import com.hbm.hazard.HazardData; @@ -216,6 +217,7 @@ public class OreDictManager { public static final DictFrame CINNABAR = new DictFrame("Cinnabar"); public static final DictFrame BORAX = new DictFrame("Borax"); public static final DictFrame CHLOROCALCITE = new DictFrame("Chlorocalcite"); + public static final DictFrame MOLYSITE = new DictFrame("Molysite"); public static final DictFrame SODALITE = new DictFrame("Sodalite"); public static final DictFrame VOLCANIC = new DictFrame("Volcanic"); public static final DictFrame HEMATITE = new DictFrame("Hematite"); @@ -390,15 +392,15 @@ public class OreDictManager { EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); DNT .nugget(nugget_dineutronium) .ingot(ingot_dineutronium) .dust(powder_dineutronium) .block(block_dineutronium); FIBER .ingot(ingot_fiberglass) .block(block_fiberglass); - ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos, DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); + ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.ASBESTOS), DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); OSMIRIDIUM .nugget(nugget_osmiridium) .ingot(ingot_osmiridium); /* * DUST AND GEM ORES */ - S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur); + S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.SULFUR), ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur); KNO .dust(niter) .block(block_niter) .ore(ore_niter); - F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite); + F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.FLUORITE)); LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite); COALCOKE .gem(fromOne(coke, EnumCokeType.COAL)) .block(fromOne(block_coke, EnumCokeType.COAL)); PETCOKE .gem(fromOne(coke, EnumCokeType.PETROLEUM)) .block(fromOne(block_coke, EnumCokeType.PETROLEUM)); @@ -406,8 +408,9 @@ public class OreDictManager { CINNABAR .crystal(cinnebar) .gem(cinnebar) .ore(ore_cinnebar, ore_depth_cinnebar); BORAX .dust(powder_borax) .ore(ore_depth_borax); CHLOROCALCITE .dust(powder_chlorocalcite); + MOLYSITE .dust(powder_molysite) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.MOLYSITE)); SODALITE .gem(gem_sodalite); - VOLCANIC .gem(gem_volcanic) .ore(basalt_gem); + VOLCANIC .gem(gem_volcanic) .ore(basalt_gem, DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM)); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); SLAG .block(block_slag); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 2669476ed..527133b66 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -496,12 +496,12 @@ public class Fluids { metaOrder.add(PHEROMONE_M); for(FluidType custom : customFluids) metaOrder.add(custom); - CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false))); - PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); - MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_CORROSIVE, false)) - .addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); + CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false))); + PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_LUNG, false))); + MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_BLISTERING, false)) + .addEntry(new ToxinEffects(HazardClass.GAS_BLISTERING, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)))); - REDMUD.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, false).add(new PotionEffect(Potion.wither.id, 30 * 20, 2)))); + REDMUD.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.GAS_BLISTERING, false).add(new PotionEffect(Potion.wither.id, 30 * 20, 2)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 2b70c1359..3c5b8bdd2 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -45,6 +45,7 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); //recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250))); + recipes.put(MOLYSITE.dust(), new Pair(new ItemStack(Items.iron_ingot), new FluidStack(Fluids.CHLORINE, 250))); recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 100))); recipes.put(SODALITE.gem(), new Pair(new ItemStack(ModItems.powder_sodium), new FluidStack(Fluids.CHLORINE, 100))); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a640258bd..506af64a9 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -425,6 +425,7 @@ public class ModItems { public static Item gem_sodalite; public static Item gem_tantalium; public static Item gem_volcanic; + public static Item gem_rad; public static Item gem_alexandrite; public static Item powder_lead; @@ -523,6 +524,7 @@ public class ModItems { public static Item powder_impure_osmiridium; public static Item powder_borax; public static Item powder_chlorocalcite; + public static Item powder_molysite; public static Item powder_lanthanium; public static Item powder_actinium; @@ -2859,6 +2861,7 @@ public class ModItems { gem_sodalite = new ItemCustomLore().setUnlocalizedName("gem_sodalite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_sodalite"); gem_tantalium = new ItemCustomLore().setUnlocalizedName("gem_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_tantalium"); gem_volcanic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gem_volcanic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_volcanic"); + gem_rad = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("gem_rad").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_rad"); gem_alexandrite = new ItemAlexandrite().setUnlocalizedName("gem_alexandrite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":gem_alexandrite"); powder_lead = new Item().setUnlocalizedName("powder_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lead"); @@ -2965,6 +2968,7 @@ public class ModItems { powder_impure_osmiridium = new Item().setUnlocalizedName("powder_impure_osmiridium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_impure_osmiridium"); powder_borax = new Item().setUnlocalizedName("powder_borax").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_borax"); powder_chlorocalcite = new Item().setUnlocalizedName("powder_chlorocalcite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_chlorocalcite"); + powder_molysite = new Item().setUnlocalizedName("powder_molysite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_molysite"); fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium"); fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt"); @@ -5819,6 +5823,7 @@ public class ModItems { GameRegistry.registerItem(powder_impure_osmiridium, powder_impure_osmiridium.getUnlocalizedName()); GameRegistry.registerItem(powder_borax, powder_borax.getUnlocalizedName()); GameRegistry.registerItem(powder_chlorocalcite, powder_chlorocalcite.getUnlocalizedName()); + GameRegistry.registerItem(powder_molysite, powder_molysite.getUnlocalizedName()); GameRegistry.registerItem(powder_yellowcake, powder_yellowcake.getUnlocalizedName()); GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName()); GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName()); @@ -5944,6 +5949,7 @@ public class ModItems { GameRegistry.registerItem(gem_sodalite, gem_sodalite.getUnlocalizedName()); GameRegistry.registerItem(gem_tantalium, gem_tantalium.getUnlocalizedName()); GameRegistry.registerItem(gem_volcanic, gem_volcanic.getUnlocalizedName()); + GameRegistry.registerItem(gem_rad, gem_rad.getUnlocalizedName()); GameRegistry.registerItem(gem_alexandrite, gem_alexandrite.getUnlocalizedName()); //Fragments diff --git a/src/main/java/com/hbm/items/armor/ArmorGasMask.java b/src/main/java/com/hbm/items/armor/ArmorGasMask.java index 5cb086925..1359848e8 100644 --- a/src/main/java/com/hbm/items/armor/ArmorGasMask.java +++ b/src/main/java/com/hbm/items/armor/ArmorGasMask.java @@ -148,9 +148,9 @@ public class ArmorGasMask extends ItemArmor implements IGasMask { public ArrayList getBlacklist(ItemStack stack, EntityLivingBase entity) { if(this == ModItems.gas_mask_mono) { - return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_CHLORINE, HazardClass.GAS_CORROSIVE, HazardClass.NERVE_AGENT, HazardClass.BACTERIA})); + return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_LUNG, HazardClass.GAS_BLISTERING, HazardClass.BACTERIA})); } else { - return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_CORROSIVE, HazardClass.NERVE_AGENT})); + return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_BLISTERING})); } } diff --git a/src/main/java/com/hbm/items/armor/ArmorHEV.java b/src/main/java/com/hbm/items/armor/ArmorHEV.java index b1fd292db..df2666d68 100644 --- a/src/main/java/com/hbm/items/armor/ArmorHEV.java +++ b/src/main/java/com/hbm/items/armor/ArmorHEV.java @@ -3,6 +3,7 @@ package com.hbm.items.armor; import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; +import com.hbm.items.ModItems; import com.hbm.render.model.ModelArmorHEV; import cpw.mods.fml.relauncher.Side; @@ -45,7 +46,7 @@ public class ArmorHEV extends ArmorFSBPowered { @Override public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { - if(this.hasFSBArmorIgnoreCharge(player)) { + if(this.hasFSBArmorIgnoreCharge(player) && player.inventory.armorInventory[2].getItem() == ModItems.hev_plate) { if(event.type == ElementType.ARMOR) { event.setCanceled(true); diff --git a/src/main/java/com/hbm/items/armor/ItemModGasmask.java b/src/main/java/com/hbm/items/armor/ItemModGasmask.java index 7c8fd77f6..cacecfc27 100644 --- a/src/main/java/com/hbm/items/armor/ItemModGasmask.java +++ b/src/main/java/com/hbm/items/armor/ItemModGasmask.java @@ -99,9 +99,9 @@ public class ItemModGasmask extends ItemArmorMod implements IGasMask { public ArrayList getBlacklist(ItemStack stack, EntityLivingBase entity) { if(this == ModItems.attachment_mask_mono) { - return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_CHLORINE, HazardClass.GAS_CORROSIVE, HazardClass.NERVE_AGENT, HazardClass.BACTERIA})); + return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_LUNG, HazardClass.GAS_BLISTERING, HazardClass.BACTERIA})); } else { - return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_CORROSIVE, HazardClass.NERVE_AGENT})); + return new ArrayList(Arrays.asList(new HazardClass[] {HazardClass.GAS_BLISTERING})); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 709db4fdb..164046197 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -261,7 +261,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public boolean canLaunch() { - if(power >= maxPower * 0.75 && isMissileValid() && hasDesignator() && hasFuel()) + if(power >= maxPower * 0.75 && isMissileValid() && hasFuel()) return true; return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index e8f98a245..550deda1a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -25,6 +25,8 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -45,6 +47,22 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl public boolean isOn = false; public float rotation; public float prevRotation; + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.progress = nbt.getInteger("progress"); + this.power = nbt.getLong("power"); + this.savedParticles = nbt.getInteger("savedParticles"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("progress", progress); + nbt.setLong("power", power); + nbt.setInteger("savedParticles", savedParticles); + } public TileEntityMachineExposureChamber() { /* diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index c9a3fe5b5..776289454 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -18,6 +18,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -212,15 +213,16 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE static { for(int i = 0; i < ItemWasteShort.WasteClass.values().length; i++) { - fuels.put( new ComparableStack(ModItems.nuclear_waste_short, 1, i), new Triplet(1500, 30 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted, 1, i))); - fuels.put( new ComparableStack(ModItems.nuclear_waste_short_tiny, 1, i), new Triplet(150, 3 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_short, 1, i), new Triplet(1500, 30 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_short_tiny, 1, i), new Triplet(150, 3 * 60 * 20, new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, i))); } for(int i = 0; i < ItemWasteLong.WasteClass.values().length; i++) { - fuels.put( new ComparableStack(ModItems.nuclear_waste_long, 1, i), new Triplet(500, 2 * 60 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted, 1, i))); - fuels.put( new ComparableStack(ModItems.nuclear_waste_long_tiny, 1, i), new Triplet(50, 12 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_long, 1, i), new Triplet(500, 2 * 60 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted, 1, i))); + fuels.put( new ComparableStack(ModItems.nuclear_waste_long_tiny, 1, i), new Triplet(50, 12 * 60 * 20, new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, i))); } - - fuels.put( new ComparableStack(ModItems.scrap_nuclear), new Triplet(50, 5 * 60 * 20, null)); + + fuels.put( new ComparableStack(ModItems.scrap_nuclear), new Triplet(50, 5 * 60 * 20, null)); + fuels.put( new ComparableStack(ModItems.gem_rad), new Triplet(25_000, 30 * 60 * 20, new ItemStack(Items.diamond))); } private Triplet grabResult(ItemStack stack) { diff --git a/src/main/java/com/hbm/util/ArmorRegistry.java b/src/main/java/com/hbm/util/ArmorRegistry.java index fc1a20601..c098d6a89 100644 --- a/src/main/java/com/hbm/util/ArmorRegistry.java +++ b/src/main/java/com/hbm/util/ArmorRegistry.java @@ -100,14 +100,14 @@ public class ArmorRegistry { } public static enum HazardClass { - GAS_CHLORINE("hazard.gasChlorine"), //also attacks eyes -> no half mask + GAS_LUNG("hazard.gasChlorine"), //also attacks eyes -> no half mask GAS_MONOXIDE("hazard.gasMonoxide"), //only affects lungs GAS_INERT("hazard.gasInert"), //SA PARTICLE_COARSE("hazard.particleCoarse"), //only affects lungs PARTICLE_FINE("hazard.particleFine"), //only affects lungs BACTERIA("hazard.bacteria"), //no half masks - NERVE_AGENT("hazard.nerveAgent"), //aggressive nerve agent, also attacks skin - GAS_CORROSIVE("hazard.corrosive"), //corrosive substance, also attacks skin + //NERVE_AGENT("hazard.nerveAgent"), //aggressive nerve agent, also attacks skin + GAS_BLISTERING("hazard.corrosive"), //corrosive substance, also attacks skin SAND("hazard.sand"), //blinding sand particles LIGHT("hazard.light"); //blinding light diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index ddf3d89dd..5d84f1d3d 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -30,16 +30,16 @@ public class ArmorUtil { */ public static void register() { - ArmorRegistry.registerHazard(ModItems.gas_mask_filter, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.NERVE_AGENT); + ArmorRegistry.registerHazard(ModItems.gas_mask_filter, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA); ArmorRegistry.registerHazard(ModItems.gas_mask_filter_mono, HazardClass.PARTICLE_COARSE, HazardClass.GAS_MONOXIDE); - ArmorRegistry.registerHazard(ModItems.gas_mask_filter_combo, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.NERVE_AGENT); + ArmorRegistry.registerHazard(ModItems.gas_mask_filter_combo, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE); ArmorRegistry.registerHazard(ModItems.gas_mask_filter_rag, HazardClass.PARTICLE_COARSE); - ArmorRegistry.registerHazard(ModItems.gas_mask_filter_piss, HazardClass.PARTICLE_COARSE, HazardClass.GAS_CHLORINE); + ArmorRegistry.registerHazard(ModItems.gas_mask_filter_piss, HazardClass.PARTICLE_COARSE, HazardClass.GAS_LUNG); ArmorRegistry.registerHazard(ModItems.gas_mask, HazardClass.SAND, HazardClass.LIGHT); ArmorRegistry.registerHazard(ModItems.gas_mask_m65, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.mask_rag, HazardClass.PARTICLE_COARSE); - ArmorRegistry.registerHazard(ModItems.mask_piss, HazardClass.PARTICLE_COARSE, HazardClass.GAS_CHLORINE); + ArmorRegistry.registerHazard(ModItems.mask_piss, HazardClass.PARTICLE_COARSE, HazardClass.GAS_LUNG); ArmorRegistry.registerHazard(ModItems.goggles, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ashglasses, HazardClass.LIGHT, HazardClass.SAND); @@ -52,23 +52,23 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.hazmat_helmet_grey, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.hazmat_paa_helmet, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.liquidator_helmet, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.ajr_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.ajro_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.steamsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.hev_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.fau_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.dns_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.schrabidium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.trenchmaster_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.ajr_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.ajro_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.steamsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.hev_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.fau_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.dns_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.schrabidium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.euphemium_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.trenchmaster_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! - registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.biochemgas.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.radiation.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.biochemgas.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); + registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.radiation.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); } private static void registerIfExists(String domain, String name, HazardClass... classes) { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a4220206f..a3c117d78 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -567,6 +567,7 @@ flare.valve=Flussventil fluid.acid_fluid=Säure fluid.corium_fluid=Corium fluid.mud_fluid=Giftiger Schlamm +fluid.rad_lava_fluid=Vulkanische Lava fluid.schrabidic_fluid=Schrabidische Säure fluid.toxic_fluid=Stereotypischer grüner Schleim fluid.volcanic_lava_fluid=Vulkanische Lava @@ -1853,6 +1854,7 @@ item.gear_large.name=Großes Zahnrad item.gear_large_steel.name=Großes Stahlzahnrad item.geiger_counter.name=Mobiler Geigerzähler item.gem_alexandrite.name=Alexandrit +item.gem_rad.name=Radioaktiver Edelstein item.gem_sodalite.name=Sodalith item.gem_tantalium.name=Tantal-Polykristall item.gem_volcanic.name=Vulkanischer Edelstein @@ -2795,6 +2797,7 @@ item.powder_magic.name=Pulverisierte Verzauberung item.powder_magnetized_tungsten.name=Magnetisierter Wolframstaub item.powder_meteorite.name=Meteoritenstaub item.powder_meteorite_tiny.name=Kleiner Haufen Meteoritenstaub +item.powder_molysite.name=Molysit item.powder_neodymium.name=Neodymstaub item.powder_neodymium_tiny.name=Kleiner Haufen Neodymstaub item.powder_neptunium.name=Neptuniumstaub @@ -3541,13 +3544,9 @@ 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_fluorite.name=Fluoritreicher Basalt -tile.basalt_gem.name=Edelsteinreicher Basalt 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 @@ -4244,6 +4243,11 @@ tile.ore_alexandrite.name=Alexandriterz tile.ore_aluminium.name=Aluminiumerz tile.ore_asbestos.name=Asbesterz tile.ore_australium.name=Australisches Erz +tile.ore_basalt_asbestos.name=Asbestreicher Basalt +tile.ore_basalt_fluorite.name=Fluoritreicher Basalt +tile.ore_basalt_gem.name=Edelsteinreicher Basalt +tile.ore_basalt_molysite.name=Molysitreicher Basalt +tile.ore_basalt_sulfur.name=Schwefelreicher Basalt tile.ore_bedrock.name=Bedrock-Erz tile.ore_bedrock_coltan.name=Bedrock-Coltanerz tile.ore_bedrock_oil.name=Bedrock-Ölvorkommen @@ -4302,6 +4306,7 @@ tile.ore_reiium.name=Reiit tile.ore_schrabidium.name=Schrabidiumerz tile.ore_sellafield_diamond.name=Sellafit-Diamanterz tile.ore_sellafield_emerald.name=Sellafit-Smaragderz +tile.ore_sellafield_radgem.name=Sellafite-Edelsteinerz tile.ore_sellafield_schrabidium.name=Sellafit-Schrabidiumerz tile.ore_sellafield_uranium_scorched.name=Verschmortes Sellafit-Uranerz tile.ore_sulfur.name=Schwefelerz @@ -4368,6 +4373,7 @@ tile.pwr_port.name=PWR Zugangsport tile.pwr_port.desc=Erlaubt IO für Items und Flüssigkeiten$Platzierung: Hülle tile.pwr_reflector.name=PWR Neutronenreflektor tile.pwr_reflector.desc=Reflektier Neutronen auf Brennstäbe zurück$Platzierung: Hülle, für höhere Reaktivität$Gültiger Block für Hülle +tile.volcanic_lava_block.name=Vulkanische Lava tile.radar_screen.name=Radarbildschirm tile.radio_telex.name=Telex-Maschine tile.radio_torch_counter.name=Redstone-over-Radio Itemzähler @@ -4556,6 +4562,7 @@ tile.vent_cloud.name=Wolken-Auslass tile.vent_pink_cloud.name=Pinker Wolken-Auslass tile.vitrified_barrel.name=Fass voll vitrifiziertem Atommüll tile.volcano_core.name=Vulkankern +tile.volcano_rad_core.name=Rad-Vulkankern tile.volcanic_lava_block.name=Vulkanische Lava tile.waste_earth.name=Totes Gras tile.waste_leaves.name=Tote Blätter diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 05365875c..5c5bf6d10 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1081,6 +1081,7 @@ flare.valve=Flow Valve fluid.acid_fluid=Acid fluid.corium_fluid=Corium fluid.mud_fluid=Poisonous Mud +fluid.rad_lava_fluid=Volcanic Lava fluid.schrabidic_fluid=Schrabidic Acid fluid.toxic_fluid=Stereotypical Green Ooze fluid.volcanic_lava_fluid=Volcanic Lava @@ -2513,8 +2514,8 @@ item.fluid_barrel_infinite.name=Infinite Fluid Barrel item.fluid_duct.name=Fluid Duct: item.fluid_identifier.name=Fluid Identifier item.fluid_identifier.info=Universal fluid identifier for: -item.fluid_identifier.usage0=Right click fluid ducts to designate them for that fluid. -item.fluid_identifier.usage1=Shift right click fluid ducts to designate adjacent ducts +item.fluid_identifier.usage0=Right click fluid ducts to set their fluid type. +item.fluid_identifier.usage1=Shift right click fluid ducts to set adjacent ducts item.fluid_identifier.usage2=up to a maximum range of 64 ducts. item.fluid_identifier_multi.name=Multi Fluid Identifier item.fluid_identifier_multi.info=Universal fluid identifier for: @@ -2574,6 +2575,7 @@ item.gear_large.name=Large Gear item.gear_large_steel.name=Large Steel Gear item.geiger_counter.name=Handheld Geiger Counter item.gem_alexandrite.name=Alexandrite +item.gem_rad.name=Radioactive Gem item.gem_sodalite.name=Sodalite item.gem_tantalium.name=Tantalium Polycrystal item.gem_tantalium.desc='Tantalum' @@ -3604,6 +3606,7 @@ item.powder_magic.name=Pulverized Enchantment item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder item.powder_meteorite.name=Meteorite Powder item.powder_meteorite_tiny.name=Tiny Pile of Meteorite Powder +item.powder_molysite.name=Molysite item.powder_neodymium.name=Neodymium Powder item.powder_neodymium_tiny.name=Tiny Pile of Neodymium Powder item.powder_neptunium.name=Neptunium Powder @@ -4502,13 +4505,9 @@ 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_fluorite.name=Fluorite-Rich Basalt -tile.basalt_gem.name=Gem-Rich Basalt 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 @@ -5244,6 +5243,11 @@ tile.ore_alexandrite.name=Alexandrite Ore tile.ore_aluminium.name=Aluminium Ore tile.ore_asbestos.name=Asbestos Ore tile.ore_australium.name=Australian Ore +tile.ore_basalt_asbestos.name=Asbestos-Rich Basalt +tile.ore_basalt_fluorite.name=Fluorite-Rich Basalt +tile.ore_basalt_gem.name=Gem-Rich Basalt +tile.ore_basalt_molysite.name=Molysite-Rich Basalt +tile.ore_basalt_sulfur.name=Sulfur-Rich Basalt tile.ore_bedrock.name=Bedrock Ore tile.ore_bedrock_coltan.name=Bedrock Coltan Ore tile.ore_bedrock_oil.name=Bedrock Oil Deposit @@ -5302,6 +5306,7 @@ tile.ore_reiium.name=Reiite tile.ore_schrabidium.name=Schrabidium Ore tile.ore_sellafield_diamond.name=Sellafite Diamond Ore tile.ore_sellafield_emerald.name=Sellafite Emerald Ore +tile.ore_sellafield_radgem.name=Sellafite Radioactive Gem Ore tile.ore_sellafield_schrabidium.name=Sellafite Schrabidium Ore tile.ore_sellafield_uranium_scorched.name=Scorched Sellafite Uranium Ore tile.ore_sulfur.name=Sulfur Ore @@ -5369,6 +5374,7 @@ tile.pwr_port.name=PWR Access Port tile.pwr_port.desc=Allows item and fluid IO$Placement: Casing tile.pwr_reflector.name=PWR Neutron Reflector tile.pwr_reflector.desc=Reflects neutrons back to fuel rods$Placement: Grid, for increased reactivity$Valid casing material +tile.rad_lava_block.name=Volcanic Lava tile.radar_screen.name=Radar Screen tile.radio_telex.name=Telex Machine tile.radio_torch_counter.name=Redstone-over-Radio Item Counter @@ -5563,6 +5569,7 @@ tile.vinyl_tile.small.name=Small Vinyl Tiles tile.vitrified_barrel.name=Vitrified Nuclear Waste Drum tile.volcanic_lava_block.name=Volcanic Lava tile.volcano_core.name=Volcano Core +tile.volcano_rad_core.name=Rad Volcano Core tile.waste_earth.name=Dead Grass tile.waste_leaves.name=Dead Leaves tile.waste_log.name=Charred Log diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/basalt_asbestos.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_fluorite.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/basalt_fluorite.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_gem.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/basalt_gem.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png new file mode 100644 index 0000000000000000000000000000000000000000..e688aeaac0858ed7b7f052db0fa358e19bb12936 GIT binary patch literal 926 zcmV;P17ZA$P)R0OlWahwV)J4J;ei#^Y+kW-{7D8{=&$}h`ztS zkEUtN&CQ`G3W-F5QmMq)*cghUu(h?t-rgQ3Cns2~R(w7m~L^!!1VMq+uPgp_xIy=yYYBD9DHO0op1}2jU zfEMc^_dk2W;o%|qd>#O^*^Fx4;Z_hxztDL6_%XR$4gR3e+r0&t?f!g%h(;P?AkU0o%eZRXSaPcfSxa;JR)MN!b3vrIngVQFaz zS(eFWv;P-$I|fk{1!KKlk4Tb4I-MpE2$0ES$Ye5jy=*tdf1n~s64h!I zNs?GuS>fvH3Lz8<>6)g|Xf#Nt(+qv*#_ct8TBu?-KOh(kl1io6+}y-svEX*Q+1=g6 zX0u_p+c64)5Sg5uq`SMDfq?;X?`qW4GT(gl3{_RJ+wF98bl`HiD3{9&4GrP<`zaQS zsH*ybF&GSDwOXlEDoBzhkYyR6Ig9s>NIZ5)OG^vR&MRzu0>I(bI%4ZbeE-E90Lf$$qbQ1zd-q(_)jU3b z4bg7G^YJ4F2M4*nzNS)cVtsubTjw=a$;d?iFC>#mYPA}&EMssu9C*ABX>SW*xc!>v zzaEoHrI2MAm&-*s9AZ;sG+n1!t)lBX<#L%+Dur=&b~a)*n<*3uTwGjmb8~~U z{hYG$H?RK6lgs6hWf{BO&bd9?4Be7TvRaJ31ofr%T*4EZ&G#We# z{lvxTEuyiFcs!2B<6%7XgwOAO%f=sRdV72M4@3}!vhXX`*Z=?k07*qoM6N<$f^HtW As{jB1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_overlay.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/basalt_overlay.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_overlay.png diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/basalt_sulfur.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_overlay_radgem.png b/src/main/resources/assets/hbm/textures/blocks/ore_overlay_radgem.png new file mode 100644 index 0000000000000000000000000000000000000000..bb30dc075c2480d1b6b59790d45452c9a8ab39ae GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf%b8^xx>e%Pj;#_P5LUbQ*oEbG($2D18R8}< z`tAGt(R^5YWuch?uqUirT}Z&}ih+770iKx-ZbhN*9r8!VeH>j5oc@O1TaS?83{ F1OVkjH)8+* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png b/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png new file mode 100644 index 0000000000000000000000000000000000000000..be3c5aa62943dc5a63024a62e8c0b1b4b120b99a GIT binary patch literal 10650 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 SZ2)0Q45+-CT&0X@;Qs;*0z|z4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png.mcmeta new file mode 100755 index 000000000..df9c61a80 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png b/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png new file mode 100644 index 0000000000000000000000000000000000000000..4784bb63244a3d7efebe69715df8e5f37081b0f2 GIT binary patch literal 10616 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 Ar2qf` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png.mcmeta new file mode 100755 index 000000000..55438bf34 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png b/src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png new file mode 100644 index 0000000000000000000000000000000000000000..f804bda85e812070df7fdc586dc3ca9c9b992055 GIT binary patch literal 1433 zcmV;K1!nq*P)1uYGt;$fyOWw=&=?d95vHb7?Vq-d(Le;DrP!in zBN2%=8gH~QF(yRQE29?%O-wZ22&f1w>qTinVoHsoMT&Mz*+R4iK@ttoisff_=gb)| zmYsIm+CrS0nPkrSX1@2l-;-BsZf*{OAV5lq@B0Agx{eS6r4+@>_kDyA_`Z*(X_%&o zX_^QC%d)7bs30DX6OYG9BoZVN304hGU|AN4L;}mQuq=z0hnBGD_z;$56^eSEM>dQ&v_+X=y3%9&Thu%T@ffk5Y5+EK*7gDJ4M=@WZ-0dAfH2 zJ4xYS(xZ^gl8LFW?yn5K!85~UO+B_;gSc@IzZ+=OYG z#9}dk$pQd|VNgvazVD-y!t=bsA|WF0wFA90_W!{v-`|CyX&OQZimd>2rZike02oVF zq3b%juG6yP3SD$l($S8)KTUt5g;rl*AKY^6JAkl%v;8puy!2-{*o-BsxNG;1xMZ+4 zKZ#O`iHQlu$Hx(-X_8<42o5%x_PfzHw4szjDMf5!2QC@fcS~F{#5Q)|`+lekfGDcz zU`P5bI#J)y7H(Ebk;~=qJTLr6C}K60B-47hd1@g5DJ4=$JkJZo1rWJhjvxr=YCXZu z)+~1VbYupE5IET3ulv4F5Cr(XkLP&^P1A_?A3-S<4pZ@^@B1uIjZ#e|PR}oF?Thnv zUp=C?k9pKi#1I{*L9{|#bU*KQD_4SJWxt; z_3BjsN=ix)LQs3?9LHDRJ~=o-P=EM504E+@%*4dRBoE#>*bw2tGl$A?up>OEKYX6y zmL+_@_KuJTT1`z&kVqsbEiDas@D{HDu&r~HD|_}v1paW{6>_;8*=&|XS$P1=&4c&*9}Ia= zgh!DFucz)QII-sd_x1hC*1kCR_MVCIVAtRphB+BJ(ZR;S=KWRUGkEa9z(YK{@+)8( z4<0`HH=oxni2U{q@!*U5%frPt!h<>U!LGqIGxEXip_bY6!E8L}qI*U@c(G+Dk`E$0 z*xp-57u}(VsZPPNJtH9xc9KG^Tl?QU80KU+6JyCL%qjUmN;!W%*tI@4Z$5B(e))eq zaIkR?q=*BJ*faBiONLx36B=r2KG?Qn2>_pVC|2x0MSr7(q3b&317C(hP2~aU0td>H zn`rwe2SE4cpNYj{xUEYO;yQScOYIMf&&h)=JRa$HdOnz!2LN{Zbi}5`X9xTG@`2mB zlw?}J@qEzO|3}CJm&~mB;H{n-w)VxjukTm3_twpx4~kqY9^v4sTW9d#`GJMJxAHGw n8V_DLdK+)norwr}Jv{gqyYH=GnMS&K00000NkvXXu0mjf{R5hu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png.mcmeta new file mode 100644 index 000000000..fc4bc9855 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/volcano_rad_core.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 4 + } +} diff --git a/src/main/resources/assets/hbm/textures/items/gem_rad.png b/src/main/resources/assets/hbm/textures/items/gem_rad.png new file mode 100644 index 0000000000000000000000000000000000000000..d177e51f951bd14b5d67cbd45384ff5c6c905e4c GIT binary patch literal 465 zcmV;?0WSWDP)y617|V80Upp1 z8s^;Grn#X9ugb()#SQS0zoj)aLNL%t*3K{xouB~Bti#oEYTxl^vXe` zjL|1!9PFLopmD#D!Ze;lg#di5?a4`#FIsj02Z4=-gWxoEfkt^0$^=dgOUzBL)70Hq z6wt5%2hh5MJS<#c8qZ~6sG9G7y+yf*(i&X^1;F}d{m<|TDTSyw&}yx3My7ZL~szPIEaXkK?HX}gpMv1wBYEh ze?brte}R)aD^5DNxVY2`J|anok78|$^^wLwEiHXaj-L6RkMCYC{L_%-_=vL@A95Pa zxEjf^nJDUrkF=O|cD7PNtvRutypkBFZ#YcKdZ2eS#PnjMW|OLbU%4&f{GD+i} zz5NR$#m21`G4&k&iFaBQcSRGS;$U6PXnF>ZTEtcgoLdG-!{W+JlNPfS)i->%L4;cw zTa!50GzAIZ^h{q11U#z%YJU?h#U^Q4TpEwun9ukpJ}~qgaz+Nt!^fS-(WWJo8vK%o z4?B6GKwc~`I2Yp5c*0g+xiO!yPCf}ZUYZ;)#~V*V)e7s|rxjsSOC8@~KY`_k`xE9D j2I_z4 Date: Sun, 21 Jan 2024 20:16:10 +0100 Subject: [PATCH 2/4] the foxes have taken over, torex tweaks --- changelog | 11 +++ gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 2 - .../java/com/hbm/blocks/fluid/RadBlock.java | 10 ++ .../hbm/blocks/generic/BlockDoorGeneric.java | 21 ++++- .../blocks/generic/BlockGlyphidSpawner.java | 5 +- .../com/hbm/blocks/generic/BlockKeyhole.java | 2 + .../hbm/entity/effect/EntityNukeTorex.java | 88 +++++++++--------- .../java/com/hbm/hazard/HazardRegistry.java | 3 + src/main/java/com/hbm/items/ModItems.java | 6 ++ .../java/com/hbm/items/armor/ItemModCard.java | 48 ++++++++++ .../hbm/items/armor/ItemModNightVision.java | 44 ++++----- .../java/com/hbm/items/tool/ItemLock.java | 46 +++------ .../java/com/hbm/items/tool/ItemWandD.java | 18 +++- .../com/hbm/items/weapon/ItemGunBase.java | 11 +++ src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../hbm/render/entity/effect/RenderTorex.java | 7 +- .../java/com/hbm/tileentity/DoorDecl.java | 5 + .../hbm/tileentity/TileEntityDoorGeneric.java | 2 + .../machine/TileEntityLockableBase.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../hbm/textures/blocks/rad_lava_flowing.png | Bin 10650 -> 9055 bytes .../hbm/textures/blocks/rad_lava_still.png | Bin 10616 -> 8678 bytes .../assets/hbm/textures/items/card_aos.png | Bin 0 -> 157 bytes .../assets/hbm/textures/items/card_qos.png | Bin 0 -> 178 bytes 26 files changed, 223 insertions(+), 115 deletions(-) create mode 100644 src/main/java/com/hbm/items/armor/ItemModCard.java create mode 100644 src/main/resources/assets/hbm/textures/items/card_aos.png create mode 100644 src/main/resources/assets/hbm/textures/items/card_qos.png diff --git a/changelog b/changelog index 74a6aa77b..df4205477 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,7 @@ * The final missing door from 1.12, remade from scratch * Comes with a brand-new model that fits perfectly over 3x3 missile launch tubes * Has a 5x5 frame + * Can be opened and closed with a detonator * Molysite * Found in basalt from volcanos * Can be combination-smelted into iron and chlorine @@ -21,6 +22,15 @@ * Removed the "nerve agent" hazard class because no gas used it * Fissures now continuously spawn volcanic lava, making basalt renewable without having an entire volcano * Volcanic lava now turns diamond ore into gem-rich basalt +* Mushroom clouds have been tweaked + * Their scale no longer scales linearly, but rather with a square root function, this prevents tsar clouds from being so huge that the top fails to render due to clipping through the skybox + * Their default scale is now somewhat larger + * The flash scale has been increased + * Their general scaling is now consistent, larger clouds will no longer be chubby with a comically small ring + * Shockwave particles now have momentum, making them sweep over the landscape, as well as being 1.5x denser and slightly larger + * Effect shamelessly stolen from NTM-EE + * Outer condensation rings' spawning is no longer fixed, the time now scales with the size + * The inner condensation ring's spawn time is also now based on scale, which means larger clouds will no longer end up with comically thin rings due to not spawning enough cloudlets ## Fixed * Fixed sellafite emerald ore being oredicted as emerald dust @@ -38,3 +48,4 @@ * Fixed fallout layers being able to generate below roofs * Fixed exposure chamber not saving anything to NBT besides slots * Fixed crash caused by wearing the full PaA set and then putting on an HEV helmet (why would anyone ever do this??) +* Fixed large doors only being lockable by clicking on the core block diff --git a/gradle.properties b/gradle.properties index 963b4f95a..dfdd7bdff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4845 +mod_build_number=4851 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c22a7589b..fec0b2fc0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1235,10 +1235,8 @@ public class ModBlocks { public static Block volcanic_lava_block; public static Fluid volcanic_lava_fluid; - public static final Material fluidvolcanic = (new MaterialLiquid(MapColor.redColor)); public static Block rad_lava_block; public static Fluid rad_lava_fluid; - public static final Material fluidradlava = (new MaterialLiquid(MapColor.redColor)); public static Block sulfuric_acid_block; public static Fluid sulfuric_acid_fluid; diff --git a/src/main/java/com/hbm/blocks/fluid/RadBlock.java b/src/main/java/com/hbm/blocks/fluid/RadBlock.java index 8828bd954..7ab22af70 100644 --- a/src/main/java/com/hbm/blocks/fluid/RadBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/RadBlock.java @@ -4,12 +4,17 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; 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.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -37,6 +42,11 @@ public class RadBlock extends VolcanicBlock { return (side == 0 || side == 1) ? stillIconRad : flowingIconRad; } + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + if(entity instanceof EntityLivingBase) ContaminationUtil.contaminate((EntityLivingBase) entity, HazardType.RADIATION, ContaminationType.CREATIVE, 5F); + } + @Override public void onSolidify(World world, int x, int y, int z, int lavaCount, int basaltCount, Random rand) { int r = rand.nextInt(400); diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 841d834f9..fbe36d426 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -3,7 +3,9 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.IBomb; import com.hbm.items.special.ItemDoorSkin; +import com.hbm.items.tool.ItemLock; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -20,7 +22,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockDoorGeneric extends BlockDummyable { +public class BlockDoorGeneric extends BlockDummyable implements IBomb { public DoorDecl type; @@ -45,6 +47,22 @@ public class BlockDoorGeneric extends BlockDummyable { public int getOffset(){ return type.getBlockOffset(); } + + @Override + public BombReturnCode explode(World world, int x, int y, int z) { + int[] pos1 = findCore(world, x, y, z); + if(pos1 == null) return BombReturnCode.ERROR_INCOMPATIBLE; + TileEntityDoorGeneric door = (TileEntityDoorGeneric) world.getTileEntity(pos1[0], pos1[1], pos1[2]); + if(door != null) { + DoorDecl decl = door.getDoorType(); + if(!decl.remoteControllable()) return BombReturnCode.ERROR_INCOMPATIBLE; + if(door.tryToggle(null)) { + return BombReturnCode.TRIGGERED; + } + } + + return BombReturnCode.ERROR_INCOMPATIBLE; + } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer playerIn, int side, float hitX, float hitY, float hitZ){ @@ -148,5 +166,4 @@ public class BlockDoorGeneric extends BlockDummyable { } return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); } - } \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index e4d07db08..eb211f871 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -100,7 +100,8 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { if(!worldObj.isRemote && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { if(initialSpawn || worldObj.getTotalWorldTime() % MobConfig.swarmCooldown == 0) { - + + initialSpawn = false; int count = 0; for(Object e : worldObj.loadedEntityList) { @@ -126,8 +127,6 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { if(this.getBlockMetadata() == 1) scout.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); trySpawnEntity(scout); } - - initialSpawn = false; } } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java index f1c96e0b7..7c195a114 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -232,6 +232,8 @@ public class BlockKeyhole extends BlockStone { pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wd40), 10)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.scrumpy), 10)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.wild_p), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.card_aos), 5)); + pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.card_qos), 5)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.starmetal_sword), 5)); pedestalItems.add(new WeightedRandomObject(new ItemStack(ModItems.radaway_flush), 5)); diff --git a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java index 8959e0685..628416174 100644 --- a/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java +++ b/src/main/java/com/hbm/entity/effect/EntityNukeTorex.java @@ -2,6 +2,7 @@ package com.hbm.entity.effect; import java.util.ArrayList; +import com.hbm.util.BobMathUtil; import com.hbm.util.TrackerUtil; import cpw.mods.fml.relauncher.Side; @@ -53,7 +54,7 @@ public class EntityNukeTorex extends Entity { @Override public void onUpdate() { - double s = this.getScale(); + double s = 1.5; //this.getScale(); double cs = 1.5; int maxAge = this.getMaxAge(); @@ -84,61 +85,61 @@ public class EntityNukeTorex extends Entity { double x = posX + rand.nextGaussian() * range; double z = posZ + rand.nextGaussian() * range; Cloudlet cloud = new Cloudlet(x, lastSpawnY, z, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime); - cloud.setScale(1F + this.ticksExisted * 0.005F * (float) s, 5F * (float) cs); + cloud.setScale(1F + this.ticksExisted * 0.005F * (float) cs, 5F * (float) cs); cloudlets.add(cloud); } // spawn shock clouds - if(ticksExisted < 100) { + if(ticksExisted < 150) { int cloudCount = ticksExisted * 5; int shockLife = Math.max(300 - ticksExisted * 20, 50); for(int i = 0; i < cloudCount; i++) { - Vec3 vec = Vec3.createVectorHelper((ticksExisted * 2 + rand.nextDouble()) * 2, 0, 0); + Vec3 vec = Vec3.createVectorHelper((ticksExisted * 1.5 + rand.nextDouble()) * 1.5, 0, 0); float rot = (float) (Math.PI * 2 * rand.nextDouble()); vec.rotateAroundY(rot); - this.cloudlets.add(new Cloudlet(vec.xCoord + posX, worldObj.getHeightValue((int) (vec.xCoord + posX) + 1, (int) (vec.zCoord + posZ)), vec.zCoord + posZ, rot, 0, shockLife) - .setScale(5F, 2F) - .setMotion(0)); + this.cloudlets.add(new Cloudlet(vec.xCoord + posX, worldObj.getHeightValue((int) (vec.xCoord + posX) + 1, (int) (vec.zCoord + posZ)), vec.zCoord + posZ, rot, 0, shockLife, TorexType.SHOCK) + .setScale(7F, 2F) + .setMotion(ticksExisted > 15 ? 0.75 : 0)); } } // spawn ring clouds - if(ticksExisted < 200) { + if(ticksExisted < 130 * s) { lifetime *= s; for(int i = 0; i < 2; i++) { Cloudlet cloud = new Cloudlet(posX, posY + coreHeight, posZ, (float)(rand.nextDouble() * 2D * Math.PI), 0, lifetime, TorexType.RING); - cloud.setScale(1F + this.ticksExisted * 0.0025F * (float) (cs * s), 3F * (float) (cs * s)); + cloud.setScale(1F + this.ticksExisted * 0.0025F * (float) (cs * cs), 3F * (float) (cs * cs)); cloudlets.add(cloud); } } // spawn condensation clouds - if(ticksExisted > 200 && ticksExisted < 600) { + if(ticksExisted > 130 * s && ticksExisted < 600 * s) { for(int i = 0; i < 20; i++) { for(int j = 0; j < 4; j++) { float angle = (float) (Math.PI * 2 * rand.nextDouble()); - Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 3, 0, 0); + Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * (3 + rand.nextDouble()), 0, 0); vec.rotateAroundZ((float) (Math.PI / 45 * j)); vec.rotateAroundY(angle); Cloudlet cloud = new Cloudlet(posX + vec.xCoord, posY + coreHeight - 5 + j * s, posZ + vec.zCoord, angle, 0, (int) ((20 + ticksExisted / 10) * (1 + rand.nextDouble() * 0.1)), TorexType.CONDENSATION); - cloud.setScale(0.125F * (float) (cs * s), 3F * (float) (cs * s)); + cloud.setScale(0.125F * (float) (cs), 3F * (float) (cs)); cloudlets.add(cloud); } } } - if(ticksExisted > 300 && ticksExisted < 600) { + if(ticksExisted > 200 * s && ticksExisted < 600 * s) { for(int i = 0; i < 20; i++) { for(int j = 0; j < 4; j++) { float angle = (float) (Math.PI * 2 * rand.nextDouble()); - Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * 2, 0, 0); + Vec3 vec = Vec3.createVectorHelper(torusWidth + rollerSize * (3 + rand.nextDouble() * 0.5), 0, 0); vec.rotateAroundZ((float) (Math.PI / 45 * j)); vec.rotateAroundY(angle); - Cloudlet cloud = new Cloudlet(posX + vec.xCoord, posY + coreHeight + 25 + j * s, posZ + vec.zCoord, angle, 0, (int) ((20 + ticksExisted / 10) * (1 + rand.nextDouble() * 0.1)), TorexType.CONDENSATION); - cloud.setScale(0.125F * (float) (cs * s), 3F * (float) (cs * s)); + Cloudlet cloud = new Cloudlet(posX + vec.xCoord, posY + coreHeight + 25 + j * cs, posZ + vec.zCoord, angle, 0, (int) ((20 + ticksExisted / 10) * (1 + rand.nextDouble() * 0.1)), TorexType.CONDENSATION); + cloud.setScale(0.125F * (float) (cs), 3F * (float) (cs)); cloudlets.add(cloud); } } @@ -147,12 +148,12 @@ public class EntityNukeTorex extends Entity { for(Cloudlet cloud : cloudlets) { cloud.update(); } - coreHeight += 0.15/* * s*/; - torusWidth += 0.05/* * s*/; + coreHeight += 0.15 / s; + torusWidth += 0.05 / s; rollerSize = torusWidth * 0.35; convectionHeight = coreHeight + rollerSize; - int maxHeat = (int) (50 * s); + int maxHeat = (int) (50 * cs); heat = maxHeat - Math.pow((maxHeat * this.ticksExisted) / maxAge, 1); cloudlets.removeIf(x -> x.isDead); @@ -298,6 +299,14 @@ public class EntityNukeTorex extends Entity { this.motionX = convection.xCoord * factor + lift.xCoord * (1D - factor); this.motionY = convection.yCoord * factor + lift.yCoord * (1D - factor); this.motionZ = convection.zCoord * factor + lift.zCoord * (1D - factor); + } else if(this.type == TorexType.SHOCK) { + + double factor = MathHelper.clamp_double((this.posY - EntityNukeTorex.this.posY) / EntityNukeTorex.this.coreHeight, 0, 1); + Vec3 motion = Vec3.createVectorHelper(1, 0, 0); + motion.rotateAroundY(this.angle); + this.motionX = motion.xCoord * factor; + this.motionY = motion.yCoord * factor; + this.motionZ = motion.zCoord * factor; } else if(this.type == TorexType.RING) { Vec3 motion = getRingMotion(simPosX, simPosZ); this.motionX = motion.xCoord; @@ -321,30 +330,14 @@ public class EntityNukeTorex extends Entity { private Vec3 getCondensationMotion() { Vec3 delta = Vec3.createVectorHelper(posX - EntityNukeTorex.this.posX, 0, posZ - EntityNukeTorex.this.posZ); - double speed = 0.00002 * EntityNukeTorex.this.getScale() * EntityNukeTorex.this.ticksExisted; + double speed = 0.00002 * EntityNukeTorex.this.ticksExisted; delta.xCoord *= speed; - //delta.yCoord *= speed * 0.75 * EntityNukeTorex.this.getScale(); delta.zCoord *= speed; return delta; } private Vec3 getRingMotion(double simPosX, double simPosZ) { - /*Vec3 targetPos = Vec3.createVectorHelper( - (EntityNukeTorex.this.posX + torusWidth * 1), - (EntityNukeTorex.this.posY + coreHeight * 0.5), - EntityNukeTorex.this.posZ); - - Vec3 delta = Vec3.createVectorHelper(targetPos.xCoord - simPosX, targetPos.yCoord - this.posY, targetPos.zCoord - simPosZ); - - double speed = 0.125D; - delta.xCoord *= speed; - delta.yCoord *= speed; - delta.zCoord *= speed; - - delta.rotateAroundY(this.angle); - return delta;*/ - if(simPosX > EntityNukeTorex.this.posX + torusWidth * 2) return Vec3.createVectorHelper(0, 0, 0); @@ -392,9 +385,6 @@ public class EntityNukeTorex extends Entity { /* simulated on a 2D-plane along the X/Y axis */ private Vec3 getConvectionMotion(double simPosX, double simPosZ) { - if(simPosX > EntityNukeTorex.this.posX + torusWidth * 2) - return Vec3.createVectorHelper(0, 0, 0); - /* the position of the torus' outer ring center */ Vec3 torusPos = Vec3.createVectorHelper( (EntityNukeTorex.this.posX + torusWidth), @@ -480,10 +470,19 @@ public class EntityNukeTorex extends Entity { } public Vec3 getInterpPos(float interp) { - return Vec3.createVectorHelper( + float scale = (float) EntityNukeTorex.this.getScale(); + Vec3 base = Vec3.createVectorHelper( prevPosX + (posX - prevPosX) * interp, prevPosY + (posY - prevPosY) * interp, prevPosZ + (posZ - prevPosZ) * interp); + + if(this.type != TorexType.SHOCK) { //no rescale for the shockwave as this messes with the positions + base.xCoord = ((base.xCoord) - EntityNukeTorex.this.posX) * scale + EntityNukeTorex.this.posX; + base.yCoord = ((base.yCoord) - EntityNukeTorex.this.posY) * scale + EntityNukeTorex.this.posY; + base.zCoord = ((base.zCoord) - EntityNukeTorex.this.posZ) * scale + EntityNukeTorex.this.posZ; + } + + return base; } public Vec3 getInterpColor(float interp) { @@ -514,7 +513,9 @@ public class EntityNukeTorex extends Entity { private float growingScale = 5F; public float getScale() { - return startingScale + ((float)age / (float)cloudletLife) * growingScale; + float base = startingScale + ((float)age / (float)cloudletLife) * growingScale; + if(this.type != TorexType.SHOCK) base *= (float) EntityNukeTorex.this.getScale(); + return base; } public Cloudlet setScale(float start, float grow) { @@ -533,6 +534,7 @@ public class EntityNukeTorex extends Entity { public static enum TorexType { STANDARD, + SHOCK, RING, CONDENSATION } @@ -548,14 +550,14 @@ public class EntityNukeTorex extends Entity { } public static void statFac(World world, double x, double y, double z, float scale) { - EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F)); + EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F)); torex.setPosition(x, y, z); world.spawnEntityInWorld(torex); TrackerUtil.setTrackingRange(world, torex, 1000); } public static void statFacBale(World world, double x, double y, double z, float scale) { - EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float(scale * 0.01F, 0.5F, 5F)).setType(1); + EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F)).setType(1); torex.setPosition(x, y, z); world.spawnEntityInWorld(torex); TrackerUtil.setTrackingRange(world, torex, 1000); diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 4b0476d24..4a3516112 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -223,6 +223,9 @@ public class HazardRegistry { HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 3), makeData(RADIATION, 4F)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 4), makeData(RADIATION, 5F)); HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 5), makeData(RADIATION, 10F)); + + HazardSystem.register(new ItemStack(ModBlocks.ore_sellafield_radgem), makeData(RADIATION, 25F)); + HazardSystem.register(new ItemStack(ModItems.gem_rad), makeData(RADIATION, 25F)); registerOtherFuel(rod_zirnox, EnumZirnoxType.NATURAL_URANIUM_FUEL.ordinal(), u * rod_dual, wst * rod_dual * 11.5F, false); registerOtherFuel(rod_zirnox, EnumZirnoxType.URANIUM_FUEL.ordinal(), uf * rod_dual, wst * rod_dual * 10F, false); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 506af64a9..0e09d243c 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2207,6 +2207,8 @@ public class ModItems { public static Item defuser_gold; public static Item ballistic_gauntlet; public static Item night_vision; + public static Item card_aos; + public static Item card_qos; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -3452,6 +3454,8 @@ public class ModItems { defuser_gold = new ItemModDefuser().setUnlocalizedName("defuser_gold").setTextureName(RefStrings.MODID + ":defuser_gold"); ballistic_gauntlet = new ItemModTwoKick().setUnlocalizedName("ballistic_gauntlet").setTextureName(RefStrings.MODID + ":ballistic_gauntlet"); night_vision = new ItemModNightVision().setUnlocalizedName("night_vision").setTextureName(RefStrings.MODID + ":night_vision"); + card_aos = new ItemModCard().setUnlocalizedName(null).setTextureName(RefStrings.MODID + ":card_aos"); + card_qos = new ItemModCard().setUnlocalizedName(null).setTextureName(RefStrings.MODID + ":card_qos"); cap_nuka = new Item().setUnlocalizedName("cap_nuka").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_nuka"); cap_quantum = new Item().setUnlocalizedName("cap_quantum").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_quantum"); @@ -7726,6 +7730,8 @@ public class ModItems { GameRegistry.registerItem(defuser_gold, defuser_gold.getUnlocalizedName()); GameRegistry.registerItem(ballistic_gauntlet, ballistic_gauntlet.getUnlocalizedName()); GameRegistry.registerItem(night_vision, night_vision.getUnlocalizedName()); + GameRegistry.registerItem(card_aos, card_aos.getUnlocalizedName()); + GameRegistry.registerItem(card_qos, card_qos.getUnlocalizedName()); //Chaos GameRegistry.registerItem(chocolate_milk, chocolate_milk.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModCard.java b/src/main/java/com/hbm/items/armor/ItemModCard.java new file mode 100644 index 000000000..aee3e2152 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModCard.java @@ -0,0 +1,48 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.ArmorModHandler; +import com.hbm.items.ModItems; + +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ItemModCard extends ItemArmorMod { + + public ItemModCard() { + super(ArmorModHandler.helmet_only, true, false, false, false); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + if(this == ModItems.card_aos) { + list.add(EnumChatFormatting.RED + "Top of the line!"); + list.add(EnumChatFormatting.RED + "Guns now have a 33% chance to not consume ammo."); + } + if(this == ModItems.card_qos) { + list.add(EnumChatFormatting.RED + "Power!"); + list.add(EnumChatFormatting.RED + "Adds a 33% chance to tank damage with no cap."); + } + list.add(""); + super.addInformation(itemstack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + list.add(EnumChatFormatting.YELLOW + I18n.format("item.night_vision.description.in_armor", stack.getDisplayName())); + } + + @Override + public void modDamage(LivingHurtEvent event, ItemStack armor) { + if(this == ModItems.card_qos && event.entityLiving.getRNG().nextInt(3) == 0 && event.entityLiving instanceof EntityPlayer) { + HbmPlayerProps.plink((EntityPlayer) event.entityLiving, "random.break", 0.5F, 1.0F + event.entityLiving.getRNG().nextFloat() * 0.5F); + event.ammount = 0; + event.setCanceled(true); + } + } +} diff --git a/src/main/java/com/hbm/items/armor/ItemModNightVision.java b/src/main/java/com/hbm/items/armor/ItemModNightVision.java index 6df89d2a6..96af954c3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModNightVision.java +++ b/src/main/java/com/hbm/items/armor/ItemModNightVision.java @@ -12,30 +12,30 @@ import net.minecraft.util.EnumChatFormatting; import java.util.List; public class ItemModNightVision extends ItemArmorMod { - public ItemModNightVision() { - super(ArmorModHandler.helmet_only, true, false, false, false); - } + public ItemModNightVision() { + super(ArmorModHandler.helmet_only, true, false, false, false); + } - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.AQUA + I18n.format("item.night_vision.description.item")); - list.add(""); - super.addInformation(itemstack, player, list, bool); - } + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.AQUA + I18n.format("item.night_vision.description.item")); + list.add(""); + super.addInformation(itemstack, player, list, bool); + } - @Override - public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + I18n.format("item.night_vision.description.in_armor", stack.getDisplayName())); - } + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + list.add(EnumChatFormatting.YELLOW + I18n.format("item.night_vision.description.in_armor", stack.getDisplayName())); + } - @Override - public void modUpdate(EntityLivingBase entity, ItemStack armor) { - if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer)entity)) { - entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + @Override + public void modUpdate(EntityLivingBase entity, ItemStack armor) { + if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer) entity)) { + entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); - if(entity.getRNG().nextInt(50) == 0) { - armor.damageItem(1, entity); - } - } - } + if(entity.getRNG().nextInt(50) == 0) { + armor.damageItem(1, entity); + } + } + } } diff --git a/src/main/java/com/hbm/items/tool/ItemLock.java b/src/main/java/com/hbm/items/tool/ItemLock.java index 0672f90a7..083d6b13a 100644 --- a/src/main/java/com/hbm/items/tool/ItemLock.java +++ b/src/main/java/com/hbm/items/tool/ItemLock.java @@ -1,7 +1,7 @@ package com.hbm.items.tool; -import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityLockableBase; +import com.hbm.util.CompatExternal; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -17,51 +17,29 @@ public class ItemLock extends ItemKeyPin { } @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) - { + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) { + if(this.getPins(stack) != 0) { - TileEntity te = world.getTileEntity(x, y, z); - + TileEntity te = CompatExternal.getCoreFromPos(world, x, y, z); + if(te != null && te instanceof TileEntityLockableBase) { - TileEntityLockableBase tile = (TileEntityLockableBase)te; - + TileEntityLockableBase tile = (TileEntityLockableBase) te; + if(tile.isLocked()) return false; - + tile.setPins(this.getPins(stack)); tile.lock(); tile.setMod(lockMod); - world.playSoundAtEntity(player, "hbm:block.lockHang", 1.0F, 1.0F); + world.playSoundAtEntity(player, "hbm:block.lockHang", 1.0F, 1.0F); stack.stackSize--; - + return true; } - - if(te != null && te instanceof TileEntityDummy) { - - TileEntityDummy dummy = (TileEntityDummy)te; - TileEntity target = world.getTileEntity(dummy.targetX, dummy.targetY, dummy.targetZ); - - if(target != null && target instanceof TileEntityLockableBase) { - TileEntityLockableBase tile = (TileEntityLockableBase)target; - - if(tile.isLocked()) - return false; - - tile.setPins(this.getPins(stack)); - tile.lock(); - tile.setMod(lockMod); - - world.playSoundAtEntity(player, "hbm:block.lockHang", 1.0F, 1.0F); - stack.stackSize--; - - return true; - } - } } - + return false; - } + } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 01eecea43..8d642887d 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.lib.Library; +import com.hbm.util.BobMathUtil; import com.hbm.util.TrackerUtil; import com.hbm.world.WorldUtil; import com.hbm.world.biome.BiomeGenCraterBase; @@ -11,6 +12,7 @@ import com.hbm.world.biome.BiomeGenCraterBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -64,11 +66,17 @@ public class ItemWandD extends Item { tom.destructionRange = 600; world.spawnEntityInWorld(tom);*/ - EntityNukeTorex torex = new EntityNukeTorex(world); - torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); - torex.setScale(1.5F); - world.spawnEntityInWorld(torex); - TrackerUtil.setTrackingRange(world, torex, 1000); + List del = world.getEntitiesWithinAABB(EntityNukeTorex.class, AxisAlignedBB.getBoundingBox(pos.blockX, pos.blockY + 1, pos.blockZ, pos.blockX, pos.blockY + 1, pos.blockZ).expand(50, 50, 50)); + + if(!del.isEmpty()) { + for(EntityNukeTorex torex : del) torex.setDead(); + } else { + EntityNukeTorex torex = new EntityNukeTorex(world); + torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); + torex.setScale((float) BobMathUtil.squirt( 1.5 ) * 1.5F); + world.spawnEntityInWorld(torex); + TrackerUtil.setTrackingRange(world, torex, 1000); + } /*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker(); IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 58671762f..640c35e93 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -6,6 +6,7 @@ import org.lwjgl.input.Mouse; import com.hbm.config.GeneralConfig; import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.handler.ArmorModHandler; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; @@ -580,6 +581,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu if(hasInfinity(stack, config)) return; if(isTrenchMaster(player) && player.getRNG().nextInt(3) == 0) return; + if(hasAoS(player) && player.getRNG().nextInt(3) == 0) return; if(config.reloadType != GunConfiguration.RELOAD_NONE) { setMag(stack, getMag(stack) - 1); @@ -831,4 +833,13 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu public static boolean isTrenchMaster(EntityPlayer player) { return player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() == ModItems.trenchmaster_plate && ArmorFSB.hasFSBArmor(player); } + + public static boolean hasAoS(EntityPlayer player) { + if(player.inventory.armorInventory[3] != null) { + ItemStack[] mods = ArmorModHandler.pryMods(player.inventory.armorInventory[3]); + ItemStack helmet = mods[ArmorModHandler.helmet_only]; + return helmet != null && helmet.getItem() == ModItems.card_aos; + } + return false; + } } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index df5d5a653..49b97021c 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4845)"; + public static final String VERSION = "1.0.27 BETA (4851)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java index 10094d1ad..809f403f4 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderTorex.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderTorex.java @@ -77,7 +77,10 @@ public class RenderTorex extends Render { for(Cloudlet cloudlet : cloudlets) { Vec3 vec = cloudlet.getInterpPos(interp); - tessellateCloudlet(tess, vec.xCoord - cloud.posX, vec.yCoord - cloud.posY, vec.zCoord - cloud.posZ, cloudlet, interp); + double x = vec.xCoord - cloud.posX; + double y = vec.yCoord - cloud.posY; + double z = vec.zCoord - cloud.posZ; + tessellateCloudlet(tess, x, y, z, cloudlet, interp); } tess.draw(); @@ -114,7 +117,7 @@ public class RenderTorex extends Render { float x = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); float y = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); float z = (float) (rand.nextGaussian() * 0.5F * cloud.rollerSize); - tessellateFlash(tess, x, y + cloud.coreHeight, z, (float) (10 * cloud.rollerSize), alpha, interp); + tessellateFlash(tess, x, y + cloud.coreHeight, z, (float) (25 * cloud.rollerSize), alpha, interp); } tess.draw(); diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index c0fcadc02..584f23d2c 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -870,6 +870,7 @@ public abstract class DoorDecl { @Override public String getCloseSoundStart() { return null; }; @Override public String getCloseSoundEnd() { return "hbm:door.wgh_big_stop"; }; @Override public float getSoundVolume() { return 2; } + @Override public boolean remoteControllable() { return true; } @Override @SideOnly(Side.CLIENT) @@ -1012,6 +1013,10 @@ public abstract class DoorDecl { return 0; } + public boolean remoteControllable() { + return false; + } + public float getDoorRangeOpenTime(int ticks, int idx) { return getNormTime(ticks); } diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 68e49db3f..526b9ce5c 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -175,6 +175,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn public boolean tryToggle(EntityPlayer player){ + if(this.isLocked() && player == null) return false; + if(state == 0 && redstonePower > 0){ //Redstone "power locks" doors, just like minecraft iron doors return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java index 7e32bc7b7..5e65220a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java @@ -68,6 +68,7 @@ public abstract class TileEntityLockableBase extends TileEntity { if(!isLocked) { return true; } else { + if(player == null) return false; ItemStack stack = player.getHeldItem(); if(stack != null && stack.getItem() instanceof ItemKey && diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index a3c117d78..80f97bbc0 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1413,6 +1413,8 @@ item.cape_nostalgia.name=DrNostalgias Cape item.cape_radiation.name=Cape (Radioaktiv) item.cape_schrabidium.name=Cape (Schrabidisch) item.cape_vertice.name=Lord Vertices Cape +item.card_aos.name=Pik-Ass +item.card_qos.name=Pik-Königin item.cart.crate.name=Stahlkistenlore item.cart.destroyer.name=Schuttzerstörende Lore item.cart.empty.name=Lore diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 5c5bf6d10..7572149a1 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2109,6 +2109,8 @@ item.cape_nostalgia.name=DrNostalgia's Cape item.cape_radiation.name=Cape (Radiation) item.cape_schrabidium.name=Cape (Schrabidic) item.cape_vertice.name=Lord Vertice's Cape +item.card_aos.name=Ace of Spades +item.card_qos.name=Queen of Spades item.cart.crate.name=Crate Cart item.cart.destroyer.name=Scrap Destroying Cart item.cart.empty.name=Minecart diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png b/src/main/resources/assets/hbm/textures/blocks/rad_lava_flowing.png index be3c5aa62943dc5a63024a62e8c0b1b4b120b99a..022cf119b66b108489fe1b8c63b99d7870bbcc8f 100644 GIT binary patch literal 9055 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 F{vQQew~_z= literal 10650 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 SZ2)0Q45+-CT&0X@;Qs;*0z|z4 diff --git a/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png b/src/main/resources/assets/hbm/textures/blocks/rad_lava_still.png index 4784bb63244a3d7efebe69715df8e5f37081b0f2..41cb6cd137444d6ab4a299a23d69db0c00d15730 100644 GIT binary patch literal 8678 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 Ar2qf` diff --git a/src/main/resources/assets/hbm/textures/items/card_aos.png b/src/main/resources/assets/hbm/textures/items/card_aos.png new file mode 100644 index 0000000000000000000000000000000000000000..ac561fc531107030a4c40444af03d2ea7d5636be GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u0R?H{{R2qeE0k%Ad9gi z$S;_|;n|HeAjiqm#WAEJF4=)iiHC=$XC{zH+AJd>u{q2)K_FUcYl~ubYKWTivr8+c w@&sK@^G!^M-YTTAJBN#z*?AeWi#QVlgIY76GS`3KZy;MdUHx3vIVCg!0LY0dga7~l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/card_qos.png b/src/main/resources/assets/hbm/textures/items/card_qos.png new file mode 100644 index 0000000000000000000000000000000000000000..bb254cd8b2a02b8b183dfcb6e146bdf747aeed4e GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW1=2vE$WZ^Ef#LrahX4Qn z>-5(r0)-e$g8YIR9G=}s19JR4T^vIy;&RU(iy%l{nm+(#7D;dnK T>GLUOD#&V2S3j3^P6 Date: Mon, 22 Jan 2024 14:43:00 +0100 Subject: [PATCH 3/4] muffler 2: the remufflering --- changelog | 54 ++---------------- src/main/java/com/hbm/blocks/ModBlocks.java | 7 --- .../com/hbm/blocks/generic/BlockMush.java | 1 - .../hbm/blocks/generic/BlockOreBasalt.java | 5 ++ src/main/java/com/hbm/items/ModItems.java | 9 ++- .../com/hbm/items/machine/ItemMuffler.java | 31 ++++++++++ .../java/com/hbm/main/CraftingManager.java | 4 +- src/main/java/com/hbm/main/MainRegistry.java | 1 + .../hbm/tileentity/TileEntityLoadedBase.java | 18 ++++++ .../hbm/tileentity/TileEntityMachineBase.java | 36 +++++------- .../bomb/TileEntityNukeBalefire.java | 2 +- .../tileentity/machine/TileEntityAshpit.java | 1 + .../machine/TileEntityConveyorPress.java | 3 +- .../tileentity/machine/TileEntityCore.java | 3 +- .../machine/TileEntityCoreEmitter.java | 1 + .../machine/TileEntityCoreInjector.java | 3 +- .../machine/TileEntityCoreReceiver.java | 1 + .../machine/TileEntityCoreStabilizer.java | 1 + .../machine/TileEntityCrucible.java | 1 + .../machine/TileEntityCustomMachine.java | 2 + .../machine/TileEntityDeuteriumExtractor.java | 2 + .../machine/TileEntityDiFurnaceRTG.java | 2 + .../machine/TileEntityElectrolyser.java | 2 + .../hbm/tileentity/machine/TileEntityFEL.java | 3 + .../machine/TileEntityFireboxBase.java | 4 +- .../machine/TileEntityFurnaceCombination.java | 2 + .../machine/TileEntityFurnaceIron.java | 4 +- .../machine/TileEntityFurnaceSteel.java | 2 + .../tileentity/machine/TileEntityHadron.java | 2 + .../machine/TileEntityHeatBoiler.java | 5 +- .../TileEntityHeatBoilerIndustrial.java | 5 +- .../machine/TileEntityHeaterElectric.java | 5 +- .../machine/TileEntityHeaterOilburner.java | 2 + .../tileentity/machine/TileEntityITER.java | 2 + .../machine/TileEntityMachineArcWelder.java | 2 + .../machine/TileEntityMachineAssembler.java | 16 +----- .../machine/TileEntityMachineAssemfac.java | 2 + .../machine/TileEntityMachineAutocrafter.java | 2 + .../machine/TileEntityMachineCentrifuge.java | 5 +- .../machine/TileEntityMachineChemfac.java | 2 + .../machine/TileEntityMachineChemplant.java | 4 +- .../TileEntityMachineCombustionEngine.java | 2 + .../machine/TileEntityMachineCompressor.java | 4 +- .../TileEntityMachineCrystallizer.java | 1 + .../machine/TileEntityMachineCyclotron.java | 2 + .../machine/TileEntityMachineDiesel.java | 3 +- .../machine/TileEntityMachineEPress.java | 4 +- .../TileEntityMachineElectricFurnace.java | 2 + .../machine/TileEntityMachineExcavator.java | 2 + .../TileEntityMachineExposureChamber.java | 1 - .../machine/TileEntityMachineFunnel.java | 2 + .../machine/TileEntityMachineGasCent.java | 2 + .../machine/TileEntityMachineIGenerator.java | 2 + .../TileEntityMachineLargeTurbine.java | 2 + .../machine/TileEntityMachineMiningLaser.java | 1 + .../machine/TileEntityMachineMixer.java | 2 + .../TileEntityMachinePlasmaHeater.java | 2 + .../machine/TileEntityMachinePress.java | 4 +- .../machine/TileEntityMachineRadGen.java | 2 + .../machine/TileEntityMachineRadarNT.java | 5 +- .../machine/TileEntityMachineRadiolysis.java | 2 + .../TileEntityMachineReactorBreeding.java | 2 + ...eEntityMachineSchrabidiumTransmutator.java | 2 + .../TileEntityMachineSeleniumEngine.java | 2 +- .../machine/TileEntityMachineShredder.java | 2 +- .../machine/TileEntityMachineTurbineGas.java | 7 ++- .../machine/TileEntityMachineTurbofan.java | 4 +- .../machine/TileEntityMachineWoodBurner.java | 2 + .../machine/TileEntityMicrowave.java | 2 + .../machine/TileEntityPWRController.java | 5 +- .../machine/TileEntityReactorControl.java | 2 + .../machine/TileEntityReactorResearch.java | 2 + .../machine/TileEntityReactorZirnox.java | 2 + .../tileentity/machine/TileEntitySILEX.java | 1 + .../machine/TileEntitySoyuzLauncher.java | 2 + .../machine/TileEntitySteamEngine.java | 2 +- .../tileentity/machine/TileEntityTesla.java | 1 + .../tileentity/machine/TileEntityWatz.java | 2 + .../TileEntityMachineCatalyticReformer.java | 2 + .../machine/oil/TileEntityMachineCoker.java | 2 + .../oil/TileEntityMachineGasFlare.java | 6 +- .../oil/TileEntityMachineLiquefactor.java | 2 + .../oil/TileEntityMachinePumpjack.java | 4 +- .../oil/TileEntityMachineRefinery.java | 5 +- .../oil/TileEntityMachineSolidifier.java | 2 + .../oil/TileEntityMachineVacuumDistill.java | 5 +- .../machine/oil/TileEntityOilDrillBase.java | 2 + .../machine/storage/TileEntityBarrel.java | 2 + .../storage/TileEntityMachineBattery.java | 3 +- .../network/TileEntityCraneBoxer.java | 2 + .../network/TileEntityCraneExtractor.java | 2 + .../network/TileEntityCraneGrabber.java | 2 + .../network/TileEntityCraneRouter.java | 2 + .../network/TileEntityRadioTorchCounter.java | 2 + .../turret/TileEntityTurretBaseNT.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/items/upgrade_muffler.png | Bin 0 -> 438 bytes 98 files changed, 268 insertions(+), 128 deletions(-) create mode 100644 src/main/java/com/hbm/items/machine/ItemMuffler.java create mode 100644 src/main/resources/assets/hbm/textures/items/upgrade_muffler.png diff --git a/changelog b/changelog index df4205477..bc41e7d19 100644 --- a/changelog +++ b/changelog @@ -1,51 +1,9 @@ ## Added -* Silo hatch - * The final missing door from 1.12, remade from scratch - * Comes with a brand-new model that fits perfectly over 3x3 missile launch tubes - * Has a 5x5 frame - * Can be opened and closed with a detonator -* Molysite - * Found in basalt from volcanos - * Can be combination-smelted into iron and chlorine - * Don't make me pull another chlorocalcite -* Rad volcanos - * Created when fallout affects a volcano core - * Uses a new volcanic lava type that produces sellafite, as well as sellafite gem ores -* Radioactive gem - * Created when fallout affects diamond ore, or if radioactive volcanic lava touches diamond ore - * Currenly only used in the radiation powered engine as powerful long-lasting fuel - * When depleted, turns back into a regular diamond - -## Changed -* Simplified door recipes -* Fissure bombs now require tantalium -* Removed the "nerve agent" hazard class because no gas used it -* Fissures now continuously spawn volcanic lava, making basalt renewable without having an entire volcano -* Volcanic lava now turns diamond ore into gem-rich basalt -* Mushroom clouds have been tweaked - * Their scale no longer scales linearly, but rather with a square root function, this prevents tsar clouds from being so huge that the top fails to render due to clipping through the skybox - * Their default scale is now somewhat larger - * The flash scale has been increased - * Their general scaling is now consistent, larger clouds will no longer be chubby with a comically small ring - * Shockwave particles now have momentum, making them sweep over the landscape, as well as being 1.5x denser and slightly larger - * Effect shamelessly stolen from NTM-EE - * Outer condensation rings' spawning is no longer fixed, the time now scales with the size - * The inner condensation ring's spawn time is also now based on scale, which means larger clouds will no longer end up with comically thin rings due to not spawning enough cloudlets +* Muffler + * An upgrade-like item that replaces the old muffler block + * Creates 16 when crafted, however it is not returned when the muffled machine is broken + * Should work with pretty much all machines that use looped sounds, as well as a few other noisy ones (copressors, diesel generators, presses) + * Simply right-click to install, doesn't need to be inserted into an upgrade slot, in fact it works on a few machines that have no GUI at all ## Fixed -* Fixed sellafite emerald ore being oredicted as emerald dust -* Fixed fire replacing petrified wood, creating tons of dead trees with holes in them -* Fixed inconsistent scaling with nuclear missiles -* Fixed BFB rods being called ZFB in hot and depleted variants -* Fixed infinite water barrels voiding water completely after the chemplant's input buffer runs full, infinite barrels can no longer void water in chemplants -* Fixed fallout affecting things on Y:0 like bedrock ores and oil -* Fixed projectiles not being able to pass through open doors -* Fixed material dupe caused by strand caster overflowing -* Fixed rampant mode glyphid scout spawn ignoring light level -* Fixed glyphid diggers' debris attack being able to break concrete -* Fixed `canLaunch` function of custom missile launch pads demanding a designator, preventing launch pads without designator from working even when the position is supplied by a radar -* Fixed none of the helmets or filters protecting against corrosive gasses (blistering agents) like mustard gas -* Fixed fallout layers being able to generate below roofs -* Fixed exposure chamber not saving anything to NBT besides slots -* Fixed crash caused by wearing the full PaA set and then putting on an HEV helmet (why would anyone ever do this??) -* Fixed large doors only being lockable by clicking on the core block +* Fixed basalt ores dropping their items with invalid metadata diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index fec0b2fc0..47a1bbff1 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -632,8 +632,6 @@ public class ModBlocks { public static Block tesla; - public static Block muffler; - public static Block sat_mapper; public static Block sat_scanner; public static Block sat_radar; @@ -2148,8 +2146,6 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); - muffler = new BlockGeneric(Material.cloth).setBlockName("muffler").setHardness(0.8F).setStepSound(Block.soundTypeCloth).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":muffler"); - launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3389,9 +3385,6 @@ public class ModBlocks { GameRegistry.registerBlock(radiorec, radiorec.getUnlocalizedName()); GameRegistry.registerBlock(radiobox, radiobox.getUnlocalizedName()); - //The muffler - GameRegistry.registerBlock(muffler, muffler.getUnlocalizedName()); - //Multiblock Parts GameRegistry.registerBlock(struct_launcher, struct_launcher.getUnlocalizedName()); GameRegistry.registerBlock(struct_scaffold, struct_scaffold.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMush.java b/src/main/java/com/hbm/blocks/generic/BlockMush.java index a13511b5f..d914992ca 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMush.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMush.java @@ -4,7 +4,6 @@ import java.util.HashSet; import java.util.Random; import java.util.Set; -import com.google.common.collect.Sets; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.world.feature.HugeMush; diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java index 51affeaad..d650c0b95 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -47,6 +47,11 @@ public class BlockOreBasalt extends BlockEnumMulti { return super.getItemDropped(meta, rand, fortune); } + @Override + public int damageDropped(int meta) { + return 0; + } + @Override public void onEntityWalking(World world, int x, int y, int z, Entity entity) { int meta = world.getBlockMetadata(x, y, z); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0e09d243c..d2ad9d3b1 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1855,6 +1855,8 @@ public class ModItems { /*public static Item factory_core_titanium; public static Item factory_core_advanced;*/ + public static Item upgrade_muffler; + public static Item upgrade_template; public static Item upgrade_speed_1; public static Item upgrade_speed_2; @@ -3454,8 +3456,8 @@ public class ModItems { defuser_gold = new ItemModDefuser().setUnlocalizedName("defuser_gold").setTextureName(RefStrings.MODID + ":defuser_gold"); ballistic_gauntlet = new ItemModTwoKick().setUnlocalizedName("ballistic_gauntlet").setTextureName(RefStrings.MODID + ":ballistic_gauntlet"); night_vision = new ItemModNightVision().setUnlocalizedName("night_vision").setTextureName(RefStrings.MODID + ":night_vision"); - card_aos = new ItemModCard().setUnlocalizedName(null).setTextureName(RefStrings.MODID + ":card_aos"); - card_qos = new ItemModCard().setUnlocalizedName(null).setTextureName(RefStrings.MODID + ":card_qos"); + card_aos = new ItemModCard().setUnlocalizedName("card_aos").setTextureName(RefStrings.MODID + ":card_aos"); + card_qos = new ItemModCard().setUnlocalizedName("card_qos").setTextureName(RefStrings.MODID + ":card_qos"); cap_nuka = new Item().setUnlocalizedName("cap_nuka").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_nuka"); cap_quantum = new Item().setUnlocalizedName("cap_quantum").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_quantum"); @@ -4488,6 +4490,8 @@ public class ModItems { fusion_shield_chlorophyte = new ItemFusionShield(60 * 60 * 60 * 15, 9000).setUnlocalizedName("fusion_shield_chlorophyte").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_chlorophyte"); fusion_shield_vaporwave = new ItemFusionShield(60 * 60 * 60 * 10, 1916169).setUnlocalizedName("fusion_shield_vaporwave").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_shield_vaporwave"); + upgrade_muffler = new ItemMuffler().setUnlocalizedName("upgrade_muffler").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":upgrade_muffler"); + upgrade_template = new ItemCustomLore().setUnlocalizedName("upgrade_template").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":upgrade_template"); upgrade_speed_1 = new ItemMachineUpgrade(UpgradeType.SPEED, 1).setUnlocalizedName("upgrade_speed_1").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_speed_1"); upgrade_speed_2 = new ItemMachineUpgrade(UpgradeType.SPEED, 2).setUnlocalizedName("upgrade_speed_2").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":upgrade_speed_2"); @@ -6517,6 +6521,7 @@ public class ModItems { GameRegistry.registerItem(scraps, scraps.getUnlocalizedName()); //Machine Upgrades + GameRegistry.registerItem(upgrade_muffler, upgrade_muffler.getUnlocalizedName()); GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName()); GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName()); GameRegistry.registerItem(upgrade_speed_2, upgrade_speed_2.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemMuffler.java b/src/main/java/com/hbm/items/machine/ItemMuffler.java new file mode 100644 index 000000000..915fd65d7 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemMuffler.java @@ -0,0 +1,31 @@ +package com.hbm.items.machine; + +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatExternal; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class ItemMuffler extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) { + TileEntity te = CompatExternal.getCoreFromPos(world, x, y, z); + + if(te != null && te instanceof TileEntityMachineBase) { + TileEntityMachineBase tile = (TileEntityMachineBase) te; + if(!tile.muffled) { + tile.muffled = true; + world.playSoundAtEntity(player, "hbm:item.upgradePlug", 1.0F, 1.0F); + stack.stackSize--; + tile.markDirty(); + return true; + } + } + + return false; + } +} diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index b22fa676f..73d321015 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -329,7 +329,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() }); - addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); + addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_advanced_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); @@ -988,7 +988,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.field_disturber), new Object[] { "ICI", "CAC", "ICI", 'I', STAR.ingot(), 'C', KEY_CIRCUIT_BISMUTH, 'A', ModItems.gem_alexandrite }); addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); - addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModBlocks.muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); + addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModItems.upgrade_muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', Fluids.LUBRICANT.getDict(1000) }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 5809ea4ee..6ed8c16ab 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1210,6 +1210,7 @@ public class MainRegistry { ignoreMappings.add("hbm:tile.reactor_conductor"); ignoreMappings.add("hbm:tile.reactor_computer"); ignoreMappings.add("hbm:tile.ff"); + ignoreMappings.add("hbm:tile.muffler"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index f2ab912aa..cb529b2d9 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -3,11 +3,13 @@ package com.hbm.tileentity; import com.hbm.sound.AudioWrapper; import api.hbm.energy.ILoadedTile; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { public boolean isLoaded = true; + public boolean muffled = false; @Override public boolean isLoaded() { @@ -28,4 +30,20 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { audio.startSound(); return audio; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.muffled = nbt.getBoolean("muffled"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("muffled", muffled); + } + + public float getVolume(float baseVolume) { + return muffled ? baseVolume * 0.1F : baseVolume; + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index f826dd3e3..a76902ab9 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -1,6 +1,5 @@ package com.hbm.tileentity; -import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.BufPacket; import com.hbm.packet.NBTPacket; @@ -157,17 +156,28 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Deprecated public void processGauge(int val, int id) { } @Deprecated public void networkPack(NBTTagCompound nbt, int range) { + nbt.setBoolean("muffled", muffled); if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Deprecated public void networkUnpack(NBTTagCompound nbt) { } + + @Deprecated + public void networkUnpack(NBTTagCompound nbt) { + this.muffled = nbt.getBoolean("muffled"); + } /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ public void networkPackNT(int range) { if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); } - @Override public void serialize(ByteBuf buf) { } - @Override public void deserialize(ByteBuf buf) { } + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(muffled); + } + + @Override public void deserialize(ByteBuf buf) { + this.muffled = buf.readBoolean(); + } @Deprecated public void handleButtonPacket(int value, int meta) { } @@ -206,24 +216,6 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme nbt.setTag("items", list); } - public int countMufflers() { - - int count = 0; - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - if(worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ) == ModBlocks.muffler) - count++; - - return count; - } - - public float getVolume(int toSilence) { - - float volume = 1 - (countMufflers() / (float)toSilence); - - return Math.max(volume, 0); - } - public void updateRedstoneConnection(DirPos pos) { int x = pos.getX(); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index 4044d26df..829898ae3 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -64,7 +64,7 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU } public void networkUnpack(NBTTagCompound data) { - + super.networkUnpack(data); timer = data.getInteger("timer"); started = data.getBoolean("started"); loaded = data.getBoolean("loaded"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java index cd78eb206..183c48ad6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -109,6 +109,7 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.playersUsing = nbt.getInteger("playersUsing"); this.isFull = nbt.getBoolean("isFull"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java index c4f7eaf9f..982b55616 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java @@ -163,7 +163,7 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE } } - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); if(slots[0].getMaxDamage() != 0) { slots[0].setItemDamage(slots[0].getItemDamage() + 1); @@ -180,6 +180,7 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.power = nbt.getLong("power"); this.syncPress = nbt.getInteger("press"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 24817d855..3b12f505b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -156,8 +156,9 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide } } - + public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); tanks[0].setTankType(Fluids.fromID(data.getInteger("tank0"))); tanks[1].setTankType(Fluids.fromID(data.getInteger("tank1"))); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 92a83d81b..7346c6168 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -177,6 +177,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); power = data.getLong("power"); watts = data.getInteger("watts"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index b0fb0c484..e5862e2ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -110,8 +110,9 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl this.networkPack(data, 250); } } - + public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); beam = data.getInteger("beam"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index c3fbf28d6..565c9a6ee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -78,6 +78,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); joules = data.getLong("joules"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 6e6413032..437d9cfa6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -105,6 +105,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); power = data.getLong("power"); watts = data.getInteger("watts"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index e486b7a60..7894a916c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -235,6 +235,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.recipeStack.clear(); this.wasteStack.clear(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java index 9c906623d..ca7ce6f0e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -364,6 +364,8 @@ public class TileEntityCustomMachine extends TileEntityMachineBase implements IF @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.machineType = nbt.getString("type"); if(this.config == null) this.init(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index b902dfd3e..268ca8277 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -61,6 +61,8 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); tanks[0].readFromNBT(data, "water"); tanks[1].readFromNBT(data, "heavyWater"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index 7c7891802..224beb56d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -79,6 +79,8 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + progress = nbt.getShort("progress"); processSpeed = nbt.getShort("speed"); byte[] modes = nbt.getByteArray("modes"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 04b147c79..c999c9a5a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -242,6 +242,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progressFluid = nbt.getInteger("progressFluid"); this.progressOre = nbt.getInteger("progressOre"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index f1b1c1a28..5619478c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -202,6 +202,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, audio = rebootAudio(audio); } + audio.updateVolume(getVolume(2F)); audio.updatePitch((audioDuration - 10) / 100F + 0.5F); } else { @@ -226,6 +227,8 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyUser, @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.mode = EnumWavelengths.valueOf(nbt.getString("mode")); this.isOn = nbt.getBoolean("isOn"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index 5a52abb70..c52d0270d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -109,7 +109,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i } this.wasOn = true; - if(worldObj.rand.nextInt(15) == 0) { + if(worldObj.rand.nextInt(15) == 0 && !this.muffled) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "fire.fire", 1.0F, 0.5F + worldObj.rand.nextFloat() * 0.5F); } } @@ -184,6 +184,8 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); this.burnTime = nbt.getInteger("burnTime"); this.burnHeat = nbt.getInteger("burnHeat"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 4b6c42214..81fb4c1c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -168,6 +168,8 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.wasOn = nbt.getBoolean("wasOn"); this.heat = nbt.getInteger("heat"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index 9a00a9bba..b30350152 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -93,7 +93,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI this.progress++; this.burnTime--; - if(this.progress % 15 == 0) { + if(this.progress % 15 == 0 && !this.muffled) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "fire.fire", 1.0F, 0.5F + worldObj.rand.nextFloat() * 0.5F); } @@ -142,6 +142,8 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.maxBurnTime = nbt.getInteger("maxBurnTime"); this.burnTime = nbt.getInteger("burnTime"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index 77d212d9e..4d6d7cbab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -123,6 +123,8 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.progress = nbt.getIntArray("progress"); this.bonus = nbt.getIntArray("bonus"); this.heat = nbt.getInteger("heat"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index fed73cb60..173feb6de 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -193,6 +193,8 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.isOn = data.getBoolean("isOn"); this.power = data.getLong("power"); this.analysisOnly = data.getBoolean("analysis"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index 39b72b06c..312210f98 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -94,6 +94,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid data.setBoolean("exploded", this.hasExploded); data.setBoolean("isOn", this.isOn); + data.setBoolean("muffled", this.muffled); INBTPacketReceiver.networkPack(this, data, 25); } else { @@ -109,7 +110,8 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -150,6 +152,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid @Override public void networkUnpack(NBTTagCompound nbt) { this.hasExploded = nbt.getBoolean("exploded"); + this.muffled = nbt.getBoolean("muffled"); this.heat = nbt.getInteger("heat"); this.tanks[0].readFromNBT(nbt, "0"); this.tanks[1].readFromNBT(nbt, "1"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java index fa447da65..fe337615f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java @@ -75,6 +75,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme } data.setBoolean("isOn", this.isOn); + data.setBoolean("muffled", this.muffled); INBTPacketReceiver.networkPack(this, data, 25); } else { @@ -90,7 +91,8 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -134,6 +136,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme this.tanks[0].readFromNBT(nbt, "0"); this.tanks[1].readFromNBT(nbt, "1"); this.isOn = nbt.getBoolean("isOn"); + this.muffled = nbt.getBoolean("muffled"); } protected void tryPullHeat() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 35569da50..11e57b625 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -49,6 +49,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH data.setByte("s", (byte) this.setting); data.setInteger("h", this.heatEnergy); data.setBoolean("o", isOn); + data.setBoolean("muffled", muffled); INBTPacketReceiver.networkPack(this, data, 25); } else { @@ -60,7 +61,8 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -103,6 +105,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH this.setting = nbt.getByte("s"); this.heatEnergy = nbt.getInteger("h"); this.isOn = nbt.getBoolean("o"); + this.muffled = nbt.getBoolean("muffled"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 964ef74fd..254d8d027 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -108,6 +108,8 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + tank.readFromNBT(nbt, "tank"); isOn = nbt.getBoolean("isOn"); heatEnergy = nbt.getInteger("h"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index f7a078115..59f759c71 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -356,6 +356,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.isOn = data.getBoolean("isOn"); this.power = data.getLong("power"); this.blanket = data.getInteger("blanket"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 6a4d19226..f42fd7b9d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -197,6 +197,8 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.maxPower = nbt.getLong("maxPower"); this.consumption = nbt.getLong("consumption"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index b549a6335..d0bd26ea0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -120,7 +120,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i this.networkPack(data, 150); } else { - float volume = this.getVolume(2); + float volume = this.getVolume(2F); if(isProgressing && volume > 0) { @@ -145,6 +145,8 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getIntArray("progress"); this.maxProgress = nbt.getIntArray("maxProgress"); @@ -247,18 +249,6 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i public double getMaxRenderDistanceSquared() { return 65536.0D; } - - public int countMufflers() { - - int count = 0; - - for(int x = xCoord - 1; x <= xCoord + 1; x++) - for(int z = zCoord - 1; z <= zCoord + 1; z++) - if(worldObj.getBlock(x, yCoord - 1, z) == ModBlocks.muffler) - count++; - - return count; - } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 009bc53e7..a44f0e996 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -117,6 +117,8 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getIntArray("progress"); this.maxProgress = nbt.getIntArray("maxProgress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index b93815fdb..f3abfb2ba 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -207,6 +207,8 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); modes = new String[9]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 835324307..73e60b196 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -218,7 +218,8 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.updatePitch((audioDuration - 10) / 100F + 0.5F); } else { @@ -233,6 +234,8 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 7f8a84d03..4fbfdfab9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -159,6 +159,8 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getIntArray("progress"); this.maxProgress = nbt.getIntArray("maxProgress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 1c7fe4c47..00318242c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -183,7 +183,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0); } - float volume = 1;//this.getVolume(2); + float volume = this.getVolume(1F); if(isProgressing && volume > 0) { @@ -213,6 +213,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); this.maxProgress = nbt.getInteger("maxProgress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 38fce4e2a..65c10d86d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -144,6 +144,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin } audio.keepAlive(); + audio.updateVolume(this.getVolume(1F)); } else { @@ -203,6 +204,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.playersUsing = nbt.getInteger("playersUsing"); this.setting = nbt.getInteger("setting"); this.power = nbt.getLong("power"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index 9a05a00b5..0d9c557d2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -146,7 +146,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement if(this.pistonDir) { this.piston -= randSpeed; if(this.piston <= 0) { - MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", 0.5F, 0.75F); + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", this.getVolume(0.5F), 0.75F); this.pistonDir = !this.pistonDir; } } else { @@ -165,6 +165,8 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement private float randSpeed = 0.1F; public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); this.powerRequirement = nbt.getInteger("powerRequirement"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index bac1b5928..5e6d51bbe 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -155,6 +155,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); this.power = data.getLong("power"); this.progress = data.getShort("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index f5a489a8c..618ce4f80 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -201,6 +201,8 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.isOn = data.getBoolean("isOn"); this.power = data.getLong("power"); this.progress = data.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index f1c7097e7..be79c3f6e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -162,6 +162,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); power = data.getInteger("power"); powerCap = data.getInteger("powerCap"); @@ -197,7 +198,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen if(!shutUp) { if (soundCycle == 0) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 0.75F * this.getVolume(3), 0.5F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", this.getVolume(0.75F), 0.5F); } soundCycle++; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 7e6b2c4cb..d75431102 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -86,7 +86,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE this.press += stampSpeed; if(this.press >= this.maxPress) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); if(slots[3] == null) { slots[3] = output.copy(); @@ -142,6 +142,8 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.syncPress = nbt.getInteger("press"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 8626dcf6c..a790d6265 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -236,6 +236,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.maxProgress = nbt.getInteger("MaxProgress"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 04064d367..321ea65dc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -214,6 +214,8 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.enableDrill = nbt.getBoolean("d"); this.enableCrusher = nbt.getBoolean("c"); this.enableWalling = nbt.getBoolean("w"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index 550deda1a..160a35b0b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -26,7 +26,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java index 3a1933554..3b7a8f6fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -69,11 +69,13 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG @Override public void serialize(ByteBuf buf) { + super.serialize(buf); buf.writeInt(this.mode); } @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); this.mode = buf.readInt(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index eb993e4f7..dbfc389bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -167,6 +167,8 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 7cf0c451f..6d68a4c76 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -262,6 +262,8 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.spin = nbt.getInteger("spin"); this.burn = nbt.getIntArray("burn"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index acdc7ee38..1d8eefaa0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -149,6 +149,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); this.shouldTurn = data.getBoolean("operational"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index 89bfd1028..fd4e39243 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -202,6 +202,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); this.power = data.getLong("power"); this.lastTargetX = data.getInteger("lastX"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index ffd1deccb..d4d8c40cc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -140,6 +140,8 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.processTime = nbt.getInteger("processTime"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 2ddf52c34..583aa45ee 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -151,6 +151,8 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index c049d696e..58a31e5bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -91,7 +91,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU this.press += stampSpeed; if(this.press >= this.maxPress) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", 1.5F, 1.0F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); if(slots[3] == null) { slots[3] = output.copy(); @@ -161,6 +161,8 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.speed = nbt.getInteger("speed"); this.burnTime = nbt.getInteger("burnTime"); this.syncPress = nbt.getInteger("press"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 776289454..e44e62e8a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -118,6 +118,8 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.progress = nbt.getIntArray("progress"); this.maxProgress = nbt.getIntArray("maxProgress"); this.production = nbt.getIntArray("production"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index b29d37ea4..f43773020 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -7,7 +7,6 @@ import java.util.function.Function; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmLivingProps; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerMachineRadarNT; @@ -155,7 +154,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } lastPower = getRedPower(); - if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) != ModBlocks.muffler) { + if(!this.muffled) { pingTimer++; @@ -237,6 +236,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override public void serialize(ByteBuf buf) { + super.serialize(buf); buf.writeLong(this.power); buf.writeBoolean(this.scanMissiles); buf.writeBoolean(this.scanShells); @@ -266,6 +266,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); this.power = buf.readLong(); this.scanMissiles = buf.readBoolean(); this.scanShells = buf.readBoolean(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 1cbe50ab4..1e63bd80f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -105,6 +105,8 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.power = data.getLong("power"); this.heat = data.getInteger("heat"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index 3a8cec7ca..42ac92f71 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -72,6 +72,8 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + flux = data.getInteger("flux"); progress = data.getFloat("progress"); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index bed920b68..83b516c43 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -183,6 +183,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } + audio.updateVolume(getVolume(1F)); } else { if(audio != null) { @@ -226,6 +227,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); this.power = data.getLong("power"); this.process = data.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java index c55778131..d366b287f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -305,7 +305,7 @@ public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implem if(!shutUp) { if (soundCycle == 0) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.0F, 0.5F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", this.getVolume(1.0F), 0.5F); } soundCycle++; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index ee1e8fb32..ab6c81d37 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -249,7 +249,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I flag1 = true; } if(soundCycle == 0) - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", 1.0F, 0.75F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", getVolume(1.0F), 0.75F); soundCycle++; if(soundCycle >= 50) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 21bb03777..9a92c3db8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -176,17 +176,17 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement if(audio == null) { //if there is no sound playing, start it - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 2.0F); audio.startSound(); } else if(!audio.isPlaying()) { audio.stopSound(); - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 2.0F); audio.startSound(); } audio.updatePitch((float) (0.55 + 0.1 * rpm / 10)); //dynamic pitch update based on rpm - audio.updateVolume(100F); //yeah i need this + audio.updateVolume(getVolume(2F)); //yeah i need this } else { @@ -378,6 +378,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.power = nbt.getLong("power"); this.rpm = nbt.getInteger("rpm"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 4c7e068b3..247983bda 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -318,7 +318,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } audio.keepAlive(); - audio.updateVolume(momentum); + audio.updateVolume(getVolume(momentum)); audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); } else { @@ -382,6 +382,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.afterburner = nbt.getByte("after"); this.wasOn = nbt.getBoolean("wasOn"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 42510532f..d4a1f7700 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -150,6 +150,8 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.burnTime = nbt.getInteger("burnTime"); this.maxBurnTime = nbt.getInteger("maxBurnTime"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index 5253e4aec..baf799651 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -81,6 +81,8 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + power = data.getLong("power"); time = data.getInteger("time"); speed = data.getInteger("speed"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 03e34f0fe..974c78122 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -292,7 +292,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -376,6 +377,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + tanks[0].readFromNBT(nbt, "t0"); tanks[1].readFromNBT(nbt, "t1"); rodCount = nbt.getInteger("rodCount"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 63ea4818e..7169ce7f4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -151,6 +151,8 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.heat = data.getInteger("heat"); this.level = data.getDouble("level"); this.flux = data.getInteger("flux"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index 0bc646eee..8e1816775 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -161,6 +161,8 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.heat = data.getInteger("heat"); this.water = data.getByte("water"); this.level = data.getDouble("level"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 43536fedb..2064b13f9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -133,6 +133,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + this.heat = data.getInteger("heat"); this.pressure = data.getInteger("pressure"); this.isOn = data.getBoolean("isOn"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index 454714695..7148b06b1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -101,6 +101,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidAcce } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.currentFill = nbt.getInteger("fill"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 6f85b34fd..01a399e72 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -193,6 +193,8 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + power = data.getLong("power"); mode = data.getByte("mode"); starting = data.getBoolean("starting"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index 2d70dc4c6..3c0f29220 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -109,7 +109,7 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui if(this.rotor >= 360D) { this.rotor -= 360D; - this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 1.0F, 0.5F + (acceleration / 80F)); + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", getVolume(1.0F), 0.5F + (acceleration / 80F)); } data.setLong("power", this.powerBuffer); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index f3c930d3e..664327e1f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -147,6 +147,7 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyUse } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); int s = data.getShort("length"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 32ec41b3e..9168d4387 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -293,6 +293,8 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.heat = nbt.getInteger("heat"); this.isOn = nbt.getBoolean("isOn"); this.isLocked = nbt.getBoolean("lock"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 04e534de5..5ef5ed3c2 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -83,6 +83,8 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "" + i); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java index f2adcb771..8e812e5ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -175,6 +175,8 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.wasOn = nbt.getBoolean("wasOn"); this.heat = nbt.getInteger("heat"); this.progress = nbt.getInteger("progress"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 25d5f4029..c73041b75 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -129,7 +129,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements tank.getTankType().onFluidRelease(this, tank, eject); if(worldObj.getTotalWorldTime() % 7 == 0) - this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "random.fizz", 1.5F, 0.5F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "random.fizz", getVolume(1.5F), 0.5F); } } else { @@ -159,7 +159,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } if(worldObj.getTotalWorldTime() % 3 == 0) - this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", 1.5F, 0.75F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", getVolume(1.5F), 0.75F); if(worldObj.getTotalWorldTime() % 20 == 0) { PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); @@ -234,6 +234,8 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.isOn = nbt.getBoolean("isOn"); this.doesBurn = nbt.getBoolean("doesBurn"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 01b59adc8..2cd37bd61 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -169,6 +169,8 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); this.usage = nbt.getInteger("usage"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java index dd11a3431..9788943a9 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java @@ -123,8 +123,8 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { @Override public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - this.indicator = nbt.getInteger("indicator"); + super.networkUnpack(nbt); + this.speed = nbt.getFloat("speed"); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 27e48d4a1..4ee78cd48 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -231,7 +231,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -271,6 +272,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); this.hasExploded = nbt.getBoolean("exploded"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 1677a5321..1f900c83b 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -172,6 +172,8 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); this.usage = nbt.getInteger("usage"); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 9fc45de36..326608afc 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -98,7 +98,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + + audio.updateVolume(getVolume(1F)); audio.keepAlive(); } else { @@ -138,6 +139,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.isOn = nbt.getBoolean("isOn"); for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 4c785a486..940cb14d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -177,6 +177,8 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.power = nbt.getLong("power"); this.indicator = nbt.getInteger("indicator"); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 49db2fe90..37ea7fbfb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -261,6 +261,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc } public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + mode = data.getShort("mode"); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index c27670d37..f20d2f7fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -322,7 +322,8 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } @Override - public void networkUnpack(NBTTagCompound nbt) { + public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.power = nbt.getLong("power"); this.delta = nbt.getLong("delta"); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java index 2996d102a..a634dcc79 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java @@ -151,6 +151,8 @@ public class TileEntityCraneBoxer extends TileEntityCraneBase implements IGUIPro } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.mode = nbt.getByte("mode"); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index d947f9922..8f08fa356 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -172,6 +172,8 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.isWhitelist = nbt.getBoolean("isWhitelist"); this.matcher.modes = new String[this.matcher.modes.length]; this.matcher.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java index e6dc6b48b..cec453cd8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -137,6 +137,8 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.isWhitelist = nbt.getBoolean("isWhitelist"); this.matcher.modes = new String[this.matcher.modes.length]; this.matcher.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java index 68db57165..603e839e4 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java @@ -57,6 +57,8 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI @Override public void networkUnpack(NBTTagCompound data) { + super.networkUnpack(data); + for(int i = 0; i < patterns.length; i++) { NBTTagCompound compound = data.getCompoundTag("pattern" + i); patterns[i].readFromNBT(compound); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java index 809fec28f..90328882b 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java @@ -75,6 +75,8 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement } public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); + this.polling = nbt.getBoolean("polling"); this.lastCount = nbt.getIntArray("last"); this.matcher.modes = new String[this.matcher.modes.length]; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 53496d00a..4420667ba 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -291,6 +291,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple @Override public void networkUnpack(NBTTagCompound nbt) { + super.networkUnpack(nbt); this.power = nbt.getLong("power"); this.isOn = nbt.getBoolean("isOn"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 80f97bbc0..3a7ac08cf 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3337,6 +3337,7 @@ item.upgrade_fortune_2.name=Glückupgrade Mk.II item.upgrade_fortune_3.name=Glückupgrade Mk.III item.upgrade_gc_speed.name=Gaszentrifugen-Geschwindigkeitsupgrade item.upgrade_health.name=Kraftfeld-Resistenzupgrade +item.upgrade_muffler.name=Schalldämpfer item.upgrade_nullifier.name=Müllvernichter-Upgrade item.upgrade_overdrive_1.name=Overdrive-Upgrade Mk.I item.upgrade_overdrive_2.name=Overdrive-Upgrade Mk.II diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 7572149a1..1ca85dd75 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4261,6 +4261,7 @@ item.upgrade_fortune_2.name=Fortune Upgrade Mk.II item.upgrade_fortune_3.name=Fortune Upgrade Mk.III item.upgrade_gc_speed.name=Gas Centrifuge Overclocking Upgrade item.upgrade_health.name=Emitter Health Upgrade +item.upgrade_muffler.name=Muffler item.upgrade_nullifier.name=Scrap Destroyer Upgrade item.upgrade_overdrive_1.name=Overdrive Upgrade Mk.I item.upgrade_overdrive_2.name=Overdrive Upgrade Mk.II diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_muffler.png b/src/main/resources/assets/hbm/textures/items/upgrade_muffler.png new file mode 100644 index 0000000000000000000000000000000000000000..423195122eec3b39faa1c9f992b73026a64b84a8 GIT binary patch literal 438 zcmV;n0ZIOeP)-9LF&+PYmthN09^|N^k>-Cz=W Date: Mon, 22 Jan 2024 21:05:09 +0100 Subject: [PATCH 4/4] and all that --- changelog | 3 ++- .../com/hbm/inventory/fluid/tank/FluidLoaderFillableItem.java | 2 ++ .../java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java | 1 + .../java/com/hbm/inventory/fluid/tank/FluidLoaderStandard.java | 2 ++ src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java | 2 -- src/main/java/com/hbm/items/armor/ItemModCard.java | 1 + src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java | 2 ++ src/main/java/com/hbm/sound/AudioDynamic.java | 2 +- .../tileentity/machine/TileEntityMachineCombustionEngine.java | 2 +- .../com/hbm/tileentity/machine/TileEntityMachineTurbofan.java | 2 +- 10 files changed, 13 insertions(+), 6 deletions(-) diff --git a/changelog b/changelog index bc41e7d19..f406cefee 100644 --- a/changelog +++ b/changelog @@ -2,8 +2,9 @@ * Muffler * An upgrade-like item that replaces the old muffler block * Creates 16 when crafted, however it is not returned when the muffled machine is broken - * Should work with pretty much all machines that use looped sounds, as well as a few other noisy ones (copressors, diesel generators, presses) + * Should work with pretty much all machines that use looped sounds, as well as a few other noisy ones (compressors, diesel generators, presses) * Simply right-click to install, doesn't need to be inserted into an upgrade slot, in fact it works on a few machines that have no GUI at all ## Fixed * Fixed basalt ores dropping their items with invalid metadata +* Fixed creative infinite fluid tanks not being able to fill fluid gauges at >0PU diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderFillableItem.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderFillableItem.java index 8228afc44..9113bdfff 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderFillableItem.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderFillableItem.java @@ -16,6 +16,8 @@ public class FluidLoaderFillableItem extends FluidLoadingHandler { public boolean fill(ItemStack stack, FluidTank tank) { + if(tank.pressure != 0) return false; + if(stack == null) return false; diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java index 8ceac7946..adc4c49d9 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderInfinite.java @@ -18,6 +18,7 @@ public class FluidLoaderInfinite extends FluidLoadingHandler { ItemInfiniteFluid item = (ItemInfiniteFluid) slots[in].getItem(); + if(!item.allowPressure(tank.pressure)) return false; if(item.getType() != null && tank.type != item.getType()) return false; if(item.getChance() <= 1 || rand.nextInt(item.getChance()) == 0) { diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderStandard.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderStandard.java index d4c784396..c8fcecbb4 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderStandard.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidLoaderStandard.java @@ -10,6 +10,8 @@ public class FluidLoaderStandard extends FluidLoadingHandler { @Override public boolean fillItem(ItemStack[] slots, int in, int out, FluidTank tank) { + if(tank.pressure != 0) return false; + if(slots[in] == null) return true; diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 508f94c01..5f093bc66 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -126,8 +126,6 @@ public class FluidTank { if(slots[in] == null) return false; - if(this.pressure != 0) return false; //for now, canisters can only be loaded from high-pressure tanks, not unloaded - int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { diff --git a/src/main/java/com/hbm/items/armor/ItemModCard.java b/src/main/java/com/hbm/items/armor/ItemModCard.java index aee3e2152..4249d0591 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCard.java +++ b/src/main/java/com/hbm/items/armor/ItemModCard.java @@ -16,6 +16,7 @@ public class ItemModCard extends ItemArmorMod { public ItemModCard() { super(ArmorModHandler.helmet_only, true, false, false, false); + this.setCreativeTab(null); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java b/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java index 011b596b6..2223059ee 100644 --- a/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java +++ b/src/main/java/com/hbm/items/machine/ItemInfiniteFluid.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ModItems; import net.minecraft.item.Item; @@ -23,4 +24,5 @@ public class ItemInfiniteFluid extends Item { public FluidType getType() { return this.type; } public int getAmount() { return this.amount; } public int getChance() { return this.chance; } + public boolean allowPressure(int pressure) { return this == ModItems.fluid_barrel_infinite || pressure == 0; } } diff --git a/src/main/java/com/hbm/sound/AudioDynamic.java b/src/main/java/com/hbm/sound/AudioDynamic.java index 3799b7d05..db13d09b3 100644 --- a/src/main/java/com/hbm/sound/AudioDynamic.java +++ b/src/main/java/com/hbm/sound/AudioDynamic.java @@ -62,7 +62,7 @@ public class AudioDynamic extends MovingSound { } public void setVolume(float volume) { - this.volume = volume; + this.maxVolume = volume; } public void setRange(float range) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 65c10d86d..9cad71b9d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -142,7 +142,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin } else if(!audio.isPlaying()) { audio = rebootAudio(audio); } - + audio.keepAlive(); audio.updateVolume(this.getVolume(1F)); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 247983bda..01c4cc7ce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -318,7 +318,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } audio.keepAlive(); - audio.updateVolume(getVolume(momentum)); + audio.updateVolume(getVolume(momentum / 50F)); audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); } else {