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_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");

View File

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

View File

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

View File

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

View File

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

View File

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

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 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<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)
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.
* @param stack
* @param entity
* @param entity nullable
* @param level
* @param mods
* @return

View File

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

View File

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

View File

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

View File

@ -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 ^ ^ ^