fixed hazard system memery, some fluid connections that didn't render

This commit is contained in:
Boblet 2022-12-02 08:25:16 +01:00
parent 9f3424120e
commit eedf2b61c4
13 changed files with 83 additions and 29 deletions

View File

@ -2174,7 +2174,7 @@ public class ModBlocks {
rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); 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_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_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_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_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"); rbmk_heatex = new RBMKHeatex(Material.iron).setBlockName("rbmk_heatex").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_heatex");

View File

@ -1,8 +1,11 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import com.hbm.blocks.ModBlocks; 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.lib.RefStrings;
import api.hbm.fluid.IFluidConnectorBlock;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block; 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.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; 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) @SideOnly(Side.CLIENT)
private IIcon iconTop; private IIcon iconTop;
@ -85,4 +90,9 @@ public class BlockPillar extends Block {
return false; 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;
}
} }

View File

@ -1,9 +1,6 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.Random;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.IDummy;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityDummy;
import com.hbm.tileentity.machine.TileEntityMachineTurbofan; 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.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; 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.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;

View File

@ -3,9 +3,11 @@ package com.hbm.blocks.machine;
import java.util.Random; import java.util.Random;
import com.hbm.interfaces.IDummy; import com.hbm.interfaces.IDummy;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityDummy;
import api.hbm.energy.IEnergyConnectorBlock; import api.hbm.energy.IEnergyConnectorBlock;
import api.hbm.fluid.IFluidConnectorBlock;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -15,7 +17,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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; public static boolean safeBreak = false;
private boolean port = false; private boolean port = false;
@ -66,8 +68,6 @@ public abstract class DummyOldBase extends BlockContainer implements IDummy, IEn
return null; return null;
} }
@Override @Override public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return port; }
public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { @Override public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir) { return port; }
return port;
}
} }

View File

@ -6,8 +6,8 @@ import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.TileEntityProxyEnergy; import com.hbm.tileentity.TileEntityProxyEnergy;
import com.hbm.tileentity.TileEntityProxyInventory;
import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
@ -27,14 +27,9 @@ public class MachineMiningLaser extends BlockDummyable implements ITooltipProvid
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) if(meta >= 12) return new TileEntityMachineMiningLaser();
return new TileEntityMachineMiningLaser(); if(meta == 7) return new TileEntityProxyEnergy();
if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid();
if(meta == 7)
return new TileEntityProxyEnergy();
if(meta >= 6)
return new TileEntityProxyInventory();
return null; return null;
} }

View File

@ -3,9 +3,13 @@ package com.hbm.blocks.machine;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.ModBlocks; 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.lib.RefStrings;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge;
import api.hbm.fluid.IFluidConnectorBlock;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -19,9 +23,11 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; 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) @SideOnly(Side.CLIENT)
private IIcon iconFront; private IIcon iconFront;
@ -176,4 +182,9 @@ public class ReactorHatch extends Block {
return false; 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;
}
} }

View File

@ -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;
}
}

View File

@ -15,6 +15,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -222,6 +223,14 @@ public class HazardSystem {
} }
} }
public static void updateDroppedItem(EntityItem entity) {
List<HazardEntry> hazards = getHazardsFromStack(entity.getEntityItem());
for(HazardEntry entry : hazards) {
entry.type.updateEntity(entity, HazardModifier.evalAllModifiers(entity.getEntityItem(), null, entry.baseLevel, entry.mods));
}
}
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public static void addFullTooltip(ItemStack stack, EntityPlayer player, List list) { public static void addFullTooltip(ItemStack stack, EntityPlayer player, List list) {

View File

@ -12,7 +12,7 @@ public abstract class HazardModifier {
/** /**
* Returns the level after applying all modifiers to it, in order. * Returns the level after applying all modifiers to it, in order.
* @param stack * @param stack
* @param entity * @param entity nullable
* @param level * @param level
* @param mods * @param mods
* @return * @return

View File

@ -24,10 +24,13 @@ public class HazardTypeCoal extends HazardTypeBase {
if(RadiationConfig.disableCoal) if(RadiationConfig.disableCoal)
return; return;
if(!ArmorRegistry.hasProtection(target, 3, HazardClass.PARTICLE_COARSE)) if(!ArmorRegistry.hasProtection(target, 3, HazardClass.PARTICLE_COARSE)) {
HbmLivingProps.incrementBlackLung(target, (int) Math.min(level, 10)); HbmLivingProps.incrementBlackLung(target, (int) Math.min(level * stack.stackSize, 10));
else } else {
ArmorUtil.damageGasMaskFilter(target, (int) level); if(target.getRNG().nextInt(Math.max(65 - stack.stackSize, 1)) == 0) {
ArmorUtil.damageGasMaskFilter(target, (int) level);
}
}
} }
@Override @Override

View File

@ -20,7 +20,7 @@ public class HazardTypeExplosive extends HazardTypeBase {
if(RadiationConfig.disableExplosive) if(RadiationConfig.disableExplosive)
return; return;
if(!target.worldObj.isRemote && target.isBurning()) { if(!target.worldObj.isRemote && target.isBurning() && stack.stackSize > 0) {
stack.stackSize = 0; stack.stackSize = 0;
target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true); target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true);
} }

View File

@ -21,7 +21,7 @@ public class HazardTypeHydroactive extends HazardTypeBase {
if(RadiationConfig.disableHydro) if(RadiationConfig.disableHydro)
return; return;
if(target.isWet()) { if(target.isWet() && stack.stackSize > 0) {
stack.stackSize = 0; stack.stackSize = 0;
target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true); target.worldObj.newExplosion(null, target.posX, target.posY + target.getEyeHeight() - target.getYOffset(), target.posZ, level, false, true);
} }

View File

@ -32,7 +32,9 @@ import com.hbm.handler.ArmorModHandler;
import com.hbm.handler.BobmazonOfferFactory; import com.hbm.handler.BobmazonOfferFactory;
import com.hbm.handler.BossSpawnHandler; import com.hbm.handler.BossSpawnHandler;
import com.hbm.handler.EntityEffectHandler; import com.hbm.handler.EntityEffectHandler;
import com.hbm.hazard.HazardEntry;
import com.hbm.hazard.HazardSystem; import com.hbm.hazard.HazardSystem;
import com.hbm.hazard.modifier.HazardModifier;
import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb;
import com.hbm.handler.HTTPHandler; import com.hbm.handler.HTTPHandler;
import com.hbm.handler.SiegeOrchestrator; import com.hbm.handler.SiegeOrchestrator;
@ -661,6 +663,11 @@ public class ModEventHandler {
((EntityPlayer)entity).triggerAchievement(MainRegistry.achRadPoison); ((EntityPlayer)entity).triggerAchievement(MainRegistry.achRadPoison);
} }
} }
if(e instanceof EntityItem) {
EntityItem item = (EntityItem) e;
HazardSystem.updateDroppedItem(item);
}
} }
/** /**
* REMOVE THIS ^ ^ ^ * REMOVE THIS ^ ^ ^