From f7dd3a0a93972553d2b172b7c3853688afd55839 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 16 Aug 2023 16:21:11 +0200 Subject: [PATCH 1/2] more PWR crap --- src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../java/com/hbm/blocks/machine/BlockPWR.java | 108 +++++++++++++++++- .../blocks/machine/MachinePWRController.java | 33 ++++-- .../hbm/inventory/container/ContainerPWR.java | 76 ++++++++++++ .../java/com/hbm/inventory/gui/GUIPWR.java | 40 +++++++ src/main/java/com/hbm/items/ModItems.java | 14 +++ .../com/hbm/items/machine/ItemPWRFuel.java | 26 +++++ .../java/com/hbm/tileentity/TileMappings.java | 4 + .../machine/TileEntityDiFurnace.java | 31 ++--- .../machine/TileEntityPWRController.java | 55 +++++++++ .../machine/rbmk/TileEntityRBMKInlet.java | 33 +----- .../machine/rbmk/TileEntityRBMKOutlet.java | 59 +--------- .../hbm/textures/gui/reactors/gui_pwr.png | Bin 5843 -> 5927 bytes .../hbm/textures/items/pwr_fuel.hea242.png | Bin 0 -> 428 bytes .../hbm/textures/items/pwr_fuel.hen237.png | Bin 0 -> 412 bytes .../hbm/textures/items/pwr_fuel.hep239.png | Bin 0 -> 403 bytes .../hbm/textures/items/pwr_fuel.hep241.png | Bin 0 -> 418 bytes .../hbm/textures/items/pwr_fuel.hes326.png | Bin 0 -> 431 bytes .../hbm/textures/items/pwr_fuel.hes327.png | Bin 0 -> 434 bytes .../hbm/textures/items/pwr_fuel.heu233.png | Bin 0 -> 433 bytes .../hbm/textures/items/pwr_fuel.heu235.png | Bin 0 -> 419 bytes .../hbm/textures/items/pwr_fuel.mea.png | Bin 0 -> 431 bytes .../hbm/textures/items/pwr_fuel.men.png | Bin 0 -> 429 bytes .../hbm/textures/items/pwr_fuel.mep.png | Bin 0 -> 414 bytes .../hbm/textures/items/pwr_fuel.meu.png | Bin 0 -> 422 bytes .../hbm/textures/items/pwr_fuel.mox.png | Bin 0 -> 414 bytes .../hbm/textures/items/pwr_fuel_base.png | Bin 0 -> 422 bytes .../hbm/textures/items/pwr_fuel_depleted.png | Bin 0 -> 373 bytes .../hbm/textures/items/pwr_fuel_hot.png | Bin 0 -> 401 bytes 29 files changed, 364 insertions(+), 117 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerPWR.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIPWR.java create mode 100644 src/main/java/com/hbm/items/machine/ItemPWRFuel.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hea242.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hep239.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png create mode 100644 src/main/resources/assets/hbm/textures/items/pwr_fuel_hot.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index f5b447bcd..371268c24 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -883,9 +883,9 @@ public class ModBlocks { public static Block pwr_neutron_source; public static Block pwr_reflector; public static Block pwr_casing; + public static Block pwr_port; public static Block pwr_controller; public static Block pwr_block; - public static Block pwr_port; public static Block reactor_element; public static Block reactor_control; diff --git a/src/main/java/com/hbm/blocks/machine/BlockPWR.java b/src/main/java/com/hbm/blocks/machine/BlockPWR.java index 865cff4c6..7012f5437 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockPWR.java +++ b/src/main/java/com/hbm/blocks/machine/BlockPWR.java @@ -1,20 +1,29 @@ package com.hbm.blocks.machine; +import java.util.Random; + import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.render.block.ct.CT; import com.hbm.render.block.ct.CTStitchReceiver; import com.hbm.render.block.ct.IBlockCT; +import com.hbm.tileentity.machine.TileEntityPWRController; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; -public class BlockPWR extends Block implements IBlockCT { +public class BlockPWR extends BlockContainer implements IBlockCT { @SideOnly(Side.CLIENT) protected IIcon iconPort; @@ -26,6 +35,11 @@ public class BlockPWR extends Block implements IBlockCT { public int getRenderType() { return CT.renderID; } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } @SideOnly(Side.CLIENT) public CTStitchReceiver rec; @SideOnly(Side.CLIENT) public CTStitchReceiver recPort; @@ -49,4 +63,96 @@ public class BlockPWR extends Block implements IBlockCT { public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { return block == ModBlocks.pwr_block || block == ModBlocks.pwr_controller; } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityBlockPWR(); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityBlockPWR) { + TileEntityBlockPWR pwr = (TileEntityBlockPWR) tile; + world.removeTileEntity(x, y, z); + if(pwr.block != null) { + world.setBlock(x, y, z, pwr.block); + TileEntity controller = world.getTileEntity(pwr.coreX, pwr.coreY, pwr.coreZ); + + if(controller instanceof TileEntityPWRController) { + ((TileEntityPWRController) controller).assembled = false; + } + } + } else { + world.removeTileEntity(x, y, z); + } + super.breakBlock(world, x, y, z, block, meta); + } + + public static class TileEntityBlockPWR extends TileEntity { + + public Block block; + public int coreX; + public int coreY; + public int coreZ; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0 && block != null) { + + if(worldObj.getChunkProvider().chunkExists(coreX >> 4, coreZ >> 4)) { + + TileEntity tile = worldObj.getTileEntity(coreX, coreY, coreZ); + + if(tile instanceof TileEntityPWRController) { + TileEntityPWRController controller = (TileEntityPWRController) tile; + if(!controller.assembled) { + this.getBlockType().breakBlock(worldObj, xCoord, yCoord, zCoord, this.getBlockType(), this.getBlockMetadata()); + } + } else { + this.getBlockType().breakBlock(worldObj, xCoord, yCoord, zCoord, this.getBlockType(), this.getBlockMetadata()); + } + } + } + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + block = Block.getBlockById(nbt.getInteger("block")); + if(block != Blocks.air) { + coreX = nbt.getInteger("cX"); + coreY = nbt.getInteger("cY"); + coreZ = nbt.getInteger("cZ"); + } else { + block = null; + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(block != null) { + nbt.setInteger("block", Block.getIdFromBlock(block)); + nbt.setInteger("cX", coreX); + nbt.setInteger("cY", coreY); + nbt.setInteger("cZ", coreZ); + } + } + + @Override + public void markDirty() { + if(this.worldObj != null) { + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java index 9eedb3d45..40c6748ed 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java @@ -4,8 +4,10 @@ import java.util.HashMap; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityPWRController; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -35,7 +37,7 @@ public class MachinePWRController extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - return null; + return new TileEntityPWRController(); } @Override @@ -67,10 +69,15 @@ public class MachinePWRController extends BlockContainer { if(world.isRemote) { return true; } else if(!player.isSneaking()) { + + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); - assemble(world, x, y, z); + if(!controller.assembled) { + assemble(world, x, y, z); + } else { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; } else { return false; @@ -87,29 +94,39 @@ public class MachinePWRController extends BlockContainer { assembly.put(new BlockPos(x, y, z), this); ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)).getOpposite(); - x += dir.offsetX; - z += dir.offsetZ; errored = false; - floodFill(world, x, y, z); + floodFill(world, x + dir.offsetX, y, z + dir.offsetZ); if(fuelRods.size() == 0) errored = true; if(!errored) { for(Entry entry : assembly.entrySet()) { + BlockPos pos = entry.getKey(); Block block = entry.getValue(); if(block != ModBlocks.pwr_controller) { if(block == ModBlocks.pwr_port) { - world.setBlock(entry.getKey().getX(), entry.getKey().getY(), entry.getKey().getZ(), ModBlocks.pwr_block, 1, 3); + world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 1, 3); } else { - world.setBlock(entry.getKey().getX(), entry.getKey().getY(), entry.getKey().getZ(), ModBlocks.pwr_block, 0, 3); + world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 0, 3); } + + TileEntityBlockPWR pwr = (TileEntityBlockPWR) world.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + pwr.block = block; + pwr.coreX = x; + pwr.coreY = y; + pwr.coreZ = z; + pwr.markDirty(); } } } + + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); + controller.assembled = !errored; + assembly.clear(); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerPWR.java b/src/main/java/com/hbm/inventory/container/ContainerPWR.java new file mode 100644 index 000000000..92b638808 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPWR.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityPWRController; + +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 ContainerPWR extends Container { + + TileEntityPWRController controller; + + public ContainerPWR(InventoryPlayer invPlayer, TileEntityPWRController controller) { + this.controller = controller; + + this.addSlotToContainer(new Slot(controller, 0, 53, 5)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, controller, 1, 89, 32)); + this.addSlotToContainer(new Slot(controller, 2, 8, 59)); + + 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, 108 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 164)); + } + } + + @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 <= 2) { + if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 2, 3, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return controller.isUseableByPlayer(player); + } + +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java new file mode 100644 index 000000000..8715854f1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -0,0 +1,40 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPWR; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityPWRController; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIPWR extends GuiInfoContainer { + + protected TileEntityPWRController controller; + private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_pwr.png"); + + public GUIPWR(InventoryPlayer inventory, TileEntityPWRController controller) { + super(new ContainerPWR(inventory, controller)); + this.controller = controller; + + this.xSize = 176; + this.ySize = 188; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.controller.hasCustomInventoryName() ? this.controller.getInventoryName() : I18n.format(this.controller.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/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 0ea177e3b..a5144423e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -21,6 +21,7 @@ import com.hbm.items.machine.*; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemPlateFuel.FunctionEnum; +import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemRBMKRod.EnumBurnFunc; import com.hbm.items.machine.ItemRBMKRod.EnumDepleteFunc; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -1103,6 +1104,10 @@ public class ModItems { public static Item plate_fuel_sa326; public static Item plate_fuel_ra226be; public static Item plate_fuel_pu238be; + + public static Item pwr_fuel; + public static Item pwr_fuel_hot; + public static Item pwr_fuel_depleted; public static Item rbmk_lid; public static Item rbmk_lid_glass; @@ -3547,6 +3552,10 @@ public class ModItems { plate_fuel_sa326 = new ItemPlateFuel(2000000).setFunction(FunctionEnum.LINEAR, 80).setUnlocalizedName("plate_fuel_sa326").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_sa326"); plate_fuel_ra226be = new ItemPlateFuel(1300000).setFunction(FunctionEnum.PASSIVE, 30).setUnlocalizedName("plate_fuel_ra226be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_ra226be"); plate_fuel_pu238be = new ItemPlateFuel(1000000).setFunction(FunctionEnum.PASSIVE, 50).setUnlocalizedName("plate_fuel_pu238be").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":plate_fuel_pu238be"); + + pwr_fuel = new ItemPWRFuel().setUnlocalizedName("pwr_fuel").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel"); + pwr_fuel_hot = new ItemEnumMulti(EnumPWRFuel.class, true, false).setUnlocalizedName("pwr_fuel_hot").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel_hot"); + pwr_fuel_depleted = new ItemEnumMulti(EnumPWRFuel.class, true, false).setUnlocalizedName("pwr_fuel_depleted").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pwr_fuel_depleted"); rbmk_lid = new ItemRBMKLid().setUnlocalizedName("rbmk_lid").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_lid"); rbmk_lid_glass = new ItemRBMKLid().setUnlocalizedName("rbmk_lid_glass").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":rbmk_lid_glass"); @@ -6640,6 +6649,11 @@ public class ModItems { GameRegistry.registerItem(plate_fuel_ra226be, plate_fuel_ra226be.getUnlocalizedName()); GameRegistry.registerItem(plate_fuel_pu238be, plate_fuel_pu238be.getUnlocalizedName()); + //PWR Parts + GameRegistry.registerItem(pwr_fuel, pwr_fuel.getUnlocalizedName()); + GameRegistry.registerItem(pwr_fuel_hot, pwr_fuel_hot.getUnlocalizedName()); + GameRegistry.registerItem(pwr_fuel_depleted, pwr_fuel_depleted.getUnlocalizedName()); + //RBMK parts GameRegistry.registerItem(rbmk_lid, rbmk_lid.getUnlocalizedName()); GameRegistry.registerItem(rbmk_lid_glass, rbmk_lid_glass.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemPWRFuel.java b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java new file mode 100644 index 000000000..95198f494 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemPWRFuel.java @@ -0,0 +1,26 @@ +package com.hbm.items.machine; + +import com.hbm.items.ItemEnumMulti; + +public class ItemPWRFuel extends ItemEnumMulti { + + public ItemPWRFuel() { + super(EnumPWRFuel.class, true, true); + } + + public static enum EnumPWRFuel { + MEU, + HEU233, + HEU235, + MEN, + HEN237, + MOX, + MEP, + HEP239, + HEP241, + MEA, + HEA242, + HES326, + HES327; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 74b76c50b..fd8d60aca 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -14,6 +14,7 @@ import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; +import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; @@ -216,6 +217,9 @@ public class TileMappings { put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); + + put(TileEntityBlockPWR.class, "tileentity_block_pwr"); + put(TileEntityPWRController.class, "tileentity_pwr_controller"); putNetwork(); putBombs(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index 1a10e1a7e..4e5cf6c3b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -132,32 +132,19 @@ public class TileEntityDiFurnace extends TileEntityMachinePolluting implements I } public boolean canProcess() { - if(slots[0] == null || slots[1] == null) { - return false; - } + if(slots[0] == null || slots[1] == null) return false; + if(!this.hasPower()) return false; - if(!this.hasPower()) { - return false; - } - - ItemStack itemStack = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); - if(itemStack == null) { - return false; - } + ItemStack output = BlastFurnaceRecipes.getOutput(slots[0], slots[1]); + if(output == null) return false; + if(slots[3] == null) return true; + if(!slots[3].isItemEqual(output)) return false; - if(slots[3] == null) { + if(slots[3].stackSize + output.stackSize <= slots[3].getMaxStackSize()) { return true; } - - if(!slots[3].isItemEqual(itemStack)) { - return false; - } - - if(slots[3].stackSize < getInventoryStackLimit() && slots[3].stackSize < slots[3].getMaxStackSize()) { - return true; - } else { - return slots[3].stackSize < itemStack.getMaxStackSize(); - } + + return false; } private void processItem() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java new file mode 100644 index 000000000..f00014765 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -0,0 +1,55 @@ +package com.hbm.tileentity.machine; + +import com.hbm.inventory.container.ContainerPWR; +import com.hbm.inventory.gui.GUIPWR; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider { + + public boolean assembled; + + public TileEntityPWRController() { + super(3); + } + + @Override + public String getName() { + return "container.pwrController"; + } + + @Override + public void updateEntity() { + + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.assembled = nbt.getBoolean("assembled"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setBoolean("assembled", assembled); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPWR(player.inventory, this); + } + + @Override + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPWR(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index ddd96c7de..be66e767d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -2,8 +2,6 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.blocks.machine.rbmk.RBMKBase; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityLoadedBase; @@ -13,12 +11,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidAcceptor, IFluidStandardReceiver { +public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidStandardReceiver { public FluidTank water; public TileEntityRBMKInlet() { - water = new FluidTank(Fluids.WATER, 32000, 0); + water = new FluidTank(Fluids.WATER, 32000); } @Override @@ -63,33 +61,6 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidA this.water.writeToNBT(nbt, "tank"); } - @Override - public void setFillForSync(int fill, int index) { - if(index == 0) water.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == Fluids.WATER) water.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - if(index == 0) water.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == Fluids.WATER) return water.getFill(); - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == Fluids.WATER) return water.getMaxFill(); - return 0; - } - @Override public FluidTank[] getAllTanks() { return new FluidTank[] {water}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index 2c047cfd1..259ac0b4c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -1,16 +1,9 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.machine.rbmk.RBMKBase; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityLoadedBase; import net.minecraft.block.Block; @@ -18,13 +11,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidSource, IFluidStandardSender { +public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidStandardSender { - public List list = new ArrayList(); public FluidTank steam; public TileEntityRBMKOutlet() { - steam = new FluidTank(Fluids.SUPERHOTSTEAM, 32000, 0); + steam = new FluidTank(Fluids.SUPERHOTSTEAM, 32000); } @Override @@ -53,8 +45,7 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid } } - fillFluidInit(this.steam.getTankType()); - this.sendFluidToAll(steam, this); + fillFluidInit(); } } @@ -70,49 +61,9 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid this.steam.writeToNBT(nbt, "tank"); } - @Override - public void setFillForSync(int fill, int index) { - steam.setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - steam.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - steam.setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - return steam.getFill(); - } - - @Override - public void fillFluidInit(FluidType type) { + public void fillFluidInit() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - fillFluid(this.xCoord + dir.offsetX, this.yCoord + dir.offsetY, this.zCoord + dir.offsetZ, 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 - public boolean getTact() { return worldObj.getTotalWorldTime() % 2 == 0; } - - @Override - public List getFluidList(FluidType type) { - return this.list; - } - - @Override - public void clearFluidList(FluidType type) { - this.list.clear(); + this.sendFluid(steam, worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } @Override diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_pwr.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_pwr.png index 7542ad6f4ada12ae6a2c872924702b579bfaf4b1..6910df3ee915d9ac2b1ce46a822bff5d4b139ab1 100644 GIT binary patch literal 5927 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 Wk;YT9wAa}H0000| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hen237.png new file mode 100644 index 0000000000000000000000000000000000000000..64228fb58cafece96f6e4ffa2c1517860b61cf5d GIT binary patch literal 412 zcmV;N0b~A&P)`)aJ+ABGx-PTXtTewgFquqbu~=ZO zy?DRhXFi`lEPi9-@mPAjo&Y!AYPDoA7)a5Zw<2-3+c6rA?)2esh_$w`c%?{`rm)>^ z(OPr;N9*;PNJYOt>ZWjDpg1#oTD?1W`i_O zp9cYSJ~~t@Rq{M1%QNC6MwD)7uEWF-uc!(D0000P)Nklb;@5JlhEV1fieoP~~xjx%r+?m$6JwHKhH<_6q=f&z&K z3oiz24ECf7g0LW2Ns*DJ`7`_GYiAe!TgbbjF-EuBEnyfEh9Q&5xH(^23d8;yqcdOdZW@m%6&vtck8Jn8*@pE!=4!z(WF;wkI( z8e1mRb162!QZ!Npsj=i-U;+WI%NSY)B>VDWBfP#J}fH6h_^@x6e0u>gEg_Cr1Bp`D4 x_r~L~)YKzTk7^+VD$M8e_y6qP&9CAwAYUSqzfT~IpDh3Y002ovPDHLkV1jJ~ut)#^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hep241.png new file mode 100644 index 0000000000000000000000000000000000000000..2a99abe38a9ef3e1e39439807765c45a2c99a1ad GIT binary patch literal 418 zcmV;T0bTxyP)b<842C}^5LyX}xJ7q1CN|E%QMdyGGt;{O8#6ax@4&!- z#6mu-syChOeS}m-`HR<(0046z>U}Ib?tV$>U!h3g6s8~e!u@C-s|;<1P&tmQq9IqdhONkX9R!~RqRdT{__j0EZt zeFFt5%;$3_>1##;B3FNJG#W`wJp%Qp7DAxHY&N_9&#u+{%KifK0hfNq{ZpJX-~a#s M07*qoM6N<$f{VJlc>n+a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes326.png new file mode 100644 index 0000000000000000000000000000000000000000..d659fdd2fd0c54d2e31c22affa403e221d57822d GIT binary patch literal 431 zcmV;g0Z{&lP)fn-I}3vbrplxNJ2n@NxU6Oi{g#g(xC^=@;m2#=Wx$C@ZZch7ZgIM^?FSdMMP1= zWHPDDuMCXGV>O%2NYnJ&JDm>G>GW*zBO4Bf%JV!09C^K7SKV$`>E4(+ak*SF7z|GI zUav=*rrP4RPJFz%!FhW_2*KeW&F6E1b{m4=GLYrE__wz>udl>$OdQ7~Ny3ZgL6%+K zk?p$Jmc>KAPqtc-Nl7Lp#%>3-+T|dCTC<4_6sCyeu!c ZkPlbzw)NRTgn|G7002ovPDHLkV1igb!#Mx| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.hes327.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1f8df9883e8205beceed32f6f0e5d60b3419ff GIT binary patch literal 434 zcmV;j0ZsmiP)QSjf)S``#RXwUPIQX-|K*=(lf zrv@60hVFDaD5XBVR4UPGwN^I&VzpXL7mGy=d~w^hb-7&DrkadN?Dcw7tJQCMrBXpD zWo*7_5@#3ZygWW5gkbrOy4^1E=`lFYdLX+{V3Eu7^zcLw1O!1q7>2x^ov<~XtUuB2 zet|3&6!I+OkeNRu84k(L=OoE^eGtIj;Q`xPGuzl;lCc=;1&isF$o(M*Aa``c#Ii`x zjOH_9*Gw{t`3EjareH=ziV>8Hjw9U(FqFf%o-zOY+C{Hr-eUdQ3 zzP(SMNQ3@x03n2xajx+DuSD*ESV~5Iz|PGbj^h|t#QFePhP|uT>w5VgwcG90d$v5y cuk0@%@0pRus}j4>O8@`>07*qoM6N<$f~1ngga7~l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu233.png new file mode 100644 index 0000000000000000000000000000000000000000..8961cc6363c24c7cb1b732a113ee6778464de80b GIT binary patch literal 433 zcmV;i0Z#sjP)9#~-6F!m;)|)j!;C>dQ zY)wyfYQl1{Ob6LV>{bD^j)_!s5ImdBQ$bk(@vwj4uTKi!_X&fLNJZ$W=IzZepUs)R zy6@<#Bd}WqkWz}5aYzt^M9~zjV@zy_o?`}sfpcwQ3lffh*J`!w?j7}dz2pCEx0_$d bUqC(qE854iDfK}300000NkvXXu0mjfhcv}Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.heu235.png new file mode 100644 index 0000000000000000000000000000000000000000..c80a207b0fafb1e1332017dd76ede97d9c56aa55 GIT binary patch literal 419 zcmV;U0bKrxP)=7zm1#W6)92aR!b;#{oD2)m{M6a1Cxi zK|w@j!8aHiR8*3@b>V~cTZ#>r$tqtUpq*Xwn(*4E@1o3Z>> zWIP@tgy6JC!{HFW{QPrJKA*$!T}Go3N-305#BogFHOF?lxdG(o@mvq%!$UU1{gcPt zqswl;!}aXFwt@f(#R9J5;y7ST!amuv-ELT~SGR!xN-rf6lW<55?Dji?z+M)lOij&H zYQTE6z5%3SA{kxS7mH;o$XeR;UE=#bVGt6@2sKm8=bGhW$!u!hBNxDcIVykv$C~IPW-u67$L1VCj^*xJt(H06qh7Cf{mxE*^DFra$QQY}zX$mFAJ_l@ N002ovPDHLkV1iD&zDocA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mea.png new file mode 100644 index 0000000000000000000000000000000000000000..90305870db415327424c5da962d9fd6be9cbed1f GIT binary patch literal 431 zcmV;g0Z{&lP)P6LJ@Cfs^}27j+dfnig~a7@Nw?cQ&^w(D z&beUovygau-e9p)L0gr-G73gCvfb&*vCpFvei5<>u1`+cG|VqA!;X zM6E_5K<@;)@R-806KgiX4OM^uu95^FM?@YdOZ;v}5yfn>{CyyRZ(pwvww6@u1Ks5r*(N+y@M!nBB{7-@m7=uf>Dgje4wvWr+J-?9 zzz@8CbpR=)xLau+l|mVfwidfu@w3R7PN%^yB3?n?5eEtVe&6rEqw#or{GaVl^C9~e ZkUz7B%YO_Apwa*U002ovPDHLkV1fdI!5shq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.men.png new file mode 100644 index 0000000000000000000000000000000000000000..c21db4157bc81194a7980fa73e2cfd885b0d35c4 GIT binary patch literal 429 zcmV;e0aE^nP)GPPR9<1L+hIHUE+SfXFMK%&_|;YT5G3y z=n{Y4|6sSh`+agg1Ej zG(k=6S5y>GwY0R?g8=UC?+E+=OUqOH#PL|;hdu{$_%{&1!|#U|NOPpDN=#wS_Bt<@ zrPb%L00000NkvXXu0mjfJv6>d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mep.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1334635620d17b9f7a97f35fde08d0709662ab GIT binary patch literal 414 zcmV;P0b%}$P)Z4A>a#Ns$DBSR*+~kt=O;XZFl!@4|nRdR6p1Pqy1FzVGAvKGW$mvp=&i9*<={ zpA!VZ?X=r%X0zGL;SU-Phtg`b1b8^rYE?R&j@a%vHgmJt(ChV{{BE~P5CqoY1)F(s zg!Ouj=Xu<}(Q>&YR@Q~=plYo~tWs916{C!oc=eRm^e7ytkO07*qo IM6N<$f-4-cp8x;= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.meu.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1e8e89e9696083d76ebb4883d6b46e35b135ef GIT binary patch literal 422 zcmV;X0a^ZuP)>Yo$`5)9G9+ej<%V!<5Tq1Dt3klQGq5)!1@en{hlIQ?J+0?6q1At+lmy+GZ@h z6c~+02q8G0(O@vZD?R=kl*?stJeT2ch*Aor6j2nBf6lVmtgirhIZ|#4q zn|qh-Zi}0;&)NzC$QSasj*H`fF)_P%$7Zu;wOU>W0w_KeiA~Ht-m~3p@qK$+kgzp1 zRf!3!dc?5nyC_~g#F`H=?^99q1{f=CKH;g$bfDpp@ z90mA(Kp0L@Dndt^@FSw%?_1aA96+x)X93M-(;VMXx7)q^&yHX7EBOn^7r(E>Gu-lR QN&o-=07*qoM6N<$g8PZGMF0Q* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel.mox.png new file mode 100644 index 0000000000000000000000000000000000000000..59d0a64a2fb0be0f2c930c34f446911e60fd6e59 GIT binary patch literal 414 zcmV;P0b%}$P)FzfXiDJ4=$Mx#+-eqmrR7?{aq zLKuc8wOTF4-Dbuolb`^46V(}HfOc= z#B#Yr2*LS|=JPoZ&y}BpYA-ch$7Qitpp-%>h41@Ryho1O`m$nBxm3mhbe>YpQ<6M| z%*7O}+6n@wzt$4>MuS-ZaI!ng9R*07*qo IM6N<$f))d`sQ>@~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel_base.png new file mode 100644 index 0000000000000000000000000000000000000000..9d614943b17da6e1230962e058ae2371d60efae9 GIT binary patch literal 422 zcmV;X0a^ZuP)6Hq%?_I@LFc|f5JCs(AOv~t=q>2n2k_suzBj_s{biX6A+e7MXQLAw(Jk0a8k& zl(gIJmHjIVtyU}T^?E3!zE!DI=yW=3&6lFlXr$$GIR%#Fx^7ynR#V$d)|MO&ht%u! zANg9XhEmFE?%0wCXMJApO9&xYyraQjK>2clf4(7TcQ223ddG9WL>PvIVMr839A3PT zde#v;$n_kY0u+yLh_xY_Cn%jjF^}H1a_k_09nT@R1$mt%H#6jP23-KHliz^=iY13+ z2Ifn8W>)rEUu_z#9{5o96Inr%@f>A=y~hdDz;0p%J$8?fBTXC{RAiV&hPT)d2Xp+Z z-OWKlh|JUN3FDDQjx>|;oN#P-xZcP2ed~&>-J52!nJ)gLZnwMnp8a`z0(ii&Q%dwW QaR2}S07*qoM6N<$f^vSgN&o-= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png b/src/main/resources/assets/hbm/textures/items/pwr_fuel_depleted.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2b2d545e76b30c2713def15febd44e906d9498 GIT binary patch literal 373 zcmV-*0gC>KP)U5Ji7rffPZa%`u{MDNwqcfuqpn0GuF|FM!g(1?W*O zklsx!IikVFBX6}RXiY?_-I0Ft$MZ&-@c{oVR_~IGG5dHtAcTMr0+-8W_Wf+4C<#lgRVj?)Q5OV4}@tV~@w9b=7z-lXH$N%YON%(+OSIIh%jE%-ijT zBuT&+!|ROh_xop{FbvT&4U!~*loC=(JfBZ+&JhH`a!?dSAR^Rt4I&y91OYtHISn`H z2j=@ehzQ0Q5D`4jgE8ha5CE*#YZznT`#y{@vk+irYf7ovf?*hzgS6I8nAZ9;&~CSb zQVM$FXHJ!`lG_d5!WKtIj1#QaNHHoh4QYw{J z^kT7yQp#97ZW8aaAJ|`M9LHhtk9xfxPuD{(UN!_-X{aV%dH75tr9?`J=XpF{xmf$g zhRh(2Pp}dJw~1#s4LkP8Fcq{IfscEPh$rwSA>t3l;bT#`9!SB?{ vom0Bqt}$or-PG%Ky|_oMR%`P+`*ZsSfJBuSjPOT500000NkvXXu0mjf=7*-Y literal 0 HcmV?d00001 From 033285382232d1eb21e6c9c19b133d4630fc37b9 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 16 Aug 2023 20:56:57 +0200 Subject: [PATCH 2/2] PWR GUI work, error messages, pre-calculation --- .../blocks/machine/MachinePWRController.java | 49 ++++++-- .../java/com/hbm/inventory/fluid/Fluids.java | 3 +- .../inventory/fluid/trait/FT_Heatable.java | 3 +- .../java/com/hbm/inventory/gui/GUIPWR.java | 30 ++++- .../machine/TileEntityPWRController.java | 118 ++++++++++++++++++ 5 files changed, 186 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java index 40c6748ed..f5c2b0ef9 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java @@ -7,6 +7,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityPWRController; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -19,7 +21,9 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; @@ -73,7 +77,7 @@ public class MachinePWRController extends BlockContainer { TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); if(!controller.assembled) { - assemble(world, x, y, z); + assemble(world, x, y, z, player); } else { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); } @@ -89,17 +93,20 @@ public class MachinePWRController extends BlockContainer { private static boolean errored; private static final int maxSize = 1024; - public void assemble(World world, int x, int y, int z) { + public void assemble(World world, int x, int y, int z, EntityPlayer player) { assembly.clear(); + fuelRods.clear(); assembly.put(new BlockPos(x, y, z), this); ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)).getOpposite(); errored = false; - floodFill(world, x + dir.offsetX, y, z + dir.offsetZ); + floodFill(world, x + dir.offsetX, y, z + dir.offsetZ, player); if(fuelRods.size() == 0) errored = true; + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); + if(!errored) { for(Entry entry : assembly.entrySet()) { @@ -122,21 +129,23 @@ public class MachinePWRController extends BlockContainer { pwr.markDirty(); } } + + controller.setup(assembly, fuelRods); } - - TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); controller.assembled = !errored; assembly.clear(); + fuelRods.clear(); } - private void floodFill(World world, int x, int y, int z) { + private void floodFill(World world, int x, int y, int z, EntityPlayer player) { BlockPos pos = new BlockPos(x, y, z); if(assembly.containsKey(pos)) return; if(assembly.size() >= maxSize) { errored = true; + sendError(world, x, y, z, "Max size exceeded", player); return; } @@ -150,18 +159,32 @@ public class MachinePWRController extends BlockContainer { if(isValidCore(block)) { assembly.put(pos, block); if(block == ModBlocks.pwr_fuel) fuelRods.put(pos, block); - floodFill(world, x + 1, y, z); - floodFill(world, x - 1, y, z); - floodFill(world, x, y + 1, z); - floodFill(world, x, y - 1, z); - floodFill(world, x, y, z + 1); - floodFill(world, x, y, z - 1); + floodFill(world, x + 1, y, z, player); + floodFill(world, x - 1, y, z, player); + floodFill(world, x, y + 1, z, player); + floodFill(world, x, y - 1, z, player); + floodFill(world, x, y, z + 1, player); + floodFill(world, x, y, z - 1, player); return; } - + + sendError(world, x, y, z, "Non-reactor block", player); errored = true; } + private void sendError(World world, int x, int y, int z, String message, EntityPlayer player) { + + if(player instanceof EntityPlayerMP) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "marker"); + data.setInteger("color", 0xff0000); + data.setInteger("expires", 5_000); + data.setDouble("dist", 128D); + if(message != null) data.setString("label", message); + PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(data, x, y, z), (EntityPlayerMP) player); + } + } + private boolean isValidCore(Block block) { if(block == ModBlocks.pwr_fuel || block == ModBlocks.pwr_control || block == ModBlocks.pwr_channel || block == ModBlocks.pwr_heatex || block == ModBlocks.pwr_neutron_source) return true; return false; diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 0c1d523d7..fba8a1b43 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -489,8 +489,9 @@ public class Fluids { HOTOIL.addTraits(new FT_Coolable(OIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); + COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(400, 1, MUG_HOT, 1)); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index 310083cf3..a10192c29 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -69,7 +69,8 @@ public class FT_Heatable extends FluidTrait { public static enum HeatingType { BOILER("Boilable"), - HEATEXCHANGER("Heatable"); + HEATEXCHANGER("Heatable"), + PWR("PWR Coolant"); public String name; diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index 8715854f1..5e1e18999 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -4,6 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPWR; import com.hbm.lib.RefStrings; +import com.hbm.render.util.GaugeUtil; +import com.hbm.render.util.GaugeUtil.Gauge; import com.hbm.tileentity.machine.TileEntityPWRController; import net.minecraft.client.Minecraft; @@ -24,11 +26,29 @@ public class GUIPWR extends GuiInfoContainer { this.ySize = 188; } + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + this.drawCustomInfoStat(x, y, guiLeft + 115, guiTop + 31, 18, 18, x, y, new String[] { "Core: " + String.format("%,d", controller.coreHeat) + " / " + String.format("%,d", controller.coreHeatCapacity) + " TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format("%,d", controller.hullHeat) + " / " + String.format("%,d", controller.hullHeatCapacity) + " TU" }); + + int timeLeft = (controller.processTime - controller.progress) / 20; + this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { "Cycle: " + (timeLeft / 60) + ":" + String.format("%02d", timeLeft % 60)}); + + controller.tanks[0].renderTankInfo(this, x, y, guiLeft + 8, guiTop + 5, 16, 52); + controller.tanks[1].renderTankInfo(this, x, y, guiLeft + 26, guiTop + 5, 16, 52); + } + @Override protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.controller.hasCustomInventoryName() ? this.controller.getInventoryName() : I18n.format(this.controller.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); + + double scale = 1.25; + String flux = String.format("%,.1f", 10000.0D); + GL11.glScaled(1 / scale, 1 / scale, 1); + this.fontRendererObj.drawString(flux, (int) (165 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(64 * scale), 0x00ff00); + GL11.glScaled(scale, scale, 1); } @Override @@ -36,5 +56,11 @@ public class GUIPWR extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(System.currentTimeMillis() % 1000 < 500) + drawTexturedModalRect(guiLeft + 147, guiTop, 176, 14, 26, 26); + + GaugeUtil.renderGauge(Gauge.ROUND_SMALL, guiLeft + 115, guiTop + 31, this.zLevel, 0.1D); + GaugeUtil.renderGauge(Gauge.ROUND_SMALL, guiLeft + 151, guiTop + 31, this.zLevel, 0.4D); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index f00014765..1e860e007 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -1,22 +1,119 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerPWR; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.inventory.gui.GUIPWR; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider { + public FluidTank[] tanks; + public int coreHeat; + public int coreHeatCapacity; + public int hullHeat; + public int hullHeatCapacity; + public int rodLevel; + public int rodTarget; + public int progress; + public int processTime; + + public int rodCount; + public int connections; + public int connectionsControlled; + public int heatexCount; + public int channelCount; + public int sourceCount; + public boolean assembled; public TileEntityPWRController() { super(3); + + this.tanks = new FluidTank[2]; + this.tanks[0] = new FluidTank(Fluids.COOLANT, 128_000); + this.tanks[1] = new FluidTank(Fluids.COOLANT_HOT, 128_000); + } + + public void setup(HashMap partMap, HashMap rodMap) { + + rodCount = 0; + connections = 0; + connectionsControlled = 0; + heatexCount = 0; + channelCount = 0; + sourceCount = 0; + + int connectionsDouble = 0; + int connectionsControlledDouble = 0; + + for(Entry entry : partMap.entrySet()) { + Block block = entry.getValue(); + + if(block == ModBlocks.pwr_fuel) rodCount++; + if(block == ModBlocks.pwr_heatex) heatexCount++; + if(block == ModBlocks.pwr_channel) channelCount++; + if(block == ModBlocks.pwr_neutron_source) sourceCount++; + } + + for(Entry entry : rodMap.entrySet()) { + BlockPos fuelPos = entry.getKey(); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + boolean controlled = false; + + for(int i = 1; i < 16; i++) { + BlockPos checkPos = fuelPos.offset(dir, i); + Block atPos = partMap.get(checkPos); + if(atPos == null || atPos == ModBlocks.pwr_casing) break; + if(atPos == ModBlocks.pwr_control) controlled = true; + if(atPos == ModBlocks.pwr_fuel) { + if(controlled) { + connectionsControlledDouble++; + } else { + connectionsDouble++; + } + break; + } + if(atPos == ModBlocks.pwr_reflector) { + if(controlled) { + connectionsControlledDouble += 2; + } else { + connectionsDouble += 2; + } + break; + } + } + } + } + + connections = connectionsDouble / 2; + connectionsControlled = connectionsControlledDouble / 2; + + System.out.println("Finalized nuclear reactor!"); + System.out.println("Rods: " + rodCount); + System.out.println("Connections: " + connections); + System.out.println("Controlled connections: " + connectionsControlled); + System.out.println("Heatex: " + heatexCount); + System.out.println("Channels: " + channelCount); + System.out.println("Sources: " + sourceCount); } @Override @@ -27,6 +124,27 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Override public void updateEntity() { + if(!worldObj.isRemote) { + + this.tanks[0].setType(2, slots); + setupTanks(); + + NBTTagCompound data = new NBTTagCompound(); + tanks[0].writeToNBT(data, "t0"); + tanks[1].writeToNBT(data, "t1"); + } + } + + protected void setupTanks() { + + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + + if(trait == null || trait.getEfficiency(HeatingType.PWR) <= 0) { + tanks[0].setTankType(Fluids.NONE); + tanks[1].setTankType(Fluids.NONE); + } + + tanks[1].setTankType(trait.getFirstStep().typeProduced); } @Override