diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 815916cde..4e6c5f66a 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2174,7 +2174,7 @@ public class ModBlocks { rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); - rbmk_loader = new BlockGeneric(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); + rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); rbmk_heatex = new RBMKHeatex(Material.iron).setBlockName("rbmk_heatex").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_heatex"); diff --git a/src/main/java/com/hbm/blocks/machine/BlockPillar.java b/src/main/java/com/hbm/blocks/machine/BlockPillar.java index 5f8a62a05..a030210b0 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockPillar.java +++ b/src/main/java/com/hbm/blocks/machine/BlockPillar.java @@ -1,8 +1,11 @@ package com.hbm.blocks.machine; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; +import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -10,9 +13,11 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockPillar extends Block { +public class BlockPillar extends Block implements IFluidConnectorBlock { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -85,4 +90,9 @@ public class BlockPillar extends Block { return false; } + @Override + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + if(this != ModBlocks.reactor_conductor) return false; + return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; + } } diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java b/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java index 96901ccc9..0b6b66d9a 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java @@ -1,9 +1,6 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IDummy; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityMachineTurbofan; @@ -11,8 +8,6 @@ import com.hbm.tileentity.machine.TileEntityMachineTurbofan; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; 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.entity.player.EntityPlayer; import net.minecraft.item.Item; diff --git a/src/main/java/com/hbm/blocks/machine/DummyOldBase.java b/src/main/java/com/hbm/blocks/machine/DummyOldBase.java index 3430ad03b..46989269b 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyOldBase.java +++ b/src/main/java/com/hbm/blocks/machine/DummyOldBase.java @@ -3,9 +3,11 @@ package com.hbm.blocks.machine; import java.util.Random; import com.hbm.interfaces.IDummy; +import com.hbm.inventory.fluid.FluidType; import com.hbm.tileentity.machine.TileEntityDummy; import api.hbm.energy.IEnergyConnectorBlock; +import api.hbm.fluid.IFluidConnectorBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -15,7 +17,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class DummyOldBase extends BlockContainer implements IDummy, IEnergyConnectorBlock { +public abstract class DummyOldBase extends BlockContainer implements IDummy, IEnergyConnectorBlock, IFluidConnectorBlock { public static boolean safeBreak = false; private boolean port = false; @@ -66,8 +68,6 @@ public abstract class DummyOldBase extends BlockContainer implements IDummy, IEn return null; } - @Override - public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { - return port; - } + @Override public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return port; } + @Override public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return port; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java b/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java index ee8d0ea45..50baa0568 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java @@ -6,8 +6,8 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyEnergy; -import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -27,14 +27,9 @@ public class MachineMiningLaser extends BlockDummyable implements ITooltipProvid @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) - return new TileEntityMachineMiningLaser(); - - if(meta == 7) - return new TileEntityProxyEnergy(); - - if(meta >= 6) - return new TileEntityProxyInventory(); + if(meta >= 12) return new TileEntityMachineMiningLaser(); + if(meta == 7) return new TileEntityProxyEnergy(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); return null; } diff --git a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java b/src/main/java/com/hbm/blocks/machine/ReactorHatch.java index 521508439..30fc95419 100644 --- a/src/main/java/com/hbm/blocks/machine/ReactorHatch.java +++ b/src/main/java/com/hbm/blocks/machine/ReactorHatch.java @@ -3,9 +3,13 @@ package com.hbm.blocks.machine; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; + +import api.hbm.fluid.IFluidConnectorBlock; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -19,9 +23,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class ReactorHatch extends Block { +public class ReactorHatch extends Block implements IFluidConnectorBlock { @SideOnly(Side.CLIENT) private IIcon iconFront; @@ -176,4 +182,9 @@ public class ReactorHatch extends Block { return false; } } + + @Override + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + return type == Fluids.WATER || type == Fluids.COOLANT || type == Fluids.STEAM || type == Fluids.HOTSTEAM || type == Fluids.SUPERHOTSTEAM || type == Fluids.ULTRAHOTSTEAM; + } } diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLoader.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLoader.java new file mode 100644 index 000000000..9e64460e8 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKLoader.java @@ -0,0 +1,24 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.blocks.generic.BlockGeneric; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; + +import api.hbm.fluid.IFluidConnectorBlock; +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public class RBMKLoader extends BlockGeneric implements IFluidConnectorBlock { + + public RBMKLoader(Material material) { + super(material); + } + + @Override + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + if(type == Fluids.WATER) return dir == ForgeDirection.UP; + return true; + } + +} diff --git a/src/main/java/com/hbm/hazard/HazardSystem.java b/src/main/java/com/hbm/hazard/HazardSystem.java index 05a4153ce..35efa397c 100644 --- a/src/main/java/com/hbm/hazard/HazardSystem.java +++ b/src/main/java/com/hbm/hazard/HazardSystem.java @@ -15,6 +15,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -221,6 +222,14 @@ public class HazardSystem { } } } + + public static void updateDroppedItem(EntityItem entity) { + + List hazards = getHazardsFromStack(entity.getEntityItem()); + for(HazardEntry entry : hazards) { + entry.type.updateEntity(entity, HazardModifier.evalAllModifiers(entity.getEntityItem(), null, entry.baseLevel, entry.mods)); + } + } @SideOnly(Side.CLIENT) public static void addFullTooltip(ItemStack stack, EntityPlayer player, List list) { diff --git a/src/main/java/com/hbm/hazard/modifier/HazardModifier.java b/src/main/java/com/hbm/hazard/modifier/HazardModifier.java index 3bcf26669..4f8de8c21 100644 --- a/src/main/java/com/hbm/hazard/modifier/HazardModifier.java +++ b/src/main/java/com/hbm/hazard/modifier/HazardModifier.java @@ -12,7 +12,7 @@ public abstract class HazardModifier { /** * Returns the level after applying all modifiers to it, in order. * @param stack - * @param entity + * @param entity nullable * @param level * @param mods * @return diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeCoal.java b/src/main/java/com/hbm/hazard/type/HazardTypeCoal.java index 2b9a7dfbc..1dbeda3f8 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeCoal.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeCoal.java @@ -24,10 +24,13 @@ public class HazardTypeCoal extends HazardTypeBase { if(RadiationConfig.disableCoal) return; - if(!ArmorRegistry.hasProtection(target, 3, HazardClass.PARTICLE_COARSE)) - HbmLivingProps.incrementBlackLung(target, (int) Math.min(level, 10)); - else - ArmorUtil.damageGasMaskFilter(target, (int) level); + if(!ArmorRegistry.hasProtection(target, 3, HazardClass.PARTICLE_COARSE)) { + HbmLivingProps.incrementBlackLung(target, (int) Math.min(level * stack.stackSize, 10)); + } else { + if(target.getRNG().nextInt(Math.max(65 - stack.stackSize, 1)) == 0) { + ArmorUtil.damageGasMaskFilter(target, (int) level); + } + } } @Override diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeExplosive.java b/src/main/java/com/hbm/hazard/type/HazardTypeExplosive.java index 7fb92b350..85123d85d 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeExplosive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeExplosive.java @@ -20,7 +20,7 @@ public class HazardTypeExplosive extends HazardTypeBase { if(RadiationConfig.disableExplosive) return; - if(!target.worldObj.isRemote && target.isBurning()) { + if(!target.worldObj.isRemote && target.isBurning() && stack.stackSize > 0) { stack.stackSize = 0; target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java index a9fe5f736..2a2dbb9e5 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java @@ -21,7 +21,7 @@ public class HazardTypeHydroactive extends HazardTypeBase { if(RadiationConfig.disableHydro) return; - if(target.isWet()) { + if(target.isWet() && stack.stackSize > 0) { stack.stackSize = 0; target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 3150750a3..d447cb9bc 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -32,7 +32,9 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.handler.BobmazonOfferFactory; import com.hbm.handler.BossSpawnHandler; import com.hbm.handler.EntityEffectHandler; +import com.hbm.hazard.HazardEntry; import com.hbm.hazard.HazardSystem; +import com.hbm.hazard.modifier.HazardModifier; import com.hbm.interfaces.IBomb; import com.hbm.handler.HTTPHandler; import com.hbm.handler.SiegeOrchestrator; @@ -661,6 +663,11 @@ public class ModEventHandler { ((EntityPlayer)entity).triggerAchievement(MainRegistry.achRadPoison); } } + + if(e instanceof EntityItem) { + EntityItem item = (EntityItem) e; + HazardSystem.updateDroppedItem(item); + } } /** * REMOVE THIS ^ ^ ^