diff --git a/changelog b/changelog index c06455a46..55a35eadf 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,10 @@ +## Added +* Reasim RBMK control rods + * Come in manual and auto variants, but not moderated + * The same as standard control rods, except they need 5kHE/t + * Have only a single cable connection at the bottom + * Replace standard RBMK control rods when 528 mode is enabled + ## Changed * Updated RBMK visuals * The indentations on most RBMK passive elements have been removed, heavily reducing tri count and allowing face culling, making RBMKs render much more efficiently @@ -11,6 +18,13 @@ * This means that things like 2x2 jungle trees can now be automated * Annihilating radioactive items now creates that item's radiation value x5 as chunk radiation * The maximum per tick is a 1000 RAD/s increase to prevent world-destroying radiation levels from annihilating demon cores +* The water door now has a skin that isn't rusted with less contrast +* The containment door now has a lead-colored skin with a trefoil on it +* Using a screwdriver on a beamline now toggles a window which flashes if a particle passes +* Particles now start slowly and accelerate, instead of passing a fixed 10 components per tick, particles only do 1 component per tick, which increases by 1 every 1,000 momentum +* RBMK absorber columns now heat up when exposed to neutrons + * The type of neutron does not matter, only the quantity + * 20 flux equals 1°C heatup ## Fixed * Fixed NBTStack serialization omitting the stack size most of the time, preventing deserialization (mainly in the precision assembler config) @@ -19,4 +33,5 @@ * Fixed tool abilities switching when clicking on a block with a special interaction * Fixed outdated info on the QMAW pages involving AA and BSCCO due to the fusion reactor update * Fixed ammo container giving 9mm instead of .22 for the akimbo target pistols -* Fixed RBMK control rods incorrectly showing up in the red group when no group is set \ No newline at end of file +* Fixed RBMK control rods incorrectly showing up in the red group when no group is set +* Fixed fluid output direction being incorrect on boilers, causing them to break with pipe anchors \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index e78099f48..abeb51912 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1083,6 +1083,8 @@ public class ModBlocks { public static Block rbmk_control; public static Block rbmk_control_mod; public static Block rbmk_control_auto; + public static Block rbmk_control_reasim; + public static Block rbmk_control_reasim_auto; public static Block rbmk_blank; public static Block rbmk_boiler; public static Block rbmk_reflector; @@ -2100,6 +2102,8 @@ public class ModBlocks { rbmk_control = new RBMKControl(false).setBlockName("rbmk_control").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control"); rbmk_control_mod = new RBMKControl(true).setBlockName("rbmk_control_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_mod"); rbmk_control_auto = new RBMKControlAuto().setBlockName("rbmk_control_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_auto"); + rbmk_control_reasim = new RBMKControl(false).setBlockName("rbmk_control_reasim").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_reasim"); + rbmk_control_reasim_auto = new RBMKControlAuto().setBlockName("rbmk_control_reasim_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_reasim_auto"); rbmk_blank = new RBMKBlank().setBlockName("rbmk_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank"); rbmk_boiler = new RBMKBoiler().setBlockName("rbmk_boiler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_boiler"); rbmk_reflector = new RBMKReflector().setBlockName("rbmk_reflector").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_reflector"); @@ -3089,6 +3093,8 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_control, rbmk_control.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_control_mod, rbmk_control_mod.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_control_auto, rbmk_control_auto.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_control_reasim, rbmk_control_reasim.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_control_reasim_auto, rbmk_control_reasim_auto.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_blank, rbmk_blank.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_boiler, rbmk_boiler.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_reflector, rbmk_reflector.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java index 23051777a..b1af065e0 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java +++ b/src/main/java/com/hbm/blocks/generic/BlockForgottenLock.java @@ -1,10 +1,13 @@ package com.hbm.blocks.generic; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockPillar; import com.hbm.items.ModItems; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -38,5 +41,12 @@ public class BlockForgottenLock extends BlockPillar { public static void generate(World world, int x, int y, int z, int meta, ForgeDirection dir) { + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + int len = 15; + for(int w = -2; w <= 2; w++) for(int h = -2; h <= 2; h++) for(int d = 0; d < len; d++) { + Block b = (w == -2 || w == 2 || h == -2 || h == 2 || d == len - 1) ? ModBlocks.brick_forgotten : Blocks.air; + world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b); + } } } diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java index e2382367a..06668851f 100644 --- a/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java @@ -8,13 +8,14 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.albion.TileEntityPABeamline; +import api.hbm.block.IToolable; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class BlockPABeamline extends BlockDummyable implements ITooltipProvider { +public class BlockPABeamline extends BlockDummyable implements ITooltipProvider, IToolable { public BlockPABeamline() { super(Material.iron); @@ -35,4 +36,19 @@ public class BlockPABeamline extends BlockDummyable implements ITooltipProvider public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { addStandardInfo(stack, player, list, ext); } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + if(tool != ToolType.SCREWDRIVER) return false; + if(world.isRemote) return true; + + int[] pos = this.findCore(world, x, y, z); + if(pos != null) { + TileEntityPABeamline tile = (TileEntityPABeamline) world.getTileEntity(pos[0], pos[1], pos[2]); + tile.window = !tile.window; + tile.markDirty(); + } + + return false; + } } diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java index 72a54dd84..932e11380 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java @@ -64,13 +64,18 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo if(renderLid != LID_NONE && side > 1) return true; return super.shouldSideBeRendered(world, x, y, z, side); } + + public boolean hasOwnLid() { + return this == ModBlocks.rbmk_control || this == ModBlocks.rbmk_control_auto || this == ModBlocks.rbmk_control_mod || + this == ModBlocks.rbmk_control_reasim || this == ModBlocks.rbmk_control_reasim_auto; + } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { this.blockIcon = reg.registerIcon(this.getTextureName() + "_side"); this.textureTop = reg.registerIcon(this.getTextureName() + "_top"); - if(this == ModBlocks.rbmk_control || this == ModBlocks.rbmk_control_auto || this == ModBlocks.rbmk_control_mod) return; + if(hasOwnLid()) return; this.coverTextureTop = reg.registerIcon(this.getTextureName() + "_cover_top"); this.coverTextureSide = reg.registerIcon(this.getTextureName() + "_cover_side"); this.glassTextureTop = reg.registerIcon(this.getTextureName() + "_glass_top"); @@ -80,8 +85,10 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - if(renderLid == LID_STANDARD) return side == 0 || side == 1 ? coverTextureTop : coverTextureSide; - if(renderLid == LID_GLASS) return side == 0 || side == 1 ? glassTextureTop : glassTextureSide; + if(!hasOwnLid()) { + if(renderLid == LID_STANDARD) return side == 0 || side == 1 ? coverTextureTop : coverTextureSide; + if(renderLid == LID_GLASS) return side == 0 || side == 1 ? glassTextureTop : glassTextureSide; + } return side == 0 || side == 1 ? textureTop : blockIcon; } @@ -97,34 +104,24 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo public boolean openInv(World world, int x, int y, int z, EntityPlayer player) { - if(world.isRemote) { - return true; - } + if(world.isRemote) return true; int[] pos = this.findCore(world, x, y, z); - - if(pos == null) - return false; + if(pos == null) return false; TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - - if(!(te instanceof TileEntityRBMKBase)) - return false; + if(!(te instanceof TileEntityRBMKBase)) return false; TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) { - - if(!rbmk.hasLid()) - return false; + if(!rbmk.hasLid()) return false; } - if(!player.isSneaking()) { + if(!player.isSneaking()) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); - return true; - } else { - return true; - } + + return true; } @Override diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java index 89f3a4531..8f26b37d8 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java @@ -1,21 +1,42 @@ package com.hbm.blocks.machine.rbmk; +import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; import net.minecraft.world.World; public class RBMKControl extends RBMKPipedBase { public boolean moderated = false; + public IIcon textureBottom; public RBMKControl(boolean moderated) { super(); this.moderated = moderated; } + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + if(this == ModBlocks.rbmk_control_reasim) + this.textureBottom = reg.registerIcon(this.getTextureName() + "_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(this.renderLid == LID_NONE && this == ModBlocks.rbmk_control_reasim && side == 0) return textureBottom; + return super.getIcon(side, meta); + } + @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= this.offset) return new TileEntityRBMKControlManual(); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java index 33c069b8e..e73aee221 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java @@ -1,19 +1,39 @@ package com.hbm.blocks.machine.rbmk; +import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; import net.minecraft.world.World; public class RBMKControlAuto extends RBMKPipedBase { + public IIcon textureBottom; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + if(this == ModBlocks.rbmk_control_reasim_auto) + this.textureBottom = reg.registerIcon(this.getTextureName() + "_bottom"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(this.renderLid == LID_NONE && this == ModBlocks.rbmk_control_reasim_auto && side == 0) return textureBottom; + return super.getIcon(side, meta); + } + @Override public TileEntity createNewTileEntity(World world, int meta) { - - if(meta >= this.offset) - return new TileEntityRBMKControlAuto(); + if(meta >= this.offset) return new TileEntityRBMKControlAuto(); return null; } diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index dd77eaf98..d6257622c 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -355,6 +355,8 @@ public class RBMKNeutronHandler { ((TileEntityRBMKRod) originTE).receiveFlux(this); return; } else if(type == RBMKType.ABSORBER) { + ((TileEntityRBMKAbsorber) nodeTE).heat += RBMKDials.getAbsorberHeatConversion(worldObj) * this.fluxQuantity; + if(absorberEfficiency == 1) return; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java index b1c8f415e..74b532066 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; +import com.hbm.util.BobMathUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -33,6 +34,10 @@ public class GUIRBMKControl extends GuiInfoContainer { super.drawScreen(mouseX, mouseY, f); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 71, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } ); + + if(rod.isPowered()) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 87, guiTop + 21, 16, 16, mouseX, mouseY, new String[]{ BobMathUtil.getShortNumber(rod.power) + " / " + BobMathUtil.getShortNumber(rod.maxPower) + "HE" } ); + } } @Override @@ -85,5 +90,9 @@ public class GUIRBMKControl extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 28, guiTop + 26 + color * 11, 184, color * 10, 12, 10); } + + if(rod.isPowered()) { + drawTexturedModalRect(guiLeft + 87, guiTop + 21, 196, rod.hasPower ? 16 : 0, 16, 16); + } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java index e55576bef..61d563318 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java @@ -9,6 +9,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; +import com.hbm.util.BobMathUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -64,6 +65,10 @@ public class GUIRBMKControlAuto extends GuiInfoContainer { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 124, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } ); + if(rod.isPowered()) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 136, guiTop + 21, 16, 16, mouseX, mouseY, new String[]{ BobMathUtil.getShortNumber(rod.power) + " / " + BobMathUtil.getShortNumber(rod.maxPower) + "HE" } ); + } + String func = "Function: "; switch(rod.function) { @@ -155,6 +160,10 @@ public class GUIRBMKControlAuto extends GuiInfoContainer { int f = rod.function.ordinal(); drawTexturedModalRect(guiLeft + 59, guiTop + 27, 184, f * 19, 26, 19); + if(rod.isPowered()) { + drawTexturedModalRect(guiLeft + 136, guiTop + 21, 210, rod.hasPower ? 16 : 0, 16, 16); + } + for(int i = 0; i < 4; i++) { this.fields[i].drawTextBox(); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6552c5e58..3347f14e2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3142,6 +3142,21 @@ public class ModItems { rbmk_pellet_zfb_am_mix = (ItemRBMKPellet) new ItemRBMKPellet("Zirconium Fast Breeder - HEP-241#MEA").setUnlocalizedName("rbmk_pellet_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_pellet_zfb_am_mix"); rbmk_pellet_drx = (ItemRBMKPellet) new ItemRBMKPellet(EnumChatFormatting.OBFUSCATED + "can't you hear, can't you hear the thunder?").setUnlocalizedName("rbmk_pellet_drx").setTextureName(RefStrings.MODID + ":rbmk_pellet_drx"); + int tintUranium = 0x868D82; + int tintNeptunium = 0x757E73; + int tintPlutonium = 0x656E6B; + int tintAmericium = 0xA88A8F; + int tintThorium = 0x665448; + int tintZirconium = 0xAAA36A; + int tintSchrabidium = 0x2D9A94; + int tintPolonium = 0x563A26; + int tintRadium = 0xB3B6AD; + int tintAustralium = 0xFFEE00; + int tintFlashgold = 0xDC9613; + int tintFlashlead = 0x7B7B87; + int tintBalefire = 0xB2FF1B; + int tintDRX = 0xD77276; + rbmk_fuel_empty = new Item().setUnlocalizedName("rbmk_fuel_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_fuel_empty"); rbmk_fuel_ueu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_ueu) .setYield(100000000D) @@ -3150,7 +3165,7 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE) .setHeat(0.65) //0.5 is too much of a nerf in heat; pu239 buildup justifies it being on par with MEU ig .setMeltingPoint(2865) - .setUnlocalizedName("rbmk_fuel_ueu").setTextureName(RefStrings.MODID + ":rbmk_fuel_ueu"); + .setTint(tintUranium).setUnlocalizedName("rbmk_fuel_ueu").setTextureName(RefStrings.MODID + ":rbmk_fuel_ueu"); rbmk_fuel_meu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_meu) .setYield(100000000D) .setStats(20) @@ -3158,20 +3173,20 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE) .setHeat(0.65) //0.75 was a bit too much... .setMeltingPoint(2865) - .setUnlocalizedName("rbmk_fuel_meu").setTextureName(RefStrings.MODID + ":rbmk_fuel_meu"); + .setTint(tintUranium).setUnlocalizedName("rbmk_fuel_meu").setTextureName(RefStrings.MODID + ":rbmk_fuel_meu"); rbmk_fuel_heu233 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heu233) .setYield(100000000D) .setStats(27.5D) .setFunction(EnumBurnFunc.LINEAR) .setHeat(1.25D) .setMeltingPoint(2865) - .setUnlocalizedName("rbmk_fuel_heu233").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu233"); + .setTint(tintUranium).setUnlocalizedName("rbmk_fuel_heu233").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu233"); rbmk_fuel_heu235 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heu235) .setYield(100000000D) .setStats(50) //Consistency with HEN; its critical mass is too high to justify a linear function .setFunction(EnumBurnFunc.SQUARE_ROOT) .setMeltingPoint(2865) - .setUnlocalizedName("rbmk_fuel_heu235").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu235"); + .setTint(tintUranium).setUnlocalizedName("rbmk_fuel_heu235").setTextureName(RefStrings.MODID + ":rbmk_fuel_heu235"); rbmk_fuel_thmeu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_thmeu) .setYield(100000000D) .setStats(20) @@ -3179,7 +3194,7 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.BOOSTED_SLOPE) .setHeat(0.65D) //Consistency with MEU .setMeltingPoint(3350) - .setUnlocalizedName("rbmk_fuel_thmeu").setTextureName(RefStrings.MODID + ":rbmk_fuel_thmeu"); + .setTint(tintThorium).setUnlocalizedName("rbmk_fuel_thmeu").setTextureName(RefStrings.MODID + ":rbmk_fuel_thmeu"); rbmk_fuel_lep = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_lep) .setYield(100000000D) .setStats(35) @@ -3187,27 +3202,27 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE) .setHeat(0.75D) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_lep").setTextureName(RefStrings.MODID + ":rbmk_fuel_lep"); + .setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_lep").setTextureName(RefStrings.MODID + ":rbmk_fuel_lep"); rbmk_fuel_mep = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mep) .setYield(100000000D) .setStats(35) .setFunction(EnumBurnFunc.SQUARE_ROOT) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_mep").setTextureName(RefStrings.MODID + ":rbmk_fuel_mep"); + .setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_mep").setTextureName(RefStrings.MODID + ":rbmk_fuel_mep"); rbmk_fuel_hep239 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hep239) .setYield(100000000D) .setStats(30) .setFunction(EnumBurnFunc.LINEAR) .setHeat(1.25D) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_hep").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep"); + .setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_hep").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep"); rbmk_fuel_hep241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hep241) .setYield(100000000D) .setStats(40) .setFunction(EnumBurnFunc.LINEAR) .setHeat(1.75D) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_hep241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep241"); + .setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_hep241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hep241"); rbmk_fuel_lea = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_lea) .setYield(100000000D) .setStats(60, 10) @@ -3215,14 +3230,14 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE) .setHeat(1.5D) .setMeltingPoint(2386) - .setUnlocalizedName("rbmk_fuel_lea").setTextureName(RefStrings.MODID + ":rbmk_fuel_lea"); + .setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_lea").setTextureName(RefStrings.MODID + ":rbmk_fuel_lea"); rbmk_fuel_mea = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mea) .setYield(100000000D) .setStats(35D, 20) .setFunction(EnumBurnFunc.ARCH) .setHeat(1.75D) .setMeltingPoint(2386) - .setUnlocalizedName("rbmk_fuel_mea").setTextureName(RefStrings.MODID + ":rbmk_fuel_mea"); + .setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_mea").setTextureName(RefStrings.MODID + ":rbmk_fuel_mea"); rbmk_fuel_hea241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea241) .setYield(100000000D) .setStats(65, 15) @@ -3230,14 +3245,14 @@ public class ModItems { .setHeat(1.85D) .setMeltingPoint(2386) .setNeutronTypes(NType.FAST, NType.FAST) - .setUnlocalizedName("rbmk_fuel_hea241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea241"); + .setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_hea241").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea241"); rbmk_fuel_hea242 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hea242) .setYield(100000000D) .setStats(45) .setFunction(EnumBurnFunc.LINEAR) .setHeat(2D) .setMeltingPoint(2386) - .setUnlocalizedName("rbmk_fuel_hea242").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea242"); + .setTint(tintAmericium).setUnlocalizedName("rbmk_fuel_hea242").setTextureName(RefStrings.MODID + ":rbmk_fuel_hea242"); rbmk_fuel_men = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_men) .setYield(100000000D) .setStats(30) @@ -3246,21 +3261,21 @@ public class ModItems { .setHeat(0.75) .setMeltingPoint(2800) .setNeutronTypes(NType.ANY, NType.FAST) //Build-up of Pu-239 leads to both speeds of neutrons grooving - .setUnlocalizedName("rbmk_fuel_men").setTextureName(RefStrings.MODID + ":rbmk_fuel_men"); + .setTint(tintNeptunium).setUnlocalizedName("rbmk_fuel_men").setTextureName(RefStrings.MODID + ":rbmk_fuel_men"); rbmk_fuel_hen = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hen) .setYield(100000000D) .setStats(40) .setFunction(EnumBurnFunc.SQUARE_ROOT) .setMeltingPoint(2800) .setNeutronTypes(NType.FAST, NType.FAST) - .setUnlocalizedName("rbmk_fuel_hen").setTextureName(RefStrings.MODID + ":rbmk_fuel_hen"); + .setTint(tintNeptunium).setUnlocalizedName("rbmk_fuel_hen").setTextureName(RefStrings.MODID + ":rbmk_fuel_hen"); rbmk_fuel_mox = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mox) .setYield(100000000D) .setStats(40) .setFunction(EnumBurnFunc.LOG_TEN) .setDepletionFunction(EnumDepleteFunc.RAISING_SLOPE) .setMeltingPoint(2815) - .setUnlocalizedName("rbmk_fuel_mox").setTextureName(RefStrings.MODID + ":rbmk_fuel_mox"); + .setTint(tintUranium).setUnlocalizedName("rbmk_fuel_mox").setTextureName(RefStrings.MODID + ":rbmk_fuel_mox"); rbmk_fuel_les = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_les) .setYield(100000000D) .setStats(50) @@ -3268,14 +3283,14 @@ public class ModItems { .setHeat(1.25D) .setMeltingPoint(2500) .setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation - .setUnlocalizedName("rbmk_fuel_les").setTextureName(RefStrings.MODID + ":rbmk_fuel_les"); + .setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_les").setTextureName(RefStrings.MODID + ":rbmk_fuel_les"); rbmk_fuel_mes = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_mes) .setYield(100000000D) .setStats(75D) .setFunction(EnumBurnFunc.ARCH) .setHeat(1.5D) .setMeltingPoint(2750) - .setUnlocalizedName("rbmk_fuel_mes").setTextureName(RefStrings.MODID + ":rbmk_fuel_mes"); + .setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_mes").setTextureName(RefStrings.MODID + ":rbmk_fuel_mes"); rbmk_fuel_hes = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_hes) .setYield(100000000D) .setStats(90) @@ -3283,7 +3298,7 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.LINEAR) .setHeat(1.75D) .setMeltingPoint(3000) - .setUnlocalizedName("rbmk_fuel_hes").setTextureName(RefStrings.MODID + ":rbmk_fuel_hes"); + .setTint(tintSchrabidium).setUnlocalizedName("rbmk_fuel_hes").setTextureName(RefStrings.MODID + ":rbmk_fuel_hes"); rbmk_fuel_leaus = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_leaus) .setYield(100000000D) .setStats(30) @@ -3291,14 +3306,14 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.LINEAR) .setXenon(0.05D, 50D) .setHeat(1.5D) - .setMeltingPoint(7029).setUnlocalizedName("rbmk_fuel_leaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_leaus"); + .setTint(tintAustralium).setMeltingPoint(7029).setUnlocalizedName("rbmk_fuel_leaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_leaus"); rbmk_fuel_heaus = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heaus) .setYield(100000000D) .setStats(35) .setFunction(EnumBurnFunc.LINEAR) .setXenon(0.05D, 50D) .setHeat(1.5D) - .setMeltingPoint(5211).setUnlocalizedName("rbmk_fuel_heaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_heaus"); + .setTint(tintAustralium).setMeltingPoint(5211).setUnlocalizedName("rbmk_fuel_heaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_heaus"); rbmk_fuel_po210be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_po210be) .setYield(25000000D) .setStats(0D, 50) @@ -3309,7 +3324,7 @@ public class ModItems { .setDiffusion(0.05D) .setMeltingPoint(1287) .setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation - .setUnlocalizedName("rbmk_fuel_po210be").setTextureName(RefStrings.MODID + ":rbmk_fuel_po210be"); + .setTint(tintPolonium).setUnlocalizedName("rbmk_fuel_po210be").setTextureName(RefStrings.MODID + ":rbmk_fuel_po210be"); rbmk_fuel_ra226be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_ra226be) .setYield(100000000D) .setStats(0D, 20) @@ -3320,7 +3335,7 @@ public class ModItems { .setDiffusion(0.5D) .setMeltingPoint(700) .setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation - .setUnlocalizedName("rbmk_fuel_ra226be").setTextureName(RefStrings.MODID + ":rbmk_fuel_ra226be"); + .setTint(tintRadium).setUnlocalizedName("rbmk_fuel_ra226be").setTextureName(RefStrings.MODID + ":rbmk_fuel_ra226be"); rbmk_fuel_pu238be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_pu238be) .setYield(50000000D) .setStats(40, 40) @@ -3329,7 +3344,7 @@ public class ModItems { .setDiffusion(0.05D) .setMeltingPoint(1287) .setNeutronTypes(NType.SLOW, NType.SLOW) //Beryllium Moderation - .setUnlocalizedName("rbmk_fuel_pu238be").setTextureName(RefStrings.MODID + ":rbmk_fuel_pu238be"); + .setTint(tintPlutonium).setUnlocalizedName("rbmk_fuel_pu238be").setTextureName(RefStrings.MODID + ":rbmk_fuel_pu238be"); rbmk_fuel_balefire_gold = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_balefire_gold) .setYield(100000000D) .setStats(50, 10) @@ -3337,7 +3352,7 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.LINEAR) .setXenon(0.0D, 50D) .setMeltingPoint(2000) - .setUnlocalizedName("rbmk_fuel_balefire_gold").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire_gold"); + .setTint(tintFlashgold).setUnlocalizedName("rbmk_fuel_balefire_gold").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire_gold"); rbmk_fuel_flashlead = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_flashlead) .setYield(250000000D) .setStats(40, 50) @@ -3345,7 +3360,7 @@ public class ModItems { .setDepletionFunction(EnumDepleteFunc.LINEAR) .setXenon(0.0D, 50D) .setMeltingPoint(2050) - .setUnlocalizedName("rbmk_fuel_flashlead").setTextureName(RefStrings.MODID + ":rbmk_fuel_flashlead"); + .setTint(tintFlashlead).setUnlocalizedName("rbmk_fuel_flashlead").setTextureName(RefStrings.MODID + ":rbmk_fuel_flashlead"); rbmk_fuel_balefire = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_balefire) .setYield(100000000D) .setStats(100, 35) @@ -3353,34 +3368,34 @@ public class ModItems { .setXenon(0.0D, 50D) .setHeat(3D) .setMeltingPoint(3652) - .setUnlocalizedName("rbmk_fuel_balefire").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire"); + .setTint(tintBalefire).setUnlocalizedName("rbmk_fuel_balefire").setTextureName(RefStrings.MODID + ":rbmk_fuel_balefire"); rbmk_fuel_zfb_bismuth = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_bismuth) .setYield(50000000D) .setStats(20) .setFunction(EnumBurnFunc.SQUARE_ROOT) .setHeat(1.75D) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_zfb_bismuth").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_bismuth"); + .setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_bismuth").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_bismuth"); rbmk_fuel_zfb_pu241 = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_pu241) .setYield(50000000D) .setStats(20) .setFunction(EnumBurnFunc.SQUARE_ROOT) .setMeltingPoint(2865) - .setUnlocalizedName("rbmk_fuel_zfb_pu241").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_pu241"); + .setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_pu241").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_pu241"); rbmk_fuel_zfb_am_mix = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_zfb_am_mix) .setYield(50000000D) .setStats(20) .setFunction(EnumBurnFunc.LINEAR) .setHeat(1.75D) .setMeltingPoint(2744) - .setUnlocalizedName("rbmk_fuel_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_am_mix"); + .setTint(tintZirconium).setUnlocalizedName("rbmk_fuel_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_am_mix"); rbmk_fuel_drx = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_drx) .setYield(10000000D) .setStats(1000, 10) .setFunction(EnumBurnFunc.QUADRATIC) .setHeat(0.1D) .setMeltingPoint(100000) - .setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx"); + .setTint(tintDRX).setUnlocalizedName("rbmk_fuel_drx").setTextureName(RefStrings.MODID + ":rbmk_fuel_drx"); rbmk_fuel_test = (ItemRBMKRod) new ItemRBMKRod("THE VOICES") .setYield(1000000D) .setStats(100) diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 1ab86f42d..adc49e57b 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -36,6 +36,7 @@ public class ItemRBMKRod extends Item { public double diffusion = 0.02D; //the speed at which the core heats the hull public NType nType = NType.SLOW; //neutronType, the most efficient neutron type for fission public NType rType = NType.FAST; //releaseType, the type of neutrons released by this fuel + public int colorTint = 0x304825; /* _____ * ,I I I I, @@ -73,6 +74,11 @@ public class ItemRBMKRod extends Item { this.setMaxStackSize(1); this.setCreativeTab(MainRegistry.controlTab); } + + public ItemRBMKRod setTint(int tint) { + this.colorTint = tint; + return this; + } public ItemRBMKRod setYield(double yield) { this.yield = yield; diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index a816eda46..ea38c37bc 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -778,11 +778,12 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_reflector, 1), new Object[] { "GGG", "GRG", "GGG", 'G', OreDictManager.getReflector(), 'R', ModBlocks.rbmk_blank }); if(!GeneralConfig.enable528) { addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber }); + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_control, 'B', ModItems.nugget_bismuth }); + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display }); } else { - addRecipeAuto(new ItemStack(ModBlocks.rbmk_control, 1), new Object[] { "CBC", "GRG", "CBC", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber, 'C', CD.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_reasim, 1), new Object[] { " B ", "GRG", " B ", 'G', GRAPHITE.ingot(), 'B', ModItems.motor, 'R', ModBlocks.rbmk_absorber }); + addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_reasim_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display }); } - addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_control, 'B', ModItems.nugget_bismuth }); - addRecipeAuto(new ItemStack(ModBlocks.rbmk_control_auto, 1), new Object[] { "C", "R", "D", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'R', ModBlocks.rbmk_control, 'D', ModItems.crt_display }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim, 1), new Object[] { "ZCZ", "ZRZ", "ZCZ", 'C', STEEL.shell(), 'R', ModBlocks.rbmk_blank, 'Z', ZR.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_rod_reasim_mod, 1), new Object[] { "BGB", "GRG", "BGB", 'G', GRAPHITE.block(), 'R', ModBlocks.rbmk_rod_reasim, 'B', ANY_RESISTANTALLOY.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_outgasser, 1), new Object[] { "GHG", "GRG", "GTG", 'G', ModBlocks.steel_grate, 'H', Blocks.hopper, 'T', ModItems.tank_steel, 'R', ModBlocks.rbmk_blank }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 34e764861..b2332e67f 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -333,6 +333,7 @@ public class ResourceManager { public static final ResourceLocation pheo_blast_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/blast_door.png"); public static IModelCustomNamed pheo_blast_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/blast_door.obj")).asVBO(); public static final ResourceLocation pheo_containment_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door.png"); + public static final ResourceLocation pheo_containment_door_trefoil_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/containment_door_trefoil.png"); public static IModelCustomNamed pheo_containment_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/containment_door.obj")).asVBO(); public static final ResourceLocation pheo_seal_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/seal_door.png"); public static IModelCustomNamed pheo_seal_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/seal_door.obj")).asVBO(); @@ -344,6 +345,7 @@ public class ResourceManager { public static final ResourceLocation pheo_vehicle_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vehicle_door.png"); public static IModelCustomNamed pheo_vehicle_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/vehicle_door.obj")).asVBO(); public static final ResourceLocation pheo_water_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/water_door.png"); + public static final ResourceLocation pheo_water_door_clean_tex = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/water_door_clean.png"); public static IModelCustomNamed pheo_water_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/pheodoors/water_door.obj")).asVBO(); public static final ResourceLocation pheo_vault_door_3 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/vault_door_3.png"); public static final ResourceLocation pheo_vault_door_4 = new ResourceLocation(RefStrings.MODID, "textures/models/pheodoors/vault/vault_door_4.png"); diff --git a/src/main/java/com/hbm/render/block/RenderRBMKControl.java b/src/main/java/com/hbm/render/block/RenderRBMKControl.java index aac35075b..90beaf20c 100644 --- a/src/main/java/com/hbm/render/block/RenderRBMKControl.java +++ b/src/main/java/com/hbm/render/block/RenderRBMKControl.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.blocks.machine.rbmk.RBMKPipedBase; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; @@ -24,7 +25,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler { GL11.glPushMatrix(); Tessellator tessellator = Tessellator.instance; RBMKBase.renderLid = RBMKBase.LID_NONE; - IIcon iicon = block.getIcon(0, 0); + IIcon iicon = block.getIcon(1, 0); tessellator.setColorOpaque_F(1, 1, 1); if(renderer.hasOverrideBlockTexture()) { @@ -46,6 +47,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler { if(i < 3) GL11.glTranslated(0, 1, 0); } + RBMKPipedBase.renderPipes = true; tessellator.startDrawingQuads(); renderer.setRenderBounds(0.0625, 0, 0.0625, 0.4375, 0.125, 0.4375); tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.UP.ordinal(), 0)); @@ -72,6 +74,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler { tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.EAST.ordinal(), 0)); tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, -0.5, 1, -0.5, block.getIcon(ForgeDirection.WEST.ordinal(), 0)); tessellator.draw(); + RBMKPipedBase.renderPipes = false; if(block != ModBlocks.rbmk_boiler && block != ModBlocks.rbmk_heater) { tessellator.startDrawingQuads(); @@ -113,6 +116,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler { } if(!hasLid) { + RBMKPipedBase.renderPipes = true; renderer.setRenderBounds(0.0625, 0, 0.0625, 0.4375, 0.125, 0.4375); renderer.renderStandardBlock(block, x, y + 1, z); renderer.setRenderBounds(0.0625, 0, 0.5625, 0.4375, 0.125, 0.9375); @@ -121,6 +125,7 @@ public class RenderRBMKControl implements ISimpleBlockRenderingHandler { renderer.renderStandardBlock(block, x, y + 1, z); renderer.setRenderBounds(0.5625, 0, 0.0625, 0.9375, 0.125, 0.4375); renderer.renderStandardBlock(block, x, y + 1, z); + RBMKPipedBase.renderPipes = false; } } else { } diff --git a/src/main/java/com/hbm/render/block/RenderRBMKRod.java b/src/main/java/com/hbm/render/block/RenderRBMKRod.java index be5b71355..8ab79025e 100644 --- a/src/main/java/com/hbm/render/block/RenderRBMKRod.java +++ b/src/main/java/com/hbm/render/block/RenderRBMKRod.java @@ -40,12 +40,15 @@ public class RenderRBMKRod implements ISimpleBlockRenderingHandler { tessellator.startDrawingQuads(); ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element, "Inner", rod.inner, tessellator, 0, false); ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element, "Cap", iicon, tessellator, 0, false); - ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element_rods, "Rods", rod.fuel, tessellator, 0, false); tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, -0.5, 0, -0.5, sideIcon); tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, -0.5, 0, -0.5, sideIcon); tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, -0.5, 0, -0.5, sideIcon); tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, -0.5, 0, -0.5, sideIcon); tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_I(0x304825); + ObjUtil.renderPartWithIcon((HFRWavefrontObject) ResourceManager.rbmk_element_rods, "Rods", rod.fuel, tessellator, 0, false); + tessellator.draw(); GL11.glTranslated(0, 1, 0); } diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibraryDoors.java b/src/main/java/com/hbm/render/item/ItemRenderLibraryDoors.java index 6c5f68cc5..cbb097cd7 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibraryDoors.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibraryDoors.java @@ -112,7 +112,7 @@ public class ItemRenderLibraryDoors { } public void renderCommon() { GL11.glRotated(90, 0, 1, 0); - bindTexture(ResourceManager.pheo_water_door_tex); + Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.WATER_DOOR.getCyclingSkins()); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.pheo_water_door.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); @@ -164,7 +164,7 @@ public class ItemRenderLibraryDoors { GL11.glScaled(3.8, 3.8, 3.8); } public void renderCommon() { - bindTexture(ResourceManager.pheo_containment_door_tex); + Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.QE_CONTAINMENT.getCyclingSkins()); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.pheo_containment_door.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java b/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java index 0d4f3a7d3..a1cd6ca4b 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java @@ -6,6 +6,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.albion.TileEntityPABeamline; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; @@ -29,9 +30,25 @@ public class RenderPABeamline extends TileEntitySpecialRenderer implements IItem case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; } + TileEntityPABeamline beamline = (TileEntityPABeamline) tile; + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.pa_beamline_tex); - ResourceManager.pa_beamline.renderAll(); + + if(!beamline.window) { + ResourceManager.pa_beamline.renderPart("Beamline"); + } else { + ResourceManager.pa_beamline.renderPart("BeamlineWindow"); + + float flash = beamline.prevLight + (beamline.light - beamline.prevLight) * f; + GL11.glColor3f(0.9F * flash, 0.9F * flash, 1.0F * flash); + GL11.glDisable(GL11.GL_TEXTURE_2D); + RenderArcFurnace.fullbright(true); + ResourceManager.pa_beamline.renderPart("BeamlineGlass"); + RenderArcFurnace.fullbright(false); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 1F); + } GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); @@ -53,7 +70,7 @@ public class RenderPABeamline extends TileEntitySpecialRenderer implements IItem GL11.glRotated(90, 0, 1, 0); GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.pa_beamline_tex); - ResourceManager.pa_beamline.renderAll(); + ResourceManager.pa_beamline.renderPart("Beamline"); GL11.glShadeModel(GL11.GL_FLAT); }}; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKFuelChannel.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKFuelChannel.java index 1083a178a..2fe7d1608 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKFuelChannel.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKFuelChannel.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; +import com.hbm.util.ColorUtil; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -20,11 +21,13 @@ public class RenderRBMKFuelChannel extends TileEntitySpecialRenderer { boolean hasRod = false; boolean cherenkov = false; + int color = 0; if(te instanceof TileEntityRBMKRod) { TileEntityRBMKRod rod = (TileEntityRBMKRod) te; if(rod.hasRod) hasRod = true; if(rod.fluxQuantity > 5) cherenkov = true; + color = rod.rodColor; } GL11.glPushMatrix(); @@ -50,12 +53,14 @@ public class RenderRBMKFuelChannel extends TileEntitySpecialRenderer { if(hasRod) { GL11.glPushMatrix(); bindTexture(texture_rods); + GL11.glColor3f(ColorUtil.fr(color), ColorUtil.fg(color), ColorUtil.fb(color)); for(int j = 0; j <= offset; j++) { ResourceManager.rbmk_element_rods_vbo.renderPart("Rods"); GL11.glTranslated(0, 1, 0); } - + + GL11.glColor3f(1F, 1F, 1F); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/door/RenderContainmentDoor.java b/src/main/java/com/hbm/render/tileentity/door/RenderContainmentDoor.java index 7b70b2c57..3844c70ba 100644 --- a/src/main/java/com/hbm/render/tileentity/door/RenderContainmentDoor.java +++ b/src/main/java/com/hbm/render/tileentity/door/RenderContainmentDoor.java @@ -5,6 +5,7 @@ import java.nio.DoubleBuffer; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; +import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import net.minecraft.client.Minecraft; @@ -16,8 +17,8 @@ public class RenderContainmentDoor implements IRenderDoors { @Override public void render(TileEntityDoorGeneric door, DoubleBuffer buf) { - - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.pheo_containment_door_tex); + + Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.QE_CONTAINMENT.getSkinFromIndex(door.getSkinIndex())); double maxRaise = 2.25; double raise = 0; diff --git a/src/main/java/com/hbm/render/tileentity/door/RenderWaterDoor.java b/src/main/java/com/hbm/render/tileentity/door/RenderWaterDoor.java index acc849aa1..9cc878c23 100644 --- a/src/main/java/com/hbm/render/tileentity/door/RenderWaterDoor.java +++ b/src/main/java/com/hbm/render/tileentity/door/RenderWaterDoor.java @@ -5,6 +5,7 @@ import java.nio.DoubleBuffer; import org.lwjgl.opengl.GL11; import com.hbm.main.ResourceManager; +import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import net.minecraft.client.Minecraft; @@ -15,8 +16,8 @@ public class RenderWaterDoor implements IRenderDoors { @Override public void render(TileEntityDoorGeneric door, DoubleBuffer buf) { - - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.pheo_water_door_tex); + + Minecraft.getMinecraft().getTextureManager().bindTexture(DoorDecl.WATER_DOOR.getSkinFromIndex(door.getSkinIndex())); double maxRot = 120; double rot = 0; diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index a5f24e673..591cc3103 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -418,6 +418,18 @@ public abstract class DoorDecl { return null; } + public ResourceLocation[] skins; + + @SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() { + if(skins == null) skins = new ResourceLocation[] { + ResourceManager.pheo_containment_door_tex, + ResourceManager.pheo_containment_door_trefoil_tex + }; + return skins; + } + + @Override public int getSkinCount() { return 2; } + @Override public int timeToOpen() { return 160; }; @Override public int[][] getDoorOpenRanges() { return new int[][] { { -1, 0, 0, 3, 3, 1 } }; } @Override public int[] getDimensions() { return new int[] { 2, 0, 0, 0, 1, 1 }; } @@ -457,6 +469,18 @@ public abstract class DoorDecl { return null; } + public ResourceLocation[] skins; + + @SideOnly(Side.CLIENT) @Override public ResourceLocation[] getSEDNASkins() { + if(skins == null) skins = new ResourceLocation[] { + ResourceManager.pheo_water_door_tex, + ResourceManager.pheo_water_door_clean_tex + }; + return skins; + } + + @Override public int getSkinCount() { return 2; } + @Override public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) { if(!open) return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index e58d00987..b1602f53e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -24,7 +24,7 @@ import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -36,7 +36,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.EnumSkyBlock; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable { +public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiverMK2, IConfigurableMachine, IFluidCopiable { public int heat; public FluidTank[] tanks; @@ -267,7 +267,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPa private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + this.tryProvide(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java index 012fecc40..e7bd7bace 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java @@ -19,7 +19,7 @@ import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,7 +30,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.EnumSkyBlock; -public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable { +public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiverMK2, IConfigurableMachine, IFluidCopiable { public int heat; public FluidTank[] tanks; @@ -232,7 +232,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + this.tryProvide(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java index effe4f514..feb898aba 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java @@ -1,15 +1,65 @@ package com.hbm.tileentity.machine.albion; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.tileentity.TileEntity; +import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityPABeamline extends TileEntity implements IParticleUser { +public class TileEntityPABeamline extends TileEntityLoadedBase implements IParticleUser { + + public boolean window = false; + public boolean didPass = false; + public float light; + public float prevLight; + + @Override + public void updateEntity() { + + if(worldObj.isRemote) { + + this.prevLight = this.light; + if(this.light > 0) this.light -= 0.25F; + + if(this.light > this.prevLight) this.prevLight = this.light; + + } else { + this.networkPackNT(150); + } + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(window); + buf.writeBoolean(didPass); + didPass = false; + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.window = buf.readBoolean(); + this.didPass = buf.readBoolean(); + if(didPass) light = 2F; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.window = nbt.getBoolean("window"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("window", window); + } @Override public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { @@ -21,6 +71,7 @@ public class TileEntityPABeamline extends TileEntity implements IParticleUser { @Override public void onEnter(Particle particle, ForgeDirection dir) { particle.addDistance(3); + this.didPass = true; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java index ac4bd099d..993b76359 100644 --- a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java @@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -78,7 +79,10 @@ public class TileEntityPASource extends TileEntityCooledBase implements IGUIProv if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); - for(int i = 0; i < 10; i++) { + int steps = 1; + if(this.particle != null) steps = 1 + MathHelper.clamp_int(this.particle.momentum / 1_000, 0, 9); + + for(int i = 0; i < steps; i++) { if(particle != null) { this.state = PAState.RUNNING; steppy(); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java index ab08afd1a..c2f2abaf1 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java @@ -39,7 +39,8 @@ public class RBMKDials { KEY_ABSORBER_EFFICIENCY("dialAbsorberEfficiency", 1.0), KEY_REFLECTOR_EFFICIENCY("dialReflectorEfficiency", 1.0), KEY_DISABLE_DEPLETION("dialDisableDepletion", false), - KEY_DISABLE_XENON("dialDisableXenon", false); + KEY_DISABLE_XENON("dialDisableXenon", false), + KEY_ABSORBER_HEAT_CONVERSION("dialAbsorberHeatConversion", 0.05); public final String keyString; public final Object defValue; @@ -109,6 +110,7 @@ public class RBMKDials { gameRules.get(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE.keyString))); gameRules.get(RBMKKeys.KEY_MODERATOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_MODERATOR_EFFICIENCY, 0.0D, 1.0D))); gameRules.get(RBMKKeys.KEY_ABSORBER_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION, 0.0D, 1.0D))); gameRules.get(RBMKKeys.KEY_REFLECTOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REFLECTOR_EFFICIENCY, 0.0D, 1.0D))); gameRules.get(RBMKKeys.KEY_DISABLE_DEPLETION).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_DEPLETION.keyString))); gameRules.get(RBMKKeys.KEY_DISABLE_XENON).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_XENON.keyString))); @@ -347,6 +349,15 @@ public class RBMKDials { return (double) getGameRule(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY); } + /** + * How many °C are generated per one flux that hits an absorber. + * @param world + * @return + */ + public static double getAbsorberHeatConversion(World world) { + return (double) getGameRule(world, RBMKKeys.KEY_ABSORBER_HEAT_CONVERSION); + } + /** * The percentage of neutron to reflect when a stream hits a reflector column. * @param world diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index fbe930c0f..6e2341951 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,8 +1,12 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType; +import com.hbm.interfaces.NotableComments; + +import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -13,19 +17,42 @@ import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; +@NotableComments @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent { +public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent, CompatHandler.OCComponent, IEnergyReceiverMK2 { @SideOnly(Side.CLIENT) public double lastLevel; public double level; public static final double speed = 0.00277D; // it takes around 18 seconds for the thing to fully extend public double targetLevel; + + public boolean hasPower = false;; + public long power; + public static final long consumption = 5_000; + public static final long maxPower = consumption * 10; // enough buffer for half a second of movement public TileEntityRBMKControl() { super(0); } + + public boolean isPowered() { + return this.getBlockType() == ModBlocks.rbmk_control_reasim || this.getBlockType() == ModBlocks.rbmk_control_reasim_auto; + } + + @Override public long getPower() { return power; } + @Override public void setPower(long power) { this.power = power; } + @Override public long getMaxPower() { return isPowered() ? this.maxPower : 0; } + + @Override public boolean canConnect(ForgeDirection dir) { + return isPowered() ? dir == ForgeDirection.DOWN : false; + } + + @Override public ConnectionPriority getPriority() { + return ConnectionPriority.LOW; // high would make more sense, but i am a sadistic asshole + } @Override public boolean isLidRemovable() { @@ -39,15 +66,30 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im this.lastLevel = this.level; } else { - - if(level < targetLevel) { - level += speed * RBMKDials.getControlSpeed(worldObj); - if(level > targetLevel) level = targetLevel; + + this.hasPower = true; + + if(this.isPowered()) { + this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + if(this.power < consumption) this.hasPower = false; } - if(level > targetLevel) { - level -= speed * RBMKDials.getControlSpeed(worldObj); - if(level < targetLevel) level = targetLevel; + this.lastLevel = this.level; + + if(this.hasPower) { + if(level < targetLevel) { + level += speed * RBMKDials.getControlSpeed(worldObj); + if(level > targetLevel) level = targetLevel; + } + + if(level > targetLevel) { + level -= speed * RBMKDials.getControlSpeed(worldObj); + if(level < targetLevel) level = targetLevel; + } + + if(this.isPowered() && level != lastLevel) { + this.power -= this.consumption; + } } } @@ -88,6 +130,8 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im super.serialize(buf); buf.writeDouble(this.level); buf.writeDouble(this.targetLevel); + buf.writeLong(this.power); + buf.writeBoolean(this.hasPower); } @Override @@ -95,6 +139,8 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im super.deserialize(buf); this.level = buf.readDouble(); this.targetLevel = buf.readDouble(); + this.power = buf.readLong(); + this.hasPower = buf.readBoolean(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 8dc07b42d..ca7814eda 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -53,6 +53,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public double lastFluxRatio; public boolean hasRod; + public int rodColor = 0; // Fuel rod item data client sync private String fuelYield; @@ -95,6 +96,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); + this.rodColor = rod.colorTint; double fluxRatioOut; double fluxQuantityOut; @@ -260,6 +262,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM buf.writeDouble(this.lastFluxQuantity); buf.writeDouble(this.lastFluxRatio); buf.writeBoolean(this.hasRod); + buf.writeInt(this.rodColor); if(this.hasRod) { ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); BufferUtil.writeString(buf, ItemRBMKRod.getYield(slots[0]) + " / " + rod.yield + " (" + (ItemRBMKRod.getEnrichment(slots[0]) * 100) + "%)"); @@ -276,6 +279,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.fluxQuantity = buf.readDouble(); this.fluxFastRatio = buf.readDouble(); this.hasRod = buf.readBoolean(); + this.rodColor = buf.readInt(); if(this.hasRod) { fuelYield = BufferUtil.readString(buf); fuelXenon = BufferUtil.readString(buf); diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj b/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj index 9757a9ea2..7c641575d 100644 --- a/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj +++ b/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj @@ -1,6 +1,146 @@ # Blender v2.79 (sub 0) OBJ File: 'beamline.blend' # www.blender.org -o Cube_Cube.001 +o BeamlineGlass +v 0.375000 0.750000 -1.000000 +v 0.375000 0.250000 -1.000000 +v 0.375000 0.250000 1.000000 +v 0.375000 0.750000 1.000000 +v -0.375000 0.250000 -1.000000 +v -0.375000 0.250000 1.000000 +v -0.375000 0.750000 1.000000 +v -0.375000 0.750000 -1.000000 +vt 0.700000 0.437500 +vt 0.300000 0.312500 +vt 0.700000 0.312500 +vt 0.300000 0.812427 +vt 0.700000 0.937597 +vt 0.300000 0.937427 +vt 0.300000 0.437500 +vt 0.700000 0.812597 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 1/1/1 3/2/1 2/3/1 +f 7/4/2 5/5/2 6/6/2 +f 1/1/1 4/7/1 3/2/1 +f 7/4/2 8/8/2 5/5/2 +o BeamlineWindow +v -0.500000 0.250000 1.000000 +v -0.500000 0.750000 1.000000 +v -0.500000 0.250000 -1.000000 +v -0.500000 0.750000 -1.000000 +v 0.500000 0.250000 1.000000 +v 0.500000 0.750000 1.000000 +v 0.500000 0.250000 -1.000000 +v 0.500000 0.750000 -1.000000 +v 0.500000 1.000000 -1.500000 +v 0.500000 0.000000 -1.500000 +v 0.500000 0.000000 1.500000 +v 0.500000 1.000000 1.500000 +v 0.375000 0.750000 -1.000000 +v 0.375000 0.250000 -1.000000 +v 0.375000 0.250000 1.000000 +v 0.375000 0.750000 1.000000 +v -0.500000 0.000000 -1.500000 +v -0.500000 0.000000 1.500000 +v -0.500000 1.000000 1.500000 +v -0.500000 1.000000 -1.500000 +v -0.375000 0.250000 -1.000000 +v -0.375000 0.250000 1.000000 +v -0.375000 0.750000 1.000000 +v -0.375000 0.750000 -1.000000 +vt 0.700000 0.812597 +vt 0.300000 0.843677 +vt 0.300000 0.812427 +vt 0.800000 0.500000 +vt 1.000000 0.250000 +vt 1.000000 0.500000 +vt 0.300000 0.312469 +vt 0.325000 0.437500 +vt 0.300000 0.437469 +vt 0.200000 0.250000 +vt 0.000000 0.500000 +vt 0.000000 0.250000 +vt 0.800000 0.250000 +vt 0.200000 0.000000 +vt 0.800000 0.000000 +vt 0.800000 0.750000 +vt 0.200000 0.500000 +vt 0.800000 0.500000 +vt 0.700000 0.312500 +vt 0.700000 0.437500 +vt 0.200000 0.250000 +vt 0.300000 0.343750 +vt 0.700000 0.406250 +vt 0.675000 0.312492 +vt 0.700000 0.937597 +vt 0.200000 1.000000 +vt 0.300000 0.937427 +vt 0.300000 0.937458 +vt 0.200000 0.750000 +vt 0.300000 0.812458 +vt 0.800000 1.000000 +vt 0.700000 0.906347 +vt 0.675000 0.812597 +vt 0.325000 0.937427 +vt 0.700000 0.843847 +vt 0.800000 0.250000 +vt 0.325000 0.312500 +vt 0.200000 0.500000 +vt 0.700000 0.343750 +vt 0.300000 0.406250 +vt 0.675000 0.437492 +vt 0.300000 0.906177 +vt 0.675000 0.937597 +vt 0.325000 0.812427 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 12/9/3 31/10/3 10/11/3 +f 28/12/4 18/13/4 25/14/4 +f 13/15/4 24/16/4 14/17/4 +f 20/18/5 26/19/5 19/20/5 +f 18/21/3 26/22/3 25/23/3 +f 28/24/6 20/25/6 17/26/6 +f 15/27/7 17/26/7 16/28/7 +f 13/15/7 18/21/7 15/27/7 +f 16/28/7 20/25/7 14/17/7 +f 14/17/7 19/29/7 13/15/7 +f 15/27/6 23/30/6 13/15/6 +f 14/17/3 21/31/3 16/28/3 +f 16/28/5 22/32/5 15/27/5 +f 11/33/8 26/34/8 9/35/8 +f 9/36/8 27/37/8 10/38/8 +f 10/11/8 28/24/8 12/9/8 +f 12/9/8 25/39/8 11/33/8 +f 9/35/6 29/40/6 11/33/6 +f 11/33/5 32/41/5 12/9/5 +f 10/38/4 30/42/4 9/36/4 +f 12/9/3 32/43/3 31/10/3 +f 28/12/4 17/44/4 18/13/4 +f 13/15/4 23/45/4 24/16/4 +f 20/18/5 27/46/5 26/19/5 +f 18/21/3 19/29/3 26/22/3 +f 28/24/6 27/37/6 20/25/6 +f 15/27/7 18/21/7 17/26/7 +f 13/15/7 19/29/7 18/21/7 +f 16/28/7 17/26/7 20/25/7 +f 14/17/7 20/25/7 19/29/7 +f 15/27/6 22/47/6 23/30/6 +f 14/17/3 24/48/3 21/31/3 +f 16/28/5 21/49/5 22/32/5 +f 11/33/8 25/39/8 26/34/8 +f 9/36/8 26/34/8 27/37/8 +f 10/11/8 27/37/8 28/24/8 +f 12/9/8 28/24/8 25/39/8 +f 9/35/6 30/50/6 29/40/6 +f 11/33/5 29/51/5 32/41/5 +f 10/38/4 31/52/4 30/42/4 +o Beamline v -0.500000 0.000000 1.500000 v -0.500000 1.000000 1.500000 v -0.500000 0.000000 -1.500000 @@ -30,15 +170,15 @@ vn 0.0000 0.0000 1.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 s off -f 2/1/1 3/2/1 1/3/1 -f 4/4/2 7/5/2 3/6/2 -f 8/7/3 5/8/3 7/9/3 -f 6/10/4 1/11/4 5/12/4 -f 7/13/5 1/3/5 3/2/5 -f 4/4/6 6/10/6 8/7/6 -f 2/1/1 4/4/1 3/2/1 -f 4/4/2 8/7/2 7/5/2 -f 8/7/3 6/10/3 5/8/3 -f 6/10/4 2/1/4 1/11/4 -f 7/13/5 5/14/5 1/3/5 -f 4/4/6 2/1/6 6/10/6 +f 34/53/9 35/54/9 33/55/9 +f 36/56/10 39/57/10 35/58/10 +f 40/59/11 37/60/11 39/61/11 +f 38/62/12 33/63/12 37/64/12 +f 39/65/13 33/55/13 35/54/13 +f 36/56/14 38/62/14 40/59/14 +f 34/53/9 36/56/9 35/54/9 +f 36/56/10 40/59/10 39/57/10 +f 40/59/11 38/62/11 37/60/11 +f 38/62/12 34/53/12 33/63/12 +f 39/65/13 37/66/13 33/55/13 +f 36/56/14 34/53/14 38/62/14 diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_side.png index 29deb50b0..32a71f4fe 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_side.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_top.png index 609cfa25c..c530221bd 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_top.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_absorber_cover_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_side.png index 32a71f4fe..29deb50b0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_side.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_top.png index c530221bd..609cfa25c 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_top.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_blank_cover_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_side.png index 6b0dc2f30..0770631cf 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_side.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_top.png index 77e0a1714..24a2f7f1b 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_top.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_boiler_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_side.png deleted file mode 100644 index e53a1eae8..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_top.png deleted file mode 100644 index 9b2d75a18..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_auto_glass_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_side.png deleted file mode 100644 index e53a1eae8..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_top.png deleted file mode 100644 index 9b2d75a18..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_glass_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_side.png deleted file mode 100644 index e53a1eae8..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_side.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_top.png deleted file mode 100644 index 9b2d75a18..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_mod_glass_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_bottom.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_bottom.png new file mode 100644 index 000000000..113e82ac8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_side.png new file mode 100644 index 000000000..ff22fe3bf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_top.png new file mode 100644 index 000000000..f6115251c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_pipe_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_side.png new file mode 100644 index 000000000..395db6d38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_top.png new file mode 100644 index 000000000..498a1c713 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_auto_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_bottom.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_bottom.png new file mode 100644 index 000000000..113e82ac8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_side.png new file mode 100644 index 000000000..ff22fe3bf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_top.png new file mode 100644 index 000000000..f6115251c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_pipe_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_side.png new file mode 100644 index 000000000..395db6d38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_top.png new file mode 100644 index 000000000..498a1c713 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_control_reasim_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_fuel.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_fuel.png index 404fd2f86..843b190a0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_fuel.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_fuel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_mod_fuel.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_mod_fuel.png index 404fd2f86..843b190a0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_mod_fuel.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_mod_fuel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_fuel.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_fuel.png index 404fd2f86..843b190a0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_fuel.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_fuel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_mod_fuel.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_mod_fuel.png index 404fd2f86..843b190a0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_mod_fuel.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_element_reasim_mod_fuel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_side.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_side.png index 29deb50b0..32a71f4fe 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_side.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_top.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_top.png index 609cfa25c..c530221bd 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_top.png and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_reflector_cover_top.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png index e67d3accd..3a0457eb3 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control_auto.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control_auto.png index 67c57eb6e..09b127501 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control_auto.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control_auto.png differ diff --git a/src/main/resources/assets/hbm/textures/models/pheodoors/containment_door_trefoil.png b/src/main/resources/assets/hbm/textures/models/pheodoors/containment_door_trefoil.png new file mode 100644 index 000000000..3fcd30a8b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/pheodoors/containment_door_trefoil.png differ diff --git a/src/main/resources/assets/hbm/textures/models/pheodoors/water_door_clean.png b/src/main/resources/assets/hbm/textures/models/pheodoors/water_door_clean.png new file mode 100644 index 000000000..3c43df6a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/pheodoors/water_door_clean.png differ