From 6235e886de9c17fbe784ad5455244271d330afc3 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 20 Apr 2021 22:13:19 +0200 Subject: [PATCH] automatic RBMK control rod GUI base --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 +- .../com/hbm/blocks/machine/rbmk/RBMKBase.java | 27 ++++++ .../hbm/blocks/machine/rbmk/RBMKControl.java | 10 ++- .../blocks/machine/rbmk/RBMKControlAuto.java | 17 +++- src/main/java/com/hbm/handler/GUIHandler.java | 22 ++++- .../container/ContainerRBMKControl.java | 7 +- .../container/ContainerRBMKControlAuto.java | 45 ++++++++++ .../com/hbm/inventory/gui/GUIRBMKControl.java | 7 +- .../hbm/inventory/gui/GUIRBMKControlAuto.java | 85 ++++++++++++++++++ .../com/hbm/items/machine/ItemRBMKRod.java | 8 +- src/main/java/com/hbm/main/ClientProxy.java | 4 +- src/main/java/com/hbm/main/MainRegistry.java | 3 +- .../tileentity/RenderRBMKControlRod.java | 6 +- .../machine/rbmk/TileEntityRBMKBase.java | 2 +- .../machine/rbmk/TileEntityRBMKControl.java | 55 +----------- .../rbmk/TileEntityRBMKControlAuto.java | 10 +++ .../rbmk/TileEntityRBMKControlManual.java | 70 +++++++++++++++ .../gui/reactors/gui_rbmk_control_auto.png | Bin 0 -> 3689 bytes 18 files changed, 302 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerRBMKControlAuto.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java create mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_control_auto.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 0c7cc7bfa..2e3c05bd0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -856,7 +856,8 @@ public class ModBlocks { 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_console = 116; + public static final int guiID_rbmk_control_auto = 116; + public static final int guiID_rbmk_console = 17; public static Block pribris; public static Block pribris_burning; 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 5536d88a0..cf47054af 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java @@ -2,11 +2,15 @@ package com.hbm.blocks.machine.rbmk; import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public abstract class RBMKBase extends BlockDummyable { @@ -43,6 +47,29 @@ public abstract class RBMKBase extends BlockDummyable { } } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + + float height = 0.0F; + + int[] pos = this.findCore(world, x, y, z); + + if(pos != null) { + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(te instanceof TileEntityRBMKBase) { + + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; + + if(rbmk.hasLid()) { + height += 0.25F; + } + } + } + + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY + height, z + this.maxZ); + } + public static int renderIDRods = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDPassive = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDControl = RenderingRegistry.getNextAvailableRenderId(); 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 d0e705648..7698aa8b6 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControl.java @@ -1,10 +1,11 @@ package com.hbm.blocks.machine.rbmk; import com.hbm.blocks.ModBlocks; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class RBMKControl extends RBMKBase { @@ -13,7 +14,7 @@ public class RBMKControl extends RBMKBase { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= this.offset) - return new TileEntityRBMKControl(); + return new TileEntityRBMKControlManual(); return null; } @@ -21,6 +22,11 @@ public class RBMKControl extends RBMKBase { 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_control); } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return super.getCollisionBoundingBoxFromPool(world, x, y, z); + } @Override public int getRenderType(){ 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 2eb47cd8a..c60da64f6 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKControlAuto.java @@ -1,8 +1,11 @@ package com.hbm.blocks.machine.rbmk; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; public class RBMKControlAuto extends RBMKBase { @@ -11,10 +14,20 @@ public class RBMKControlAuto extends RBMKBase { public TileEntity createNewTileEntity(World world, int meta) { if(meta >= this.offset) - return new TileEntityRBMKControl(); + return new TileEntityRBMKControlAuto(); 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_control_auto); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return super.getCollisionBoundingBoxFromPool(world, x, y, z); + } + @Override public int getRenderType(){ return this.renderIDControl; diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 10cce240f..cb0ef8ab6 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -801,8 +801,15 @@ public class GUIHandler implements IGuiHandler { } case ModBlocks.guiID_rbmk_control: { - if(entity instanceof TileEntityRBMKControl) { - return new ContainerRBMKControl(player.inventory, (TileEntityRBMKControl) entity); + if(entity instanceof TileEntityRBMKControlManual) { + return new ContainerRBMKControl(player.inventory, (TileEntityRBMKControlManual) entity); + } + return null; + } + + case ModBlocks.guiID_rbmk_control_auto: { + if(entity instanceof TileEntityRBMKControlAuto) { + return new ContainerRBMKControlAuto(player.inventory, (TileEntityRBMKControlAuto) entity); } return null; } @@ -1594,8 +1601,15 @@ public class GUIHandler implements IGuiHandler { } case ModBlocks.guiID_rbmk_control: { - if(entity instanceof TileEntityRBMKControl) { - return new GUIRBMKControl(player.inventory, (TileEntityRBMKControl) entity); + if(entity instanceof TileEntityRBMKControlManual) { + return new GUIRBMKControl(player.inventory, (TileEntityRBMKControlManual) entity); + } + return null; + } + + case ModBlocks.guiID_rbmk_control_auto: { + if(entity instanceof TileEntityRBMKControlAuto) { + return new GUIRBMKControlAuto(player.inventory, (TileEntityRBMKControlAuto) entity); } return null; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKControl.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKControl.java index 4ee555b29..cb8f826d6 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerRBMKControl.java +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKControl.java @@ -1,7 +1,6 @@ package com.hbm.inventory.container; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -11,9 +10,9 @@ import net.minecraft.item.ItemStack; public class ContainerRBMKControl extends Container { - private TileEntityRBMKControl rbmk; + private TileEntityRBMKControlManual rbmk; - public ContainerRBMKControl(InventoryPlayer invPlayer, TileEntityRBMKControl tedf) { + public ContainerRBMKControl(InventoryPlayer invPlayer, TileEntityRBMKControlManual tedf) { rbmk = tedf; for(int i = 0; i < 3; i++) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKControlAuto.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKControlAuto.java new file mode 100644 index 000000000..92b020bc9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKControlAuto.java @@ -0,0 +1,45 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; + +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 ContainerRBMKControlAuto extends Container { + + private TileEntityRBMKControlAuto rbmk; + + public ContainerRBMKControlAuto(InventoryPlayer invPlayer, TileEntityRBMKControlAuto tedf) { + rbmk = tedf; + + 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()) { + return null; + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return rbmk.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java index fa08a5984..fecf9b8e3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java @@ -6,11 +6,10 @@ import com.hbm.inventory.container.ContainerRBMKControl; import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControl; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -19,9 +18,9 @@ import net.minecraft.util.ResourceLocation; public class GUIRBMKControl extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_control.png"); - private TileEntityRBMKControl rod; + private TileEntityRBMKControlManual rod; - public GUIRBMKControl(InventoryPlayer invPlayer, TileEntityRBMKControl tedf) { + public GUIRBMKControl(InventoryPlayer invPlayer, TileEntityRBMKControlManual tedf) { super(new ContainerRBMKControl(invPlayer, tedf)); rod = tedf; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java new file mode 100644 index 000000000..415b4c413 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java @@ -0,0 +1,85 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKControlAuto; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKControlAuto extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_control_auto.png"); + private TileEntityRBMKControlAuto rod; + + public GUIRBMKControlAuto(InventoryPlayer invPlayer, TileEntityRBMKControlAuto tedf) { + super(new ContainerRBMKControlAuto(invPlayer, tedf)); + rod = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 124, guiTop + 29, 16, 56, mouseX, mouseY, new String[]{ (int)(rod.level * 100) + "%" } ); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + /*for(int k = 0; k < 5; k++) { + + //manual rod control + if(guiLeft + 118 <= x && guiLeft + 118 + 30 > x && guiTop + 26 + k * 11 < y && guiTop + 26 + 10 + k * 11 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("level", 1.0D - (k * 0.25D)); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); + } + + //color groups + if(guiLeft + 28 <= x && guiLeft + 28 + 12 > x && guiTop + 26 + k * 11 < y && guiTop + 26 + 10 + k * 11 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("color", k); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); + } + }*/ + } + + @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); + + int height = (int)(56 * (1D - rod.level)); + + if(height > 0) + drawTexturedModalRect(guiLeft + 124, guiTop + 29, 176, 56 - height, 8, height); + + drawTexturedModalRect(guiLeft + 59, guiTop + 27, 184, 0, 26, 19); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index f69533611..d58fa1ace 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -219,8 +219,8 @@ public class ItemRBMKRod extends ItemHazard { list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.rbmx.source")); } - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.depletion", ((int)(((yield - getYield(stack)) / yield) * 1000)) / 1000D + "%")); - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmx.xenon", ((getPoison(stack) * 100D) / 100D) + "%")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmx.depletion", ((int)(((yield - getYield(stack)) / yield) * 100000)) / 1000D + "%")); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmx.xenon", ((int)(getPoison(stack) * 1000D) / 1000D) + "%")); list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmx.splitsWith", I18nUtil.resolveKey(nType.unlocalized + ".x"))); list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmx.splitsInto", I18nUtil.resolveKey(rType.unlocalized + ".x"))); list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.rbmx.fluxFunc", EnumChatFormatting.WHITE + "" + funcEnd + " * x" + (selfRate > 0 ? (EnumChatFormatting.RED + " + " + selfRate) : ""))); @@ -238,8 +238,8 @@ public class ItemRBMKRod extends ItemHazard { list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("trait.rbmk.source")); } - list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmk.depletion", ((int)(((yield - getYield(stack)) / yield) * 1000D)) / 1000D + "%")); - list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmk.xenon", ((getPoison(stack) * 100D) / 100D) + "%")); + list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("trait.rbmk.depletion", ((int)(((yield - getYield(stack)) / yield) * 100000D)) / 1000D + "%")); + list.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("trait.rbmk.xenon", ((int)(getPoison(stack) * 1000D) / 1000D) + "%")); list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmk.splitsWith", I18nUtil.resolveKey(nType.unlocalized))); list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("trait.rbmk.splitsInto", I18nUtil.resolveKey(rType.unlocalized))); list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.rbmk.fluxFunc", EnumChatFormatting.WHITE + "" + funcEnd + " * x" + (selfRate > 0 ? (EnumChatFormatting.RED + " + " + selfRate) : ""))); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 0e8d9fa7b..66cf7d0f2 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -49,6 +49,7 @@ import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.particle.*; import com.hbm.render.anim.*; import com.hbm.render.anim.HbmAnimations.Animation; @@ -207,7 +208,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); //RBMK - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControl.class, new RenderRBMKControlRod()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlManual.class, new RenderRBMKControlRod(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png")); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlAuto.class, new RenderRBMKControlRod(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control_auto.png")); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKConsole.class, new RenderRBMKConsole()); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 83fc0a19c..7b908dada 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -463,7 +463,8 @@ public class MainRegistry { GameRegistry.registerTileEntity(TileEntityFEL.class, "tileentity_fel"); GameRegistry.registerTileEntity(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); - GameRegistry.registerTileEntity(TileEntityRBMKControl.class, "tileentity_rbmk_control"); + GameRegistry.registerTileEntity(TileEntityRBMKControlManual.class, "tileentity_rbmk_control"); + GameRegistry.registerTileEntity(TileEntityRBMKControlAuto.class, "tileentity_rbmk_control_auto"); GameRegistry.registerTileEntity(TileEntityRBMKBlank.class, "tileentity_rbmk_blank"); GameRegistry.registerTileEntity(TileEntityRBMKBoiler.class, "tileentity_rbmk_boiler"); GameRegistry.registerTileEntity(TileEntityRBMKReflector.class, "tileentity_rbmk_reflector"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKControlRod.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKControlRod.java index ff558f73b..a279ef235 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKControlRod.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKControlRod.java @@ -12,7 +12,11 @@ import net.minecraft.util.ResourceLocation; public class RenderRBMKControlRod extends TileEntitySpecialRenderer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); + private ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); + + public RenderRBMKControlRod(String texture) { + this.texture = new ResourceLocation(texture); + } @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float i) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index ed5b7037d..b65c9b3ec 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -42,7 +42,7 @@ public abstract class TileEntityRBMKBase extends TileEntity implements INBTPacke public double heat; public boolean hasLid() { - return false; + return true; } /** 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 2032489b9..226df6370 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,36 +1,21 @@ package com.hbm.tileentity.machine.rbmk; -import com.hbm.interfaces.IControlReceiver; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Vec3; -public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements IControlReceiver { +public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase { @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 RBMKColor color; public TileEntityRBMKControl() { super(0); } - - @Override - public String getName() { - return "container.rbmkControl"; - } - - @Override - public boolean hasPermission(EntityPlayer player) { - return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; - } @Override public void updateEntity() { @@ -60,28 +45,6 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements super.updateEntity(); } - - @Override - public void receiveControl(NBTTagCompound data) { - - if(data.hasKey("level")) { - this.targetLevel = data.getDouble("level"); - } - - if(data.hasKey("color")) { - int c = Math.abs(data.getInteger("color")) % RBMKColor.values().length; //to stop naughty kids from sending packets that crash the server - - RBMKColor newCol = RBMKColor.values()[c]; - - if(newCol == this.color) { - this.color = null; - } else { - this.color = newCol; - } - } - - this.markDirty(); - } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -89,11 +52,6 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements this.level = nbt.getDouble("level"); this.targetLevel = nbt.getDouble("targetLevel"); - - if(nbt.hasKey("color")) - this.color = RBMKColor.values()[nbt.getInteger("color")]; - else - this.color = null; } @Override @@ -102,9 +60,6 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements nbt.setDouble("level", this.level); nbt.setDouble("targetLevel", this.targetLevel); - - if(color != null) - nbt.setInteger("color", color.ordinal()); } @Override @@ -117,12 +72,4 @@ public class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements public double getMaxRenderDistanceSquared() { return 65536.0D; } - - public static enum RBMKColor { - RED, - YELLOW, - GREEN, - BLUE, - PURPLE - } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java new file mode 100644 index 000000000..4f02a28ef --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -0,0 +1,10 @@ +package com.hbm.tileentity.machine.rbmk; + +public class TileEntityRBMKControlAuto extends TileEntityRBMKControl { + + @Override + public String getName() { + return "container.rbmkControlAuto"; + } + +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java new file mode 100644 index 000000000..9dc9971b4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -0,0 +1,70 @@ +package com.hbm.tileentity.machine.rbmk; + +import com.hbm.interfaces.IControlReceiver; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + +public class TileEntityRBMKControlManual extends TileEntityRBMKControl implements IControlReceiver { + + public RBMKColor color; + + @Override + public String getName() { + return "container.rbmkControl"; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("level")) { + this.targetLevel = data.getDouble("level"); + } + + if(data.hasKey("color")) { + int c = Math.abs(data.getInteger("color")) % RBMKColor.values().length; //to stop naughty kids from sending packets that crash the server + + RBMKColor newCol = RBMKColor.values()[c]; + + if(newCol == this.color) { + this.color = null; + } else { + this.color = newCol; + } + } + + this.markDirty(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + if(nbt.hasKey("color")) + this.color = RBMKColor.values()[nbt.getInteger("color")]; + else + this.color = null; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(color != null) + nbt.setInteger("color", color.ordinal()); + } + + public static enum RBMKColor { + RED, + YELLOW, + GREEN, + BLUE, + PURPLE + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..67c57eb6e1e47cd104ae0942e10fef4c52c27200 GIT binary patch literal 3689 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 literal 0 HcmV?d00001