From 2b5d95ea0155e55f689b362b80c544712b76876a Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 2 Jun 2021 00:17:54 +0200 Subject: [PATCH] RBMK outgasser column --- src/main/java/com/hbm/blocks/ModBlocks.java | 4 + .../blocks/machine/rbmk/RBMKOutgasser.java | 42 +++ src/main/java/com/hbm/handler/GUIHandler.java | 14 + .../com/hbm/inventory/SlotMachineOutput.java | 11 +- .../container/ContainerRBMKOutgasser.java | 64 +++++ .../com/hbm/inventory/gui/GUIRBMKConsole.java | 2 +- .../hbm/inventory/gui/GUIRBMKOutgasser.java | 42 +++ .../com/hbm/items/machine/ItemFluidIcon.java | 8 + src/main/java/com/hbm/main/MainRegistry.java | 2 + .../machine/rbmk/TileEntityRBMKConsole.java | 4 +- .../machine/rbmk/TileEntityRBMKOutgasser.java | 247 ++++++++++++++++++ .../machine/rbmk/TileEntityRBMKRod.java | 7 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../textures/blocks/rbmk/rbmk_outgasser.png | Bin 0 -> 882 bytes .../gui/reactors/gui_rbmk_console.png | Bin 5591 -> 5728 bytes .../gui/reactors/gui_rbmk_outgasser.png | Bin 0 -> 2972 bytes 17 files changed, 439 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKOutgasser.java create mode 100644 src/main/java/com/hbm/inventory/container/ContainerRBMKOutgasser.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKOutgasser.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_outgasser.png create mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_outgasser.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 6351b3a9f..b05c5d070 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -908,12 +908,14 @@ public class ModBlocks { public static Block rbmk_reflector; public static Block rbmk_absorber; public static Block rbmk_moderator; + public static Block rbmk_outgasser; public static Block rbmk_console; public static final int guiID_rbmk_rod = 113; public static final int guiID_rbmk_boiler = 114; public static final int guiID_rbmk_control = 115; public static final int guiID_rbmk_control_auto = 116; public static final int guiID_rbmk_console = 117; + public static final int guiID_rbmk_outgasser = 119; public static Block rbmk_loader; public static Block pribris; public static Block pribris_burning; @@ -1700,6 +1702,7 @@ public class ModBlocks { rbmk_reflector = new RBMKReflector().setBlockName("rbmk_reflector").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_reflector"); rbmk_absorber = new RBMKAbsorber().setBlockName("rbmk_absorber").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_absorber"); rbmk_moderator = new RBMKModerator().setBlockName("rbmk_moderator").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_moderator"); + rbmk_outgasser = new RBMKOutgasser().setBlockName("rbmk_outgasser").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_outgasser"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_loader = new BlockGeneric(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); @@ -2419,6 +2422,7 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_reflector, rbmk_reflector.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_absorber, rbmk_absorber.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_moderator, rbmk_moderator.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_outgasser, rbmk_outgasser.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_loader, rbmk_loader.getUnlocalizedName()); GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKOutgasser.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKOutgasser.java new file mode 100644 index 000000000..e8dded802 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKOutgasser.java @@ -0,0 +1,42 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.rbmk.RBMKDials; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKOutgasser; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RBMKOutgasser extends RBMKBase { + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= this.offset) + return new TileEntityRBMKOutgasser(); + + if(hasExtra(meta)) + return new TileEntityProxyCombo(false, false, true); + + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return openInv(world, x, y, z, player, ModBlocks.guiID_rbmk_outgasser); + } + + @Override + public int getRenderType(){ + return this.renderIDPassive; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + this.makeExtra(world, x, y + RBMKDials.getColumnHeight(world), z); + } +} diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 7afca716b..763c98472 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -827,6 +827,13 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_rbmk_outgasser: { + if(entity instanceof TileEntityRBMKOutgasser) { + return new ContainerRBMKOutgasser(player.inventory, (TileEntityRBMKOutgasser) entity); + } + return null; + } } // NON-TE CONTAINERS @@ -1641,6 +1648,13 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_rbmk_outgasser: { + if(entity instanceof TileEntityRBMKOutgasser) { + return new GUIRBMKOutgasser(player.inventory, (TileEntityRBMKOutgasser) entity); + } + return null; + } } // ITEM GUIS diff --git a/src/main/java/com/hbm/inventory/SlotMachineOutput.java b/src/main/java/com/hbm/inventory/SlotMachineOutput.java index fbe39ac73..06f19f093 100644 --- a/src/main/java/com/hbm/inventory/SlotMachineOutput.java +++ b/src/main/java/com/hbm/inventory/SlotMachineOutput.java @@ -9,10 +9,9 @@ public class SlotMachineOutput extends Slot { public SlotMachineOutput(IInventory inventory, int i, int j, int k) { super(inventory, i, j, k); } - + @Override - public boolean isItemValid(ItemStack p_75214_1_) - { - return false; - } -} + public boolean isItemValid(ItemStack p_75214_1_) { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKOutgasser.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKOutgasser.java new file mode 100644 index 000000000..98d1ade30 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKOutgasser.java @@ -0,0 +1,64 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKOutgasser; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerRBMKOutgasser extends Container { + + private TileEntityRBMKOutgasser rbmk; + + public ContainerRBMKOutgasser(InventoryPlayer invPlayer, TileEntityRBMKOutgasser tedf) { + rbmk = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 48, 45)); + this.addSlotToContainer(new SlotMachineOutput(tedf, 1, 112, 69)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 == 0) { + if(!this.mergeItemStack(var5, rbmk.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, rbmk.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index c3908777d..10ce6af38 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -217,7 +217,7 @@ public class GUIRBMKConsole extends GuiInfoContainer { drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); if(az5Lid) { - drawTexturedModalRect(guiLeft + 30, guiTop + 138, 90, 172, 28, 28); + drawTexturedModalRect(guiLeft + 30, guiTop + 138, 110, 172, 28, 28); } int bX = 86; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKOutgasser.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKOutgasser.java new file mode 100644 index 000000000..33bea4886 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKOutgasser.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKOutgasser; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKOutgasser; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKOutgasser extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_outgasser.png"); + private TileEntityRBMKOutgasser rod; + + public GUIRBMKOutgasser(InventoryPlayer invPlayer, TileEntityRBMKOutgasser tedf) { + super(new ContainerRBMKOutgasser(invPlayer, tedf)); + rod = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.rod.hasCustomInventoryName() ? this.rod.getInventoryName() : I18n.format(this.rod.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 1f8ba1719..50a2bc455 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -49,6 +49,14 @@ public class ItemFluidIcon extends Item { return stack.copy(); } + + public static int getQuantity(ItemStack stack) { + + if(!stack.hasTagCompound()) + return 0; + + return stack.getTagCompound().getInteger("fill"); + } public String getItemStackDisplayName(ItemStack stack) { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index eaecc23dc..4429b9a57 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -467,6 +467,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityFEL.class, "tileentity_fel"); GameRegistry.registerTileEntity(TileEntityDemonLamp.class, "tileentity_demonlamp"); GameRegistry.registerTileEntity(TileEntityStorageDrum.class, "tileentity_waste_storage_drum"); + GameRegistry.registerTileEntity(TileEntityDeaerator.class, "tileentity_deaerator"); GameRegistry.registerTileEntity(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); GameRegistry.registerTileEntity(TileEntityRBMKControlManual.class, "tileentity_rbmk_control"); @@ -476,6 +477,7 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityRBMKReflector.class, "tileentity_rbmk_reflector"); GameRegistry.registerTileEntity(TileEntityRBMKAbsorber.class, "tileentity_rbmk_absorber"); GameRegistry.registerTileEntity(TileEntityRBMKModerator.class, "tileentity_rbmk_moderator"); + GameRegistry.registerTileEntity(TileEntityRBMKOutgasser.class, "tileentity_rbmk_outgasser"); GameRegistry.registerTileEntity(TileEntityRBMKConsole.class, "tileentity_rbmk_console"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index 7f3ea60fa..4da5a48c2 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -189,7 +189,9 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon BOILER(40), MODERATOR(50), ABSORBER(60), - REFLECTOR(70); + REFLECTOR(70), + OUTGASSER(80), + BREEDER(90); public int offset; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java new file mode 100644 index 000000000..42a10db03 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -0,0 +1,247 @@ +package com.hbm.tileentity.machine.rbmk; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.RecipesCommon; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.SILEXRecipes.SILEXRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.lib.Library; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; + +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IFluidSource { + + public List list = new ArrayList(); + public FluidTank gas; + public double progress; + public static final int duration = 10000; + + public TileEntityRBMKOutgasser() { + super(2); + gas = new FluidTank(FluidType.TRITIUM, 64000, 0); + } + + @Override + public String getName() { + return "container.rbmkOutgasser"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + gas.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + + if(worldObj.getTotalWorldTime() % 10 == 0) + fillFluidInit(gas.getTankType()); + } + } + + @Override + public void receiveFlux(NType type, double flux) { + + if(canProcess()) { + + if(type == NType.FAST) + flux *= 0.2D; + + progress += flux; + + if(progress > duration) { + process(); + this.markDirty(); + } + } + } + + private static HashMap recipes = new HashMap(); + + static { + recipes.put("ingotLithium", ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, FluidType.TRITIUM.ordinal()), 1000)); + recipes.put("dustLithium", ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, FluidType.TRITIUM.ordinal()), 1000)); + recipes.put(new ComparableStack(ModItems.powder_lithium_tiny), ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, FluidType.TRITIUM.ordinal()), 100)); + recipes.put("ingotGold", new ItemStack(ModItems.ingot_au198)); + recipes.put("nuggetGold", new ItemStack(ModItems.nugget_au198)); + recipes.put("dustGold", new ItemStack(ModItems.powder_au198)); + } + + private boolean canProcess() { + + if(slots[0] == null) + return false; + + ItemStack output = getOutput(slots[0]); + + if(output == null) + return false; + + if(output.getItem() == ModItems.fluid_icon) { + return output.getItemDamage() == gas.getTankType().ordinal() && gas.getFill() + ItemFluidIcon.getQuantity(output) <= gas.getMaxFill(); + } + + if(slots[1] == null) + return true; + + return slots[1].getItem() == output.getItem() && slots[1].getItemDamage() == output.getItemDamage() && slots[1].stackSize + output.stackSize <= slots[1].getMaxStackSize(); + } + + public static ItemStack getOutput(ItemStack stack) { + + if(stack == null || stack.getItem() == null) + return null; + + ComparableStack comp = new ComparableStack(stack); + + if(recipes.containsKey(comp)) + return recipes.get(comp); + + String[] dictKeys = comp.getDictKeys(); + + for(String key : dictKeys) { + + if(recipes.containsKey(key)) + return recipes.get(key); + } + + return null; + } + + private void process() { + + ItemStack output = getOutput(slots[0]); + + if(output.getItem() == ModItems.fluid_icon) { + gas.setFill(gas.getFill() + ItemFluidIcon.getQuantity(output)); + return; + } + + if(slots[1] == null) { + slots[1] = output.copy(); + } else { + slots[1].stackSize += output.stackSize; + } + } + + @Override + public void fillFluidInit(FluidType type) { + fillFluid(this.xCoord, this.yCoord + RBMKDials.getColumnHeight(worldObj) + 1, this.zCoord, getTact(), type); + + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.rbmk_loader) { + + fillFluid(this.xCoord + 1, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord - 1, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord + 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord - 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord, getTact(), type); + } + + if(worldObj.getBlock(xCoord, yCoord - 2, zCoord) == ModBlocks.rbmk_loader) { + + fillFluid(this.xCoord + 1, this.yCoord - 2, this.zCoord, getTact(), type); + fillFluid(this.xCoord - 1, this.yCoord - 2, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord + 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord - 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 3, this.zCoord, getTact(), type); + } + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + @Deprecated //why are we still doing this? + public boolean getTact() { return worldObj.getTotalWorldTime() % 20 < 10; } + + @Override + public void setFillstate(int fill, int index) { + + if(index == 0) + gas.setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + + if(type == gas.getTankType()) + gas.setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + + if(index == 0) + gas.setTankType(type); + } + + @Override + public List getTanks() { + return new ArrayList() {{ add(gas); }}; + } + + @Override + public int getFluidFill(FluidType type) { + + if(type == gas.getTankType()) + return gas.getFill(); + + return 0; + } + + @Override + public List getFluidList(FluidType type) { + return list; + } + + @Override + public void clearFluidList(FluidType type) { + list.clear(); + } + + @Override + public ColumnType getConsoleType() { + return ColumnType.OUTGASSER; + } + + @Override + public NBTTagCompound getNBTForConsole() { + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("gas", this.gas.getFill()); + data.setInteger("maxGas", this.gas.getMaxFill()); + data.setShort("type", (short)this.gas.getTankType().ordinal()); + data.setDouble("progress", this.progress); + return data; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.heat = nbt.getDouble("progress"); + this.gas.readFromNBT(nbt, "gas"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setDouble("progress", this.progress); + this.gas.writeToNBT(nbt, "gas"); + } +} 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 7f64395ed..0a5617ee5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -115,8 +115,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM //burn baby burn if(te instanceof TileEntityRBMKRod) { TileEntityRBMKRod rod = (TileEntityRBMKRod)te; - rod.receiveFlux(stream, flux); - break; + + if(rod.getStackInSlot(0) != null && rod.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { + rod.receiveFlux(stream, flux); + break; + } } //set neutrons to slow diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 787c85ac6..393b00f25 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2932,6 +2932,7 @@ tile.rbmk_control.name=RBMK Steuerstäbe tile.rbmk_control_auto.name=RBMK Automatische Steuerstäbe tile.rbmk_loader.name=RBMK-Dampfadapter tile.rbmk_moderator.name=RBMK Graphitmoderator +tile.rbmk_outgasser.name=RBMK Bestrahlungskanal tile.rbmk_reflector.name=RBMK Wolframcarbid-Moderator tile.rbmk_rod.name=RBMK Brennstäbe tile.reactor_computer.name=Reaktorsteuerung diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 1f0a04ca3..72eb182c0 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3016,6 +3016,7 @@ tile.rbmk_control.name=RBMK Control Rods tile.rbmk_control_auto.name=RBMK Automatic Control Rods tile.rbmk_loader.name=RBMK Steam Connector tile.rbmk_moderator.name=RBMK Graphite Moderator +tile.rbmk_outgasser.name=RBMK Irradiation Channel tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector tile.rbmk_rod.name=RBMK Fuel Rod tile.reactor_computer.name=Reactor Control diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_outgasser.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_outgasser.png new file mode 100644 index 0000000000000000000000000000000000000000..09c245323d3a991d90399dcb136896ca88956711 GIT binary patch literal 882 zcmV-&1C9KNP)ZO>P=N5QV?~nL)j?jBJU-Lih$gim%}la0X5gd6`?}2-)Qd z2umO@Y|SDH8u~8_tBV1Hkv)`zKur(*s_ND2hnh~OnNB$8I2P;m`rTU7G+bOfx4A5H37bztG+P1|QBLGuM`iF?mh%?tg;qBYfa9X zl#+nZT1)07d!-arRY?`fzLXO8_xB$HI2N{KTS~njO1-tsdrwM?aUkc+X0suLAg#zb!@u9~_ZP-| zBgTkQN?K4VlXLFJ0eI_csQ_%t{p05!to@EsV2qJ{-6(DAtpjykOaGNp7-NVrqO}%4 z#+aSY>-Czds;KMw>l`R0D&;L>SEixNemC}Y0O-eoLc%f$0GrL`-R7c#F-E-i0=zc| zy!TX9B_;0aeR(fx8A8B&F91p)!kRI`I7bd~#!n z{gO6KgLAGQ2lfv*1)>{|kB{%}_)i1)$Pc`{yf7RNkNSbWq2Wyjmdhn|UCXO@1VH?N za}MVmudlD4s?tdST5Begi4d!-6|vd(1Gl%gD5cH;Ay4UZ1blG3D;2fb3`GIm+ z7tm_8ItlVi0AOn>x?;0fEJSQlN{mJ$%HDEwo+FO>f$QsQIb=Sc1E)3O%K)0Dp=laf z?264~GLb76wwA1n=ve>^hr=B|Q0(`7KF1ita=BzQ8XfcleM5A>IVWPYTCGHswAPHr zW2&mcS}XpbjA-AGbh>_EJRXZCobm%_0no<}^bNgUukqfqSS%##lA&`>bRUoreR_I2 z8vyYG!{Jc=2bPNn*zpO)4_sbeo>vFDegJmo{m`hLgM20a16C4k=Td8b_5c6?07*qo IM6N<$f-!5BXaE2J literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png index 62ea211c5c90f47e125723e651cbd365e02a3b16..5f24b0b7db01c4e84628a79c1f808710712cbf18 100644 GIT binary patch literal 5728 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 t&9-Oa!Nla`lc#|3=$BWzUP@aWFP2FXDsh(rk& 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 bf56F}$-lI8>}@&x?F(pK)Kh=0W*hoH{P$~s diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_outgasser.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_outgasser.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc62d443fc5f6d16f0c3fe0939826916e989e9f GIT binary patch literal 2972 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 Z?-F84*Mpk1mQbb!^v3ylus@GZ{|{6JMmYcg literal 0 HcmV?d00001