From 092f312c9f2edef055865a6c034220edb8a5d517 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 23 Feb 2022 15:59:52 +0100 Subject: [PATCH] redstone power switches --- src/main/java/com/hbm/blocks/ModBlocks.java | 5 +- .../com/hbm/blocks/bomb/BlockChargeC4.java | 5 +- .../com/hbm/blocks/bomb/BlockTNTBase.java | 1 - .../com/hbm/blocks/network/CableDetector.java | 68 ++++++++++++++++++ .../com/hbm/blocks/network/CableSwitch.java | 2 - src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../machine/TileEntityMachineGasCent.java | 32 ++++----- .../textures/blocks/cable_detector_off.png | Bin 0 -> 412 bytes .../hbm/textures/blocks/cable_detector_on.png | Bin 0 -> 415 bytes 10 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/network/CableDetector.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/cable_detector_off.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/cable_detector_on.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 2117c7119..e7ae1920c 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -707,6 +707,7 @@ public class ModBlocks { public static Block red_pylon_large; public static Block substation; public static Block cable_switch; + public static Block cable_detector; public static Block machine_detector; public static Block rf_cable; public static Block oil_duct_solid; @@ -1813,7 +1814,8 @@ public class ModBlocks { red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation"); - cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_switch_off"); + cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt"); oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); @@ -2906,6 +2908,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName()); GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); + GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); GameRegistry.registerBlock(rf_cable, rf_cable.getUnlocalizedName()); GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java index 915c2594d..300093604 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java @@ -3,6 +3,7 @@ package com.hbm.blocks.bomb; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.world.World; public class BlockChargeC4 extends BlockChargeBase { @@ -24,8 +25,10 @@ public class BlockChargeC4 extends BlockChargeBase { return BombReturnCode.UNDEFINED; } + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + @Override public int getRenderType() { - return BlockChargeDynamite.renderID; + return renderID; } } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java index 4bd824e32..c90df63ce 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java @@ -7,7 +7,6 @@ import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.util.ChatBuilder; import api.hbm.block.IToolable; -import api.hbm.block.IToolable.ToolType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/network/CableDetector.java b/src/main/java/com/hbm/blocks/network/CableDetector.java new file mode 100644 index 000000000..7776212ac --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/CableDetector.java @@ -0,0 +1,68 @@ +package com.hbm.blocks.network; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCableSwitch; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class CableDetector extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon iconOn; + + public CableDetector(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":cable_detector_on"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cable_detector_off"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 1 ? iconOn : blockIcon; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityCableSwitch(); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + boolean on = world.isBlockIndirectlyGettingPowered(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + boolean update = false; + + if(on && meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); + update = true; + } + + if(!on && meta == 1) { + world.setBlockMetadataWithNotify(x, y, z, 0, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); + update = true; + } + + if(update) { + TileEntityCableSwitch te = (TileEntityCableSwitch) world.getTileEntity(x, y, z); + te.updateState(); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/CableSwitch.java b/src/main/java/com/hbm/blocks/network/CableSwitch.java index 538079e9a..b419ec28a 100644 --- a/src/main/java/com/hbm/blocks/network/CableSwitch.java +++ b/src/main/java/com/hbm/blocks/network/CableSwitch.java @@ -1,7 +1,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; -import com.hbm.tileentity.network.TileEntityCableBaseNT; import com.hbm.tileentity.network.TileEntityCableSwitch; import cpw.mods.fml.relauncher.Side; @@ -65,5 +64,4 @@ public class CableSwitch extends BlockContainer { return false; } } - } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 554b38a1a..490cb0462 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -643,6 +643,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); + RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); RenderingRegistry.registerBlockHandler(new RenderRBMKRod()); RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 992ad0208..cd3adf9cf 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1165,6 +1165,7 @@ public class ResourceManager { public static final IModelCustom cable_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/cable_neo.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); + public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); //RBMK DEBRIS public static final IModelCustom deb_blank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/projectiles/deb_blank.obj")); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index 4ad474b47..f56ef6c02 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -1,9 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; + import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.Spaghetti; +import com.hbm.interfaces.Untested; import com.hbm.inventory.FluidTank; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -43,6 +46,15 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I private static final int[] slots_bottom = new int[] {2, 3, 4}; private static final int[] slots_side = new int[] { }; + @Untested + private static HashMap fluidConversions = new HashMap(); + + static { + fluidConversions.put(Fluids.UF6, PseudoFluidType.NUF6); + fluidConversions.put(Fluids.PUF6, PseudoFluidType.PF6); + fluidConversions.put(Fluids.WATZ, PseudoFluidType.MUD); + } + public TileEntityMachineGasCent() { super(6); tank = new FluidTank(Fluids.UF6, 2000, 0); @@ -319,23 +331,11 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I if(tank.getTankType() != newType) { - boolean success = false; + PseudoFluidType pseudo = fluidConversions.get(newType); - if(newType == Fluids.UF6) { - inputTank.setTankType(PseudoFluidType.NUF6); - outputTank.setTankType(PseudoFluidType.NUF6.getOutputFluid()); - success = true; - } else if(newType == Fluids.PUF6) { - inputTank.setTankType(PseudoFluidType.PF6); - outputTank.setTankType(PseudoFluidType.PF6.getOutputFluid()); - success = true; - } else if(newType == Fluids.WATZ) { - inputTank.setTankType(PseudoFluidType.MUD); - outputTank.setTankType(PseudoFluidType.MUD.getOutputFluid()); - success = true; - } - - if(success) { + if(pseudo != null) { + inputTank.setTankType(pseudo); + outputTank.setTankType(pseudo.getOutputFluid()); tank.setTankType(newType); tank.setFill(0); } diff --git a/src/main/resources/assets/hbm/textures/blocks/cable_detector_off.png b/src/main/resources/assets/hbm/textures/blocks/cable_detector_off.png new file mode 100644 index 0000000000000000000000000000000000000000..75a65369bacc225d1de36d05010176395bd99777 GIT binary patch literal 412 zcmV;N0b~A&P)uX!sZV$9=S3;g( zFi815=XklVlarYtnJpi%BJZ-Jx?vu?Bn7COCLQemc|7=Oy$0xRVc*yNQB_Xe=bYzYabU5H4M?PPz!TzBe;gQuQjI=j7A^=9}nfg z?)@n|bBr+=MTGGfrqerOjO=!Yfx^70>Iz(@JDkryq?gMu0gy^8^1;dLYg^cE543Gp zLY`nSNclbIc)zcclbIozEg!HV@3Lcc!#sFN3J{tm9qj*kJh)k}0lHh*_jSKi71v5~ zm3}T}i7f5HGK9f0c_tqiSGWox1p~-pv9NsG^0m%;^ZUB}{SBh5%hO)nnbH6N002ov JPDHLkV1iX4vEcv! literal 0 HcmV?d00001