From af4fc10d1af549113ca09888bf6bd7b04d318732 Mon Sep 17 00:00:00 2001 From: TheVitya2127 Date: Sun, 19 Jul 2026 08:06:30 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9F=D0=BE=D0=B5=D1=85=D0=B0=D0=BB=D0=B8!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../container/ContainerMachineKeyForge.java | 10 +-- .../container/ContainerMachineSatLinker.java | 10 +-- .../inventory/container/ContainerSatDock.java | 36 ++++----- .../container/ContainerSoyuzCapsule.java | 8 +- .../container/ContainerSoyuzLauncher.java | 32 ++++---- .../hbm/inventory/gui/GUIMachineKeyForge.java | 22 +++--- .../inventory/gui/GUIMachineSatLinker.java | 20 ++--- .../com/hbm/inventory/gui/GUISatDock.java | 16 ++-- .../hbm/inventory/gui/GUISoyuzCapsule.java | 6 +- .../hbm/inventory/gui/GUISoyuzLauncher.java | 74 +++++++++--------- src/main/resources/assets/hbm/lang/en_US.lang | 8 ++ .../assets/hbm/textures/gui/gui_dock.png | Bin 1130 -> 0 bytes .../assets/hbm/textures/gui/gui_keyforge.png | Bin 1294 -> 0 bytes .../assets/hbm/textures/gui/gui_linker.png | Bin 1317 -> 0 bytes .../assets/hbm/textures/gui/gui_soyuz.png | Bin 3949 -> 0 bytes .../hbm/textures/gui/gui_soyuz_capsule.png | Bin 1058 -> 0 bytes .../hbm/textures/gui/machine/gui_keyforge.png | Bin 0 -> 1575 bytes .../textures/gui/machine/gui_sat_linker.png | Bin 0 -> 1621 bytes .../hbm/textures/gui/machine/gui_soyuz.png | Bin 0 -> 4861 bytes .../hbm/textures/gui/storage/gui_sat_dock.png | Bin 0 -> 1585 bytes .../gui/storage/gui_soyuz_capsule.png | Bin 0 -> 2543 bytes .../assets/hbm/textures/items/sat_chip.png | Bin 283 -> 342 bytes .../hbm/textures/models/machines/autosaw.png | Bin 3214 -> 3264 bytes 23 files changed, 127 insertions(+), 115 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_dock.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_keyforge.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_linker.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_soyuz.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/gui_soyuz_capsule.png create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_keyforge.png create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_soyuz.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_sat_dock.png create mode 100644 src/main/resources/assets/hbm/textures/gui/storage/gui_soyuz_capsule.png diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineKeyForge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineKeyForge.java index e95d67023..8c35c1d43 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineKeyForge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineKeyForge.java @@ -17,21 +17,21 @@ public class ContainerMachineKeyForge extends Container { diFurnace = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 2, 116, 35)); + this.addSlotToContainer(new Slot(tedf, 0, 44, 36)); + this.addSlotToContainer(new Slot(tedf, 1, 80, 36)); + this.addSlotToContainer(new Slot(tedf, 2, 116, 36)); 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)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineSatLinker.java b/src/main/java/com/hbm/inventory/container/ContainerMachineSatLinker.java index 449ee965e..273cacbe8 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineSatLinker.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineSatLinker.java @@ -17,21 +17,21 @@ public class ContainerMachineSatLinker extends Container { diFurnace = tedf; - this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 2, 116, 35)); + this.addSlotToContainer(new Slot(tedf, 0, 44, 36)); + this.addSlotToContainer(new Slot(tedf, 1, 80, 36)); + this.addSlotToContainer(new Slot(tedf, 2, 116, 36)); 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)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java index 02f02db56..3cee8e12e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java @@ -18,23 +18,23 @@ public class ContainerSatDock extends Container { tileSatelliteDock = tesd; //Storage - this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 62, 17)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 80, 17)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 98, 17)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 116, 17)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 134, 17)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 62, 35)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 80, 35)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 98, 35)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 116, 35)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 134, 35)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 62, 53)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 80, 53)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 98, 53)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 116, 53)); - this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 134, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 71, 18)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 71 + 18, 18)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 71 + 18 * 2, 18)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 71 + 18 * 3, 18)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 71 + 18 * 4, 18)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 71, 36)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 71 + 18, 36)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 71 + 18 * 2, 36)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 71 + 18 * 3, 36)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 71 + 18 * 4, 36)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 71, 54)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 71 + 18, 54)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 71 + 18 * 2, 54)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 71 + 18 * 3, 54)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 71 + 18 * 4, 54)); //Chip - this.addSlotToContainer(new Slot(tesd, 15, 26, 35) { + this.addSlotToContainer(new Slot(tesd, 15, 26, 36) { @Override public boolean isItemValid(ItemStack stack) { return stack.getItem() instanceof ItemSatChip; @@ -43,12 +43,12 @@ public class ContainerSatDock extends Container { 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)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerSoyuzCapsule.java b/src/main/java/com/hbm/inventory/container/ContainerSoyuzCapsule.java index 390391847..4ccf28730 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSoyuzCapsule.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSoyuzCapsule.java @@ -19,23 +19,23 @@ public class ContainerSoyuzCapsule extends Container { { for(int j = 0; j < 6; j++) { - this.addSlotToContainer(new Slot(tedf, j + i * 6, 8 + j * 18 + 18 * 2, 17 + i * 18)); + this.addSlotToContainer(new Slot(tedf, j + i * 6, 26 + j * 18 + 18 * 2, 18 + i * 18)); } } - this.addSlotToContainer(new Slot(tedf, 18, 8, 35)); + this.addSlotToContainer(new Slot(tedf, 18, 17, 36)); 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)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerSoyuzLauncher.java b/src/main/java/com/hbm/inventory/container/ContainerSoyuzLauncher.java index 6c13565d7..6fa787caa 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSoyuzLauncher.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSoyuzLauncher.java @@ -17,29 +17,29 @@ public class ContainerSoyuzLauncher extends Container { nukeBoy = tedf; //Soyuz - this.addSlotToContainer(new Slot(tedf, 0, 62, 18)); + this.addSlotToContainer(new Slot(tedf, 0, 98, 80)); //Designator - this.addSlotToContainer(new Slot(tedf, 1, 62, 36)); + this.addSlotToContainer(new Slot(tedf, 1, 80, 80)); //Satellite - this.addSlotToContainer(new Slot(tedf, 2, 116, 18)); + this.addSlotToContainer(new Slot(tedf, 2, 98, 26)); //Landing module - this.addSlotToContainer(new Slot(tedf, 3, 116, 36)); + this.addSlotToContainer(new Slot(tedf, 3, 80, 26)); //Kerosene IN - this.addSlotToContainer(new Slot(tedf, 4, 8, 90)); + this.addSlotToContainer(new Slot(tedf, 4, 152, 98)); //Kerosene OUT - this.addSlotToContainer(new Slot(tedf, 5, 8, 108)); - //Peroxide IN - this.addSlotToContainer(new Slot(tedf, 6, 26, 90)); - //Peroxide OUT - this.addSlotToContainer(new Slot(tedf, 7, 26, 108)); + this.addSlotToContainer(new Slot(tedf, 5, 152, 116)); + //Oxyden IN + this.addSlotToContainer(new Slot(tedf, 6, 170, 98)); + //Oxyden OUT + this.addSlotToContainer(new Slot(tedf, 7, 170, 116)); //Battery - this.addSlotToContainer(new Slot(tedf, 8, 44, 108)); + this.addSlotToContainer(new Slot(tedf, 8, 134, 98)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 6; j++) { - this.addSlotToContainer(new Slot(tedf, j + i * 6 + 9, 62 + j * 18, 72 + i * 18)); + this.addSlotToContainer(new Slot(tedf, j + i * 6 + 9, 44 - i * 18, 26 + j * 18)); } } @@ -47,13 +47,13 @@ public class ContainerSoyuzLauncher extends Container { { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 17 + j * 18, 162 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + this.addSlotToContainer(new Slot(invPlayer, i, 17 + i * 18, 220)); } } @@ -68,8 +68,8 @@ public class ContainerSoyuzLauncher extends Container { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - if (par2 <= 27) { - if (!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) + if (par2 < 27) { + if (!this.mergeItemStack(var5, 27, this.inventorySlots.size(), true)) { return null; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineKeyForge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineKeyForge.java index 54cafc0d0..dfa6794a7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineKeyForge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineKeyForge.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineKeyForge; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineKeyForge; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -13,7 +14,7 @@ import net.minecraft.util.ResourceLocation; public class GUIMachineKeyForge extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_keyforge.png"); + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_keyforge.png"); private TileEntityMachineKeyForge siren; public GUIMachineKeyForge(InventoryPlayer invPlayer, TileEntityMachineKeyForge tedf) { @@ -21,26 +22,25 @@ public class GUIMachineKeyForge extends GuiInfoContainer { siren = tedf; this.xSize = 176; - this.ySize = 166; + this.ySize = 186; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - String[] text = new String[] { "The first slot will copy the key/lock's", - "pin configuration and paste it to the second slot." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); + String[] keyText = I18nUtil.resolveKeyArray("desc.gui.keyforge.key"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, keyText); - String[] text1 = new String[] { "The third slot will randomize the", - "key/lock's pin configuration."}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); + String[] randomText = I18nUtil.resolveKeyArray("desc.gui.keyforge.random"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, randomText); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -50,7 +50,7 @@ public class GUIMachineKeyForge extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); + this.drawInfoPanel(guiLeft + 12, guiTop + 28, 16, 16, 2); + this.drawInfoPanel(guiLeft + 12, guiTop + 28 + 16, 16, 16, 3); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java index 9bd5eeb50..c6783fa0a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineSatLinker; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSatLinker; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -13,7 +14,7 @@ import net.minecraft.util.ResourceLocation; public class GUIMachineSatLinker extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_linker.png"); + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_sat_linker.png"); private TileEntityMachineSatLinker siren; public GUIMachineSatLinker(InventoryPlayer invPlayer, TileEntityMachineSatLinker tedf) { @@ -21,25 +22,24 @@ public class GUIMachineSatLinker extends GuiInfoContainer { siren = tedf; this.xSize = 176; - this.ySize = 166; + this.ySize = 186; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - String[] text = new String[] { "The first slot will copy the satellite/chip's", - "frequency and paste it to the second slot." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); + String[] chipText = I18nUtil.resolveKeyArray("desc.gui.satlinker.chip"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, chipText); - String[] text1 = new String[] { "The third slot will randomize the", - "satellite/chip's frequency."}; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); + String[] randomText = I18nUtil.resolveKeyArray("desc.gui.satlinker.random"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, randomText); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.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); } @@ -50,7 +50,7 @@ public class GUIMachineSatLinker extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); + this.drawInfoPanel(guiLeft + 12, guiTop + 28, 16, 16, 2); + this.drawInfoPanel(guiLeft + 12, guiTop + 28 + 16, 16, 16, 3); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUISatDock.java b/src/main/java/com/hbm/inventory/gui/GUISatDock.java index 369530b2f..08d66d82a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISatDock.java +++ b/src/main/java/com/hbm/inventory/gui/GUISatDock.java @@ -3,6 +3,8 @@ package com.hbm.inventory.gui; import com.hbm.inventory.container.ContainerSatDock; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSatDock; +import com.hbm.util.i18n.I18nUtil; + import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; @@ -11,7 +13,7 @@ import org.lwjgl.opengl.GL11; public class GUISatDock extends GuiInfoContainer { - public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_sat_dock.png"); private final TileEntityMachineSatDock tileSatelliteDock; public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { @@ -19,24 +21,22 @@ public class GUISatDock extends GuiInfoContainer { tileSatelliteDock = tesd; this.xSize = 176; - this.ySize = 168; + this.ySize = 186; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - String[] text = new String[] { "Requires linked miner sat chip.", - "Cargo ship will land periodically to", - "deliver resources." }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); + String[] text = I18nUtil.resolveKeyArray("desc.gui.satdock.desc"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 7, guiTop + 36, 16, 16, guiLeft - 7, guiTop + 36 + 16, text); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040); + this.fontRendererObj.drawString(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040); } @@ -46,6 +46,6 @@ public class GUISatDock extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); + this.drawInfoPanel(guiLeft - 7, guiTop + 36, 16, 16, 2); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java b/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java index 055aeabd5..4a7400bb3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java +++ b/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java @@ -14,7 +14,7 @@ import net.minecraft.util.ResourceLocation; public class GUISoyuzCapsule extends GuiContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_soyuz_capsule.png"); + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_soyuz_capsule.png"); private TileEntitySoyuzCapsule diFurnace; public GUISoyuzCapsule(InventoryPlayer invPlayer, TileEntitySoyuzCapsule tedf) { @@ -22,14 +22,14 @@ public class GUISoyuzCapsule extends GuiContainer { diFurnace = tedf; this.xSize = 176; - this.ySize = 168; + this.ySize = 186; } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } diff --git a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java index a1fdb30cc..aace50777 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java +++ b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -16,49 +17,50 @@ import net.minecraft.util.ResourceLocation; public class GUISoyuzLauncher extends GuiInfoContainer { - private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_soyuz.png"); + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_soyuz.png"); private TileEntitySoyuzLauncher launcher; public GUISoyuzLauncher(InventoryPlayer invPlayer, TileEntitySoyuzLauncher tedf) { super(new ContainerSoyuzLauncher(invPlayer, tedf)); launcher = tedf; - this.xSize = 176; - this.ySize = 222; + this.xSize = 194; + this.ySize = 244; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 36, 16, 52); - launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 36, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 49, guiTop + 72, 6, 34, launcher.power, launcher.maxPower); + launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 44, 16, 52); + launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 170, guiTop + 44, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 44, 16, 52, launcher.power, launcher.maxPower); + + String[] descText = I18nUtil.resolveKeyArray("desc.gui.soyuz.desc"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 53, 16, 16, guiLeft - 8, guiTop + 53 + 16, descText); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The Soyuz goes here"} ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"Designator only for CARGO MODE"} ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The payload for SATELLITE MODE"} ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"The orbital module for special payloads"} ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"SATELLITE MODE"} ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"CARGO MODE"} ); + String[] cargoText = I18nUtil.resolveKeyArray("desc.gui.soyuz.cargo"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 79, guiTop + 52, 18, 18, mouseX, mouseY, cargoText ); + String[] satelliteText = I18nUtil.resolveKeyArray("desc.gui.soyuz.satellite"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 97, guiTop + 52, 18, 18, mouseX, mouseY, satelliteText ); } protected void mouseClicked(int x, int y, int i) { super.mouseClicked(x, y, i); - if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) { + if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 0)); } - if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 35 < y && guiTop + 35 + 18 >= y) { + if(guiLeft + 79 <= x && guiLeft + 79 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 1, 0)); } - if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) { + if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 97 < y && guiTop + 97 + 18 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 1)); @@ -69,8 +71,8 @@ public class GUISoyuzLauncher extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.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); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 17, this.ySize - 96 + 2, 4210752); String secs = "" + launcher.countdown / 20; String cents = "" + (launcher.countdown % 20) * 5; @@ -79,9 +81,9 @@ public class GUISoyuzLauncher extends GuiInfoContainer { if(cents.length() == 1) cents += "0"; - float scale = 0.5F; + float scale = 1; GL11.glScalef(scale, scale, 1); - this.fontRendererObj.drawString(secs + ":" + cents, (int)(153.5F / scale), (int)(37.5F / scale), 0xff0000); + this.fontRendererObj.drawString(secs + ":" + cents, (int)(85 / scale), (int)(121 / scale), 0xff0000); GL11.glScalef(1/scale, 1/scale, 1); } @@ -91,47 +93,49 @@ public class GUISoyuzLauncher extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int)launcher.getPowerScaled(34); - drawTexturedModalRect(guiLeft + 49, guiTop + 106 - i, 194, 52 - i, 6, i); + int i = (int)launcher.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 134, guiTop + 96 - i, 194, 52 - i, 16, i); - drawTexturedModalRect(guiLeft + 61, guiTop + 17, 176 + (launcher.hasRocket() ? 18 : 0), 0, 18, 18); + drawTexturedModalRect(guiLeft + 97, guiTop + 79, 210 + (launcher.hasRocket() ? 18 : 0), 8, 18, 18); int j = launcher.designator(); if(j > 0) - drawTexturedModalRect(guiLeft + 61, guiTop + 35, 176 + (j - 1) * 18, 0, 18, 18); + drawTexturedModalRect(guiLeft + 79, guiTop + 79, 210 + (j - 1) * 18, 8, 18, 18); int k = launcher.mode; - drawTexturedModalRect(guiLeft + 88, guiTop + 17 + k * 18, 176, 18 + k * 18, 18, 18); + drawTexturedModalRect(guiLeft + 97 - k * 18, guiTop + 52, 228 - k * 18, 26, 18, 18); int l = launcher.orbital(); if(l > 0) - drawTexturedModalRect(guiLeft + 115, guiTop + 35, 176 + (l - 1) * 18, 0, 18, 18); + drawTexturedModalRect(guiLeft + 79, guiTop + 25, 210 + (l - 1) * 18, 8, 18, 18); int m = launcher.satellite(); if(m > 0) - drawTexturedModalRect(guiLeft + 115, guiTop + 17, 176 + (m - 1) * 18, 0, 18, 18); + drawTexturedModalRect(guiLeft + 97, guiTop + 25, 210 + (m - 1) * 18, 8, 18, 18); if(launcher.starting) - drawTexturedModalRect(guiLeft + 151, guiTop + 17, 176, 54, 18, 18); + drawTexturedModalRect(guiLeft + 88, guiTop + 97, 210, 44, 18, 18); if(launcher.hasFuel()) - drawTexturedModalRect(guiLeft + 13, guiTop + 23, 212, 0, 6, 8); + drawTexturedModalRect(guiLeft + 157, guiTop + 31, 210, 0, 6, 8); else - drawTexturedModalRect(guiLeft + 13, guiTop + 23, 218, 0, 6, 8); + drawTexturedModalRect(guiLeft + 157, guiTop + 31, 216, 0, 6, 8); if(launcher.hasOxy()) - drawTexturedModalRect(guiLeft + 31, guiTop + 23, 212, 0, 6, 8); + drawTexturedModalRect(guiLeft + 175, guiTop + 31, 210, 0, 6, 8); else - drawTexturedModalRect(guiLeft + 31, guiTop + 23, 218, 0, 6, 8); + drawTexturedModalRect(guiLeft + 175, guiTop + 31, 216, 0, 6, 8); if(launcher.hasPower()) - drawTexturedModalRect(guiLeft + 49, guiTop + 59, 212, 0, 6, 8); + drawTexturedModalRect(guiLeft + 139, guiTop + 31, 210, 0, 6, 8); else - drawTexturedModalRect(guiLeft + 49, guiTop + 59, 218, 0, 6, 8); + drawTexturedModalRect(guiLeft + 139, guiTop + 31, 216, 0, 6, 8); - launcher.tanks[0].renderTank(guiLeft + 8, guiTop + 88, this.zLevel, 16, 52); - launcher.tanks[1].renderTank(guiLeft + 26, guiTop + 88, this.zLevel, 16, 52); + launcher.tanks[0].renderTank(guiLeft + 152, guiTop + 96, this.zLevel, 16, 52); + launcher.tanks[1].renderTank(guiLeft + 170, guiTop + 96, this.zLevel, 16, 52); + + this.drawInfoPanel(guiLeft - 16, guiTop + 53, 16, 16, 2); } } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 375d2c3c0..cabeaa8bf 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -953,6 +953,8 @@ desc.gui.assembler.warning=§cError:§r This machine requires an assembly templa desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. desc.gui.gasCent.output=§6Fluid Transfer§r$Fluid can be transferred to another centrifuge$via the output port for further processing. +desc.gui.keyforge.key=The first slot will copy the key/lock's$pin configuration and paste it to the second slot. +desc.gui.keyforge.random=The third slot will randomize the$key/lock's pin configuration. desc.gui.nukeBoy.desc=§1Requires:§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter desc.gui.nukeGadget.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring desc.gui.nukeMan.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit @@ -974,6 +976,12 @@ desc.gui.rtg.heat=§eCurrent heat level: %s desc.gui.rtg.pellets=Accepted Pellets: desc.gui.rtg.pelletHeat=%s (%s heat) desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.satdock.desc=Requires linked miner sat chip.$Cargo ship will land periodically to$deliver resources. +desc.gui.satlinker.chip=The first slot will copy the satellite/chip's$frequency and paste it to the second slot. +desc.gui.satlinker.random=The third slot will randomize the$satellite/chip's frequency. +desc.gui.soyuz.cargo=CARGO MODE +desc.gui.soyuz.desc=Designator only for CARGO MODE$The payload for SATELLITE MODE +desc.gui.soyuz.satellite=SATELLITE MODE desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Template Folder. desc.gui.turbinegas.automode=§2Automatic turbine throttling mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the throttle position$based on the power required from the network$and the fuel level in the internal tank desc.gui.turbinegas.fuels=§6Accepted fuels:§r diff --git a/src/main/resources/assets/hbm/textures/gui/gui_dock.png b/src/main/resources/assets/hbm/textures/gui/gui_dock.png deleted file mode 100644 index 7596be55ec91e18a753ecf018f7e1b218944ce2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1130 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGwrqNj^v zNX4ADcLVco1qifVe66wCYum$Kmn8W}k3D>wbbbX~T;`#=<;O3+f9ESZqe7KiUh%&< zP?5ENu9Qt%<`?E0-JgXkt>()72l8e`2{(q?n6lgRKdZ3W_DuG**0M6ehV$po7xuH| zefan9UR3tm$B!4AzGr#&>C0DszPb~izWlXk{N}}=FoVItfUzNgiQym%LlY+hi!cL+ z8iRljSYpHTi~I>K+qZAuoqp!?ooT6t&ri*{e*OCH=NH0L7@~gvl>Z{vet4no>7;X0 zE%(KQ%@0P>i_=hqgzG!z8P9jh^060NonN@mK9B!icH`kF>56N&43d>Em=#y$vJ_Q+ z_?q*LZ^5m$nO?JtzgZo3TktD}8RlGG&I3P{E|=Rk?la>*u$KM*CLJe+xx7DR4m=fo z_PO!j_WkU?B+7UXXxsFJznk2!h~c)TU_-Ti3DckXii|&gX}uSfKX&tv)B&6G`{O?5 z|Kq0JUae$%=7&&EMZ#U#E z&h=}x+?!{7jyIltUCHjuVx#9jre)dtG2)F*45Lcr9k$-~ojuvIy>8t-xjSwO#ad@} z-r;!i?ZNAff+yyDD$Zefb=;J+NWICC;`h_?OS19=%csw8a9ru{b$B*qezJ0a{W?b6 zDGl9ez$ADE=$upM7tUWT-MBzWy7Ag$5m@>x`>M2H?SW?@Gm3YL&iHzRD+g$yp5J$b z0(b((Vk{(OgCw>w%?_^P`+I}y%;Alq6}GUzd$4fM{ePSLo?p9V;(PgJg-unF;+dba z2flpzWb~!+!2SZp0@>;Q4>C_IZm56$fE}2zX#x`3>lipYW^MCos_Ft+;OXk;vd$@? F2>@>>f2;ri diff --git a/src/main/resources/assets/hbm/textures/gui/gui_keyforge.png b/src/main/resources/assets/hbm/textures/gui/gui_keyforge.png deleted file mode 100644 index ec1f6ccb6b215afbdd8ba576c84c45604dda3f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGxWQBN1g zkcv5P@7~V6?IqEAaem|KO}7%1nQpXm3ErL%B6hy{V9UjgqS5A)Ze{P4XnT9n;bG05 z8#7G49uL^SclM5Oh3I2xOP=Ph=dDb9gH@TzKd#oP3wu^!6SgyHZ}+luOa)eRpUvj2 zIh?nB^{Q2W>*Ak!Jy6@fY<|R_2~V%@-_KeR%EWMxg`tU)fkl{sLybYehe2TmgM$HM zLjq+I-^{+V)Fth{d(X!0_O`7zbKV(9e@^@xCfcy7pZSYe?De}}_dA-)Upu4Az!H5| z^uUVuzgO-0+w-00am?yxGv9yty8POQdmkfK?`Qh)>OoxB=byIK`=-a`zkDy-zx@|O zi0wZII~l(4zjwmZ|LqiuyS?q)uRp0%8Gqz3>Y6fz){Fh0)1Ck8mePTYsf;u9R;161 z%zg@K|YybW5TA9N!CxIbJ-6%v!4f)ge?YNtlU)Q)T zclG<~#}dz96`IXHd-m~%o!yKpe*IwI;d;IF>i4~cJ;h%wmS29k%<#voXwni?>>d6E zxwl{KdiPA+u&*#;*|Jq_i4v<;{oDSrNw%?Pb4%g5a+X_f%R)o9-haQ^t}k(2io3#N zojMt7CfmMr(h}}wRdd8S*UH!Qp*p4WsYygR<`07#{rpM4*RL30ymNVk0Z@r~LBtCPbY{4V5% zX4=(8asP_t^Fyzi_!`UfyXWh*NUmp?_5J(zNOdOrhl~$u=j?Ahth2dc{^lQ`qKGD- b!tp=j;(z|^E8R>_fGqHI^>bP0l+XkKa(~>R diff --git a/src/main/resources/assets/hbm/textures/gui/gui_linker.png b/src/main/resources/assets/hbm/textures/gui/gui_linker.png deleted file mode 100644 index 5ccf509365025d0efd388790196e4125fb3edd9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGxW9Zwg> zkcv5P@4gOv>><&1(LdOw^>TpHx*$2eBVNoL-oKkatqJe$bu`NRIPdfE!)sqA-RUn~ zIBVTMQ_&pf?=Lw2h%J|YV&Z$v{`Q5^*r^<0< z0zQ;U%#*WiTz}*J_wM5_e(x*WeV1#qq5QV|V8#_y^-X$)Jcn1+v)!$^VYHk){r>m<{_S=D{CA2hnm>m*w}@p!)90i0`))kT58t}^hy8B}Ni*4o z%fdf4A72_57iaf(jUR7E7^NZNcpMnRrD*O@Yo|_FcaMkJVe`4GBtg8QFy8Vv2{n_QM z9A_-QKTrA0xZ_En|EGSjAAk4`PRh`oD?R6TDC3V;O}oCD-#gbYvaa^*((vy;4^@8= zbkHt-@DXU#=hm;n>+`(D{)gB3Ke!h)gE{xco7jfW(NWv&^gd4Qu2)~qTK`t;p?{I| zgq>&E9xQ1+T3=WA{*vu~F{KUHbOY=9&$2II{apQbI^Wmm4u(0x4O8#@>Ne}&BlbX~ z!IClJ;@a-hN=rm%@8Z7jy_WazhZmWDQtfhL!$U8d_=bj>H6;l1wL6D~%Jv^$_5HcQ z{U;*Si&MOXl2m2h3WhTz~+2_!Hc;Tv5 zeaDlp{w|)8ze#yQ;Vk*%eGcCrOOckC-*BYNd3O9^9faPfeBtj6!4no|`;*-l{4V4r zEgZ{OjQl=7F0cVska@QM@uM$)Em%p* zgt3jim;YGY>5px^DYKht{c%mGZ*xw){4l@NCN%VV>D@2Ce!XhvPV{qUxcm9@XJ>V$ w_=ijnte)8)c&WI#Vg2SGpc0BE;798}#&WO2Ct{Q|&VelOboFyt=akR{0Jw1FsQ>@~ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_soyuz.png b/src/main/resources/assets/hbm/textures/gui/gui_soyuz.png deleted file mode 100644 index 2ae2fbdfe1d07c11dca1b6686b6cb2453b623efa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3949 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 F>hG`nSatva diff --git a/src/main/resources/assets/hbm/textures/gui/gui_soyuz_capsule.png b/src/main/resources/assets/hbm/textures/gui/gui_soyuz_capsule.png deleted file mode 100644 index d5d1c4cfc409ca0642becd3b3af2726e6406403d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9%r`w< z978JRyuIt_cRN7D;bQ)gRSD8JIfA|&bUI;mXwxOf)>~;4#1hT#-ziS>cyY4p!_jS1 zo~QmPlH9<5dN2Qj-9LUP=uhwdJij(#S}KoV#L>eApEesm|6IuvzGijAu~3G4_wTu{Xck;UzflBzvzSALJS66@;s$o;8mJRBumaqSjQvhsy}&vLd3o_Kxm`seG~4L8jWpV{*9*qqzN zIV`j0r!xqs5sk`<Ax&tP4Q@n0F(`LEo#1lkd$Ls_xKm{o;y!9 k9(mdKI;Vst0D-hu5C8xG diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_keyforge.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_keyforge.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3a58a63df11da51733d5e55cb08b1b98d63039 GIT binary patch literal 1575 zcmbtUdr%T~9RGn@l$E(MD+xF^*O}8%wzLOeuOmyObeS5aJsjpzhUSCDOK;iC#MVqQ z$()|)nU87}iYw@xP>A6m=K~!niKGGshH0R~J?{4B+`f0;*M0B4-@EVk`}yP^48<>9 zymm1FU}^BaJz)Sq>>&ie7T6srrTUAxEHwB~v`em)F`Jqdtjx?u%KW<(`R~d77 zVPACNxpcSKlGDD4L^d^%p-IOvt<@8X5dF-|}3!Apms^ z1fl;^p%dpZj)}N^Snn+}2wl42@f=O6l&-^@A(3?vUIWT+j7B5gSJ1?fcTaV2Z&4s& zt61JRc_R|@y_`lD%P!1pW;xw4@^FOAci-we6F-}lZ6A75d;)vFp#;=+jo#}y6N(r% zneLHDq!4t4;srf=#~-yNMQuaDu`C7y^SW3;*F`DifK5xwa6+&4%OGMjj2znm^IEe_ zS+~RI!p=<2vGj#r*}jG>VuTTAm&XSB_))!i&FuUxwk6K*1u7xbjNiX@Q?;#e_`Wh*ISA(g(mV(KV}!_N1;UVdcp z98;AmMh$09(U=caN#1XN3%_*GT=JkrJEnH+qd;cC5__JK??X zrvYw??tJXF>rcNzWi;P-OGK{9+w1L#&ShO}C6Y^T-aJ5U-Ilv|D@=6mQGI|%<^{Wi z?e{JyD5z}wAn@6z?;(-a%dI)6e}jQoj!iRZR1=w5DwWDKF>wm6xr7*2@hR&IT2vhS z!f&eC;eGx6SF5VlYgUsd0%y1*^gigkfHkIL0zRKVWH1EpbXby)}mV!wCg4lK6FWX8z$r8{m4HEX(E6R@R_d5x3Jb!5V|C-ErFW*lc- z);}W6n)&g=80-{JD>;tEXETyljmJIouR`5t@uUmJZ@1@j6AGGqW&mHP@q@?Bb zRHM`UxF{woUug}LN$N#s?W&|Y|HWf5Yy4)5#oRFIiMx?w_M@*O!Td>(PaZRE(P^IJ tt_TpS83%?M85H|`aN(cN^ZzV6%I1uM3kkVbSc!9;g7=2*soxcs{X2rGf-(RA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png new file mode 100644 index 0000000000000000000000000000000000000000..a1262001b64250f9c1ed63c0b1f880dbacb11c83 GIT binary patch literal 1621 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

dJ1tSD!WQ!{|J91RN9i7f2we$bR_m>0f}d@J z5W0#L*cT5PX_0@m$Wu7<_bl$B)-l0gV>8dl7*aW}Lzlh6Uro^cu`!wLf^Nnf)#daI zgaK%YtjX4S@>Etc^-?@O4Xw@!+9%_-Vqzgp<>b#dA-|x$E2SapELpTo6lPxBY1ae4 zOBHgZIJLRkCL=$7xf!Tt{{~4q zzk2RRTQ2k$R3**>%|n}$$&83S0wp=I>U#>JG!`KySr&+cwso`6URnjCLz-mB7qH&W zC@dzAR(Zd_=97 zd6Hcp$A*aZqTEK~iT+0scFF+&paJsSBi%vlwh zap7-HJwoYIF#3y58+nJu#!|PdzND#-=o2dLmrtF23X}V~X1YS^&D*AT*6rzJPm3Vkwt?h*SzqP`y0rL2`loLQdie1D=SCthmbF^Z^mg%|o=BIC>RM{qP7gOa5U zcgytyX@SCr8W57nMwv8Jv{ohe!W9>36 z+FWHctWwN#dfA68HHD6YOC^<+GKN(;6BhK+Eh;Jft4jZ)!dtKA))*o$4-duN2UzQL z1VZNg()8*(j@TC1>P^lJ*k9Z@q6X_sLyCw%Wq#AJ9U>BY83Tm0p(ABk64w)|+pWU;?x|w7<`rlq}9Zc84W-+Kw3=UsdnQEPCZ;a$=jpQ(^iAK46 z=4l?dzYZ=P`MrLFJa|pKvbNT)WoBCNC=?rma+`4&S3mTU!yyjj)&FQuHlnB6O;7!9 zoI5n_DAL@Fw+}9nRRaujfWDPWGoqKuBr}O*ky>H^bz87j?Ofv=YX^isS zXpKfcHD77nQGH;w-k7hNah#EW z=UG8aZD9bD87DJScCps`DVy&1Ye83xSHJdf>!+~I zkv9TXwGf+$zRPpOL( z8E_n!F*$^UjJKs_GlsaQcl6ToEtGib2ikNPwCnkj6Q&lc1Pl~;fagmpW4n5OmLt2> z_rG6mc+8)uk!sv3!X3FsXmTafdaJyCL|2xSpq13*=O8}SW0+SWX20QtJ$e>XT53_f zc7vOneo;2pP&69NY?amBPtU71Ha2Ct zn&HG}>FKJNRz1sF;rpJRgt;9#Ik}OMku0&1Q={BYZv-2U|Fg<}uoyeY#2A|U+S;O5 zBD%RL89~-{s$*+fCOs>~EKYh7BX4vy2?C)iDk@TjVGZcEg9l5Zmawc;%d*C3bh9G! z|L(#+*!vrRzm$aCvf}&0?_UINIj8_bVOejqA0q{XTK@lN{fDWRzm%B9u0*5JVx^L% zDx%Q;hBuZ4Vl9y3x6p0uW8rYSF~9z&L7|rl5xW0(SpLJ%-%%?)tw<@$5<9|B<}7V_ zsPo@c74rMgm2M1Z*Bj^du0%8*cUS0^#0G#=Or_>~F35dH;888<9_JJ+hab+^{&|D- dKOXekJ(SH%7^2H-nD3{+P|x^6k&eT|{{q`q3Qzz5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_sat_dock.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_sat_dock.png new file mode 100644 index 0000000000000000000000000000000000000000..c0609a312b255d44be71edf3fd85f98c6bba5db2 GIT binary patch literal 1585 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 YN0#S4HozZdI@}Jmq!sckdsaBLDyZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/sat_chip.png b/src/main/resources/assets/hbm/textures/items/sat_chip.png index ff0a9aa21cfcbe2093fad13650ca6d2d6e9ee1f6..79f9fbc4aa0b4905392a8166da7dc9da1ec12ea2 100644 GIT binary patch delta 315 zcmV-B0mS~B0@ebMB!2;OQb$4nuFf3k0003HNklTAiA^o{SDTTEbYc1a|AME#g0P4DCx7!^HT8EJ5 zxvbY~#^W*Gdp;in52mK7DprFoukIdeEoE6U8ja}ndacHScDs#Iin1)(Y&HN)CKFbJ zE?>{@c<=GvQ#4goW5JQ4D8zez_HYLmMIkPUWj34r|BZgXFPHerAHRJWv-2sfcgO$$ N002ovPDHLkV1lt4k+T2* delta 255 zcmVOLFr|lU`caN}U7S@Cd=7AT?X3H$MtSI-STMRSI4X>N{0Q!~xaL@UF&gB4q z9O5{xhcpaBM_=*ULMc@r=66ST{uxTCx(F&rDLa)?c0r?|O?Yl)31bWv*C`+bc7F42 zt?kWv??xd+V|>EQI4(DiNo(B?FvfI)%#0{cz{~)EC{K`O8CG_NG)+Hm(3)F_2t`mK zkJi23V1U*dMNol=y8pJi9iKo%*iSCK5QlFk96IH%^8f_Ja_9yx_dEaq002ovPDHLk FV1nS$Y`Fjc diff --git a/src/main/resources/assets/hbm/textures/models/machines/autosaw.png b/src/main/resources/assets/hbm/textures/models/machines/autosaw.png index 61a97f9bf0047ff596b65660b20ebf692411a050..3c364ceaebb2e65ef80d1efa3dfcc8db378730f2 100644 GIT binary patch delta 3196 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 Ap#T5? From 73adc23f118afe8767823c183b67b111d93cf7d9 Mon Sep 17 00:00:00 2001 From: TheVitya2127 Date: Sun, 19 Jul 2026 08:28:56 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A1=D0=B3=D0=BE=D1=80=D0=B5=D0=BB=20?= =?UTF-8?q?=D0=B2=20=D0=B0=D1=82=D0=BC=D0=BE=D1=81=D1=84=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java b/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java index 4a7400bb3..b1a83afe0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java +++ b/src/main/java/com/hbm/inventory/gui/GUISoyuzCapsule.java @@ -29,7 +29,7 @@ public class GUISoyuzCapsule extends GuiContainer { protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); - this.fontRendererObj.drawString(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x7daf71); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } From 93f60ada2fc8f926e500f099d2b2bed0224afe93 Mon Sep 17 00:00:00 2001 From: TheVitya2127 Date: Sun, 19 Jul 2026 08:31:12 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=92=20=D1=81=D0=BC=D1=8B=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D1=82=D1=8B=20=D0=B2=D1=8B=D0=B6=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hbm/textures/gui/machine/gui_soyuz.png | Bin 4861 -> 4849 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_soyuz.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_soyuz.png index 2a2fe97b9e36d11439340afab503efa64a1dcacf..c7f8304000102bec571faf67cd8a740b9c9cb07e 100644 GIT binary patch delta 3980 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 b;oj_+IM3ck^@WT{{cW