From 424d6c3486d0c5ffb4d7e9f7d951c026ba48f7fb Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Thu, 13 Jul 2023 23:39:04 -0500 Subject: [PATCH 1/6] RBMK redstone column that doesn't work (will work eventually) --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../hbm/blocks/machine/rbmk/RBMKRedstone.java | 33 ++++ .../com/hbm/inventory/gui/GUIRBMKConsole.java | 20 +- .../hbm/inventory/gui/GUIRBMKRedstone.java | 168 ++++++++++++++++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/rbmk/TileEntityRBMKConsole.java | 22 ++- .../machine/rbmk/TileEntityRBMKRedstone.java | 182 ++++++++++++++++++ .../machine/rbmk/TileEntityRBMKRod.java | 6 + src/main/resources/assets/hbm/lang/en_US.lang | 5 + .../textures/blocks/rbmk/rbmk_redstone.png | Bin 0 -> 1294 bytes .../gui/reactors/gui_rbmk_console.png | Bin 6569 -> 6917 bytes .../gui/reactors/gui_rbmk_redstone.png | Bin 0 -> 3617 bytes 12 files changed, 430 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png create mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_redstone.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 45c16a9e1..971f165b0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1098,6 +1098,7 @@ public class ModBlocks { public static Block rbmk_storage; public static Block rbmk_cooler; public static Block rbmk_heater; + public static Block rbmk_redstone; public static Block rbmk_console; public static Block rbmk_crane_console; public static Block rbmk_loader; @@ -2146,6 +2147,7 @@ public class ModBlocks { rbmk_storage = new RBMKStorage().setBlockName("rbmk_storage").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_storage"); rbmk_cooler = new RBMKCooler().setBlockName("rbmk_cooler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_cooler"); rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); + rbmk_redstone = new RBMKRedstone().setBlockName("rbmk_redstone").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_redstone"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); @@ -3143,6 +3145,7 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_storage, rbmk_storage.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_cooler, rbmk_cooler.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_redstone, rbmk_redstone.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_loader, rbmk_loader.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java new file mode 100644 index 000000000..5ee4f4480 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java @@ -0,0 +1,33 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRedstone; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class RBMKRedstone extends RBMKBase { + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= this.offset) + return new TileEntityRBMKRedstone(); + 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); + } + + @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.renderIDPassive; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index 85be6afb7..c94647188 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -305,7 +305,23 @@ public class GUIRBMKConsole extends GuiScreen { case REFLECTOR: break; case OUTGASSER: break; case BREEDER: break; - + + case REDSTONE: + + switch(col.data.getInteger("mode")) { + case 2: // slow flux + drawTexturedModalRect(guiLeft + x + 3, guiTop + y + size - 2, 142, 183 - 8, 3, 8); + break; + case 3: // fast flux + drawTexturedModalRect(guiLeft + x + 3, guiTop + y + size - 2, 142, 193 - 8, 3, 8); + break; + } + + if(col.data.getBoolean("active")) { //set active texture afterwards or it will override + drawTexturedModalRect(guiLeft + x + 4, guiTop + y + size - 2, 145, 204, 2, 8); + } + break; + case CONTROL: int color = col.data.getShort("color"); if(color > -1) @@ -341,7 +357,7 @@ public class GUIRBMKConsole extends GuiScreen { drawTexturedModalRect(guiLeft + x + 4, guiTop + y + 5, 44, 187, 2, 2); if(col.data.getShort("type") == Fluids.ULTRAHOTSTEAM.ordinal()) drawTexturedModalRect(guiLeft + x + 4, guiTop + y + 7, 44, 189, 2, 2); - + break; case HEATEX: diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java new file mode 100644 index 000000000..913438e87 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java @@ -0,0 +1,168 @@ +package com.hbm.inventory.gui; + +import org.apache.commons.lang3.math.NumberUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKGeneric; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRedstone; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKRedstone extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_redstone.png"); + private TileEntityRBMKRedstone rod; + + private GuiTextField[] fields; + + public GUIRBMKRedstone(InventoryPlayer invPlayer, TileEntityRBMKRedstone tile) { + super(new ContainerRBMKGeneric(invPlayer)); + rod = tile; + + fields = new GuiTextField[2]; + + this.xSize = 176; + this.ySize = 186; + } + + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + this.fields[0] = new GuiTextField(this.fontRendererObj, guiLeft + 56, guiTop + 25, 94, 18); + this.fields[1] = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 60, 28, 10); + for(int i = 0; i < 2; i++) { + this.fields[i].setTextColor(0x00ff00); + this.fields[i].setDisabledTextColour(0x00ff00); + this.fields[i].setEnableBackgroundDrawing(false); + this.fields[i].setMaxStringLength(4); + this.fields[i].setText(String.valueOf(rod.threshold)); + if(i == 0) { + this.fields[i].setText(rod.channel == null ? "" : rod.channel); + this.fields[i].setMaxStringLength(10); + } + } + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + String value = ""; + switch(rod.mode) { + case 1: + value = "°C"; + break; + case 2: + case 3: + value = "/cm²/s"; + break; + } + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 49, 28, 10, mouseX, mouseY, "Value: " + (rod.value) + value); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 69, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor slow flux"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor fast flux"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 123, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor heat"); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 60, 28, 10, mouseX, mouseY, "Redstone Threshold"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 71, 28, 10, mouseX, mouseY, "Save threshold"); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int j = 0; j < 2; j++) { + this.fields[j].mouseClicked(x, y, i); + } + + if(guiLeft + 29 <= x && guiLeft + 29 + 28 > x && guiTop + 71 < y && guiTop + 71 + 10 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + if(NumberUtils.isNumber(fields[1].getText())) { + data.setString("Ch_set", fields[0].getText() + ""); + data.setInteger("Threshold", Integer.parseInt(fields[1].getText())); + } else { + fields[0].setText(""); + fields[1].setText("0"); + } + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); + } + for(int k = 0; k < 3; k++) { // button for each mode + if(guiLeft + 68 + k * 27 <= x && guiLeft + 68 + (k + 1) * 27 > x && guiTop + 55 < y && guiTop + 55 + 27 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + if(k == 0) + data.setInteger("Mode", 2); + if(k == 1) + data.setInteger("Mode", 3); + if(k == 2) + data.setInteger("Mode", 1); + 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); + + switch(rod.mode) { + case 1: + drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 13, 9, 9); + drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 13, 9, 9); + drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 3, 9, 9); + break; + case 2: + drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 13, 9, 9); + drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 3, 9, 9); + drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 13, 9, 9); + break; + case 3: + drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 3, 9, 9); + drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 13, 9, 9); + drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 13, 9, 9); + break; + } + this.fields[0].drawTextBox(); + this.fields[1].drawTextBox(); + this.fontRendererObj.drawString(rod.trunc_v, 30, 50, 0xFF7F7F); + } + + @Override + protected void keyTyped(char c, int i) { + + for(int j = 0; j < 2; j++) { + if(this.fields[j].textboxKeyTyped(c, i)) + return; + } + + super.keyTyped(c, i); + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 0210ff1ad..dd348ddce 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -342,6 +342,7 @@ public class TileMappings { put(TileEntityRBMKAbsorber.class, "tileentity_rbmk_absorber"); put(TileEntityRBMKModerator.class, "tileentity_rbmk_moderator"); put(TileEntityRBMKOutgasser.class, "tileentity_rbmk_outgasser"); + put(TileEntityRBMKRedstone.class, "tileentity_rbmk_redstone"); put(TileEntityRBMKCooler.class, "tileentity_rbmk_cooler"); put(TileEntityRBMKHeater.class, "tileentity_rbmk_heater"); put(TileEntityRBMKStorage.class, "tileentity_rbmk_storage"); 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 4ce54e100..0e1d6baca 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -384,19 +384,24 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.boiler.steam", this.data.getInteger("steam"), this.data.getInteger("maxSteam"))); stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()))); break; + case REDSTONE: + stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("rbmk.redstone.active", Boolean.toString(data.getBoolean("active")))); + stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.redstone.value", this.data.getString("value"), this.data.getInteger("threshold"))); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.redstone.channel", this.data.getString("channel"))); + break; case CONTROL: - + if(this.data.hasKey("color")) { short col = this.data.getShort("color"); - + if(col >= 0 && col < RBMKColor.values().length) stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase(Locale.US))); } - + case CONTROL_AUTO: stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control.level", ((int)((this.data.getDouble("level") * 100D))) + "%")); break; - + case HEATEX: stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()) + " " + this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB")); @@ -404,7 +409,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB")); break; } - + if(data.getBoolean("moderated")) stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.moderated")); @@ -426,9 +431,10 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon BREEDER(100), STORAGE(110), COOLER(120), - HEATEX(130); - - public int offset; + HEATEX(130), + REDSTONE(140); + + public int offset; private ColumnType(int offset) { this.offset = offset; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java new file mode 100644 index 000000000..c21948360 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java @@ -0,0 +1,182 @@ +package com.hbm.tileentity.machine.rbmk; + +import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerRBMKGeneric; +import com.hbm.inventory.gui.GUIRBMKRedstone; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.tileentity.network.RTTYSystem; +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.network.SimpleComponent; +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; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKRedstone extends TileEntityRBMKSlottedBase implements IControlReceiver, SimpleComponent { + + + public int mode = 1; + public String channel = ""; + public int threshold = 0; + public boolean active = false; + public double sflux = 0.0; + public double fflux = 0.0; + public double value = 0.0; + public String trunc_v = ""; + + @Override + public String getName() { + return "container.rbmkRedstone"; + } + + public TileEntityRBMKRedstone() { + super(0); + } + + @Override + public void updateEntity() { + if (!worldObj.isRemote) { + + switch(mode) { + // mode = 1: Heat + // mode = 2: Slow Flux + // mode = 3: Fast Flux + case (1): + value = heat; + active = value > threshold; + break; + case (2): + value = sflux; + active = value > threshold; + break; + case (3): + value = fflux; + active = value > threshold; + break; + } + if(!channel.isEmpty()) { + if(active) { + RTTYSystem.broadcast(worldObj, channel, 15); + } else { + RTTYSystem.broadcast(worldObj, channel, 0); + } + } + } + super.updateEntity(); + } + + public void processFlux(Double flux, IRBMKFluxReceiver.NType stream) { + if(stream == IRBMKFluxReceiver.NType.SLOW) { + sflux = flux; + } else if (stream == IRBMKFluxReceiver.NType.FAST) { + fflux = flux; + } + } + + @Override + public boolean hasPermission(EntityPlayer player) {return true;} + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("Ch_set")) { + channel = data.getString("Ch_set"); + threshold = data.getInteger("Threshold"); + } else if (data.hasKey("Mode")) { + int newMode = data.getInteger("Mode") % 4; + if(newMode <= 0) + newMode = 1; + mode = newMode; + } + this.markDirty(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + mode = nbt.getInteger("mode"); + channel = nbt.getString("channel"); + threshold = nbt.getInteger("threshold"); + active = nbt.getBoolean("active"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("mode", mode); + nbt.setString("channel", channel); + nbt.setInteger("threshold", threshold); + nbt.setBoolean("active", active); + } + + public void getDiagData(NBTTagCompound nbt) { + super.getDiagData(nbt); + nbt.setString("mode", String.valueOf(mode)); + nbt.setString("channel", channel); + nbt.setString("threshold", String.valueOf(threshold)); + nbt.setString("active", String.valueOf(active)); + } + + @Override + public NBTTagCompound getNBTForConsole() { + NBTTagCompound data = new NBTTagCompound(); + + if(value >= 100) { + value = (int) value; + } else { + value = ((int) (value * 10)) / 10F; + } + data.setInteger("mode", mode); + data.setString("value", trunc_v); + data.setInteger("threshold", threshold); + data.setBoolean("active", active); + + return data; + } + + @Override + public void onMelt(int reduce) { + + int count = 1 + worldObj.rand.nextInt(2); + + for(int i = 0; i < count; i++) { + spawnDebris(DebrisType.BLANK); + } + + super.onMelt(reduce); + } + + @Override + public ColumnType getConsoleType() { + return ColumnType.REDSTONE; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public String getComponentName() { + return "rbmk_redstone_rod"; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerRBMKGeneric(player.inventory); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIRBMKRedstone(player.inventory, this); + } +} 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 f13f34952..bdf09c074 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -191,6 +191,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return flux; } } + + if(te instanceof TileEntityRBMKRedstone) { + TileEntityRBMKRedstone rod = (TileEntityRBMKRedstone)te; + rod.processFlux(flux, stream); + return flux; + } if(te instanceof IRBMKFluxReceiver) { IRBMKFluxReceiver rod = (IRBMKFluxReceiver)te; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 18ca110d5..b56c75ce4 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -722,6 +722,7 @@ container.rbmkHeater=RBMK Fluid Heater container.rbmkOutgasser=RBMK Irradiation Channel container.rbmkReaSim=RBMK Fuel Rod (ReaSim) container.rbmkRod=RBMK Fuel Rod +container.rbmkRedstone=RBMK Redstone Column container.rbmkStorage=RBMK Storage Column container.reactorBreeding=Breeding Reactor container.reactorControl=Reactor Remote Control Block @@ -4242,6 +4243,9 @@ rbmk.heat=Column temperature: %s rbmk.boiler.water=Feedwater: %s / %s rbmk.boiler.steam=Steam: %s / %s rbmk.boiler.type=Compressor: %s +rbmk.redstone.active=Active: %s +rbmk.redstone.value=Value: %s / %s +rbmk.redstone.channel=Channel: %s rbmk.console.assign=Assign selected columns to screen #%s rbmk.console.none=Off rbmk.console.col_temp=Monitor average column temperature @@ -5110,6 +5114,7 @@ tile.rbmk_control_mod.name=RBMK Moderated Control Rods tile.rbmk_crane_console.name=RBMK Crane Console tile.rbmk_heater.name=RBMK Fluid Heater tile.rbmk_heatex.name=RBMK Heat Exchanger +tile.rbmk_redstone.name=RBMK Redstone Column tile.rbmk_loader.name=RBMK Steam Connector tile.rbmk_moderator.name=RBMK Graphite Moderator tile.rbmk_outgasser.name=RBMK Irradiation Channel diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png new file mode 100644 index 0000000000000000000000000000000000000000..8689b01c6bd228fd87a19f28265228547c540053 GIT binary patch literal 1294 zcmV+p1@ZccP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1fxkrK~z{rt(Hqq zWK|Hy>pr@ny8)p|V0eaCIx%rIegbvxdJ>1 z2-t)Lgh8O`xAm*;>bW+}4A}fT)#u!E&#C&KdYp5E&CSiGB#_Bu+P#}7l}hd2E1aF3 z$>`|loz`t{ZwJ;%zzEFF&dR{RfJ9N$9u}$B>ryV4tz{eufVgkd025NaDrkWyvZUY%b^@yl(wzP^^- z-CfD$a{nQKAqXHC_l+^WwzhVIKxluexbXegQm@w3U?g!A%aHC&%}SsP8`Y}BO$^zae)g5^%GaXY!L#q&caPwyUWoZaLA_L#rtbdNk3N%ZHft{{m5K>U0SXJ>K9$RI zMVifKC+_sS;RLHn9{slw2vLH9vhH3~PgY&Gv$G>V|Ma6gfBuX7`N!`X>!Q4Td1hpE zvNTj`8YV#NF~%5@BxIY@eCS0I*w#=IE5mf0lKRMq4CS)6>o|^0i1+2iMJtx|mSG2L znTrAXP6ES-d(R1X!``xBFbXyK8a8ogc-V|xYx(?he%?~589ilyvuyI5|171*%r!;FUXBi-%a}Mgg8< z6Mzu$+zUp4mo;5?r5=FsTY9iyd{~LlqMXCT5=jk&VPxfJ3Y54f9DM}C2;;PrBGL;+ zz+S51SfA4Av`I!Q!4#?jNR_TiHZQhn)N<8vNHNE2-3`(*&c+~3%X2S;eoO|{ilp@5 zVL?7WE{`5f$=v+BJbwJHy!ZYG^5K&wEhTzJQ1y@kw;6&2W5{jBft`f&b93^}58r5j zwWNq+pz#Vc92yoPn#~MonQETsSoP{s6E>3HKK@+(`nzZ$T3K0XX;Tm`#61Z-H&$0y zTd_*OsFC3>KKVk8=})JGQTtqI)Fo)@*^WY~$%xKQtGi!(`cx`jVbqqXb z9Cx{n0qbtPj@$hXUZ<>^Krf~Df#m?-1GuqJD45J?Qch1#%lP=XO`@Hcm=HoWuaz+~ zGb2+|Q}(W37y)8cEEYSNi!kP~Cyw;-403vU`bL-E6-IzMU07J?WG!F}!?>K5y7t=U z1BCuVkT3#XHhzxxf?Y@|%w?WeO26oQ5BLr-;Kq`K`2Kqn$^QfMfFBaL9Rob?@9!H4 z04Yy8-f`0Tntovfe8;XB5@fv_+1uN*4^X^tcz9?D>(_I?2)4GiZum4=>m(J{Px87=mT12)0)Pte zdmV!q@o~lwAM>((2$)6^5QP|UV;Js+8zwouLi&Y$5uuE-!vJtYgoW0}y+jWV4jzsG ze;6PU$!toI76IP(62)*npYM?B7x%u7K{EOJyN*Tv1vZWaatMlMMgRZ+07*qoM6N<$ Eg3aGGn5K2;oHUI!0eBwEvgJTe>oei>t$YArZ`}Jq&7Or< z0N_hIqoaBL=B2qzWR$??z~&LY-LWW$64ih>cy0Ebehw#n*wyYPN+s5s^JwLZyhq~h zkQiIyTDMN_^#YuQf?1ll_z^J}bf_Wtorz&uSdaLHK+*3Rd33fPB4?Yp6ViBK*P}#I zuy3x{c~V~fy8g5EQ~Hong`M2mTgyW=HL2U%!wcIrHEC(NLLN*apWm!Z7`21Iq2HRr?o_BQ(fr!;(>rzm;f%$Lpfj#x14<7Pi;3d2bBNkCvT>|1z1GY?RUvjF`yK2C*qoTj@9T-qO=8oQ*{Gr+4e)X@>w z2RfED$;Ro5R?npROW1nZZpM|3jg6JPW5-`FTxM{By!C`0Ix80Du~$tDDcOPM-ZabGS(x5zrH%jKYEJ81(3qWlaZ`VA=AAiq*8)sL$kP9O8zpSF8Jo zbadvO&J_BZqa9ILfyopMC_PrgiR*v?3s{wQW~LPBV+ozkH-kpq_=CEaP(q?o$H&h( zMW6{>Nf7ov+nsce{gkwfj2@f#Lni^Mǖj*gSziT)--Ts;H9>?4f^jsPdXlhNwv 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 O1<=(r(kNAPi25(&%t8JD diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_redstone.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_redstone.png new file mode 100644 index 0000000000000000000000000000000000000000..e824d8b2075111921c56ccb519f6fe12a8be9db8 GIT binary patch literal 3617 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 rG#5OfQ%$=Vo8NC^|A|s)zi&r{?z)Wmtx Date: Mon, 17 Jul 2023 14:16:58 -0500 Subject: [PATCH 2/6] Fluid Gauge OC compat for reading fluid flows. --- .../hbm/blocks/network/FluidDuctGauge.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 10e36bf10..abf4cc4d1 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -15,8 +15,13 @@ import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; import api.hbm.fluid.IPipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -100,8 +105,9 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL public int getRenderType(){ return IBlockMultiPass.getRenderType(); } - - public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver { + + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; @@ -144,5 +150,34 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + + @Override + public String getComponentName() { + return "ntm_fluid_gauge"; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getTick(Context context, Arguments args) { + return new Object[] {deltaTick}; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getSecond(Context context, Arguments args) { + return new Object[] {deltaSecond}; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return new Object[] {I18nUtil.resolveKey(getType().getUnlocalizedName())}; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {deltaTick, deltaSecond, I18nUtil.resolveKey(getType().getUnlocalizedName()), xCoord, yCoord, zCoord}; + } } } From 91e52dc665514b7925f3685d1d39c0bd1cc7921d Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Mon, 17 Jul 2023 14:21:19 -0500 Subject: [PATCH 3/6] Fluid Gauge OC compat for reading fluid flows. --- src/main/java/com/hbm/blocks/network/FluidDuctGauge.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index abf4cc4d1..b15aeba9c 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -151,6 +151,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + @Override public String getComponentName() { return "ntm_fluid_gauge"; From 3041e6889654d90dde0643227a79a4dd936dbebe Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 18 Jul 2023 20:27:41 -0500 Subject: [PATCH 4/6] there you got your damn comparator support for tanks --- .../hbm/blocks/machine/BlockFluidBarrel.java | 18 +++++++++++++++ .../blocks/machine/MachineBigAssTank9000.java | 18 +++++++++++++++ .../hbm/blocks/machine/MachineFluidTank.java | 18 +++++++++++++++ .../hbm/blocks/network/FluidDuctGauge.java | 1 - .../machine/storage/TileEntityBarrel.java | 20 +++++++++++++--- .../storage/TileEntityMachineFluidTank.java | 23 +++++++++++++++---- 6 files changed, 89 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index c5e6e063a..1798b5b59 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -164,6 +165,23 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider player.addExhaustion(0.025F); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityBarrel)) + return 0; + + TileEntityBarrel barrel = (TileEntityBarrel) te; + return barrel.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 178d0dbb8..782bc09ee 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -98,6 +99,23 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent return IPersistentNBT.getDrops(world, x, y, z, this); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineBAT9000)) + return 0; + + TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; + return tank.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 8b5071525..f6d487718 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -14,6 +14,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; @@ -135,6 +136,23 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP } } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineFluidTank)) + return 0; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te; + return tank.getComparatorPower(); + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index b15aeba9c..abf4cc4d1 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -151,7 +151,6 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } - @Override public String getComponentName() { return "ntm_fluid_gauge"; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index d0bb7e4f8..9d479a4de 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -16,6 +16,7 @@ import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; @@ -31,6 +32,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; @@ -48,6 +50,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public int age = 0; public List list = new ArrayList(); protected boolean sendingBrake = false; + public byte lastRedstone = 0; public TileEntityBarrel() { super(6); @@ -64,11 +67,22 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return "container.barrel"; } + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + @Override public void updateEntity() { if(!worldObj.isRemote) { - + + byte comp = this.getComparatorPower(); //do comparator shenanigans + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); @@ -375,12 +389,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {tank.getTankType().getName()}; + return new Object[] {I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + return new Object[]{tank.getFill(), tank.getMaxFill(), I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 2b2c311b8..618791227 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -33,6 +33,7 @@ import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; @@ -49,6 +50,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -66,7 +68,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public boolean hasExploded = false; protected boolean sendingBrake = false; public boolean onFire = false; - + public byte lastRedstone = 0; public Explosion lastExplosion = null; public int age = 0; @@ -81,7 +83,13 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public String getName() { return "container.fluidtank"; } - + + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + @Override public void updateEntity() { @@ -119,7 +127,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.loadTank(2, 3, slots); tank.setType(0, 1, slots); } - + + byte comp = this.getComparatorPower(); //comparator shit + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + if(tank.getFill() > 0) { if(tank.getTankType().isAntimatter()) { new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F).makeAmat().setBlockAllocator(null).setBlockProcessor(null).explode(); @@ -474,12 +487,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {tank.getTankType().getName()}; + return new Object[] {I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + return new Object[]{tank.getFill(), tank.getMaxFill(), I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; } } \ No newline at end of file From 02e1ae5fbc77f5d0a6b92ee614f3fbd78370f805 Mon Sep 17 00:00:00 2001 From: BallOfEnergy <66693744+BallOfEnergy1@users.noreply.github.com> Date: Tue, 18 Jul 2023 20:34:59 -0500 Subject: [PATCH 5/6] Revert "RBMK redstone column that doesn't work (will work eventually)" This reverts commit 424d6c3486d0c5ffb4d7e9f7d951c026ba48f7fb. --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 - .../hbm/blocks/machine/rbmk/RBMKRedstone.java | 33 ---- .../com/hbm/inventory/gui/GUIRBMKConsole.java | 20 +- .../hbm/inventory/gui/GUIRBMKRedstone.java | 168 ---------------- .../java/com/hbm/tileentity/TileMappings.java | 1 - .../machine/rbmk/TileEntityRBMKConsole.java | 22 +-- .../machine/rbmk/TileEntityRBMKRedstone.java | 182 ------------------ .../machine/rbmk/TileEntityRBMKRod.java | 6 - src/main/resources/assets/hbm/lang/en_US.lang | 5 - .../textures/blocks/rbmk/rbmk_redstone.png | Bin 1294 -> 0 bytes .../gui/reactors/gui_rbmk_console.png | Bin 6917 -> 6569 bytes .../gui/reactors/gui_rbmk_redstone.png | Bin 3617 -> 0 bytes 12 files changed, 10 insertions(+), 430 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java delete mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_redstone.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c25089dc3..fbdcadf67 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1099,7 +1099,6 @@ public class ModBlocks { public static Block rbmk_storage; public static Block rbmk_cooler; public static Block rbmk_heater; - public static Block rbmk_redstone; public static Block rbmk_console; public static Block rbmk_crane_console; public static Block rbmk_loader; @@ -2148,7 +2147,6 @@ public class ModBlocks { rbmk_storage = new RBMKStorage().setBlockName("rbmk_storage").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_storage"); rbmk_cooler = new RBMKCooler().setBlockName("rbmk_cooler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_cooler"); rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); - rbmk_redstone = new RBMKRedstone().setBlockName("rbmk_redstone").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_redstone"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); @@ -3148,7 +3146,6 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_storage, rbmk_storage.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_cooler, rbmk_cooler.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_redstone, rbmk_redstone.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_loader, rbmk_loader.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java deleted file mode 100644 index 5ee4f4480..000000000 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKRedstone.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.blocks.machine.rbmk; - -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRedstone; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; - -public class RBMKRedstone extends RBMKBase { - - @Override - public TileEntity createNewTileEntity(World world, int meta) { - - if(meta >= this.offset) - return new TileEntityRBMKRedstone(); - 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); - } - - @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.renderIDPassive; - } -} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index c94647188..85be6afb7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -305,23 +305,7 @@ public class GUIRBMKConsole extends GuiScreen { case REFLECTOR: break; case OUTGASSER: break; case BREEDER: break; - - case REDSTONE: - - switch(col.data.getInteger("mode")) { - case 2: // slow flux - drawTexturedModalRect(guiLeft + x + 3, guiTop + y + size - 2, 142, 183 - 8, 3, 8); - break; - case 3: // fast flux - drawTexturedModalRect(guiLeft + x + 3, guiTop + y + size - 2, 142, 193 - 8, 3, 8); - break; - } - - if(col.data.getBoolean("active")) { //set active texture afterwards or it will override - drawTexturedModalRect(guiLeft + x + 4, guiTop + y + size - 2, 145, 204, 2, 8); - } - break; - + case CONTROL: int color = col.data.getShort("color"); if(color > -1) @@ -357,7 +341,7 @@ public class GUIRBMKConsole extends GuiScreen { drawTexturedModalRect(guiLeft + x + 4, guiTop + y + 5, 44, 187, 2, 2); if(col.data.getShort("type") == Fluids.ULTRAHOTSTEAM.ordinal()) drawTexturedModalRect(guiLeft + x + 4, guiTop + y + 7, 44, 189, 2, 2); - + break; case HEATEX: diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java deleted file mode 100644 index 913438e87..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKRedstone.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.hbm.inventory.gui; - -import org.apache.commons.lang3.math.NumberUtils; -import org.lwjgl.input.Keyboard; -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.container.ContainerRBMKGeneric; -import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRedstone; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.GuiTextField; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ResourceLocation; - -public class GUIRBMKRedstone extends GuiInfoContainer { - - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_redstone.png"); - private TileEntityRBMKRedstone rod; - - private GuiTextField[] fields; - - public GUIRBMKRedstone(InventoryPlayer invPlayer, TileEntityRBMKRedstone tile) { - super(new ContainerRBMKGeneric(invPlayer)); - rod = tile; - - fields = new GuiTextField[2]; - - this.xSize = 176; - this.ySize = 186; - } - - public void initGui() { - super.initGui(); - - Keyboard.enableRepeatEvents(true); - this.fields[0] = new GuiTextField(this.fontRendererObj, guiLeft + 56, guiTop + 25, 94, 18); - this.fields[1] = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 60, 28, 10); - for(int i = 0; i < 2; i++) { - this.fields[i].setTextColor(0x00ff00); - this.fields[i].setDisabledTextColour(0x00ff00); - this.fields[i].setEnableBackgroundDrawing(false); - this.fields[i].setMaxStringLength(4); - this.fields[i].setText(String.valueOf(rod.threshold)); - if(i == 0) { - this.fields[i].setText(rod.channel == null ? "" : rod.channel); - this.fields[i].setMaxStringLength(10); - } - } - } - - @Override - public void drawScreen(int mouseX, int mouseY, float f) { - super.drawScreen(mouseX, mouseY, f); - String value = ""; - switch(rod.mode) { - case 1: - value = "°C"; - break; - case 2: - case 3: - value = "/cm²/s"; - break; - } - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 49, 28, 10, mouseX, mouseY, "Value: " + (rod.value) + value); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 69, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor slow flux"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor fast flux"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 123, guiTop + 56, 25, 25, mouseX, mouseY, "Monitor heat"); - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 60, 28, 10, mouseX, mouseY, "Redstone Threshold"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 29, guiTop + 71, 28, 10, mouseX, mouseY, "Save threshold"); - } - - @Override - protected void mouseClicked(int x, int y, int i) { - super.mouseClicked(x, y, i); - - for(int j = 0; j < 2; j++) { - this.fields[j].mouseClicked(x, y, i); - } - - if(guiLeft + 29 <= x && guiLeft + 29 + 28 > x && guiTop + 71 < y && guiTop + 71 + 10 >= y) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - NBTTagCompound data = new NBTTagCompound(); - if(NumberUtils.isNumber(fields[1].getText())) { - data.setString("Ch_set", fields[0].getText() + ""); - data.setInteger("Threshold", Integer.parseInt(fields[1].getText())); - } else { - fields[0].setText(""); - fields[1].setText("0"); - } - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, rod.xCoord, rod.yCoord, rod.zCoord)); - } - for(int k = 0; k < 3; k++) { // button for each mode - if(guiLeft + 68 + k * 27 <= x && guiLeft + 68 + (k + 1) * 27 > x && guiTop + 55 < y && guiTop + 55 + 27 >= y) { - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - NBTTagCompound data = new NBTTagCompound(); - if(k == 0) - data.setInteger("Mode", 2); - if(k == 1) - data.setInteger("Mode", 3); - if(k == 2) - data.setInteger("Mode", 1); - 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); - - switch(rod.mode) { - case 1: - drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 13, 9, 9); - drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 13, 9, 9); - drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 3, 9, 9); - break; - case 2: - drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 13, 9, 9); - drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 3, 9, 9); - drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 13, 9, 9); - break; - case 3: - drawTexturedModalRect(guiLeft + 77, guiTop + 46, 180, 3, 9, 9); - drawTexturedModalRect(guiLeft + 104, guiTop + 46, 180, 13, 9, 9); - drawTexturedModalRect(guiLeft + 131, guiTop + 46, 180, 13, 9, 9); - break; - } - this.fields[0].drawTextBox(); - this.fields[1].drawTextBox(); - this.fontRendererObj.drawString(rod.trunc_v, 30, 50, 0xFF7F7F); - } - - @Override - protected void keyTyped(char c, int i) { - - for(int j = 0; j < 2; j++) { - if(this.fields[j].textboxKeyTyped(c, i)) - return; - } - - super.keyTyped(c, i); - } - - @Override - public void onGuiClosed() { - Keyboard.enableRepeatEvents(false); - } -} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 896858233..dd84c756e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -343,7 +343,6 @@ public class TileMappings { put(TileEntityRBMKAbsorber.class, "tileentity_rbmk_absorber"); put(TileEntityRBMKModerator.class, "tileentity_rbmk_moderator"); put(TileEntityRBMKOutgasser.class, "tileentity_rbmk_outgasser"); - put(TileEntityRBMKRedstone.class, "tileentity_rbmk_redstone"); put(TileEntityRBMKCooler.class, "tileentity_rbmk_cooler"); put(TileEntityRBMKHeater.class, "tileentity_rbmk_heater"); put(TileEntityRBMKStorage.class, "tileentity_rbmk_storage"); 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 0e1d6baca..4ce54e100 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -384,24 +384,19 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.boiler.steam", this.data.getInteger("steam"), this.data.getInteger("maxSteam"))); stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.boiler.type", I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()))); break; - case REDSTONE: - stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("rbmk.redstone.active", Boolean.toString(data.getBoolean("active")))); - stats.add(EnumChatFormatting.WHITE + I18nUtil.resolveKey("rbmk.redstone.value", this.data.getString("value"), this.data.getInteger("threshold"))); - stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.redstone.channel", this.data.getString("channel"))); - break; case CONTROL: - + if(this.data.hasKey("color")) { short col = this.data.getShort("color"); - + if(col >= 0 && col < RBMKColor.values().length) stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase(Locale.US))); } - + case CONTROL_AUTO: stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control.level", ((int)((this.data.getDouble("level") * 100D))) + "%")); break; - + case HEATEX: stats.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(I18nUtil.resolveKey(Fluids.fromID(this.data.getShort("type")).getUnlocalizedName()) + " " + this.data.getInteger("water") + "/" + this.data.getInteger("maxWater") + "mB")); @@ -409,7 +404,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.data.getInteger("steam") + "/" + this.data.getInteger("maxSteam") + "mB")); break; } - + if(data.getBoolean("moderated")) stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.moderated")); @@ -431,10 +426,9 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon BREEDER(100), STORAGE(110), COOLER(120), - HEATEX(130), - REDSTONE(140); - - public int offset; + HEATEX(130); + + public int offset; private ColumnType(int offset) { this.offset = offset; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java deleted file mode 100644 index c21948360..000000000 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRedstone.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.hbm.tileentity.machine.rbmk; - -import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; -import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.container.ContainerRBMKGeneric; -import com.hbm.inventory.gui.GUIRBMKRedstone; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import com.hbm.tileentity.network.RTTYSystem; -import cpw.mods.fml.common.Optional; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import li.cil.oc.api.network.SimpleComponent; -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; - -@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRedstone extends TileEntityRBMKSlottedBase implements IControlReceiver, SimpleComponent { - - - public int mode = 1; - public String channel = ""; - public int threshold = 0; - public boolean active = false; - public double sflux = 0.0; - public double fflux = 0.0; - public double value = 0.0; - public String trunc_v = ""; - - @Override - public String getName() { - return "container.rbmkRedstone"; - } - - public TileEntityRBMKRedstone() { - super(0); - } - - @Override - public void updateEntity() { - if (!worldObj.isRemote) { - - switch(mode) { - // mode = 1: Heat - // mode = 2: Slow Flux - // mode = 3: Fast Flux - case (1): - value = heat; - active = value > threshold; - break; - case (2): - value = sflux; - active = value > threshold; - break; - case (3): - value = fflux; - active = value > threshold; - break; - } - if(!channel.isEmpty()) { - if(active) { - RTTYSystem.broadcast(worldObj, channel, 15); - } else { - RTTYSystem.broadcast(worldObj, channel, 0); - } - } - } - super.updateEntity(); - } - - public void processFlux(Double flux, IRBMKFluxReceiver.NType stream) { - if(stream == IRBMKFluxReceiver.NType.SLOW) { - sflux = flux; - } else if (stream == IRBMKFluxReceiver.NType.FAST) { - fflux = flux; - } - } - - @Override - public boolean hasPermission(EntityPlayer player) {return true;} - - @Override - public void receiveControl(NBTTagCompound data) { - - if(data.hasKey("Ch_set")) { - channel = data.getString("Ch_set"); - threshold = data.getInteger("Threshold"); - } else if (data.hasKey("Mode")) { - int newMode = data.getInteger("Mode") % 4; - if(newMode <= 0) - newMode = 1; - mode = newMode; - } - this.markDirty(); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - mode = nbt.getInteger("mode"); - channel = nbt.getString("channel"); - threshold = nbt.getInteger("threshold"); - active = nbt.getBoolean("active"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setInteger("mode", mode); - nbt.setString("channel", channel); - nbt.setInteger("threshold", threshold); - nbt.setBoolean("active", active); - } - - public void getDiagData(NBTTagCompound nbt) { - super.getDiagData(nbt); - nbt.setString("mode", String.valueOf(mode)); - nbt.setString("channel", channel); - nbt.setString("threshold", String.valueOf(threshold)); - nbt.setString("active", String.valueOf(active)); - } - - @Override - public NBTTagCompound getNBTForConsole() { - NBTTagCompound data = new NBTTagCompound(); - - if(value >= 100) { - value = (int) value; - } else { - value = ((int) (value * 10)) / 10F; - } - data.setInteger("mode", mode); - data.setString("value", trunc_v); - data.setInteger("threshold", threshold); - data.setBoolean("active", active); - - return data; - } - - @Override - public void onMelt(int reduce) { - - int count = 1 + worldObj.rand.nextInt(2); - - for(int i = 0; i < count; i++) { - spawnDebris(DebrisType.BLANK); - } - - super.onMelt(reduce); - } - - @Override - public ColumnType getConsoleType() { - return ColumnType.REDSTONE; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } - - @Override - public String getComponentName() { - return "rbmk_redstone_rod"; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerRBMKGeneric(player.inventory); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIRBMKRedstone(player.inventory, this); - } -} 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 bdf09c074..f13f34952 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -191,12 +191,6 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return flux; } } - - if(te instanceof TileEntityRBMKRedstone) { - TileEntityRBMKRedstone rod = (TileEntityRBMKRedstone)te; - rod.processFlux(flux, stream); - return flux; - } if(te instanceof IRBMKFluxReceiver) { IRBMKFluxReceiver rod = (IRBMKFluxReceiver)te; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e879e685e..3c4bec004 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -723,7 +723,6 @@ container.rbmkHeater=RBMK Fluid Heater container.rbmkOutgasser=RBMK Irradiation Channel container.rbmkReaSim=RBMK Fuel Rod (ReaSim) container.rbmkRod=RBMK Fuel Rod -container.rbmkRedstone=RBMK Redstone Column container.rbmkStorage=RBMK Storage Column container.reactorBreeding=Breeding Reactor container.reactorControl=Reactor Remote Control Block @@ -4246,9 +4245,6 @@ rbmk.heat=Column temperature: %s rbmk.boiler.water=Feedwater: %s / %s rbmk.boiler.steam=Steam: %s / %s rbmk.boiler.type=Compressor: %s -rbmk.redstone.active=Active: %s -rbmk.redstone.value=Value: %s / %s -rbmk.redstone.channel=Channel: %s rbmk.console.assign=Assign selected columns to screen #%s rbmk.console.none=Off rbmk.console.col_temp=Monitor average column temperature @@ -5118,7 +5114,6 @@ tile.rbmk_control_mod.name=RBMK Moderated Control Rods tile.rbmk_crane_console.name=RBMK Crane Console tile.rbmk_heater.name=RBMK Fluid Heater tile.rbmk_heatex.name=RBMK Heat Exchanger -tile.rbmk_redstone.name=RBMK Redstone Column tile.rbmk_loader.name=RBMK Steam Connector tile.rbmk_moderator.name=RBMK Graphite Moderator tile.rbmk_outgasser.name=RBMK Irradiation Channel diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_redstone.png deleted file mode 100644 index 8689b01c6bd228fd87a19f28265228547c540053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmV+p1@ZccP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1fxkrK~z{rt(Hqq zWK|Hy>pr@ny8)p|V0eaCIx%rIegbvxdJ>1 z2-t)Lgh8O`xAm*;>bW+}4A}fT)#u!E&#C&KdYp5E&CSiGB#_Bu+P#}7l}hd2E1aF3 z$>`|loz`t{ZwJ;%zzEFF&dR{RfJ9N$9u}$B>ryV4tz{eufVgkd025NaDrkWyvZUY%b^@yl(wzP^^- z-CfD$a{nQKAqXHC_l+^WwzhVIKxluexbXegQm@w3U?g!A%aHC&%}SsP8`Y}BO$^zae)g5^%GaXY!L#q&caPwyUWoZaLA_L#rtbdNk3N%ZHft{{m5K>U0SXJ>K9$RI zMVifKC+_sS;RLHn9{slw2vLH9vhH3~PgY&Gv$G>V|Ma6gfBuX7`N!`X>!Q4Td1hpE zvNTj`8YV#NF~%5@BxIY@eCS0I*w#=IE5mf0lKRMq4CS)6>o|^0i1+2iMJtx|mSG2L znTrAXP6ES-d(R1X!``xBFbXyK8a8ogc-V|xYx(?he%?~589ilyvuyI5|171*%r!;FUXBi-%a}Mgg8< z6Mzu$+zUp4mo;5?r5=FsTY9iyd{~LlqMXCT5=jk&VPxfJ3Y54f9DM}C2;;PrBGL;+ zz+S51SfA4Av`I!Q!4#?jNR_TiHZQhn)N<8vNHNE2-3`(*&c+~3%X2S;eoO|{ilp@5 zVL?7WE{`5f$=v+BJbwJHy!ZYG^5K&wEhTzJQ1y@kw;6&2W5{jBft`f&b93^}58r5j zwWNq+pz#Vc92yoPn#~MonQETsSoP{s6E>3HKK@+(`nzZ$T3K0XX;Tm`#61Z-H&$0y zTd_*OsFC3>KKVk8=})JGQTtqI)Fo)@*^WY~$%xKQtGi!(`cx`jVbqqXb z9Cx{n0qbtPj@$hXUZ<>^Krf~Df#m?-1GuqJD45J?Qch1#%lP=XO`@Hcm=HoWuaz+~ zGb2+|Q}(W37y)8cEEYSNi!kP~Cyw;-403vU`bL-E6-IzMU07J?WG!F}!?>K5y7t=U z1BCuVkT3#XHhzxxf?Y@|%w?WeO26oQ5BLr-;Kq`K`2Kqn$^QfMfFBaL9Rob?@9!H4 z04Yy8-f`0Tntovfe8;XB5@fv_+1uN*4^X^tcz9?D>(_I?2)4GiZum4=>m(J{Px87=mT12)0)Pte zdmV!q@o~lwAM>((2$)6^5QP|UV;Js+8zwouLi&Y$5uuE-!vJtYgoW0}y+jWV4jzsG ze;6PU$!toI76IP(62)*npYM?B7x%u7K{EOJyN*Tv1vZWaatMlMMgRZ+07*qoM6N<$ Eg3aG00c{Q9=186Rwdngd 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 O1<=(r(kNAPi25(&%t8JD literal 6917 zcma)hcUTim_x5Z8p%X+zdO#^E2q--ugeuap(Iq@8NDn0zT0#?1n$nwe1yMjigrE=v zMMXN&l&%Cqm7;Wh!RPgT{pY)`?~lyxYGn5K2;oHUI!0eBwEvgJTe>oei>t$YArZ`}Jq&7Or< z0N_hIqoaBL=B2qzWR$??z~&LY-LWW$64ih>cy0Ebehw#n*wyYPN+s5s^JwLZyhq~h zkQiIyTDMN_^#YuQf?1ll_z^J}bf_Wtorz&uSdaLHK+*3Rd33fPB4?Yp6ViBK*P}#I zuy3x{c~V~fy8g5EQ~Hong`M2mTgyW=HL2U%!wcIrHEC(NLLN*apWm!Z7`21Iq2HRr?o_BQ(fr!;(>rzm;f%$Lpfj#x14<7Pi;3d2bBNkCvT>|1z1GY?RUvjF`yK2C*qoTj@9T-qO=8oQ*{Gr+4e)X@>w z2RfED$;Ro5R?npROW1nZZpM|3jg6JPW5-`FTxM{By!C`0Ix80Du~$tDDcOPM-ZabGS(x5zrH%jKYEJ81(3qWlaZ`VA=AAiq*8)sL$kP9O8zpSF8Jo zbadvO&J_BZqa9ILfyopMC_PrgiR*v?3s{wQW~LPBV+ozkH-kpq_=CEaP(q?o$H&h( zMW6{>Nf7ov+nsce{gkwfj2@f#Lni^Mǖj*gSziT)--Ts;H9>?4f^jsPdXlhNwv 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 rG#5OfQ%$=Vo8NC^|A|s)zi&r{?z)Wmtx Date: Tue, 18 Jul 2023 20:45:54 -0500 Subject: [PATCH 6/6] fix the OC part where I18nUtil was being called (no longer is it being called) --- .../com/hbm/tileentity/machine/storage/TileEntityBarrel.java | 4 ++-- .../machine/storage/TileEntityMachineFluidTank.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 9d479a4de..c6fea9500 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -389,12 +389,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; + return new Object[] {tank.getTankType().getUnlocalizedName()}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 618791227..1269da0a6 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -487,12 +487,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getTypeStored(Context context, Arguments args) { - return new Object[] {I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; + return new Object[] {tank.getTankType().getUnlocalizedName()}; } @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{tank.getFill(), tank.getMaxFill(), I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName())}; + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()}; } } \ No newline at end of file