From 34cc10d7a0ed4fff7a953f007f493f9bc5226db3 Mon Sep 17 00:00:00 2001 From: TheVitya2127 Date: Mon, 20 Jul 2026 07:51:46 +0400 Subject: [PATCH 01/16] Who stole my cigarettes?! --- .../handler/nei/CentrifugeRecipeHandler.java | 2 +- .../com/hbm/handler/nei/MixerHandler.java | 2 +- .../handler/nei/RefineryRecipeHandler.java | 2 +- .../container/ContainerCentrifuge.java | 32 +++++---- .../container/ContainerMachineRefinery.java | 30 ++++----- .../inventory/container/ContainerMixer.java | 18 ++--- .../inventory/gui/GUIMachineCentrifuge.java | 30 ++++++--- .../hbm/inventory/gui/GUIMachineRefinery.java | 62 ++++++++---------- .../java/com/hbm/inventory/gui/GUIMixer.java | 42 +++++++----- .../gui/processing/gui_centrifuge.png | Bin 2397 -> 2766 bytes .../hbm/textures/gui/processing/gui_mixer.png | Bin 3236 -> 3264 bytes .../textures/gui/processing/gui_refinery.png | Bin 8584 -> 3770 bytes 12 files changed, 119 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java index 1acd56e2a..ece0e8f79 100644 --- a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java @@ -20,7 +20,7 @@ public class CentrifugeRecipeHandler extends NEIUniversalHandler { @Override public void loadTransferRects() { super.loadTransferRects(); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(56, 0, 80, 38), "ntmCentrifuge")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(63, 7, 80, 38), "ntmCentrifuge")); guiGui.add(GUIMachineCentrifuge.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } diff --git a/src/main/java/com/hbm/handler/nei/MixerHandler.java b/src/main/java/com/hbm/handler/nei/MixerHandler.java index b93ff9ca1..3cee3b5a8 100644 --- a/src/main/java/com/hbm/handler/nei/MixerHandler.java +++ b/src/main/java/com/hbm/handler/nei/MixerHandler.java @@ -20,7 +20,7 @@ public class MixerHandler extends NEIUniversalHandler { @Override public void loadTransferRects() { super.loadTransferRects(); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(57, 25, 52, 44), "ntmMixer")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(66, 20, 52, 44), "ntmMixer")); guiGui.add(GUIMixer.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index 2bf1e9e6e..f7d84f28e 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -162,7 +162,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(24, 16, 31, 36), "refinery")); guiGui.add(GUIMachineRefinery.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java index 58535bd9b..b06fe6acb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java @@ -15,29 +15,33 @@ import net.minecraft.item.ItemStack; public class ContainerCentrifuge extends Container { - private TileEntityMachineCentrifuge diFurnace; + private TileEntityMachineCentrifuge centrifuge; public ContainerCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 36, 50)); - this.addSlotToContainer(new Slot(tedf, 1, 9, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 63, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 83, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 103, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 123, 50)); - this.addSlotToContainer(new SlotUpgrade(tedf, 6, 149, 22)); - this.addSlotToContainer(new SlotUpgrade(tedf, 7, 149, 40)); + this.centrifuge = tedf; + + // Input + this.addSlotToContainer(new Slot(tedf, 0, 44, 57)); + // Battery + this.addSlotToContainer(new Slot(tedf, 1, 8, 57)); + // Outputs + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 70, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 90, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 110, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 130, 57)); + // Upgrades + this.addSlotToContainer(new SlotUpgrade(tedf, 6, 156, 31)); + this.addSlotToContainer(new SlotUpgrade(tedf, 7, 156, 49)); 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, 104 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 107 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 165)); } } @@ -83,7 +87,7 @@ public class ContainerCentrifuge extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); + return centrifuge.isUseableByPlayer(player); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index b47d2b182..3652425b4 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -19,40 +19,40 @@ public class ContainerMachineRefinery extends Container { testNuke = tedf; //Battery - this.addSlotToContainer(new Slot(tedf, 0, 186, 72)); + this.addSlotToContainer(new Slot(tedf, 0, 160, 90)); //Canister Input - this.addSlotToContainer(new Slot(tedf, 1, 8, 99)); + this.addSlotToContainer(new Slot(tedf, 1, 12, 72)); //Canister Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 12, 90)); //Heavy Oil Input - this.addSlotToContainer(new Slot(tedf, 3, 86, 99)); + this.addSlotToContainer(new Slot(tedf, 3, 66, 72)); //Heavy Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 86, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 66, 90)); //Naphtha Input - this.addSlotToContainer(new Slot(tedf, 5, 106, 99)); + this.addSlotToContainer(new Slot(tedf, 5, 84, 72)); //Naphtha Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 106, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 84, 90)); //Light Oil Input - this.addSlotToContainer(new Slot(tedf, 7, 126, 99)); + this.addSlotToContainer(new Slot(tedf, 7, 102, 72)); //Light Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 126, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 102, 90)); //Petroleum Input - this.addSlotToContainer(new Slot(tedf, 9, 146, 99)); + this.addSlotToContainer(new Slot(tedf, 9, 120, 72)); //Petroleum Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 146, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 120, 90)); //Sulfur Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 58, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 38, 72)); //Fluid ID - this.addSlotToContainer(new Slot(tedf, 12, 186, 106)); + this.addSlotToContainer(new Slot(tedf, 12, 38, 90)); 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, 150 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 12 + j * 18, 140 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 208)); + this.addSlotToContainer(new Slot(invPlayer, i, 12 + i * 18, 198)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMixer.java b/src/main/java/com/hbm/inventory/container/ContainerMixer.java index 0242b916b..2640f02bb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMixer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMixer.java @@ -18,15 +18,15 @@ public class ContainerMixer extends Container { public ContainerMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { this.mixer = mixer; - //Battery - this.addSlotToContainer(new Slot(mixer, 0, 23, 77)); - //Item Input - this.addSlotToContainer(new Slot(mixer, 1, 43, 77)); - //Fluid ID - this.addSlotToContainer(new Slot(mixer, 2, 117, 77)); - //Upgrades - this.addSlotToContainer(new Slot(mixer, 3, 137, 24)); - this.addSlotToContainer(new Slot(mixer, 4, 137, 42)); + // Battery + this.addSlotToContainer(new Slot(mixer, 0, 12, 72)); + // Item Input + this.addSlotToContainer(new Slot(mixer, 1, 52, 72)); + // Fluid ID + this.addSlotToContainer(new Slot(mixer, 2, 126, 72)); + // Upgrades + this.addSlotToContainer(new Slot(mixer, 3, 148, 18)); + this.addSlotToContainer(new Slot(mixer, 4, 148, 36)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java index 788b1a4d3..bf64fcaf8 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCentrifuge; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -18,25 +19,32 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { public GUIMachineCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { super(new ContainerCentrifuge(invPlayer, tedf)); - centrifuge = tedf; - this.xSize = 176; - this.ySize = 186; + this.centrifuge = tedf; + this.xSize = 182; + this.ySize = 189; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 9, guiTop + 13, 16, 34, centrifuge.power, centrifuge.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 37, centrifuge.power, centrifuge.maxPower); + + String[] upgradeText = new String[4]; + upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); + upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); + upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); + upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 16, 8, 8, mouseX, mouseY, upgradeText); } @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - //String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName()); + String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.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 + 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752); } @Override @@ -46,8 +54,8 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); if(centrifuge.hasPower()) { - int i1 = (int) centrifuge.getPowerRemainingScaled(35); - drawTexturedModalRect(guiLeft + 9, guiTop + 48 - i1, 176, 35 - i1, 16, i1); + int i1 = (int) centrifuge.getPowerRemainingScaled(37); + drawTexturedModalRect(guiLeft + 8, guiTop + 55 - i1, 182, 37 - i1, 16, i1); } if(centrifuge.isProcessing()) { @@ -55,11 +63,13 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { for(int i = 0; i < 4; i++) { int h = Math.min(p, 36); - drawTexturedModalRect(guiLeft + 65 + i * 20, guiTop + 50 - h, 176, 71 - h, 12, h); + drawTexturedModalRect(guiLeft + 72 + i * 20, guiTop + 57 - h, 182, 73 - h, 12, h); p -= h; if(p <= 0) break; } } + + this.drawInfoPanel(guiLeft + 160, guiTop + 16, 8, 8, 8); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index b3aae3272..4e78a9cc3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -26,53 +26,47 @@ public class GUIMachineRefinery extends GuiInfoContainer { super(new ContainerMachineRefinery(invPlayer, tedf)); refinery = tedf; - this.xSize = 210; - this.ySize = 231; + this.xSize = 184; + this.ySize = 222; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 30, guiTop + 27, 21, 104); // Render tooltip for column. - refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 86, guiTop + 42, 16, 52); - refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 106, guiTop + 42, 16, 52); - refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 42, 16, 52); - refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 146, guiTop + 42, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 52, refinery.power, refinery.maxPower); + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 12, guiTop + 17, 16, 52); // Render tooltip for column. + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 66, guiTop + 17, 16, 52); + refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 84, guiTop + 17, 16, 52); + refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 102, guiTop + 17, 16, 52); + refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 120, guiTop + 17, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 160, guiTop + 18, 16, 70, refinery.power, refinery.maxPower); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - 34/2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 12, this.ySize - 96 + 4, 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); - func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 350, 256); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // power - int j = (int)refinery.getPowerScaled(50); - func_146110_a(guiLeft + 186, guiTop + 69 - j, 210, 52 - j, 16, j, 350, 256); + int j = (int)refinery.getPowerScaled(70); + drawTexturedModalRect(guiLeft + 160, guiTop + 88 - j, 184, 70 - j, 16, j); OpenGlHelper.glBlendFunc(770, 771, 1, 0); // default // input tank FluidTank inputOil = refinery.tanks[0]; if (inputOil.getFill() != 0) { - - int targetHeight = inputOil.getFill() * 101 / inputOil.getMaxFill(); - Color color = new Color(inputOil.getTankType().getColor()); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 33, guiTop + 130 - targetHeight, 226, 101 - targetHeight, 16, targetHeight, 350, 256); - GL11.glDisable(GL11.GL_BLEND); + refinery.tanks[0].renderTank(guiLeft + 12, guiTop + 70, this.zLevel, 16, 52); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); } // fucking kgjhgdfjgdhjfg @@ -80,14 +74,14 @@ public class GUIMachineRefinery extends GuiInfoContainer { // 350x256 texture by behated (the pipes wouldn't fit) // pipes - + RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); if(recipe == null) { - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 60, guiTop + 54, 184, 104, 6, 2, 256, 256); + func_146110_a(guiLeft + 60, guiTop + 47, 184, 97, 24, 2, 256, 256); + func_146110_a(guiLeft + 60, guiTop + 40, 184, 90, 42, 2, 256, 256); + func_146110_a(guiLeft + 60, guiTop + 33, 184, 83, 60, 2, 256, 256); } else { // Heavy Oil Products @@ -95,31 +89,31 @@ public class GUIMachineRefinery extends GuiInfoContainer { GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); + func_146110_a(guiLeft + 60, guiTop + 54, 184, 104, 6, 2, 256, 256); // Naphtha Oil Products color = new Color(recipe.outputs[1].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); + func_146110_a(guiLeft + 60, guiTop + 47, 184, 97, 24, 2, 256, 256); // Light Oil Products color = new Color(recipe.outputs[2].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); + func_146110_a(guiLeft + 60, guiTop + 40, 184, 90, 42, 2, 256, 256); // Gaseous Products color = new Color(recipe.outputs[3].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 60, guiTop + 33, 184, 83, 60, 2, 256, 256); GL11.glDisable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 1F); } // output tanks - refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[2].renderTank(guiLeft + 106, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[3].renderTank(guiLeft + 126, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[4].renderTank(guiLeft + 146, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 66, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[2].renderTank(guiLeft + 84, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[3].renderTank(guiLeft + 102, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[4].renderTank(guiLeft + 120, guiTop + 70, this.zLevel, 16, 52); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index 974e41635..b570d5c5c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -12,6 +12,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineMixer; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -28,8 +29,8 @@ public class GUIMixer extends GuiInfoContainer { public GUIMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { super(new ContainerMixer(player, mixer)); - this.mixer = mixer; + this.mixer = mixer; this.xSize = 176; this.ySize = 204; } @@ -38,7 +39,14 @@ public class GUIMixer extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower()); + this.drawElectricityInfo(this, x, y, guiLeft + 12, guiTop + 18, 16, 52, mixer.getPower(), mixer.getMaxPower()); + + String[] upgradeText = new String[4]; + upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); + upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); + upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); + upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); + this.drawCustomInfoStat(x, y, guiLeft + 152, guiTop + 55, 8, 8, x, y, upgradeText); MixerRecipe[] recipes = MixerRecipes.getOutput(mixer.tanks[2].getTankType()); @@ -50,19 +58,19 @@ public class GUIMixer extends GuiInfoContainer { if(recipe.input2 != null) label.add("-" + recipe.input2.type.getLocalizedName()); if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName()); label.add(EnumChatFormatting.RED + "Click to change!"); - this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label); + this.drawCustomInfoStat(x, y, guiLeft + 71, guiTop + 17, 12, 12, x, y, label); } - mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52); - mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52); - mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52); + mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 18, 7, 52); + mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 61, guiTop + 18, 7, 52); + mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 126, guiTop + 18, 16, 52); } @Override protected void mouseClicked(int x, int y, int i) { super.mouseClicked(x, y, i); - if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 22 < y && guiTop + 22 + 12 >= y) { + if(guiLeft + 71 <= x && guiLeft + 71 + 12 > x && guiTop + 17 < y && guiTop + 17 + 12 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); NBTTagCompound data = new NBTTagCompound(); @@ -73,9 +81,9 @@ public class GUIMixer extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - String name = this.mixer.hasCustomInventoryName() ? this.mixer.getInventoryName() : I18n.format(this.mixer.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + + this.fontRendererObj.drawString(name, this.xSize / 2 + 40 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -85,16 +93,18 @@ public class GUIMixer extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int) (mixer.getPower() * 53 / mixer.getMaxPower()); - drawTexturedModalRect(guiLeft + 23, guiTop + 75 - i, 176, 52 - i, 16, i); + int i = (int) (mixer.getPower() * 52 / mixer.getMaxPower()); + drawTexturedModalRect(guiLeft + 12, guiTop + 70 - i, 176, 52 - i, 16, i); if(mixer.processTime > 0 && mixer.progress > 0) { - int j = mixer.progress * 53 / mixer.processTime; - drawTexturedModalRect(guiLeft + 62, guiTop + 36, 192, 0, j, 44); + int j = mixer.progress * 52 / mixer.processTime; + drawTexturedModalRect(guiLeft + 71, guiTop + 31, 192, 0, j, 44); } - mixer.tanks[0].renderTank(guiLeft + 43, guiTop + 75, this.zLevel, 7, 52); - mixer.tanks[1].renderTank(guiLeft + 52, guiTop + 75, this.zLevel, 7, 52); - mixer.tanks[2].renderTank(guiLeft + 117, guiTop + 75, this.zLevel, 16, 52); + mixer.tanks[0].renderTank(guiLeft + 52, guiTop + 70, this.zLevel, 7, 52); + mixer.tanks[1].renderTank(guiLeft + 61, guiTop + 70, this.zLevel, 7, 52); + mixer.tanks[2].renderTank(guiLeft + 126, guiTop + 70, this.zLevel, 16, 52); + + this.drawInfoPanel(guiLeft + 152, guiTop + 55, 8, 8, 8); } } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png index 8852afa9c204dabb5918beec4659274444346d32..a23c402c428ae18602af6d8c283639996d2be1c3 100644 GIT binary patch literal 2766 zcmbtVX;f3!7QTdFB2!2S;J`cxMHcV`2_-<%2t)+|2`B=Bs0@lS2uYYqqJqdEC{h6t zVnId?SQ(Td5}Ep-HK0rqhA?RY8W4emDcDQ9-s+F{qpPd;$JzVrv-h{pxo7Y1q_{d0 zaIlPMfo~#!C#+wFGIw%#l+{T~Z*`tjE#~!)) z$l`;{4&>bkZR|x^^|Fk-F50P<)bu*=*hS3Q*W#E2dfdW>wd>ml%vZa8xB!BXRU(ft(h0QZErc3`M-d=x+z4LB}>3{BA z@iKaBbW|3GP?z=g_AYjSOx6s@lq`T*Kiv8_*)hbG9y0d3*wLS|^iC1DVD!<`ighnO%$t&;%i z)$u~NT@t!k-vSnBw3>K#80gO-0O&BE>Nu5L2TbN4juaq%u|s8Ykm23L<(*PUY~2pA z0<4n1Y9;mtn+u~>Yl+uFa!g3{9Z^!6YddLnZZKTUuxw;xWL$k6rg;VEyio(BJd&q5 z6u;@~Y9dHokZqC&4m1VHX{NL)OMr>@mjWsM3Cb)Ikll*Xyn}~49KK|=Zsto)2eJ%w zfiDk)k!rZn3=?Cy&F4PFheCi9SveYeZ^ED8Sb{cL8F8^#x18YnBCvW z-2Sf)X@RAC_)3&xBs87D^eTsE-$b(D0>t{526fkZqkiF~L;>bGL4EhRkZKDgY04VP zQYa|!??2nW*ijO`bvHAaocfOQcp$@`rRyZ&aQN+R{EL>XAEpG9x}3K`k5yVUuvuy|!i73a4=bYzNTk-{Q0(wAmRenjI7<@wTBfezwrCmOS(H=8eS|IB>Ksc0S5r z`jr`2Ty2L~C{1JV>=}QU@?3&Zrd&${ZPmm@%sEL?{cy`jJ1h zh6%Iy*vvcMD|9!4?9&Fy2OjbqXA>n_AY3Gf_&6V{Ij@ z)8iWxZH<(x5Z&2Ltx<&d_&{dqu=_25lhG^;oEl14o`f~&By zF7tE%+^e!uak}6Y+s`UpJ=~50FODtfOTY#v;%td#km#7L@LcN3twzdq#^|0oiFDZ(XqiahxBkRnqqzq9CgXv%S1l}I3QwGE&``h;n`xatVy%;Ax z(COfg?TAS#9}uFkEgo?}u(nmfwMG`sEpbFH)LP!*-QICdH!4m^8h91n&dZx+n1BXx zIov$q01PKG=`*>Z`#@@!NnVvC-+5|y_!KYLA5tPu`@YRoi)CO4xkYy((#UYx*iwva zk#=u%7YYz(2u~3Jkif@l)@!4d*NmFlp~sQI@#lS^wS0m)7?aF#k#s(1KW<&tfA*q_ z{loPEb)e5+HYP$KXWNLt%z1|yItwIR+ut+O%R1f@{R0B@R54_yGBx6ygli>enOy3@ znv@6_493$J@s-*2=Z*oxl5k})VhdBbgA$Hi#GSM zQ&?~2Qw;MGR@^YM-Z@}MxnQIetAD50;fb`xuXZYmV+}27QT|3RYeNg>wv9Jc1CabZY-Y1)0_JIM&$MMkKAA}%xqx?r5 zvhEg*t$C4rsv7F*1{x3rUTMFUZMt>MfTz=1{_69lWC>eA`aJQfdp!CuFD!()y6&wc zkn6+qT*}y!lq|ojS>VF#Civ)Yf4J-&r_CoJs{4{;s8{%LY6));8MJ5COS^TpO?*HUquymGQT)bQRx;ASpBySeipi9f>)?)?Sxm-cS}PfVraOf%e}-M{?x zFYZMnT|LeS(hp(AJg#;TK-I||qg<92APpcD0fqla{1ZV`^28_($alCY<))MxhTE3@ z55Vb(@H72Wql!dOU|^uv$ts^kx(t$!hUDha>DBQB&HXa8VYv;L5RZD5+nH>{pVjqm b#(`CA>U`)-#$`39ZI~nW&URJ!GuM6x#7x+w literal 2397 zcmbtVdpOkj8vo7=8up06wkI-^nZhQ;+FhE-WkongD3qlPmD?sILW7KRVt*y0U8@LD zl2HxHeUPbibs6{3WN334W5&p3Ow5egU)wq7={)B=`#k44-#@3F&L^Q@hR4p> z5Td{4UD;S$OJp~%y+RZbVyW{JbY)XEl<1{J`T5*9+3yr&n(F+{bZesJRB%NiP4~r% zzc$|$~U)?)4ZYSt*NoC5vOHkjBV0iROxx#>BHT3u#ekpVQMreY~kO7Oy3PmwWlOZroY_ z$??2;JcTewYW-5?8da{$&>FFCrO!}bR*+@*YsrFv28!UYwb-tCsxzXtbZ&d9T9eQ; z&=GV;#s6>->?4Z}JYb!a35ZdVnFJ7S%>ftCfV&6iVL(lO2Gv=Gg*LE0;X~o!u(E7Q zh7TXV@im%i8Ao}1fEV!u=M_g_q};Bi6qv0HEmvS3^*@srJ$}B zzwFYEo((SVt8BR*m_3}_AR;s_5`ce~$3Z8!O=K|yig_I>Tk#;gev1`?r?bHgSa>TI zG}mH>Qc@g;=o7V>`iO?je&?G&$M8dxZ0t>{B6{)3fi32hA^ii%wg@vzWRP)s=hyP_ z60P`yc0H~vXBHkw&D)U>lu{bfGNHR?eLSWL0ztRyu)o?X=I=lWRb#V@5+?#83-tvC zxbx^GNdvQtZ*(k>rg)HB&Iq;;3%S#QsFU$QRM?H;^3Kz4rD{p)5o;YZl#@g{6Cyyq zf!ocT-P0Xf|3GGGm!Om@VwRyb{N<9xEaVT$sBdv=J8g}xoWio^vdh-BsJpip>PzLF zsG(cF1Zsr1VK=gRZ?E;q8%u`y4Q-4H7;hT;_>G^1819+S)I)bVCSa(E?^qM zFDh&tRi#@Y;d=685kdSSMsPf0xT(IW;?5It^xMohmK^4U(wlLE(Rq)sizq*)L-g()D zi=I6ZaF;>O3pZ@a1G(Lkg++&Fdw1PC!!JvnNW6mO=16V}cPj^K_p)VQND)C>R9NTE zE}yYl+GeZQDsSFVmDFo^S0K4IEeU)knP zLhfxt2RUZh&mD~%ZpOfJoHg$j_UN0Iz(X-Yv=auw>gXsXXge1mEqq~4{%OO6j4gSV z%rj7z&&9VEj;fiMfL!KCqvGbM@G47gqZ)K8bOZz8cLR6d7Z~|eMy1UPI}hXFBuX6b zx#y`qC~&^S2yAVPSGn!|Nc4#A0Dh!*~;f0 z;Hruc|oqef1TQlHGZUE*mfS5LM|+RMtNJsyL?o$Be;R`J?t6j-&%Rtr%mpY9%R# zW~EP#>pbND6C2Bg>e^~R|irgBTC@Wt2dUTX&aD9BW))2}U9=K8XczYI_MFMi0mKF$|( zENo-daB>*f&Z;{|Kz9KShmk-h-xTcTiLKPp+>q%7KwYxX0y@WhT#EUZwVus?ww)bv zh`kj@vmRY7qud-k4~ds+*#ta0Nfd1UkRH`z{*Y2wQW41fGoNEuDW96-uH?Y0@rJr) zvOY)qD0ZDfEtIl`Y&C8Gj?@ z!}`t+8<~Hcc67zWIkpI1&uPce{n3)%ClEvNjDB3Gsxv;Xwygepg`z1Pu%f zpb4pXlmdw4mom~fUdjd3HWjeR7;OAlm#h0nSarcCrhBD@s|ykid3)f)^SUN)AEkXZ zO}C0JEOE(N#|dsQL~VRKvc0(NRdv|dKTL+6HA!M&)-?4%w0wB|oZ z^NH!Ba|ey)F#Yud_^vJ?Tq0&xmJqr{4Qe0e^gp$5>v!kJBGC{Aebv>aSP-r8uNb62 zmHyBD3XS_;aX-%$^uX#?1Ofo>~6{ znz~=0sm!C5LQ}ECLh(fV6~#%Tyb*M9b#rrbw`MBwASj?Q>{((*m^#%9sE=g&|8ADM Z0;f&u%ZU`1?fnqR&Dq1L!ZGM?zX2h%OWFVc diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index 871440cc4f80f6397e63912c17032efb0948361f..c8800f0b601f37c61e917f7e9ca3b2ef181c6ef6 100644 GIT binary patch literal 3264 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 diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 6dbf4ffb16d132e7219a706f7b5c2978f805b159..1b67169eadf123fafc48a68f8fbeadc26926745d 100644 GIT binary patch literal 3770 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 literal 8584 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 Date: Mon, 20 Jul 2026 10:57:25 +0400 Subject: [PATCH 02/16] By order from [message has deleted] --- .../handler/nei/RefineryRecipeHandler.java | 2 +- .../container/ContainerMachineRefinery.java | 30 ++++----- .../hbm/inventory/gui/GUIMachineRefinery.java | 62 ++++++++++-------- .../textures/gui/processing/gui_refinery.png | Bin 3770 -> 8584 bytes 4 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index f7d84f28e..2bf1e9e6e 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -162,7 +162,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(24, 16, 31, 36), "refinery")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); guiGui.add(GUIMachineRefinery.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index 3652425b4..b47d2b182 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -19,40 +19,40 @@ public class ContainerMachineRefinery extends Container { testNuke = tedf; //Battery - this.addSlotToContainer(new Slot(tedf, 0, 160, 90)); + this.addSlotToContainer(new Slot(tedf, 0, 186, 72)); //Canister Input - this.addSlotToContainer(new Slot(tedf, 1, 12, 72)); + this.addSlotToContainer(new Slot(tedf, 1, 8, 99)); //Canister Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 12, 90)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 119)); //Heavy Oil Input - this.addSlotToContainer(new Slot(tedf, 3, 66, 72)); + this.addSlotToContainer(new Slot(tedf, 3, 86, 99)); //Heavy Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 66, 90)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 86, 119)); //Naphtha Input - this.addSlotToContainer(new Slot(tedf, 5, 84, 72)); + this.addSlotToContainer(new Slot(tedf, 5, 106, 99)); //Naphtha Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 84, 90)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 106, 119)); //Light Oil Input - this.addSlotToContainer(new Slot(tedf, 7, 102, 72)); + this.addSlotToContainer(new Slot(tedf, 7, 126, 99)); //Light Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 102, 90)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 126, 119)); //Petroleum Input - this.addSlotToContainer(new Slot(tedf, 9, 120, 72)); + this.addSlotToContainer(new Slot(tedf, 9, 146, 99)); //Petroleum Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 120, 90)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 146, 119)); //Sulfur Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 38, 72)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 58, 119)); //Fluid ID - this.addSlotToContainer(new Slot(tedf, 12, 38, 90)); + this.addSlotToContainer(new Slot(tedf, 12, 186, 106)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 12 + j * 18, 140 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 150 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 12 + i * 18, 198)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 208)); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index 4e78a9cc3..b3aae3272 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -26,47 +26,53 @@ public class GUIMachineRefinery extends GuiInfoContainer { super(new ContainerMachineRefinery(invPlayer, tedf)); refinery = tedf; - this.xSize = 184; - this.ySize = 222; + this.xSize = 210; + this.ySize = 231; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 12, guiTop + 17, 16, 52); // Render tooltip for column. - refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 66, guiTop + 17, 16, 52); - refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 84, guiTop + 17, 16, 52); - refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 102, guiTop + 17, 16, 52); - refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 120, guiTop + 17, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 160, guiTop + 18, 16, 70, refinery.power, refinery.maxPower); + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 30, guiTop + 27, 21, 104); // Render tooltip for column. + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 86, guiTop + 42, 16, 52); + refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 106, guiTop + 42, 16, 52); + refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 42, 16, 52); + refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 146, guiTop + 42, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 52, refinery.power, refinery.maxPower); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 12, this.ySize - 96 + 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - 34/2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 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); + func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 350, 256); // power - int j = (int)refinery.getPowerScaled(70); - drawTexturedModalRect(guiLeft + 160, guiTop + 88 - j, 184, 70 - j, 16, j); + int j = (int)refinery.getPowerScaled(50); + func_146110_a(guiLeft + 186, guiTop + 69 - j, 210, 52 - j, 16, j, 350, 256); OpenGlHelper.glBlendFunc(770, 771, 1, 0); // default // input tank FluidTank inputOil = refinery.tanks[0]; if (inputOil.getFill() != 0) { - refinery.tanks[0].renderTank(guiLeft + 12, guiTop + 70, this.zLevel, 16, 52); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + + int targetHeight = inputOil.getFill() * 101 / inputOil.getMaxFill(); + Color color = new Color(inputOil.getTankType().getColor()); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); + func_146110_a(guiLeft + 33, guiTop + 130 - targetHeight, 226, 101 - targetHeight, 16, targetHeight, 350, 256); + GL11.glDisable(GL11.GL_BLEND); } // fucking kgjhgdfjgdhjfg @@ -74,14 +80,14 @@ public class GUIMachineRefinery extends GuiInfoContainer { // 350x256 texture by behated (the pipes wouldn't fit) // pipes - + RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); if(recipe == null) { - func_146110_a(guiLeft + 60, guiTop + 54, 184, 104, 6, 2, 256, 256); - func_146110_a(guiLeft + 60, guiTop + 47, 184, 97, 24, 2, 256, 256); - func_146110_a(guiLeft + 60, guiTop + 40, 184, 90, 42, 2, 256, 256); - func_146110_a(guiLeft + 60, guiTop + 33, 184, 83, 60, 2, 256, 256); + func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); + func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); + func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); + func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); } else { // Heavy Oil Products @@ -89,31 +95,31 @@ public class GUIMachineRefinery extends GuiInfoContainer { GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 60, guiTop + 54, 184, 104, 6, 2, 256, 256); + func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); // Naphtha Oil Products color = new Color(recipe.outputs[1].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 60, guiTop + 47, 184, 97, 24, 2, 256, 256); + func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); // Light Oil Products color = new Color(recipe.outputs[2].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 60, guiTop + 40, 184, 90, 42, 2, 256, 256); + func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); // Gaseous Products color = new Color(recipe.outputs[3].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 60, guiTop + 33, 184, 83, 60, 2, 256, 256); + func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); GL11.glDisable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 1F); } // output tanks - refinery.tanks[1].renderTank(guiLeft + 66, guiTop + 70, this.zLevel, 16, 52); - refinery.tanks[2].renderTank(guiLeft + 84, guiTop + 70, this.zLevel, 16, 52); - refinery.tanks[3].renderTank(guiLeft + 102, guiTop + 70, this.zLevel, 16, 52); - refinery.tanks[4].renderTank(guiLeft + 120, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[2].renderTank(guiLeft + 106, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[3].renderTank(guiLeft + 126, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[4].renderTank(guiLeft + 146, guiTop + 95, this.zLevel, 16, 52); } } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 1b67169eadf123fafc48a68f8fbeadc26926745d..6dbf4ffb16d132e7219a706f7b5c2978f805b159 100644 GIT binary patch literal 8584 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 From da861f5763a5c7a9e866ab0d573c959a5e5468bc Mon Sep 17 00:00:00 2001 From: Wolf Date: Fri, 24 Jul 2026 00:27:36 -0400 Subject: [PATCH 03/16] Yo is this an airport? --- .../com/hbm/inventory/gui/GUIPADetector.java | 6 +++--- .../gui/particleaccelerator/gui_detector.png | Bin 3434 -> 4259 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java index ac89ca5f1..f6ac5f1aa 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java @@ -38,7 +38,7 @@ public class GUIPADetector extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 8, 5, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); @@ -57,8 +57,8 @@ public class GUIPADetector extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); int heat = (int) Math.ceil(source.temperature); - if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); - if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + if(heat <= 123) drawTexturedModalRect(guiLeft + 43, guiTop + 18, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 43, guiTop + 43, 176, 8, 8, 8); source.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); source.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52); diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png index 9b66746d1adc847bbcdef6e253616b52bd7c3e0d..45d1f0c5d61120c197fe05103eef4d042e195037 100644 GIT binary patch literal 4259 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 QleVz*bd1jBYun%c7sdOAd;kCd literal 3434 zcmb_fXIN9&x?U+Jbg%{kMBp&Uzz6{mh?E2-j7I7}1f?YoNaj#PgA{3rf`TO|2%-*X z97ici5d{PcWk66sFw&GUfJz8GbdUf!o4Mzl=l(d)z4PO&KWneGzV?3ax4*siMOWto zigH*v0DvOpAlVH781x7OGAL;BVde!w6EfV6LY09=oJ>FpB&S6o+ft*mCk6Gv>Y|;^ zGYt0%*AZJ4L1`CqS9+ofudBpBuJQv~ZJ(y(9Zqcmx5?p@QfQn$L1yu-Tfi!&>yblA zy{zdqoGFav)%Lku^T%yT#g)J1RyiuqJ`QZIE{+_IXAH*=e@)<$y(-1+FD%7j{bxji zs2HYU=J347vboa<7te^YI}Ayt4n<$vL{))I9ul@@r9aG%n|ouft!<*d`ukkYI`5E1 zLB!|+tJ8(J_Uwr{FG}pEKb5%G$(_@D+$Vn7al*Ex!ksk__ayeUtO$LoAP4Lmv)E9 zGMpVtACT^!;#jY)j28#9I!90Idlvbmefjd`a=R-h#Kn`->|Yr%e#24sx^s8iBH)B8cJd|2?_A>ey{%?UC~N38SBWRTJM|=+m;e&F_w}ArR7b6zJeJ!06|MJT(vxAS~H=hwq zV$uWx!Bb+)0;nRY3SyM$R=5hDtZqi3sK9@}R$*~*E1%ClBwcLJvDDUP&JDk*JOgG2 zwj@XAikFRsHGs=qo6OG6&JSW6#JQAKqIB-6$ADBMW<7TU3MjcQyPu5Q_JdggEA8oC`_`W1Iq*JgR2YG;(1}y z_4u^A+m%jX*RtQi-intPorZglCNiwJ-tWYH{pY%c5HYX9hB{{LYJ`S$n-2B1_x1Iu zabCPP&})cbVLwsx8H(0yc@bkX;$}mQcyNq4i3un@NoB``kEKl z!UnR@uESb8iEcVQ;Q=JxVqBqbdR!$Hm{Jb)^)+prs+mDtS!H(d#?HL zVj@NdT1LjK*z$*Q$Y=ahu4m4gswxa6Oqun>Z%*s%e5ZA-Vj|=YuO`UTib~iS1MYZe zAn-9uM}5JNnsn{sxOiSN8^Dr=kn(=D7p&;}uDJ?RlEz_FJ_lEq?f?Rjmr{NQuRa>p zOuyc3+p;J2LQ%CkWMwuBn68-T$+Is9CVZU-JA6Am3Bk$w2a<4Xb6q$g|8b7wB?g|o z_SA6Y*9%_5A-IBU1#94fWM8l9BW#qvM8XtJ2`VqJBrh+|z21eh%c&fNkBuS&QPW*6hPg z;EFS1$EYhv!lLQAgSQqIBF?bZ8a(S6I=}s`D#%Z?PGvsi_`**NH(N zz5$8}T4gXzW&%bt>2ZD0%D(=p*4NMYi02~|tAdl5I!fqd07E(nIVE)XBxL(9lgscYH@B7>3RRyFz3p>!%DCf}g>m&A_?K+1|;?F6a?@ zy7h~{Xh2%SvtE+8*hoUAmUbn~r&+}<;|~)2v|6peZn!2hRIo|UtgTdAQn=Gy9rAAY)q2p|bZ!r7Uow%Xz3TTlR>3Bx=bzJXt^40hq(NzkM!ju4;xqn+KPA zrw(^~yw`H;+dmL^Ga4J{ean&U5Ln#^!u-#tg- zBX30gs0M13Q8V3LSfp1BxV78_4Eci^5Ov~2TT^SSql2<$pD|mSZ`G)FzbMkqT9w>- zzaBEtl?qeMEsvbS(58K`Ry_w2|2_%}_^gI-jZHDP^PTMaO24LxLGs@rUNxGd>Z|}J z0;cIU;9pPv?5#rn(Ht3Y+5c1apP#hc!| zfg?TpmsI>K2UsB7qgj>htdG!iZ?*t?VQY94_wpD}k^N)&mh8w?W8h0glQbCX?{SJy zQ>cSP3lLm=r>m&WcL=%yY4<)@Nks+bv2o+#&m}X_FXqES7eK$oR?K&?g9m2%tf_>& zWbd{2Ru(6(R!IzzvSp`IGIPAA zkmS9+KfokShZ0z8J~PdCRYkm|*n_0>^Q6bK9GY4aIBl{WXjiG-LbV~@zVrcHKWIJ= zNGexgBV?c{0|_uuP^-ObeNO(!CVx<6ff$^hr{ZklMix+O3ACP`o);~7hdQmL+5`5^ zfBde>HpKYBLqbBLdG&O>Yq*i+j_T^_u`!M@$Z@;^gFedT=JzrVT*Z~~WFHu#xb8x5 z(>XW1RTI}19sKY2Y((_gp_6LOF^&|AP zu!)xr@b{2M=S;Zfz*-cq{F14YsOU^AFUGL@vUuyGhl{mEOUD#QSuKg|(+f{zpy;0^ zsFmc$3T{v3_uiXYVh4-c$M1sDqOSp3byxASugsu@+;%w#V^}TK{+>-#>fPnC1PuEOcvDg%Ju*>PZVpJXSTSsy7}piSs)}xU zYNkv-zvg+$^S6}Zoa9W6ZKI2ekzX=nmd*PHkjd|esl*$#x(96K z!Y5b;cVqQZzn~3TJpE#XEtyUI(dU(o6lZj3=Q+gAu66U3%4EAQ%J<)#_@uwfFJ+P+ zcg?g+iZw!;vWlQ9=)Xt(n>WaiPy;seCUV=WiE41jqYYjvY?C<)`nO<-8I*K#5-wQ9 z`dcJ0c&-`wp@O`f#W%o)%b$C@4D&v+Sq6Uv0ENE+&>#cq@Nn>dEkzBsQBhI60XlM?5LB~r%Lc*0{DD#ZFeCma92 z3HlEfq2&78YqnghQSWN5)K*dXn+H-3YXAREb+{6|R39&Fbag&;n4Z*7P`80W!MXQ; z%ltKV{^{KRF#S(&$%oJ0Q+fnXZusV3nI~mFmR!XfUW6Lc_ybD1YbD$Gs4~}FUCCRZ u!c{ Date: Fri, 24 Jul 2026 22:12:50 -0400 Subject: [PATCH 04/16] yo I fixed the airport --- .../com/hbm/inventory/gui/GUIPADetector.java | 4 ++-- .../gui/particleaccelerator/gui_detector.png | Bin 4259 -> 3739 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java index f6ac5f1aa..d0f396b3b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java @@ -38,8 +38,8 @@ public class GUIPADetector extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 8, 5, 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 - 8, 5, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0xffffff); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); int heat = (int) Math.ceil(source.temperature); diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png index 45d1f0c5d61120c197fe05103eef4d042e195037..81ee3bc3277d33c8d2a1c78dd374b46dfcfe1ba2 100644 GIT binary patch delta 3408 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 delta 3946 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 Date: Sat, 25 Jul 2026 00:58:30 -0400 Subject: [PATCH 05/16] Yo why does the airport terminal meow at me --- .../container/ContainerPASource.java | 8 ++++---- .../com/hbm/inventory/gui/GUIPASource.java | 12 ++++++------ .../gui/particleaccelerator/gui_source.png | Bin 3787 -> 3979 bytes 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/hbm/inventory/container/ContainerPASource.java b/src/main/java/com/hbm/inventory/container/ContainerPASource.java index f9d41eb6b..c70eb7d11 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerPASource.java +++ b/src/main/java/com/hbm/inventory/container/ContainerPASource.java @@ -22,11 +22,11 @@ public class ContainerPASource extends Container { //Battery this.addSlotToContainer(new Slot(tile, 0, 8, 72)); //Inputs - this.addSlotToContainer(new Slot(tile, 1, 62, 18)); - this.addSlotToContainer(new Slot(tile, 2, 80, 18)); + this.addSlotToContainer(new Slot(tile, 1, 62, 16)); + this.addSlotToContainer(new Slot(tile, 2, 80, 16)); //Containers - this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 45)); - this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 45)); + this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 43)); + this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 43)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIPASource.java b/src/main/java/com/hbm/inventory/gui/GUIPASource.java index 5f96b496b..17664c940 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPASource.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPASource.java @@ -46,15 +46,15 @@ public class GUIPASource extends GuiInfoContainer { info.add(EnumChatFormatting.BLUE + "Last momentum: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", source.lastSpeed)); String[] message = I18nUtil.resolveKeyArray("pa." + this.source.state.name().toLowerCase(Locale.US) + ".desc"); for(String s : message) info.add(EnumChatFormatting.YELLOW + s); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, info); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 16, 10, 10, mouseX, mouseY, info); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 28, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); } @Override protected void mouseClicked(int x, int y, int i) { super.mouseClicked(x, y, i); - if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 28 < y && guiTop + 28 + 10 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); NBTTagCompound data = new NBTTagCompound(); data.setBoolean("cancel", true); @@ -66,7 +66,7 @@ public class GUIPASource extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); @@ -88,8 +88,8 @@ public class GUIPASource extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); int heat = (int) Math.ceil(source.temperature); - if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); - if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 16, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 41, 176, 8, 8, 8); int color = source.state.color; float red = (color & 0xff0000) >> 16; diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png index 8483b85d8786f610d24452195c530b08ea112d69..280566e5cf8d4d445b7061d6e745e8a199a61005 100644 GIT binary patch literal 3979 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 literal 3787 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 From 1eaceefaf559020c4386b7b2dabdd45e7d34d1a3 Mon Sep 17 00:00:00 2001 From: Wolf Date: Sat, 25 Jul 2026 01:06:09 -0400 Subject: [PATCH 06/16] I deadass accidentally made the Inventory white --- src/main/java/com/hbm/inventory/gui/GUIPADetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java index d0f396b3b..8e727f945 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java @@ -39,7 +39,7 @@ public class GUIPADetector extends GuiInfoContainer { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 8, 5, 0xffffff); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); int heat = (int) Math.ceil(source.temperature); From 7749cf4adfe366d6c69586573e9a900955442d6b Mon Sep 17 00:00:00 2001 From: TheVitya2127 Date: Sat, 25 Jul 2026 22:57:03 +0400 Subject: [PATCH 07/16] I'm listening to you --- .../handler/nei/RefineryRecipeHandler.java | 2 +- .../container/ContainerMachineRefinery.java | 26 ++++---- .../hbm/inventory/gui/GUIMachineRefinery.java | 58 ++++++++---------- .../textures/gui/processing/gui_refinery.png | Bin 8584 -> 3956 bytes 4 files changed, 40 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index 2bf1e9e6e..d7f8f1016 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -162,7 +162,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(34, 34, 14, 34), "refinery")); guiGui.add(GUIMachineRefinery.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index b47d2b182..e7a311c5f 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -19,31 +19,31 @@ public class ContainerMachineRefinery extends Container { testNuke = tedf; //Battery - this.addSlotToContainer(new Slot(tedf, 0, 186, 72)); + this.addSlotToContainer(new Slot(tedf, 0, 158, 108)); //Canister Input - this.addSlotToContainer(new Slot(tedf, 1, 8, 99)); + this.addSlotToContainer(new Slot(tedf, 1, 12, 90)); //Canister Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 12, 108)); //Heavy Oil Input - this.addSlotToContainer(new Slot(tedf, 3, 86, 99)); + this.addSlotToContainer(new Slot(tedf, 3, 64, 90)); //Heavy Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 86, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 64, 108)); //Naphtha Input - this.addSlotToContainer(new Slot(tedf, 5, 106, 99)); + this.addSlotToContainer(new Slot(tedf, 5, 82, 90)); //Naphtha Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 106, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 82, 108)); //Light Oil Input - this.addSlotToContainer(new Slot(tedf, 7, 126, 99)); + this.addSlotToContainer(new Slot(tedf, 7, 100, 90)); //Light Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 126, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 100, 108)); //Petroleum Input - this.addSlotToContainer(new Slot(tedf, 9, 146, 99)); + this.addSlotToContainer(new Slot(tedf, 9, 118, 90)); //Petroleum Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 146, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 118, 108)); //Sulfur Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 58, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 38, 90)); //Fluid ID - this.addSlotToContainer(new Slot(tedf, 12, 186, 106)); + this.addSlotToContainer(new Slot(tedf, 12, 38, 108)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index b3aae3272..962ca69ec 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -26,27 +26,27 @@ public class GUIMachineRefinery extends GuiInfoContainer { super(new ContainerMachineRefinery(invPlayer, tedf)); refinery = tedf; - this.xSize = 210; - this.ySize = 231; + this.xSize = 182; + this.ySize = 240; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 30, guiTop + 27, 21, 104); // Render tooltip for column. - refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 86, guiTop + 42, 16, 52); - refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 106, guiTop + 42, 16, 52); - refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 42, 16, 52); - refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 146, guiTop + 42, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 52, refinery.power, refinery.maxPower); + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 12, guiTop + 17, 16, 70); // Render tooltip for column. + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 64, guiTop + 35, 16, 52); + refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 82, guiTop + 35, 16, 52); + refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 100, guiTop + 35, 16, 52); + refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 118, guiTop + 35, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 158, guiTop + 18, 16, 88, refinery.power, refinery.maxPower); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - 34/2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 4210752); } @@ -54,25 +54,19 @@ public class GUIMachineRefinery extends GuiInfoContainer { 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); - func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 350, 256); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // power - int j = (int)refinery.getPowerScaled(50); - func_146110_a(guiLeft + 186, guiTop + 69 - j, 210, 52 - j, 16, j, 350, 256); + int j = (int)refinery.getPowerScaled(88); + drawTexturedModalRect(guiLeft + 158, guiTop + 106 - j, 182, 88 - j, 16, j); OpenGlHelper.glBlendFunc(770, 771, 1, 0); // default // input tank FluidTank inputOil = refinery.tanks[0]; if (inputOil.getFill() != 0) { - - int targetHeight = inputOil.getFill() * 101 / inputOil.getMaxFill(); - Color color = new Color(inputOil.getTankType().getColor()); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 33, guiTop + 130 - targetHeight, 226, 101 - targetHeight, 16, targetHeight, 350, 256); - GL11.glDisable(GL11.GL_BLEND); + refinery.tanks[0].renderTank(guiLeft + 12, guiTop + 88, this.zLevel, 16, 70); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); } // fucking kgjhgdfjgdhjfg @@ -84,10 +78,10 @@ public class GUIMachineRefinery extends GuiInfoContainer { RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); if(recipe == null) { - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256); } else { // Heavy Oil Products @@ -95,31 +89,31 @@ public class GUIMachineRefinery extends GuiInfoContainer { GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256); // Naphtha Oil Products color = new Color(recipe.outputs[1].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256); // Light Oil Products color = new Color(recipe.outputs[2].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256); // Gaseous Products color = new Color(recipe.outputs[3].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256); GL11.glDisable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 1F); } // output tanks - refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[2].renderTank(guiLeft + 106, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[3].renderTank(guiLeft + 126, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[4].renderTank(guiLeft + 146, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 64, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[2].renderTank(guiLeft + 82, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[3].renderTank(guiLeft + 100, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[4].renderTank(guiLeft + 118, guiTop + 88, this.zLevel, 16, 52); } } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 6dbf4ffb16d132e7219a706f7b5c2978f805b159..0f6a50a39ce401a66b2abce0a35d95355e3131a2 100644 GIT binary patch literal 3956 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 literal 8584 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 Date: Sat, 25 Jul 2026 23:16:06 +0400 Subject: [PATCH 08/16] Hi Ray --- .../com/hbm/inventory/container/ContainerMachineRefinery.java | 4 ++-- src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index e7a311c5f..590c67a32 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -47,12 +47,12 @@ public class ContainerMachineRefinery 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, 150 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 158 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 208)); + this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 216)); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index 962ca69ec..0dc1383e2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -47,7 +47,7 @@ public class GUIMachineRefinery extends GuiInfoContainer { String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752); } @Override From ee751da75f7bbe571aeb5c3275a6397737acea1b Mon Sep 17 00:00:00 2001 From: Wolf Date: Sat, 25 Jul 2026 21:12:01 -0400 Subject: [PATCH 09/16] If polymer is plastic, what is hard plastic? --- .../assets/hbm/manual/fluids/petroleum_gas.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json diff --git a/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json b/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json new file mode 100644 index 000000000..4d3da0561 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json @@ -0,0 +1,11 @@ +{ + "name": "Petroleum Gas", + "icon": ["hbm:item.fluid_icon", 1, 24], + "trigger": [["hbm:item.fluid_icon", 1, 24]], + "title": { + "en_US": "Petroleum Gas" + }, + "content": { + "en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] crude oil. Petroleum gas is the main ingredient in [[polymer|Polymer]], [[bakelite|Bakelite]], and [[perfluoromethyl|Perfluoromethyl]] making it a key ingredient for progression in all stages of the game. It is also the primary fluid used in [[fracking solution|Fracking Solution]].

See also:
[[Basic Oil Processing]]
[[Advanced Oil Processing]]
[[Vacuum Oil Processing]]" + } +} \ No newline at end of file From 971d7fc86179d91d6d23611efba9e45877746c68 Mon Sep 17 00:00:00 2001 From: Wolf Date: Sat, 25 Jul 2026 21:17:59 -0400 Subject: [PATCH 10/16] Me when lighting isnt in the sky, its in our heart --- .../gui/particleaccelerator/gui_detector.png | Bin 3739 -> 3785 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png index 81ee3bc3277d33c8d2a1c78dd374b46dfcfe1ba2..c599f7c5dee0abeede06bec6076154f5c7defa70 100644 GIT binary patch delta 3463 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 Date: Sat, 25 Jul 2026 21:25:42 -0400 Subject: [PATCH 11/16] this shi should work fr yep mhm --- .../gui/particleaccelerator/gui_source.png | Bin 3979 -> 3999 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png index 280566e5cf8d4d445b7061d6e745e8a199a61005..e85478ea0b1312c9514de0500a6e3c052175f9fc 100644 GIT binary patch delta 3671 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 Date: Sat, 25 Jul 2026 23:31:54 -0400 Subject: [PATCH 12/16] Yo who let the particle in here >:* --- .../hbm/inventory/gui/GUIPAQuadrupole.java | 15 ++++++++++++--- .../particleaccelerator/gui_quadrupole.png | Bin 4365 -> 6494 bytes 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java index e66461fb5..56dbd4512 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java @@ -4,8 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPAQuadrupole; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; +import com.hbm.util.EnumUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -39,7 +41,7 @@ public class GUIPAQuadrupole extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.quadrupole.hasCustomInventoryName() ? this.quadrupole.getInventoryName() : I18n.format(this.quadrupole.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 118, 22, 4210752); @@ -59,9 +61,16 @@ public class GUIPAQuadrupole extends GuiInfoContainer { int heat = (int) Math.ceil(quadrupole.temperature); if(heat <= 123) drawTexturedModalRect(guiLeft + 75, guiTop + 64, 176, 8, 8, 8); - if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8); + if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil){ + drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8); + EnumCoilType type = null; + type = EnumUtil.grabEnumSafely(EnumCoilType.class, quadrupole.slots[1].getItemDamage()); + if (type == EnumCoilType.GOLD) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 0, 28, 28); + if (type == EnumCoilType.NIOBIUM) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 0, 28, 28); + if (type == EnumCoilType.BSCCO) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 28, 28, 28); + if (type == EnumCoilType.CHLOROPHYTE) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 28, 28, 28); + } if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8); - quadrupole.coolantTanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52); quadrupole.coolantTanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); } diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png index 7a88302630ec5d911b5b5f8562a51c4d7bbf4e50..7160800cbac9f54aa56c7c5b4bdf16a81e6e689b 100644 GIT binary patch literal 6494 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 From 2821c70e61b4940d136e4c243d20dfadc34003bd Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 26 Jul 2026 16:49:53 +0200 Subject: [PATCH 13/16] WAY UP HIGH, IN THE SKY, WITH THE SUN, IN YOUR EYE --- changelog | 2 + .../redstoneoverradio/IRORInteractive.java | 4 + .../hbm/blocks/machine/MachineSatLink.java | 12 + .../com/hbm/commands/CommandSatellites.java | 4 +- .../java/com/hbm/crafting/RodRecipes.java | 9 - .../java/com/hbm/entity/EntityMappings.java | 1 + .../hbm/entity/logic/EntityDeathBlast.java | 21 +- .../hbm/entity/logic/EntityOrbitalLaser.java | 68 ++++ .../com/hbm/entity/missile/EntitySoyuz.java | 8 +- .../inventory/gui/GUIMachineSatLinker.java | 4 +- .../hbm/inventory/gui/GUIScreenSatCoord.java | 99 ++---- .../inventory/gui/GUIScreenSatInterface.java | 330 ------------------ .../inventory/recipes/ArcWelderRecipes.java | 6 - .../recipes/AssemblyMachineRecipes.java | 75 ---- .../hbm/inventory/recipes/PUREXRecipes.java | 2 +- .../inventory/recipes/SolderingRecipes.java | 10 + .../inventory/recipes/anvil/AnvilRecipes.java | 8 - src/main/java/com/hbm/items/ModItems.java | 72 ++-- .../java/com/hbm/items/armor/ItemModLens.java | 4 +- .../com/hbm/items/special/ItemSatellite.java | 34 ++ .../com/hbm/items/tool/ItemSatDesignator.java | 11 +- .../com/hbm/items/tool/ItemSatInterface.java | 61 ++-- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 6 +- src/main/java/com/hbm/main/MainRegistry.java | 11 +- .../java/com/hbm/packet/PacketDispatcher.java | 6 - .../hbm/packet/toclient/SatPanelPacket.java | 88 ----- .../hbm/packet/toserver/SatCoordPacket.java | 72 ---- .../hbm/packet/toserver/SatLaserPacket.java | 71 ---- .../entity/effect/RenderDeathBlast.java | 160 +++++---- .../entity/effect/RenderOrbitalLaser.java | 70 ++++ .../com/hbm/saveddata/SatelliteSavedData.java | 20 +- .../hbm/saveddata/satellites/Satellite.java | 129 ------- .../saveddata/satellites/SatelliteBase.java | 93 +++++ .../satellites/SatelliteDeathRay.java | 73 ++++ .../satellites/SatelliteHorizons.java | 47 ++- .../saveddata/satellites/SatelliteLaser.java | 42 --- .../satellites/SatelliteLunarMiner.java | 2 +- .../saveddata/satellites/SatelliteMapper.java | 58 ++- .../saveddata/satellites/SatelliteMiner.java | 10 +- .../satellites/SatellitePrecisionLaser.java | 108 ++++++ .../saveddata/satellites/SatelliteRadar.java | 111 +++++- .../saveddata/satellites/SatelliteRelay.java | 8 +- .../satellites/SatelliteResonator.java | 12 +- .../satellites/SatelliteScanner.java | 9 +- .../satellites/XSatelliteRegistry.java | 90 +++++ .../machine/TileEntityMachineRadarNT.java | 39 +-- .../machine/TileEntityMachineSatDock.java | 6 +- .../machine/TileEntityMachineSatLink.java | 35 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 31 +- src/main/resources/assets/hbm/lang/en_US.lang | 78 +++-- .../blocks/machine_satlinker_side.png | Bin 574 -> 296 bytes .../textures/blocks/machine_satlinker_top.png | Bin 515 -> 320 bytes .../textures/gui/machine/gui_sat_linker.png | Bin 1621 -> 1627 bytes .../gui/reactors/gui_fusion_heater.png | Bin 2234 -> 0 bytes .../gui/reactors/gui_fusion_multiblock.png | Bin 2993 -> 0 bytes .../gui/satellites/gui_sat_interface.png | Bin 2616 -> 0 bytes .../assets/hbm/textures/items/sat_base.png | Bin 303 -> 0 bytes .../hbm/textures/items/sat_head_laser.png | Bin 209 -> 0 bytes .../hbm/textures/items/sat_head_mapper.png | Bin 243 -> 0 bytes .../hbm/textures/items/sat_head_radar.png | Bin 299 -> 0 bytes .../hbm/textures/items/sat_head_resonator.png | Bin 301 -> 0 bytes .../hbm/textures/items/sat_head_scanner.png | Bin 232 -> 0 bytes .../hbm/textures/items/sat_interface.png | Bin 265 -> 0 bytes .../textures/items/satellite.death_ray.png | Bin 0 -> 403 bytes .../textures/items/satellite.miner_astro.png | Bin 0 -> 339 bytes .../textures/items/satellite.miner_lunar.png | Bin 0 -> 439 bytes .../items/satellite.precision_laser.png | Bin 0 -> 324 bytes .../hbm/textures/items/satellite.radar.png | Bin 0 -> 402 bytes .../hbm/textures/items/satellite.relay.png | Bin 0 -> 323 bytes .../hbm/textures/items/satellite.scanner.png | Bin 0 -> 431 bytes .../hbm/textures/items/satellite.spy.png | Bin 0 -> 371 bytes 72 files changed, 1079 insertions(+), 1252 deletions(-) create mode 100644 src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java create mode 100644 src/main/java/com/hbm/items/special/ItemSatellite.java delete mode 100644 src/main/java/com/hbm/packet/toclient/SatPanelPacket.java delete mode 100644 src/main/java/com/hbm/packet/toserver/SatCoordPacket.java delete mode 100644 src/main/java/com/hbm/packet/toserver/SatLaserPacket.java create mode 100644 src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java delete mode 100644 src/main/java/com/hbm/saveddata/satellites/Satellite.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java delete mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_heater.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_base.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_laser.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_mapper.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_radar.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_resonator.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_scanner.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_interface.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.death_ray.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.miner_astro.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.precision_laser.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.radar.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.relay.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.scanner.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.spy.png diff --git a/changelog b/changelog index da40438bd..dc6b0c05c 100644 --- a/changelog +++ b/changelog @@ -29,6 +29,8 @@ * The small pylon now has a steel variant * Items in the battery socket which previously didn't show up in the socket's model are now rendered * Reduced the cost for the heavy stirling engine +* Removed the satellite interface item for being basically completely useless +* Updated the satellite ID manager texture and recipe ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java index 37819b5df..b359be51a 100644 --- a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java +++ b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java @@ -34,6 +34,10 @@ public interface IRORInteractive extends IRORInfo { return params; } + public static int parseInt(String val) { + return parseInt(val, Integer.MIN_VALUE, Integer.MAX_VALUE); + } + public static int parseInt(String val, int min, int max) { int result = 0; try { result = Integer.parseInt(val); } catch(Exception x) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java index 443778855..6b36e4a11 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java @@ -19,6 +19,7 @@ import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; public class MachineSatLink extends BlockDummyable implements ILookOverlay { @@ -36,6 +37,17 @@ public class MachineSatLink extends BlockDummyable implements ILookOverlay { @Override public int[] getDimensions() { return new int[] {6, 0, 1, 0, 1, 0}; } @Override public int getOffset() { return 0; } + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); + } + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java index 6b552b6f2..0f1723339 100644 --- a/src/main/java/com/hbm/commands/CommandSatellites.java +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -3,7 +3,7 @@ package com.hbm.commands; import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -38,7 +38,7 @@ public class CommandSatellites extends CommandBase { case "orbit": EntityPlayer player = getCommandSenderAsPlayer(sender); if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { - Satellite.orbit(player.worldObj, Satellite.getIDFromItem(player.getHeldItem().getItem()), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ); + XSatelliteRegistry.orbit(player.worldObj, player.getHeldItem(), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ); player.getHeldItem().stackSize -= 1; sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); } else { diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index e6085233b..bf1264841 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -3,7 +3,6 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; -import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; @@ -87,14 +86,6 @@ public class RodRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.nugget_lead, 24), new Object[] { new ItemStack(ModItems.rod_quad, 1, BreedingRodType.LEAD.ordinal()) }); addBreedingRod(U, ModItems.billet_uranium, BreedingRodType.URANIUM); - - //Pile fuel - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_uranium, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', U.billet() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_source, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', ModItems.billet_ra226be }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_boron, 1), new Object[] { " B ", " W ", " B ", 'B', B.ingot(), 'W', KEY_PLANKS }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.pile_rod_lithium, 1), new Object[] { ModItems.cell_empty, LI.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_detector, 1), new Object[] { " B ", "CM ", " B ", 'B', B.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_fuel_empty, 1), new Object[] { "ZRZ", "Z Z", "ZRZ", 'Z', ZR.ingot(), 'R', ModItems.rod_quad_empty }); addRBMKRod(U, ModItems.rbmk_fuel_ueu); addRBMKRod(ModItems.billet_uranium_fuel, ModItems.rbmk_fuel_meu); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index ae6341aad..e65363c1e 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -92,6 +92,7 @@ public class EntityMappings { addEntity(EntityBombletZeta.class, "entity_zeta", 1000); addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); + addEntity(EntityOrbitalLaser.class, "entity_orbital_laser", 1000); addEntity(EntityBurningFOEQ.class, "entity_burning_foeq", 1000); addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 9d1a45f73..fed741c36 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -1,7 +1,5 @@ package com.hbm.entity.logic; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.threading.PacketThreading; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -10,15 +8,14 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityDeathBlast extends Entity { public static final int maxAge = 60; - public EntityDeathBlast(World p_i1582_1_) { - super(p_i1582_1_); + public EntityDeathBlast(World world) { + super(world); this.ignoreFrustumCheck = true; } @@ -39,20 +36,6 @@ public class EntityDeathBlast extends Entity { worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, 40, posX, posY, posZ)); - int count = 100; - for(int i = 0; i < count; i++) { - - Vec3 vec = Vec3.createVectorHelper(0.2, 0, 0); - vec.rotateAroundY((float)(2 * Math.PI * i / (float)count)); - - EntityBulletBaseNT laser = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); - laser.setPosition(posX, posY + 2, posZ); - laser.motionX = vec.xCoord; - laser.motionZ = vec.zCoord; - laser.motionY = -0.01; - worldObj.spawnEntityInWorld(laser); - } - NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250)); diff --git a/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java b/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java new file mode 100644 index 000000000..5be844472 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java @@ -0,0 +1,68 @@ +package com.hbm.entity.logic; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityOrbitalLaser extends Entity { + + public static final int maxAge = 5; + + public EntityOrbitalLaser(World world) { + super(world); + this.ignoreFrustumCheck = true; + } + + @Override + protected void entityInit() { } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public void onUpdate() { + + if(this.ticksExisted >= maxAge && !worldObj.isRemote) this.setDead(); + } + + public void explode() { + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 5F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 1_000F).setupPiercing(50F, 0.5F).setDamageClass(DamageClass.LASER)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); + vnt.explode(); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntitySoyuz.java b/src/main/java/com/hbm/entity/missile/EntitySoyuz.java index 4561fd73d..4b0a5926c 100644 --- a/src/main/java/com/hbm/entity/missile/EntitySoyuz.java +++ b/src/main/java/com/hbm/entity/missile/EntitySoyuz.java @@ -7,7 +7,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -113,10 +113,8 @@ public class EntitySoyuz extends Entity { } if(load.getItem() instanceof ISatChip) { - - int freq = ISatChip.getFreqS(load); - - Satellite.orbit(worldObj, Satellite.getIDFromItem(load.getItem()), freq, posX, posY, posZ); + int freq = ISatChip.getFreqS(load); + XSatelliteRegistry.orbit(worldObj, load, freq, posX, posY, posZ); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java index c6783fa0a..60e0954bf 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java @@ -30,10 +30,10 @@ public class GUIMachineSatLinker extends GuiInfoContainer { super.drawScreen(mouseX, mouseY, f); String[] chipText = I18nUtil.resolveKeyArray("desc.gui.satlinker.chip"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, chipText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft + 20, guiTop + 28 + 16, chipText); 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); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft + 20, guiTop + 28 + 32, randomText); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java index e7f4fe2bb..4931be365 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -4,19 +4,18 @@ import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; -import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toserver.SatCoordPacket; -import com.hbm.saveddata.satellites.Satellite.CoordActions; -import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.packet.toserver.NBTItemControlPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIScreenSatCoord extends GuiScreen { @@ -27,14 +26,15 @@ public class GUIScreenSatCoord extends GuiScreen { protected int guiLeft; protected int guiTop; private final EntityPlayer player; + protected ItemStack device; private GuiTextField xField; private GuiTextField yField; private GuiTextField zField; public GUIScreenSatCoord(EntityPlayer player) { - this.player = player; + this.device = player.getHeldItem(); } public void initGui() { @@ -63,37 +63,24 @@ public class GUIScreenSatCoord extends GuiScreen { protected void mouseClicked(int i, int j, int k) { super.mouseClicked(i, j, k); - if(ItemSatInterface.currentSat == null) - return; + if(!device.hasTagCompound() || !device.stackTagCompound.getBoolean(ItemSatInterface.KEY_NBT_CONNECTED)) return; this.xField.mouseClicked(i, j, k); - if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - this.yField.mouseClicked(i, j, k); + this.yField.mouseClicked(i, j, k); this.zField.mouseClicked(i, j, k); if(i >= this.guiLeft + 133 && i < this.guiLeft + 133 + 18 && j >= this.guiTop + 52 && j < this.guiTop + 52 + 18 && player != null) { if(NumberUtils.isNumber(xField.getText()) && NumberUtils.isNumber(zField.getText())) { - - if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) { - - if(NumberUtils.isNumber(yField.getText())) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new SatCoordPacket((int) Double.parseDouble(xField.getText()), (int) Double.parseDouble(yField.getText()), - (int) Double.parseDouble(zField.getText()), ISatChip.getFreqS(player.getHeldItem()))); - - this.mc.thePlayer.closeScreen(); - } - - } else { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - PacketDispatcher.wrapper - .sendToServer(new SatCoordPacket((int) Double.parseDouble(xField.getText()), 0, (int) Double.parseDouble(zField.getText()), ISatChip.getFreqS(player.getHeldItem()))); - - this.mc.thePlayer.closeScreen(); - } + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("x", (int) Double.parseDouble(xField.getText())); + data.setInteger("z", (int) Double.parseDouble(zField.getText())); + if(NumberUtils.isNumber(yField.getText())) data.setInteger("y", (int) Double.parseDouble(yField.getText())); + PacketDispatcher.wrapper.sendToServer(new NBTItemControlPacket(data)); + + this.mc.thePlayer.closeScreen(); } } } @@ -108,16 +95,10 @@ public class GUIScreenSatCoord extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } - @Override - public boolean doesGuiPauseGame() { - return false; - } - protected void drawGuiContainerForegroundLayer(int i, int j) { this.xField.drawTextBox(); - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - this.yField.drawTextBox(); + this.yField.drawTextBox(); this.zField.drawTextBox(); } @@ -126,48 +107,34 @@ public class GUIScreenSatCoord extends GuiScreen { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(xField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 16, 0, 126, 54, 18); + if(xField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 16, 0, 126, 54, 18); + if(yField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 126, 54, 18); + if(zField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 88, 0, 126, 54, 18); - if(yField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 126, 54, 18); - - if(zField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 88, 0, 126, 54, 18); - - if(ItemSatInterface.currentSat != null) { - - if(!ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 144, 54, 18); + if(device.hasTagCompound() && device.stackTagCompound.getBoolean(ItemSatInterface.KEY_NBT_CONNECTED)) { drawTexturedModalRect(guiLeft + 120, guiTop + 17, 194, 0, 7, 7); - - if(ItemSatInterface.currentSat.satIface == Interfaces.SAT_COORD) { - - drawTexturedModalRect(guiLeft + 120, guiTop + 25, 194, 0, 7, 7); - } + drawTexturedModalRect(guiLeft + 120, guiTop + 25, 194, 0, 7, 7); } } - protected void keyTyped(char p_73869_1_, int p_73869_2_) { + @Override + protected void keyTyped(char c, int k) { - if(this.xField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y) && this.yField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else if(this.zField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else { - - super.keyTyped(p_73869_1_, p_73869_2_); - } - - if(p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) { - this.mc.thePlayer.closeScreen(); - } + if(this.xField.textboxKeyTyped(c, k)) return; + if(this.yField.textboxKeyTyped(c, k)) return; + if(this.zField.textboxKeyTyped(c, k)) return; + + super.keyTyped(c, k); + } + @Override + public boolean doesGuiPauseGame() { + return false; } @Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); } - } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java deleted file mode 100644 index bba6b5b4f..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ /dev/null @@ -1,330 +0,0 @@ -package com.hbm.inventory.gui; - -import java.util.Arrays; -import java.util.List; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.items.ISatChip; -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.lib.RefStrings; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toserver.SatLaserPacket; -import com.hbm.saveddata.satellites.Satellite.InterfaceActions; -import com.hbm.saveddata.satellites.Satellite.Interfaces; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -public class GUIScreenSatInterface extends GuiScreen { - - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/satellites/gui_sat_interface.png"); - protected int xSize = 216; - protected int ySize = 216; - protected int guiLeft; - protected int guiTop; - private final EntityPlayer player; - int x; - int z; - - public GUIScreenSatInterface(EntityPlayer player) { - - this.player = player; - } - - public void updateScreen() { - } - - protected void mouseClicked(int i, int j, int k) { - - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.CAN_CLICK)) { - - if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - - int x = this.x - guiLeft + i - 8 - 100; - int z = this.z - guiTop + j - 8 - 100; - PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, ISatChip.getFreqS(player.getHeldItem()))); - } - } - } - - public void drawScreen(int mouseX, int mouseY, float f) - { - this.drawDefaultBackground(); - this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); - GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(mouseX, mouseY); - GL11.glEnable(GL11.GL_LIGHTING); - } - - public void initGui() - { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; - - x = (int) player.posX; - z = (int) player.posZ; - } - - @Override - public boolean doesGuiPauseGame() { - return false; - } - - protected void drawGuiContainerForegroundLayer(int i, int j) { - - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.SHOW_COORDS)) { - - if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { - - int x = this.x - guiLeft + i - 8 - 100; - int z = this.z - guiTop + j - 8 - 100; - func_146283_a(Arrays.asList(new String[] { x + " / " + z }), i, j); - } - } - } - - protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(ItemSatInterface.currentSat == null) { - drawNotConnected(); - } else { - - if(ItemSatInterface.currentSat.satIface != Interfaces.SAT_PANEL) { - drawNoService(); - return; - } - - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_MAP)) { - drawMap(); - } - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_ORES)) { - drawScan(); - } - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_RADAR)) { - drawRadar(); - } - } - } - - private int scanPos = 0; - private long lastMilli = 0; - - private void progresScan() { - - if(lastMilli + 25 < System.currentTimeMillis()) { - lastMilli = System.currentTimeMillis(); - scanPos++; - } - - if(scanPos >= 200) - scanPos -= 200; - } - - private int[][] map = new int[200][200]; - - private void drawMap() { - - World world = player.worldObj; - - for(int i = -100; i < 100; i++) { - int x = this.x + i; - int z = this.z + scanPos - 100; - int y = world.getHeightValue(x, z) - 1; - map[i + 100][scanPos] = world.getBlock(x, y, z).getMaterial().getMaterialMapColor().colorValue; - } - prontMap(); - progresScan(); - } - - private void drawScan() { - - World world = player.worldObj; - - for(int i = -100; i < 100; i++) { - int x = this.x + i; - int z = this.z + scanPos - 100; - - for(int j = 255; j >= 0; j--) { - int c = getColorFromBlock(new ItemStack(world.getBlock(x, j, z), 1, world.getBlockMetadata(x, j, z))); - - if(c != 0) { - map[i + 100][scanPos] = c; - break; - } - } - } - prontMap(); - progresScan(); - } - - private int getColorFromBlock(ItemStack stack) { - - if(stack == null || stack.getItem() == null/* || stack.getItemDamage() < 0*/) - return 0; - - if(MachineRecipes.mODE(stack, "oreCoal")) - return 0x333333; - if(MachineRecipes.mODE(stack, "oreIron")) - return 0xb2aa92; - if(MachineRecipes.mODE(stack, "oreGold")) - return 0xffe460; - if(MachineRecipes.mODE(stack, "oreSilver")) - return 0xe5e5e5; - if(MachineRecipes.mODE(stack, "oreDiamond")) - return 0x6ed5ef; - if(MachineRecipes.mODE(stack, "oreEmerald")) - return 0x6cf756; - if(MachineRecipes.mODE(stack, "oreLapis")) - return 0x092f7a; - if(MachineRecipes.mODE(stack, "oreRedstone")) - return 0xe50000; - if(MachineRecipes.mODE(stack, "oreTin")) - return 0xa09797; - if(MachineRecipes.mODE(stack, "oreCopper")) - return 0xd16208; - if(MachineRecipes.mODE(stack, "oreLead")) - return 0x384b68; - if(MachineRecipes.mODE(stack, "oreAluminum")) - return 0xdbdbdb; - if(MachineRecipes.mODE(stack, "oreTungsten")) - return 0x333333; - if(MachineRecipes.mODE(stack, "oreTitanium")) - return 0xDDDDDD; - if(MachineRecipes.mODE(stack, "oreUranium")) - return 0x3e4f3c; - if(MachineRecipes.mODE(stack, "oreBeryllium")) - return 0x8e8d7d; - if(MachineRecipes.mODE(stack, "oreSulfur")) - return 0x9b9309; - if(MachineRecipes.mODE(stack, "oreSalpeter") || MachineRecipes.mODE(stack, "oreNiter")) - return 0xa5a09d; - if(MachineRecipes.mODE(stack, "oreFluorite")) - return 0xffffff; - if(MachineRecipes.mODE(stack, "oreSchrabidium")) - return 0x1cffff; - if(MachineRecipes.mODE(stack, "oreRareEarth")) - return 0xffcc99; - - return isOre(stack) ? 0xBA00AF : 0x000000; - } - - private static boolean isOre(ItemStack stack) { - - int[] ids = OreDictionary.getOreIDs(new ItemStack(stack.getItem(), 1, stack.getItemDamage())); - - for(int i = 0; i < ids.length; i++) { - - String s = OreDictionary.getOreName(ids[i]); - - if(s.length() > 3 && s.substring(0, 3).equals("ore")) - return true; - } - - return false; - } - - private void drawRadar() { - - List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX - 100, 0, player.posZ - 100, player.posX + 100, 5000, player.posZ + 100)); - - if(!entities.isEmpty()) { - for(Entity e : entities) { - - if(e.width * e.width * e.height >= 0.5D) { - int x = (int)((e.posX - this.x) / ((double)100 * 2 + 1) * (200D - 8D)) - 4; - int z = (int)((e.posZ - this.z) / ((double)100 * 2 + 1) * (200D - 8D)) - 4 - 9; - - int t = 5; - - //TODO: fix radar screen implementation - /*if(e instanceof EntityMissileBaseAdvanced) { - t = ((EntityMissileBaseAdvanced)e).getTargetType().ordinal(); - }*/ - - if(e instanceof EntityMob) { - t = 6; - } - - if(e instanceof EntityPlayer) { - t = 7; - } - - drawTexturedModalRect(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); - } - } - } - - } - - private void prontMap() { - for(int x = 0; x < 200; x++) { - for(int z = 0; z < 200; z++) { - if(map[x][z] != 0) { - GL11.glColor3ub((byte)((map[x][z] & 0xFF0000) >> 16), (byte)((map[x][z] & 0x00FF00) >> 8), (byte)(map[x][z] & 0x0000FF)); - drawTexturedModalRect(guiLeft + 8 + x, guiTop + 8 + z, 216, 216, 1, 1); - } - } - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - private void drawNoService() { - drawTexturedModalRect((this.width - 77) / 2, (this.height - 12) / 2, 0, 228, 77, 12); - } - - private void drawNotConnected() { - drawTexturedModalRect((this.width - 121) / 2, (this.height - 12) / 2, 0, 216, 121, 12); - } - - protected void keyTyped(char p_73869_1_, int p_73869_2_) - { - if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) - { - this.mc.thePlayer.closeScreen(); - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindForward.getKeyCode()) - { - this.z -= 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindBack.getKeyCode()) - { - this.z += 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindLeft.getKeyCode()) - { - this.x -= 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindRight.getKeyCode()) - { - this.x += 50; - map = new int[200][200]; - } - - } - -} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 9521c5457..bc3ebe077 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -111,12 +111,6 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); - - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index ad06c04d4..b8d034cab 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -171,10 +171,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())) .inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())) - .inputItems(new OreDictStack(PU239.billet(), 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilergp").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())) - .inputItems(new OreDictStack(PURG.billet(), 3)).setGroup(autoPileRod, INSTANCE)); // powders String autoCyclotron = "autoswitch.cyclotron"; @@ -967,77 +963,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.satellitebase").setup(600, 100).outputItems(new ItemStack(ModItems.sat_base, 1)) - .inputItems(new OreDictStack(RUBBER.ingot(), 12), - new OreDictStack(TI.shell(), 3), - new ComparableStack(ModItems.thruster_medium, 1), - new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.photo_panel, 24), - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satellitemapper").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_mapper, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), - new ComparableStack(ModBlocks.glass_quartz, 8))); - this.register(new GenericRecipe("ass.satellitescanner").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_scanner, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new OreDictStack(TI.plateCast(), 8), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.magnetron, 8), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal()))); - this.register(new GenericRecipe("ass.satelliteradar").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_radar, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new OreDictStack(TI.plateCast(), 12), - new ComparableStack(ModItems.magnetron, 12), - new ComparableStack(ModItems.coil_gold, 16), - new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()))); - this.register(new GenericRecipe("ass.satellitelaser").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_laser, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 6), - new OreDictStack(CU.plateCast(), 24), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), - new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModBlocks.glass_quartz, 8))); - this.register(new GenericRecipe("ass.satelliteresonator").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_resonator, 1)) - .inputItems(new OreDictStack(STEEL.plateCast(), 6), - new OreDictStack(STAR.ingot(), 12), - new OreDictStack(ANY_PLASTIC.ingot(), 48), - new ComparableStack(ModItems.crystal_xen, 1), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); - this.register(new GenericRecipe("ass.satelliterelay").setup(600, 100).outputItems(new ItemStack(ModItems.sat_foeq, 1)) - .inputItems(new OreDictStack(TI.shell(), 3), - new ComparableStack(ModItems.plate_desh, 8), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), - new ComparableStack(ModItems.photo_panel, 16), - new ComparableStack(ModItems.thruster_nuclear, 1), - new ComparableStack(ModItems.ingot_uranium_fuel, 6), - new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), - new ComparableStack(ModItems.magnetron, 3), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satelliteasteroidminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_miner, 1)) - .inputItems(new OreDictStack(BIGMT.plate(), 24), - new ComparableStack(ModItems.motor_desh, 2), - new ComparableStack(ModItems.drill_titanium, 2), - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.thruster_small, 1), - new ComparableStack(ModItems.photo_panel, 12), - new ComparableStack(ModItems.centrifuge_element, 4), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satellitelunarminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_lunar_miner, 1)) - .inputItems(new ComparableStack(ModItems.ingot_meteorite, 4), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.motor, 2), - new ComparableStack(ModItems.drill_titanium, 2), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.thruster_small, 1), - new ComparableStack(ModItems.photo_panel, 12), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); this.register(new GenericRecipe("ass.nitra").setupNamed(200, 500) .inputItems(new ComparableStack(ModItems.nitra)) diff --git a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java index 0aef690b3..4849d8426 100644 --- a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java @@ -71,7 +71,7 @@ public class PUREXRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.RGP)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) .outputItems(new ItemStack(ModItems.billet_pu_mix, 2), - new ItemStack(ModItems.billet_uranium, 1)) + new ItemStack(ModItems.billet_nuclear_waste, 1)) .setIconToFirstIngredient()); this.register((PUREXRecipe) new PUREXRecipe("purex.pilewaste").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.WASTE)) diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index dd88e66f6..ef515383a 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -147,6 +147,16 @@ public class SolderingRecipes extends SerializableRecipe { new OreDictStack(PB.wireFine(), 32)} )); } + + recipes.add(new SolderingRecipe(new ItemStack(ModItems.sat_chip), 100, 100, + new AStack[] { + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CAPACITOR)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.PCB)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 4)} + )); /* * UPGRADES diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index c5c3bd1da..26f743ae4 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -862,14 +862,6 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(U.billet(), 3), new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())), }).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(PU239.billet(), 3), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())), - }).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(PURG.billet(), 3), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())), - }).setTier(2)); //RBMK constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6fe99b259..6f01e5de3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -335,7 +335,6 @@ public class ModItems { public static Item plate_desh; public static Item plate_bismuth; public static Item photo_panel; - public static Item sat_base; public static Item thruster_nuclear; public static Item safety_fuse; public static Item part_generic; @@ -631,12 +630,6 @@ public class ModItems { public static Item thruster_medium; public static Item thruster_large; - public static Item sat_head_mapper; - public static Item sat_head_scanner; - public static Item sat_head_radar; - public static Item sat_head_laser; - public static Item sat_head_resonator; - public static Item seg_10; public static Item seg_15; public static Item seg_20; @@ -1334,17 +1327,17 @@ public class ModItems { public static Item missile_soyuz; public static Item missile_soyuz_lander; - public static Item sat_mapper; - public static Item sat_scanner; - public static Item sat_radar; - public static Item sat_laser; - public static Item sat_foeq; - public static Item sat_resonator; - public static Item sat_miner; - public static Item sat_lunar_miner; + public static Item satellite; + @Deprecated public static Item sat_mapper; + @Deprecated public static Item sat_scanner; + @Deprecated public static Item sat_radar; + @Deprecated public static Item sat_laser; + @Deprecated public static Item sat_foeq; + @Deprecated public static Item sat_resonator; + @Deprecated public static Item sat_miner; + @Deprecated public static Item sat_lunar_miner; public static Item sat_gerald; public static Item sat_chip; - public static Item sat_interface; public static Item sat_coord; public static Item sat_designator; public static Item sat_relay; @@ -2191,7 +2184,6 @@ public class ModItems { ingot_solinium = new Item().setUnlocalizedName("ingot_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_solinium"); nugget_solinium = new Item().setUnlocalizedName("nugget_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_solinium"); photo_panel = new Item().setUnlocalizedName("photo_panel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":photo_panel"); - sat_base = new Item().setUnlocalizedName("sat_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_base"); thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic"); @@ -2623,12 +2615,6 @@ public class ModItems { thruster_medium = new Item().setUnlocalizedName("thruster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_medium"); thruster_large = new Item().setUnlocalizedName("thruster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_large"); - sat_head_mapper = new Item().setUnlocalizedName("sat_head_mapper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_mapper"); - sat_head_scanner = new Item().setUnlocalizedName("sat_head_scanner").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_scanner"); - sat_head_radar = new Item().setUnlocalizedName("sat_head_radar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_radar"); - sat_head_laser = new Item().setUnlocalizedName("sat_head_laser").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_laser"); - sat_head_resonator = new Item().setUnlocalizedName("sat_head_resonator").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_resonator"); - seg_10 = new Item().setUnlocalizedName("seg_10").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_10"); seg_15 = new Item().setUnlocalizedName("seg_15").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_15"); seg_20 = new Item().setUnlocalizedName("seg_20").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_20"); @@ -3428,23 +3414,23 @@ public class ModItems { missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); - sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_mapper"); - sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_scanner"); - sat_radar = new ItemSatChip().setUnlocalizedName("sat_radar").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_radar"); - sat_laser = new ItemSatChip().setUnlocalizedName("sat_laser").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_laser"); - sat_foeq = new ItemSatChip().setUnlocalizedName("sat_foeq").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_foeq"); - sat_resonator = new ItemSatChip().setUnlocalizedName("sat_resonator").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_resonator"); - sat_miner = new ItemSatChip().setUnlocalizedName("sat_miner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_miner"); - sat_lunar_miner = new ItemSatChip().setUnlocalizedName("sat_lunar_miner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_lunar_miner"); + satellite = new ItemSatellite().setUnlocalizedName("satellite").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":satellite"); + sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_mapper"); + sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_scanner"); + sat_radar = new ItemSatChip().setUnlocalizedName("sat_radar").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_radar"); + sat_laser = new ItemSatChip().setUnlocalizedName("sat_laser").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_laser"); + sat_foeq = new ItemSatChip().setUnlocalizedName("sat_foeq").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_foeq"); + sat_resonator = new ItemSatChip().setUnlocalizedName("sat_resonator").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_resonator"); + sat_miner = new ItemSatChip().setUnlocalizedName("sat_miner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_miner"); + sat_lunar_miner = new ItemSatChip().setUnlocalizedName("sat_lunar_miner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_lunar_miner"); sat_gerald = new ItemSatChip().setUnlocalizedName("sat_gerald").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_gerald"); sat_chip = new ItemSatChip().setUnlocalizedName("sat_chip").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_chip"); - sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); sat_coord = new ItemSatInterface().setUnlocalizedName("sat_coord").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_coord"); sat_designator = new ItemSatDesignator().setUnlocalizedName("sat_designator").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_designator"); sat_relay = new ItemSatChip().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); mp_thruster_10_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_thruster_10_kerosene"); - mp_thruster_10_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F) .setUnlocalizedName("mp_thruster_10_solid"); + mp_thruster_10_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F) .setUnlocalizedName("mp_thruster_10_solid"); mp_thruster_10_xenon = new ItemCustomMissilePart().makeThruster(FuelType.XENON, 1F, 1.5F, PartSize.SIZE_10).setHealth(5F) .setUnlocalizedName("mp_thruster_10_xenon"); mp_thruster_15_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 7.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_kerosene"); mp_thruster_15_kerosene_dual = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 2.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_kerosene_dual"); @@ -3454,21 +3440,21 @@ public class ModItems { mp_thruster_15_hydrogen = new ItemCustomMissilePart().makeThruster(FuelType.HYDROGEN, 1F, 7.5F, PartSize.SIZE_15).setHealth(20F) .setUnlocalizedName("mp_thruster_15_hydrogen"); mp_thruster_15_hydrogen_dual = new ItemCustomMissilePart().makeThruster(FuelType.HYDROGEN, 1F, 2.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_hydrogen_dual"); mp_thruster_15_balefire_short = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire_short"); - mp_thruster_15_balefire = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire"); - mp_thruster_15_balefire_large = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setHealth(35F) .setUnlocalizedName("mp_thruster_15_balefire_large"); + mp_thruster_15_balefire = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire"); + mp_thruster_15_balefire_large = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setHealth(35F) .setUnlocalizedName("mp_thruster_15_balefire_large"); mp_thruster_15_balefire_large_rad = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setAuthor("The Master").setHealth(35F).setRarity(Rarity.UNCOMMON).setUnlocalizedName("mp_thruster_15_balefire_large_rad"); mp_thruster_20_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene"); mp_thruster_20_kerosene_dual = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_dual"); - mp_thruster_20_kerosene_triple = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_triple"); + mp_thruster_20_kerosene_triple = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_triple"); mp_thruster_20_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F).setWittyText("It's basically just a big hole at the end of the fuel tank.").setUnlocalizedName("mp_thruster_20_solid"); mp_thruster_20_solid_multi = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F) .setUnlocalizedName("mp_thruster_20_solid_multi"); mp_thruster_20_solid_multier = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F).setWittyText("Did I miscount? Hope not.").setUnlocalizedName("mp_thruster_20_solid_multier"); - mp_stability_10_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_stability_10_flat"); + mp_stability_10_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_stability_10_flat"); mp_stability_10_cruise = new ItemCustomMissilePart().makeStability(0.25F, PartSize.SIZE_10).setHealth(5F) .setUnlocalizedName("mp_stability_10_cruise"); mp_stability_10_space = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_10).setHealth(5F).setRarity(Rarity.COMMON).setWittyText("Standing there alone, the ship is waiting / All systems are go, are you sure?") .setUnlocalizedName("mp_stability_10_space"); - mp_stability_15_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); - mp_stability_15_thin = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); + mp_stability_15_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); + mp_stability_15_thin = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); mp_stability_15_soyuz = new ItemCustomMissilePart().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("Союз!").setUnlocalizedName("mp_stability_15_soyuz"); mp_stability_20_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_20) .setUnlocalizedName("mp_s_20"); @@ -4998,12 +4984,6 @@ public class ModItems { GameRegistry.registerItem(thruster_medium, thruster_medium.getUnlocalizedName()); GameRegistry.registerItem(thruster_large, thruster_large.getUnlocalizedName()); GameRegistry.registerItem(thruster_nuclear, thruster_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(sat_base, sat_base.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_mapper, sat_head_mapper.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_scanner, sat_head_scanner.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_radar, sat_head_radar.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_laser, sat_head_laser.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_resonator, sat_head_resonator.getUnlocalizedName()); GameRegistry.registerItem(seg_10, seg_10.getUnlocalizedName()); GameRegistry.registerItem(seg_15, seg_15.getUnlocalizedName()); GameRegistry.registerItem(seg_20, seg_20.getUnlocalizedName()); @@ -5708,6 +5688,7 @@ public class ModItems { GameRegistry.registerItem(mp_chip_5, mp_chip_5.getUnlocalizedName()); //Satellites + GameRegistry.registerItem(satellite, satellite.getUnlocalizedName()); GameRegistry.registerItem(sat_mapper, sat_mapper.getUnlocalizedName()); GameRegistry.registerItem(sat_scanner, sat_scanner.getUnlocalizedName()); GameRegistry.registerItem(sat_radar, sat_radar.getUnlocalizedName()); @@ -5718,7 +5699,6 @@ public class ModItems { GameRegistry.registerItem(sat_lunar_miner, sat_lunar_miner.getUnlocalizedName()); GameRegistry.registerItem(sat_gerald, sat_gerald.getUnlocalizedName()); GameRegistry.registerItem(sat_chip, sat_chip.getUnlocalizedName()); - GameRegistry.registerItem(sat_interface, sat_interface.getUnlocalizedName()); GameRegistry.registerItem(sat_coord, sat_coord.getUnlocalizedName()); GameRegistry.registerItem(sat_designator, sat_designator.getUnlocalizedName()); GameRegistry.registerItem(sat_relay, sat_relay.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index 2e55ef0e0..d9c03f752 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -8,7 +8,7 @@ import com.hbm.handler.threading.PacketThreading; import com.hbm.items.ISatChip; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.saveddata.satellites.SatelliteScanner; import net.minecraft.block.Block; @@ -53,7 +53,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { if(lens == null) return; int freq = this.getFreq(lens); - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(freq); + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(freq); if(!(sat instanceof SatelliteScanner)) return; int x = (int) Math.floor(player.posX); diff --git a/src/main/java/com/hbm/items/special/ItemSatellite.java b/src/main/java/com/hbm/items/special/ItemSatellite.java new file mode 100644 index 000000000..b7bdce2f0 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemSatellite.java @@ -0,0 +1,34 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.items.ISatChip; +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.i18n.I18nUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class ItemSatellite extends ItemEnumMulti implements ISatChip { + + public ItemSatellite() { + super(EnumSatType.class, true, true); + } + + public static enum EnumSatType { + SPY, + SCANNER, + RADAR, + MINER_ASTRO, + MINER_LUNAR, + PRECISION_LASER, + DEATH_RAY, + XENIUM_RESONATOR, + RELAY + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(I18nUtil.resolveKey("satchip.frequency") + ": " + getFreq(stack)); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemSatDesignator.java b/src/main/java/com/hbm/items/tool/ItemSatDesignator.java index 6902bce05..6295dda63 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatDesignator.java +++ b/src/main/java/com/hbm/items/tool/ItemSatDesignator.java @@ -3,8 +3,7 @@ package com.hbm.items.tool; import com.hbm.items.machine.ItemSatChip; import com.hbm.lib.Library; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.saveddata.satellites.SatelliteBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,7 +18,7 @@ public class ItemSatDesignator extends ItemSatChip { if(!world.isRemote) { - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); if(sat != null) { MovingObjectPosition pos = Library.rayTrace(player, 300, 1); @@ -29,11 +28,7 @@ public class ItemSatDesignator extends ItemSatChip { int y = pos.blockY + dir.offsetY; int z = pos.blockZ + dir.offsetZ; - if(sat.satIface == Interfaces.SAT_COORD) { - sat.onCoordAction(world, player, x, y, z); - } else if(sat.satIface == Interfaces.SAT_PANEL) { - sat.onClick(world, x, z); - } + sat.onCoordAction(world, player, x, y, z); } } diff --git a/src/main/java/com/hbm/items/tool/ItemSatInterface.java b/src/main/java/com/hbm/items/tool/ItemSatInterface.java index 480993e35..e0cff0d60 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatInterface.java +++ b/src/main/java/com/hbm/items/tool/ItemSatInterface.java @@ -1,14 +1,12 @@ package com.hbm.items.tool; import com.hbm.inventory.gui.GUIScreenSatCoord; -import com.hbm.inventory.gui.GUIScreenSatInterface; +import com.hbm.items.IItemControlReceiver; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemSatChip; import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.SatPanelPacket; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -18,53 +16,44 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class ItemSatInterface extends ItemSatChip implements IGUIProvider { +public class ItemSatInterface extends ItemSatChip implements IGUIProvider, IItemControlReceiver { - @SideOnly(Side.CLIENT) - public static Satellite currentSat; + public static final String KEY_NBT_CONNECTED = "connected"; @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) { - - player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); - } - + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); return stack; } - - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - - if(world.isRemote || !(entity instanceof EntityPlayerMP)) - return; - - if(((EntityPlayerMP)entity).getHeldItem() != stack) - return; - - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); - - if(sat != null && entity.ticksExisted % 2 == 0) { - PacketDispatcher.wrapper.sendTo(new SatPanelPacket(sat), (EntityPlayerMP) entity); //making this one sat that is static might not have been a good idea - } - } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + + if(world.isRemote || !(entity instanceof EntityPlayerMP)) + return; + + if(((EntityPlayerMP) entity).getHeldItem() != stack) + return; + + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setBoolean(KEY_NBT_CONNECTED, sat != null); } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - if(this == ModItems.sat_interface) - return new GUIScreenSatInterface(player); - else if(this == ModItems.sat_coord) - return new GUIScreenSatCoord(player); - + if(this == ModItems.sat_coord) return new GUIScreenSatCoord(player); return null; } + @Override + public void receiveControl(ItemStack stack, NBTTagCompound data) { + + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index e20c75122..bf7ee5ae8 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -692,6 +692,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityRagingVortex.class, new RenderBlackHole()); RenderingRegistry.registerEntityRenderingHandler(EntityQuasar.class, new RenderQuasar()); RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast()); + RenderingRegistry.registerEntityRenderingHandler(EntityOrbitalLaser.class, new RenderOrbitalLaser()); RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeTorex.class, new RenderTorex()); //minecarts diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index de2992170..37e4304cb 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -593,12 +593,10 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity }); addRecipeAuto(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.LAVA.getID()), 'S', ModItems.black_hole }); addRecipeAuto(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', GOLD.nugget(), 'G', GOLD.ingot(), 'S', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()) }); - addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', NETHERQUARTZ.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); - addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip }); + addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', SI.billet(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); + addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', ANY_RESISTANTALLOY.ingot(), 'S', ANY_PLASTIC.ingot(), 'C', ModItems.sat_chip }); addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS }); - addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() }); addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger }); - addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_copper, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) }); addRecipeAuto(new ItemStack(ModBlocks.radiobox), new Object[] { "PLP", "PSP", "PLP", 'P', STEEL.plate(), 'S', ModItems.ring_starmetal, 'C', ModItems.fusion_core, 'L', DURA.plate() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 9ffb9ebc0..a11342252 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -34,7 +34,7 @@ import com.hbm.lib.HbmWorld; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPadBase; import com.hbm.tileentity.bomb.TileEntityNukeCustom; @@ -271,7 +271,7 @@ public class MainRegistry { GameRegistry.registerFuelHandler(new FuelHandler()); BulletConfigSyncingUtil.loadConfigsForSync(); CellularDungeonFactory.init(); - Satellite.register(); + XSatelliteRegistry.register(); HTTPHandler.loadStats(); CraftingManager.mainRegistry(); SiegeTier.registerTiers(); @@ -1637,6 +1637,13 @@ public class MainRegistry { ignoreMappings.add("hbm:item.drax"); ignoreMappings.add("hbm:item.drax_mk2"); ignoreMappings.add("hbm:item.drax_mk3"); + ignoreMappings.add("hbm:item.sat_base"); + ignoreMappings.add("hbm:item.sat_head_mapper"); + ignoreMappings.add("hbm:item.sat_head_scanner"); + ignoreMappings.add("hbm:item.sat_head_radar"); + ignoreMappings.add("hbm:item.sat_head_laser"); + ignoreMappings.add("hbm:item.sat_head_resonator"); + ignoreMappings.add("hbm:item.sat_interface"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 460912a3a..8b96d8a7f 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,14 +19,10 @@ public class PacketDispatcher { wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); - //Signals server to perform orbital strike, among other things - wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server wrapper.registerMessage(AuxButtonPacket.Handler.class, AuxButtonPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TEVaultPacket.Handler.class, TEVaultPacket.class, i++, Side.CLIENT); - //Packet to send sat info to players - wrapper.registerMessage(SatPanelPacket.Handler.class, SatPanelPacket.class, i++, Side.CLIENT); //Packet to send block break particles wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); //Packet to send chunk radiation info to individual players @@ -39,8 +35,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); - //Signals server to do coord based satellite stuff - wrapper.registerMessage(SatCoordPacket.Handler.class, SatCoordPacket.class, i++, Side.SERVER); //Triggers gun animations of the client wrapper.registerMessage(HbmAnimationPacket.Handler.class, HbmAnimationPacket.class, i++, Side.CLIENT); //Sends a funi text to display like a music disc announcement diff --git a/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java deleted file mode 100644 index e3b815808..000000000 --- a/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hbm.packet.toclient; - -import java.io.IOException; - -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.satellites.Satellite; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; - -public class SatPanelPacket implements IMessage { - - PacketBuffer buffer; - int type; - - public SatPanelPacket() { - - } - - public SatPanelPacket(Satellite sat) { - type = sat.getID(); - - this.buffer = new PacketBuffer(Unpooled.buffer()); - NBTTagCompound nbt = new NBTTagCompound(); - sat.writeToNBT(nbt); - - try { - buffer.writeNBTTagCompoundToBuffer(nbt); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void fromBytes(ByteBuf buf) { - - type = buf.readInt(); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buffer.writeBytes(buf); - } - - @Override - public void toBytes(ByteBuf buf) { - - buf.writeInt(type); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buf.writeBytes(buffer); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(SatPanelPacket m, MessageContext ctx) { - - Minecraft.getMinecraft(); - - try { - - NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - ItemSatInterface.currentSat = Satellite.create(m.type); - - if(nbt != null) - ItemSatInterface.currentSat.readFromNBT(nbt); - - } catch (Exception x) { - } finally { - m.buffer.release(); - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java deleted file mode 100644 index b36ef3245..000000000 --- a/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.hbm.packet.toserver; - -import com.hbm.items.ISatChip; -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SatCoordPacket implements IMessage { - - int x; - int y; - int z; - int freq; - - public SatCoordPacket() - { - - } - - public SatCoordPacket(int x, int y, int z, int freq) - { - this.x = x; - this.y = y; - this.z = z; - this.freq = freq; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - freq = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(freq); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SatCoordPacket m, MessageContext ctx) { - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { - - int freq = ISatChip.getFreqS(p.getHeldItem()); - - if(freq == m.freq) { - Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); - - if(sat != null) - sat.onCoordAction(p.worldObj, p, m.x, m.y, m.z); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java deleted file mode 100644 index 9b0bacea8..000000000 --- a/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.packet.toserver; - -import com.hbm.items.ISatChip; -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SatLaserPacket implements IMessage { - - //0: Add - //1: Subtract - //2: Set - int x; - int z; - int freq; - - public SatLaserPacket() - { - - } - - public SatLaserPacket(int x, int z, int freq) - { - this.x = x; - this.z = z; - this.freq = freq; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - z = buf.readInt(); - freq = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(z); - buf.writeInt(freq); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SatLaserPacket m, MessageContext ctx) { - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { - - int freq = ISatChip.getFreqS(p.getHeldItem()); - - if(freq == m.freq) { - Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); - - if(sat != null) - sat.onClick(p.worldObj, m.x, m.z); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java b/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java index 80e017dad..de478c722 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java @@ -16,110 +16,106 @@ import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; public class RenderDeathBlast extends Render { - + private static final IModelCustom sphere = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Sphere.obj")); @Override - public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glDepthMask(false); + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { GL11.glPushMatrix(); - //GL11.glRotatef((entity.ticksExisted % 360) * 10, 0, 1, 0); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - //GL11.glDisable(GL11.GL_ALPHA_TEST); - - GL11.glColor3f(1.0F, 0, 0); - - Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); - - Tessellator tessellator = Tessellator.instance; - RenderHelper.disableStandardItemLighting(); - - for(int i = 0; i < 8; i++) { - tessellator.startDrawing(6); - tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); - tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); - vector.rotateAroundY(45); - tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); - tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); - tessellator.draw(); - } + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDepthMask(false); - GL11.glColor3f(1.0F, 0, 1.0F); - - for(int i = 0; i < 8; i++) { - tessellator.startDrawing(6); - tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); - tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); - vector.rotateAroundY(45); - tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); - tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); - tessellator.draw(); - } - GL11.glPopMatrix(); - - GL11.glDepthMask(true); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPopMatrix(); - - renderOrb(entity, x, y, z, p_76986_8_, p_76986_9_); + GL11.glColor3f(0F, 1F, 0F); + + Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.draw(); + } + + GL11.glColor3f(1.0F, 0, 1.0F); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.draw(); + } + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + + renderOrb(entity, x, y, z, f0, interp); } - public void renderOrb(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) { + public void renderOrb(Entity entity, double x, double y, double z, float f0, float interp) { GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0); - - double scale = 10 - 10D * (((double)entity.ticksExisted) / ((double)EntityDeathBlast.maxAge)); - double alpha = (((double)entity.ticksExisted) / ((double)EntityDeathBlast.maxAge)); - - if(scale < 0) - scale = 0; - - GL11.glColor4d(1.0, 0, 1.0, alpha); + + double scale = 10 - 10D * (((double) entity.ticksExisted + interp) / ((double) EntityDeathBlast.maxAge)); + double alpha = (((double) entity.ticksExisted + interp) / ((double) EntityDeathBlast.maxAge)); + + if(scale < 0) scale = 0; + + GL11.glColor4d(0.05, 1.0, 0.05, alpha); GL11.glEnable(GL11.GL_BLEND); - GL11.glScaled(scale, scale, scale); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - sphere.renderAll(); + GL11.glScaled(scale, scale, scale); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + sphere.renderAll(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glColor4d(0, 1, 0, alpha * 0.125); + + for(int i = 0; i < 8; i++) { + sphere.renderAll(); + GL11.glScaled(1.05, 1.05, 1.05); + } - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glScaled(1.25, 1.25, 1.25); - GL11.glColor4d(1.0, 0, 0, alpha * 0.125); - - for(int i = 0; i < 8; i++) { - sphere.renderAll(); - GL11.glScaled(1.05, 1.05, 1.05); - } - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - GL11.glColor4d(1.0, 1.0, 1.0, 1.0); - - GL11.glPopMatrix(); + GL11.glColor4d(1.0, 1.0, 1.0, 1.0); + + GL11.glPopMatrix(); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return null; } - } diff --git a/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java new file mode 100644 index 000000000..99e3a4f8f --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java @@ -0,0 +1,70 @@ +package com.hbm.render.entity.effect; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; + +public class RenderOrbitalLaser extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDepthMask(false); + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + GL11.glColor3f(1F, 0F, 0F); + + Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.draw(); + } + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.draw(); + } + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } +} diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index 2ced0842d..3bfb13e3b 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -1,6 +1,7 @@ package com.hbm.saveddata; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; @@ -10,7 +11,7 @@ import java.util.Map.Entry; public class SatelliteSavedData extends WorldSavedData { - public final HashMap sats = new HashMap<>(); + public final HashMap sats = new HashMap<>(); /** * Constructor used for deserialization @@ -28,24 +29,18 @@ public class SatelliteSavedData extends WorldSavedData { this.markDirty(); } - public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; - } - - public Satellite getSatFromFreq(int freq) { - return sats.get(freq); - } + public boolean isFreqTaken(int freq) { return getSatFromFreq(freq) != null; } + public SatelliteBase getSatFromFreq(int freq) { return sats.get(freq); } @Override public void readFromNBT(NBTTagCompound nbt) { int satCount = nbt.getInteger("satCount"); for(int i = 0; i < satCount; i++) { - Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); + SatelliteBase sat = XSatelliteRegistry.createFromId(nbt.getInteger("sat_id_" + i)); sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); int freq = nbt.getInteger("sat_freq_" + i); - sats.put(freq, sat); } } @@ -56,7 +51,7 @@ public class SatelliteSavedData extends WorldSavedData { int i = 0; - for(Entry struct : sats.entrySet()) { + for(Entry struct : sats.entrySet()) { NBTTagCompound data = new NBTTagCompound(); struct.getValue().writeToNBT(data); @@ -74,7 +69,6 @@ public class SatelliteSavedData extends WorldSavedData { data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); } - return data; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/Satellite.java b/src/main/java/com/hbm/saveddata/satellites/Satellite.java deleted file mode 100644 index e1a3ff431..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/Satellite.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.items.ModItems; -import com.hbm.saveddata.SatelliteSavedData; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public abstract class Satellite { - - public static final List> satellites = new ArrayList<>(); - public static final HashMap> itemToClass = new HashMap<>(); - - public enum InterfaceActions { - HAS_MAP, //lets the interface display loaded chunks - CAN_CLICK, //enables onClick events - SHOW_COORDS, //enables coordinates as a mouse tooltip - HAS_RADAR, //lets the interface display loaded entities - HAS_ORES //like HAS_MAP but only shows ores - } - - public enum CoordActions { - HAS_Y //enables the Y-coord field which is disabled by default - } - - public enum Interfaces { - NONE, //does not interact with any sat interface (i.e. asteroid miners) - SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) - SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) - } - - public List ifaceAcs = new ArrayList<>(); - public List coordAcs = new ArrayList<>(); - public Interfaces satIface = Interfaces.NONE; - - public static void register() { - registerSatellite(SatelliteMapper.class, ModItems.sat_mapper); - registerSatellite(SatelliteScanner.class, ModItems.sat_scanner); - registerSatellite(SatelliteRadar.class, ModItems.sat_radar); - registerSatellite(SatelliteLaser.class, ModItems.sat_laser); - registerSatellite(SatelliteResonator.class, ModItems.sat_resonator); - registerSatellite(SatelliteRelay.class, ModItems.sat_foeq); - registerSatellite(SatelliteMiner.class, ModItems.sat_miner); - registerSatellite(SatelliteLunarMiner.class, ModItems.sat_lunar_miner); - registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald); - } - - /** - * Register satellite. - * @param sat - Satellite class - * @param item - Satellite item (which will be placed in a rocket) - */ - public static void registerSatellite(Class sat, Item item) { - if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { - satellites.add(sat); - itemToClass.put(item, sat); - } - } - - public static void orbit(World world, int id, int freq, double x, double y, double z) { - if(world.isRemote) { - return; - } - - Satellite sat = create(id); - - if(sat != null) { - SatelliteSavedData data = SatelliteSavedData.getData(world); - data.sats.put(freq, sat); - sat.onOrbit(world, x, y, z); - data.markDirty(); - } - } - - public static Satellite create(int id) { - Satellite sat = null; - - try { - Class c = satellites.get(id); - sat = c.newInstance(); - } catch(Exception e) { - e.printStackTrace(); - } - - return sat; - } - - public static int getIDFromItem(Item item) { - Class sat = itemToClass.get(item); - - return satellites.indexOf(sat); - } - - public int getID() { - return satellites.indexOf(this.getClass()); - } - - public void writeToNBT(NBTTagCompound nbt) { } - - public void readFromNBT(NBTTagCompound nbt) { } - - /** - * Called when the satellite reaches space, used to trigger achievements and other funny stuff. - * @param x posX of the rocket - * @param y ditto - * @param z ditto - */ - public void onOrbit(World world, double x, double y, double z) { } - - /** - * Called by the sat interface when clicking on the screen - * @param x the x-coordinate translated from the on-screen coords to actual world coordinates - * @param z ditto - */ - public void onClick(World world, int x, int z) { } - - /** - * Called by the coord sat interface - * @param x the specified x-coordinate - * @param y ditto - * @param z ditto - */ - public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { } -} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java new file mode 100644 index 000000000..ab17d4a7f --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java @@ -0,0 +1,93 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.tileentity.network.RTTYSystem; + +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public abstract class SatelliteBase { + + public static final String CHAN_SATLINK = "SAT_LINK"; + + public static final String CMD_SETTARGET = "settarget"; + public static final String CMD_GETTARGET = "gettarget"; + public static final String CMD_GETTARGETX = "gettargetx"; + public static final String CMD_GETTARGETZ = "gettargetz"; + + public int range = 1_000; + public int targetX; + public int targetZ; + + public String tx = ""; + + public int getID() { + return XSatelliteRegistry.satellites.indexOf(this.getClass()); + } + + public abstract String getType(); + + public void writeToNBT(NBTTagCompound nbt) { + nbt.setInteger("targetX", targetX); + nbt.setInteger("targetZ", targetZ); + nbt.setString("tx", tx); + } + + public void readFromNBT(NBTTagCompound nbt) { + this.targetX = nbt.getInteger("targetX"); + this.targetZ = nbt.getInteger("targetZ"); + this.tx = nbt.getString("tx"); + } + + public void onOrbit(World world, double x, double y, double z) { + setTarget((int) Math.floor(x), (int) Math.floor(z)); + + RTTYSystem.broadcast(world, CHAN_SATLINK, "Established connection to " + getType() + " at " + targetX + " / " + targetZ); + } + + public void onCommand(World world, String... cmd) { + onCommandTarget(world, cmd); + onCommandImpl(world, cmd); + } + + public void onCommandTarget(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_SETTARGET)) { + if(cmd.length == 3) { + targetX = IRORInteractive.parseInt(cmd[1]); + targetZ = IRORInteractive.parseInt(cmd[2]); + } + if(cmd.length == 4) { + targetX = IRORInteractive.parseInt(cmd[1]); + targetZ = IRORInteractive.parseInt(cmd[3]); + } + return; + } + + if(cmd[0].equals(CMD_GETTARGET)) { + this.tx = targetX + ";" + targetZ; + return; + } + + if(cmd[0].equals(CMD_GETTARGETX)) { + this.tx = "" + targetX; + return; + } + + if(cmd[0].equals(CMD_GETTARGETZ)) { + this.tx = "" + targetZ; + return; + } + } + + public void setTarget(int x, int z) { + this.targetX = x; + this.targetZ = z; + } + + public void onCommandImpl(World world, String... cmd) { } + + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java new file mode 100644 index 000000000..5775bcec6 --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java @@ -0,0 +1,73 @@ +package com.hbm.saveddata.satellites; + +import java.util.Locale; + +import com.hbm.entity.logic.EntityDeathBlast; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SatelliteDeathRay extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "canfire"; + + public static final int CHARGE_TIME = 5 * 60 * 20; + + public long lastShot; + + public SatelliteDeathRay() { } + + @Override public String getType() { return "ORBITAL_FUN_PLATFORM_:)"; } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("lastShot", lastShot); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + lastShot = nbt.getLong("lastShot"); + } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_FIRE)) { + deathBlast(world, targetX, targetZ); + return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (lastShot + CHARGE_TIME < world.getTotalWorldTime()) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.deathBlast(world, targetX, targetZ); + } + + public void deathBlast(World world, int x, int z) { + + if(lastShot + CHARGE_TIME < world.getTotalWorldTime()) { + lastShot = world.getTotalWorldTime(); + + int y = world.getHeightValue(x, z); + + EntityDeathBlast blast = new EntityDeathBlast(world); + blast.posX = x; + blast.posY = y; + blast.posZ = z; + + world.spawnEntityInWorld(blast); + } + } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java index a7d8330f3..3b125057c 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java @@ -1,5 +1,7 @@ package com.hbm.saveddata.satellites; +import java.util.Locale; + import com.hbm.entity.projectile.EntityTom; import com.hbm.main.MainRegistry; import com.hbm.saveddata.SatelliteSavedData; @@ -12,32 +14,59 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; -public class SatelliteHorizons extends Satellite { +public class SatelliteHorizons extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "settarget"; boolean used = false; - public SatelliteHorizons() { - this.satIface = Interfaces.SAT_COORD; - } + public SatelliteHorizons() { } + @Override public String getType() { return "PAYLOAD_UNKNOWN"; } + + @Override public void onOrbit(World world, double x, double y, double z) { + super.onOrbit(world, x, y, z); for(Object p : world.playerEntities) ((EntityPlayer)p).triggerAchievement(MainRegistry.horizonsStart); } - + + @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setBoolean("used", used); } - + + @Override public void readFromNBT(NBTTagCompound nbt) { used = nbt.getBoolean("used"); } - - public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; - if(used) + if(cmd[0].equals(CMD_FIRE)) { + theHorizons(world, targetX, targetZ); return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (!used) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.theHorizons(world, x, z); + } + + public void theHorizons(World world, int x, int z) { + if(used) return; used = true; SatelliteSavedData.getData(world).markDirty(); diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java deleted file mode 100644 index 46c5f89a6..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.entity.logic.EntityDeathBlast; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class SatelliteLaser extends Satellite { - - public long lastOp; - - public SatelliteLaser() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.ifaceAcs.add(InterfaceActions.SHOW_COORDS); - this.ifaceAcs.add(InterfaceActions.CAN_CLICK); - this.satIface = Interfaces.SAT_PANEL; - } - - public void writeToNBT(NBTTagCompound nbt) { - nbt.setLong("lastOp", lastOp); - } - - public void readFromNBT(NBTTagCompound nbt) { - lastOp = nbt.getLong("lastOp"); - } - - public void onClick(World world, int x, int z) { - - if(lastOp + 10000 < System.currentTimeMillis()) { - lastOp = System.currentTimeMillis(); - - int y = world.getHeightValue(x, z); - - EntityDeathBlast blast = new EntityDeathBlast(world); - blast.posX = x; - blast.posY = y; - blast.posZ = z; - - world.spawnEntityInWorld(blast); - } - } -} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java index 4249dd8db..5956f0f3c 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java @@ -5,6 +5,6 @@ import com.hbm.itempool.ItemPoolsSatellite; public class SatelliteLunarMiner extends SatelliteMiner { static { - registerCargo(SatelliteLunarMiner.class, ItemPoolsSatellite.POOL_SAT_LUNAR); + SatelliteMiner.registerCargo(SatelliteLunarMiner.class, ItemPoolsSatellite.POOL_SAT_LUNAR); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java index a23ee8e50..9626df120 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java @@ -1,9 +1,59 @@ package com.hbm.saveddata.satellites; -public class SatelliteMapper extends Satellite { +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class SatelliteMapper extends SatelliteBase { + + public static final String CMD_TARGET_LOADED = "targetloaded"; + public static final String CMD_SPOT_PLAYER = "spotplayers"; - public SatelliteMapper() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.satIface = Interfaces.SAT_PANEL; + public static final int SPOT_PLAYER_MAX_RANGE = 250; + + public SatelliteMapper() { } + + @Override public String getType() { return "NOT_A_SPY_SATELLITE_:)"; } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_TARGET_LOADED)) { + this.tx = "" + world.getChunkProvider().chunkExists(targetX >> 4, targetZ >> 4); + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + + if(cmd[0].equals(CMD_SPOT_PLAYER)) { + + List names = new ArrayList(); + + for(Object o : world.playerEntities) { + EntityPlayer player = (EntityPlayer) o; + + int x = (int) Math.floor(player.posX); + int z = (int) Math.floor(player.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= SPOT_PLAYER_MAX_RANGE * SPOT_PLAYER_MAX_RANGE) { + int height = world.getHeightValue(x, z); + if(height < player.posY + 2) names.add(player.getCommandSenderName()); + } + } + + if(names.isEmpty()) { + this.tx = "NONE"; + return; + } + + this.tx = String.join(";", names); + return; + } } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index daca3b22d..538e35edb 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; import java.util.HashMap; -public class SatelliteMiner extends Satellite { +public class SatelliteMiner extends SatelliteBase { /** * {@link WeightedRandomObject} array with loot the satellite will deliver. */ @@ -15,9 +15,9 @@ public class SatelliteMiner extends Satellite { public long lastOp; - public SatelliteMiner() { - this.satIface = Interfaces.NONE; - } + public SatelliteMiner() { } + + @Override public String getType() { return "ASTEROID_MINER"; } public void writeToNBT(NBTTagCompound nbt) { nbt.setLong("lastOp", lastOp); @@ -49,7 +49,7 @@ public class SatelliteMiner extends Satellite { * @return - Returns {@link com.hbm.itempool.ItemPool} key or null if the item is not a mining satellite. */ public static String getCargoForItem(Item satelliteItem) { - Class satelliteClass = itemToClass.getOrDefault(satelliteItem, null); + Class satelliteClass = XSatelliteRegistry.itemToClass.getOrDefault(satelliteItem, null); return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null; } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java b/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java new file mode 100644 index 000000000..8ab79051e --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java @@ -0,0 +1,108 @@ +package com.hbm.saveddata.satellites; + +import java.util.Locale; + +import com.hbm.entity.logic.EntityOrbitalLaser; + +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SatellitePrecisionLaser extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "canfire"; + public static final String CMD_SETENTITYTARGET = "setentitytarget"; + + public static final int MAX_TARGET_RANGE = 1_000; + public static final int CHARGE_TIME = 5 * 20; + + public long lastShot; + public int targetedEntity = -1; + + public SatellitePrecisionLaser() { } + + @Override public String getType() { return "ORBITAL_TATOO_REMOVER"; } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("lastShot", lastShot); + nbt.setInteger("targetedEntity", targetedEntity); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + lastShot = nbt.getLong("lastShot"); + targetedEntity = nbt.getInteger("targetedEntity"); + } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_FIRE)) { + + if(this.targetedEntity != -1) { + Entity e = world.getEntityByID(this.targetedEntity); + this.targetedEntity = -1; + + if(e == null || e.isDead) return; + + int x = (int) Math.floor(e.posX); + int z = (int) Math.floor(e.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= MAX_TARGET_RANGE * MAX_TARGET_RANGE) { + this.deathBlast(world, e.posX, e.posY, e.posZ); + return; + } + } + + deathBlast(world, targetX, targetZ); + return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (lastShot + CHARGE_TIME < world.getTotalWorldTime()) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + + if(cmd[0].equals(CMD_SETENTITYTARGET)) { + this.targetedEntity = IRORInteractive.parseInt(cmd[1]); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.deathBlast(world, targetX, targetZ); + } + + public void deathBlast(World world, int x, int z) { + int y = world.getHeightValue(x, z); + deathBlast(world, x + 0.5, y, z + 0.5); + } + + public void deathBlast(World world, double x, double y, double z) { + + if(lastShot + CHARGE_TIME < world.getTotalWorldTime()) { + lastShot = world.getTotalWorldTime(); + + EntityOrbitalLaser blast = new EntityOrbitalLaser(world); + blast.posX = x; + blast.posY = y; + blast.posZ = z; + blast.explode(); + + world.spawnEntityInWorld(blast); + } + } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java index 337475080..65199ae1b 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java @@ -1,10 +1,111 @@ package com.hbm.saveddata.satellites; -public class SatelliteRadar extends Satellite { +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; + +import api.hbm.entity.IRadarDetectableNT.RadarScanParams; +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; + +/** + * Basically the AUTOCAL is now mandatory lol lmao + */ +public class SatelliteRadar extends SatelliteBase { - public SatelliteRadar() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.ifaceAcs.add(InterfaceActions.HAS_RADAR); - this.satIface = Interfaces.SAT_PANEL; + public static final int MAX_SCAN_RANGE = 1_000; + public static RadarScanParams scanParams = new RadarScanParams(true, true, true, false); + + public static final String CMD_SURVEY = "survey"; + public static final String CMD_FILTER = "filter"; + public static final String CMD_COUNT = "count"; + public static final String CMD_GETTARGETID = "gettargetid"; + public static final String CMD_GETPOSITION = "getposition"; + public static final String CMD_GETNAME = "getname"; + + public List cachedRadarResults = new ArrayList(); + public List filteredRadarResults = new ArrayList(); + + public SatelliteRadar() { } + + @Override public String getType() { return "LEO_RADAR"; } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_SURVEY)) { + + cachedRadarResults.clear(); + + for(Entity entity : TileEntityMachineRadarNT.matchingEntities) { + if(entity.dimension != world.provider.dimensionId) continue; + + int x = (int) Math.floor(entity.posX); + int z = (int) Math.floor(entity.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= MAX_SCAN_RANGE * MAX_SCAN_RANGE) { + cachedRadarResults.add(entity); + } + } + + filteredRadarResults = new ArrayList(cachedRadarResults); + return; + } + + if(cmd[0].equals(CMD_FILTER) && cmd.length == 2) { + + filteredRadarResults.clear(); + String filter = cmd[1].toLowerCase(Locale.US); + + for(Entity entity : cachedRadarResults) { + if(entity.isDead) continue; + String classname = entity.getClass().getSimpleName().toLowerCase(Locale.US); + if(classname.contains(filter)) { + filteredRadarResults.add(entity); + } + } + return; + } + + if(cmd[0].equals(CMD_COUNT)) { + this.tx = "" + filteredRadarResults.size(); + return; + } + + if(cmd[0].equals(CMD_GETTARGETID) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = "" + target.getEntityId(); + return; + } + + if(cmd[0].equals(CMD_GETPOSITION) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = (int) Math.floor(target.posX) + ";" + (int) Math.floor(target.posY) + ";" + (int) Math.floor(target.posZ); + return; + } + + if(cmd[0].equals(CMD_GETNAME) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = target.getClass().getSimpleName().toLowerCase(Locale.US); + return; + } + } + + public Entity getTargetFromIndex(String cmd) { + if(filteredRadarResults.size() <= 0) return null; + int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()); + Entity target = filteredRadarResults.get(index); + if(target.isDead) return null; + return target; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java index a7aa0a251..b2d070405 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java @@ -5,11 +5,11 @@ import com.hbm.main.MainRegistry; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -public class SatelliteRelay extends Satellite { +public class SatelliteRelay extends SatelliteBase { - public SatelliteRelay() { - this.satIface = Interfaces.NONE; - } + public SatelliteRelay() { } + + @Override public String getType() { return "RX/TX"; } public void onOrbit(World world, double x, double y, double z) { diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java index ba415c07a..d4cab13b2 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -4,17 +4,15 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; -public class SatelliteResonator extends Satellite { +public class SatelliteResonator extends SatelliteBase { - public SatelliteResonator() { - this.coordAcs.add(CoordActions.HAS_Y); - this.satIface = Interfaces.SAT_COORD; - } + public SatelliteResonator() { } + + @Override public String getType() { return "XEN_RELAY"; } public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { - if(!(player instanceof EntityPlayerMP)) - return; + if(!(player instanceof EntityPlayerMP)) return; world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); player.mountEntity(null); diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java index 7d0ec86ab..0b1434428 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java @@ -1,9 +1,8 @@ package com.hbm.saveddata.satellites; -public class SatelliteScanner extends Satellite { +public class SatelliteScanner extends SatelliteBase { - public SatelliteScanner() { - this.ifaceAcs.add(InterfaceActions.HAS_ORES); - this.satIface = Interfaces.SAT_PANEL; - } + public SatelliteScanner() { } + + @Override public String getType() { return "DEPTH_SCANNER"; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java b/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java new file mode 100644 index 000000000..06e1d511f --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java @@ -0,0 +1,90 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemSatellite.EnumSatType; +import com.hbm.saveddata.SatelliteSavedData; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class XSatelliteRegistry { + + public static final List> satellites = new ArrayList<>(); + public static final HashMap> itemToClass = new HashMap<>(); + + public static void register() { + + registerSatellite(SatelliteMapper.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SPY)); + registerSatellite(SatelliteScanner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SCANNER)); + registerSatellite(SatelliteRadar.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RADAR)); + registerSatellite(SatelliteDeathRay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY)); + registerSatellite(SatelliteResonator.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR)); + registerSatellite(SatelliteRelay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR)); + registerSatellite(SatelliteMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO)); + registerSatellite(SatelliteLunarMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR)); + registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald); + registerSatellite(SatellitePrecisionLaser.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER)); + + + registerSatellite(SatelliteMapper.class, ModItems.sat_mapper); + registerSatellite(SatelliteScanner.class, ModItems.sat_scanner); + registerSatellite(SatelliteRadar.class, ModItems.sat_radar); + registerSatellite(SatelliteDeathRay.class, ModItems.sat_laser); + registerSatellite(SatelliteResonator.class, ModItems.sat_resonator); + registerSatellite(SatelliteRelay.class, ModItems.sat_foeq); + registerSatellite(SatelliteMiner.class, ModItems.sat_miner); + registerSatellite(SatelliteLunarMiner.class, ModItems.sat_lunar_miner); + } + + /** + * Register satellite. + * @param sat - Satellite class + * @param item - Satellite item (which will be placed in a rocket) + */ + @Deprecated + public static void registerSatellite(Class sat, Item item) { + if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { + satellites.add(sat); + itemToClass.put(new ComparableStack(item), sat); + } + } + + public static void registerSatellite(Class sat, ComparableStack item) { + if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { + satellites.add(sat); + itemToClass.put(item, sat); + } + } + + public static void orbit(World world, ItemStack stack, int freq, double x, double y, double z) { + if(world.isRemote) return; + + SatelliteBase sat = createFromItem(stack); + + if(sat != null) { + SatelliteSavedData data = SatelliteSavedData.getData(world); + data.sats.put(freq, sat); + sat.onOrbit(world, x, y, z); + data.markDirty(); + } + } + + public static SatelliteBase createFromId(int i) { + try { + return satellites.get(i).newInstance(); + } catch(Exception e) { } + return null; + } + + public static SatelliteBase createFromItem(ItemStack stack) { + try { + return itemToClass.get(new ComparableStack(stack).makeSingular()).newInstance(); + } catch(Exception e) { } + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 9e3c6e6fc..1a6a2b354 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -19,10 +19,7 @@ import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.saveddata.satellites.SatelliteHorizons; -import com.hbm.saveddata.satellites.SatelliteLaser; -import com.hbm.saveddata.satellites.SatelliteResonator; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -446,32 +443,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(link != null && link.getItem() == ModItems.sat_relay) { World world = player.getEntityWorld(); - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); - if(sat instanceof SatelliteLaser) { - if(data.hasKey("launchPosX")) { - int x = data.getInteger("launchPosX"); - int z = data.getInteger("launchPosZ"); - worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - sat.onClick(world, x, z); - } - } - if(sat instanceof SatelliteHorizons) { - if(data.hasKey("launchPosX")) { - int x = data.getInteger("launchPosX"); - int z = data.getInteger("launchPosZ"); - int y = 60; //one day I will make radars transmit Y coordinate as well and you will be butchered alhamdulila - worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - sat.onCoordAction(world, player, x, y, z); - } - } - if(sat instanceof SatelliteResonator) { - if(data.hasKey("launchPosX")) { - int x = data.getInteger("launchPosX"); - int z = data.getInteger("launchPosZ"); - int y = world.getTopSolidOrLiquidBlock(x, z); //the top fucking block because I will never make radars transmit Y coordinates as well! - worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - sat.onCoordAction(world, player, x, y, z); - } + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); + + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + int y = 60; //one day I will make radars transmit Y coordinate as well and you will be butchered alhamdulila + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + sat.onCoordAction(world, player, x, y, z); } } if(link != null && link.getItem() == ModItems.radar_linker) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 85b71dd0a..b8b5de866 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -7,7 +7,7 @@ import com.hbm.inventory.gui.GUISatDock; import com.hbm.itempool.ItemPool; import com.hbm.items.ISatChip; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.saveddata.satellites.SatelliteMiner; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -147,7 +147,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent if(slots[15] != null) { int freq = ISatChip.getFreqS(slots[15]); - Satellite sat = data.getSatFromFreq(freq); + SatelliteBase sat = data.getSatFromFreq(freq); int delay = 10 * 60 * 1000; @@ -181,7 +181,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent } if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { - Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); + SatelliteBase sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); if(sat != null) unloadCargo((SatelliteMiner) sat); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java index e327f1dac..3fd818bca 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.TileEntityTickingBase; import api.hbm.redstoneoverradio.IRORInteractive; @@ -110,11 +111,45 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I @Override public String provideRORValue(String name) { + + if(name.equals(PREFIX_VALUE + connected)) { + return this.connected ? "TRUE" : "FALSE"; + } + + if(name.equals(PREFIX_VALUE + "freq")) { + return "" + this.freq; + } + + if(name.equals(PREFIX_VALUE + "rx")) { + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + SatelliteBase sat = dat.getSatFromFreq(this.freq); + if(sat != null) { + return sat.tx; + } + return ""; + } + return null; } @Override public String runRORFunction(String name, String[] params) { + + if(name.equals(PREFIX_FUNCTION + "setfreq") && params.length == 1) { + this.freq = IRORInteractive.parseInt(params[0], 0, 100_000); + this.markChanged(); + } + + if(name.equals(PREFIX_FUNCTION + "tx")) { + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + SatelliteBase sat = dat.getSatFromFreq(this.freq); + String[] cmd = String.join(IRORInteractive.PARAM_SEPARATOR, params).split(" "); + if(sat != null) { + sat.onCommand(worldObj, cmd); + } + this.markChanged(); + } + return null; } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 501693dbc..b3534ed0f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3284,25 +3284,19 @@ item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix item.safety_fuse.name=Zündschnur -item.sat_base.name=Satellitenkörper item.sat_chip.name=Satelliten-ID-Chip item.sat_coord.name=Satelliten-Zielmarkierer item.sat_designator.name=Satelliten-Laserzielmarkierer item.sat_foeq.name=PEAF - Mk.I FOEQ Dunasonde mit experimenter nuklearer Schubdüse item.sat_gerald.name=Gerald der Konstruktionsandroid -item.sat_head_laser.name=Todesstrahl -item.sat_head_mapper.name=Hochleistungskamera -item.sat_head_radar.name=Radarschüssel -item.sat_head_resonator.name=Xenium-Resonator -item.sat_head_scanner.name=M700 Oberflächenabtaster item.sat_interface.name=Satelliten-Kontrollinterface -item.sat_laser.name=Orbitaler Todesstrahl -item.sat_lunar_miner.name=Mond-Förderschiff -item.sat_mapper.name=Oberflächen-Abtastungssatellit -item.sat_miner.name=Asteroiden-Förderschiff -item.sat_radar.name=Radar-Überwachungssatellit -item.sat_resonator.name=Xenium-Resonator-Satellit -item.sat_scanner.name=Satellit mit Tiefenscanning-Modul +item.sat_laser.name=Orbitaler Todesstrahl (LEGACY) +item.sat_lunar_miner.name=Mond-Förderschiff (LEGACY) +item.sat_mapper.name=Oberflächen-Abtastungssatellit (LEGACY) +item.sat_miner.name=Asteroiden-Förderschiff (LEGACY) +item.sat_radar.name=Radar-Überwachungssatellit (LEGACY) +item.sat_resonator.name=Xenium-Resonator-Satellit (LEGACY) +item.sat_scanner.name=Satellit mit Tiefenscanning-Modul (LEGACY) item.sawblade.name=Sägeblatt item.schnitzel_vegan.name=Veganes Schnitzel item.schrabidium_axe.name=Schrabidiumaxt @@ -3889,11 +3883,11 @@ tile.block_fiberglass.name=Fiberglasrolle tile.block_fluorite.name=Fluoritblock tile.block_foam.name=Schaum tile.block_graphite.name=Graphitblock -tile.block_graphite_drilled.name=Gebohrtes Graphit -tile.block_graphite_fuel.name=Pile Brennstoff -tile.block_graphite_plutonium.name=Pile Brennstoff (Gebrütet) -tile.block_graphite_rod.name=Pile Steuerstab -tile.block_graphite_source.name=Pile Neutronenquelle +tile.block_graphite_drilled.name=Gebohrtes Graphit (LEGACY) +tile.block_graphite_fuel.name=Pile Brennstoff (LEGACY) +tile.block_graphite_plutonium.name=Pile Brennstoff (Gebrütet) (LEGACY) +tile.block_graphite_rod.name=Pile Steuerstab (LEGACY) +tile.block_graphite_source.name=Pile Neutronenquelle (LEGACY) tile.block_insulator.name=Isolatorrolle tile.block_lead.name=Bleiblock tile.block_lanthanium.name=Lanthanblock @@ -4545,6 +4539,7 @@ tile.machine_rtg_orange.name=Starker RTG tile.machine_rtg_purple.name=Paarvernichtungsgenerator tile.machine_rtg_red.name=Fulminationsgenerator tile.machine_rtg_yellow.name=Australium Supergenerator +tile.machine_satlink.name=Satelliten-Bodenstation tile.machine_satlinker.name=Satelliten-ID-Manager tile.machine_sawmill.name=Stirling-Sägemühle tile.machine_sawmill.desc=Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Minimalaufnahme: 100 TU/t, Maximalaufnahme: 300 TU/t diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 06542768a..8448a7f7a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3839,20 +3839,20 @@ item.pile_rod.waste.name=Chicago Pile Nuclear Waste Rod item.pile_rod.waste.desc=Highly reactive end product from leaving a Chicago Pile fuel rod in the reactor for too long. item.pile_rod.zr.name=Chicago Pile Zirconium Rod item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for pushing other rods safely out of the reactor. -item.pile_rod_boron.name=Chicago Pile Control Rod -item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle -item.pile_rod_detector.name=Chicago Pile Control & Detector Rod -item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux -item.pile_rod_lithium.name=Chicago Pile Lithium Cell -item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core -item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod -item.pile_rod_plutonium.desc=§d[Neutron Source] -item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod -item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. -item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source -item.pile_rod_source.desc=§d[Neutron Source] -item.pile_rod_uranium.name=Chicago Pile Uranium Rod -item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample +item.pile_rod_boron.name=Chicago Pile Control Rod (LEGACY) +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle (LEGACY) +item.pile_rod_detector.name=Chicago Pile Control & Detector Rod (LEGACY) +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux (LEGACY) +item.pile_rod_lithium.name=Chicago Pile Lithium Cell (LEGACY) +item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core (LEGACY) +item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod (LEGACY) +item.pile_rod_plutonium.desc=§d[Neutron Source] (LEGACY) +item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod (LEGACY) +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. (LEGACY) +item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source (LEGACY) +item.pile_rod_source.desc=§d[Neutron Source] (LEGACY) +item.pile_rod_uranium.name=Chicago Pile Uranium Rod (LEGACY) +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample (LEGACY) item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste @@ -4395,26 +4395,29 @@ item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix item.safety_fuse.name=Safety Fuse -item.sat_base.name=Satellite Base item.sat_chip.name=Satellite ID-Chip item.sat_coord.name=Satellite Designator item.sat_designator.name=Satellite Laser Designator -item.sat_relay.name=Satellite Radar Relay -item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion +item.sat_relay.name=Satellite Radar Relay (LEGACY) +item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (LEGACY) item.sat_gerald.name=Gerald The Construction Android -item.sat_head_laser.name=Death Ray -item.sat_head_mapper.name=High-Gain Optical Camera -item.sat_head_radar.name=Radar Dish -item.sat_head_resonator.name=Xenium Resonator -item.sat_head_scanner.name=M700 Survey Scanner item.sat_interface.name=Satellite Control Interface -item.sat_laser.name=Orbital Death Ray -item.sat_lunar_miner.name=Lunar Mining Ship -item.sat_mapper.name=Surface Mapping Satellite -item.sat_miner.name=Asteroid Mining Ship -item.sat_radar.name=Radar Survey Satellite -item.sat_resonator.name=Xenium Resonator Satellite -item.sat_scanner.name=Satellite with Depth-Resource Scanning Module +item.sat_laser.name=Orbital Death Ray (LEGACY) +item.sat_lunar_miner.name=Lunar Mining Ship (LEGACY) +item.sat_mapper.name=Surface Mapping Satellite (LEGACY) +item.sat_miner.name=Asteroid Mining Ship (LEGACY) +item.sat_radar.name=Radar Survey Satellite (LEGACY) +item.sat_resonator.name=Xenium Resonator Satellite (LEGACY) +item.sat_scanner.name=Satellite with Depth-Resource Scanning Module (LEGACY) +item.satellite.death_ray.name=Orbital Death Ray +item.satellite.miner_astro.name=Asteroid Mining Ship +item.satellite.miner_lunar.name=Lunar Mining Ship +item.satellite.precision_laser.name=Orbital Precision Laser +item.satellite.radar.name=Radar Satellite +item.satellite.relay.name=Relay Satellite +item.satellite.scanner.name=Depth Scanning Satellite +item.satellite.spy.name=Spy Satellite +item.satellite.xenium_resonator.name=Xenium Resonator Satellite item.sawblade.name=Sawblade item.schnitzel_vegan.name=Vegan Schnitzel item.schrabidium_axe.name=Schrabidium Axe @@ -5100,14 +5103,14 @@ tile.block_fluorite.name=Block of Fluorite tile.block_foam.name=Foam tile.block_insulator.name=Roll of Insulation tile.block_graphite.name=Block of Graphite -tile.block_graphite_detector.name=Pile Neutron Detector -tile.block_graphite_drilled.name=Drilled Graphite -tile.block_graphite_fuel.name=Pile Fuel -tile.block_graphite_lithium.name=Pile Lithium Fuel -tile.block_graphite_plutonium.name=Pile Fuel (Bred) -tile.block_graphite_rod.name=Pile Control Rod -tile.block_graphite_source.name=Pile Neutron Source -tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) +tile.block_graphite_detector.name=Pile Neutron Detector (LEGACY) +tile.block_graphite_drilled.name=Drilled Graphite (LEGACY) +tile.block_graphite_fuel.name=Pile Fuel (LEGACY) +tile.block_graphite_lithium.name=Pile Lithium Fuel (LEGACY) +tile.block_graphite_plutonium.name=Pile Fuel (Bred) (LEGACY) +tile.block_graphite_rod.name=Pile Control Rod (LEGACY) +tile.block_graphite_source.name=Pile Neutron Source (LEGACY) +tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) (LEGACY) tile.block_lead.name=Block of Lead tile.block_lanthanium.name=Block of Lanthanium tile.block_lithium.name=Block of Lithium @@ -5816,6 +5819,7 @@ tile.machine_rtg_orange.name=Strong RT Generator tile.machine_rtg_purple.name=Antimatter Annihilation Generator tile.machine_rtg_red.name=Fulmination Generator tile.machine_rtg_yellow.name=Australium Superfuel Reactor +tile.machine_satlink.name=Satellite Ground Station tile.machine_satlinker.name=Satellite ID Manager tile.machine_sawmill.name=Stirling Sawmill tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png index 161f74fcc52cf51aeba992efc686225debacd795..7993518c0d1f72f8ac5d1e3cbcb2ffa5aeae98c0 100644 GIT binary patch delta 253 zcmVEhGzYdCeFD_Y^{xPUIPH+Qi+I{ zWnn2L^Y6t{$~~^|`p_ts>AwPaUS;RJq6Gj@(^mDJ@}dG`Om$IS zD!BC%L!K{F=_hu~%&lcH#x$3yBO)$JKcKZPTRZRv`olSJ=0r(Y00000NkvXXu0mjf DNJn$) delta 534 zcmV+x0_pvz0=@*0Gk*c~NklBX zdd;Pjo_ous&Sn%dWfys2nvkw-7flE?L!`qKGrzZu*W1kzZOSM`BKuQ^3BBdmo%~CuJ>vUbm zD?{Spa~O?AG=J~9v^sr!-^a2nq?F|Ic?`pd4+GS%Z<$PIT%27p@gWg0Fmncv4<5xM z=ks|S$Jt;K1Odgv0%p!Y&%mo=LGssm$e?-G-6(b(2h%iZHk)yGSl2}i5}8!Uz|0w# zIU@!ZDVxpGZnp`70Dw$-Kb+tngXEK!U|A#T*SGOoJAaOYl#)iH0l;dtqSx!8>pGL^ zj8>=5#o6U{4m2&rV(~j3IqC|qTrL4Ha|S@1gS}b_Wgftf`X^wWJlIa({k<>eKXF}` zWW?a~#9%!3$)xvzFm*tjyhu?pBL)!u1vRXolpC&X+uq67N+^U7$}5LP2%&(TJ)r&q YKrc{pmk;lY{Qv*}07*qoM6N<$f=C|!WB>pF diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png index 78f60404ddcbdceb73f73331dc385ada65227135..954ccd7a4fc676f2bc3c57a20f141c59448165a6 100644 GIT binary patch delta 278 zcmV+x0qOpO1i%82Gk*a0NkloOnSjD#1!{lPbM5=yJo)>}zFT{sry!Fn_4?;#nM}V-wEw9G zemsIq6W_KP*Hc*Ejav`71+xc41Q99n>y>~Iu&b2GCfIiyfLW5iZlRR$uUm*Q=GF~p c=R5lkGjZ@Uo)3UjlmGw#07*qoM6N<$g1a(-X8-^I delta 474 zcmV<00VV#x0)qsQGk*cPNkl15)sn(pj=ABHrKN zddnfsZZ6_@gUkH`jzz>9w42Kj5XxB&BOHOYl%o`yrfJf2@pTAElk3uFdLQzB^3D6a zPnf%?xr+jn5JL64D8IMAXYQgL$5B#BrM&EA`+C2JIslZEl7G{a7nG%I_W)Q%amD94 z?tEZ4ftnD4KVLk){(j9}nWn~K5$$->)Myy+_*hVLKhFq47*D1E{Pq6<5Jg)sj z&1E>B4%>Z228NbpU^gx7rd3S83#VxcfT7p1n^uuQ?a_0PGGK6hQ`~j=%w>49*$^&Q zj3-kr&MtR*V4509a-$mI+@NMu8*i$wScH38e_UZgPp65}^Gx+#E zy9Gn916k{UqItRUX66|{_AjWpi&9>;b{uCf-|wOjLMXqN86kuM_V$4K4+|bxLF6+z Q;Q#;t07*qoM6N<$f_wDfCIA2c 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 index a1262001b64250f9c1ed63c0b1f880dbacb11c83..e9601d8f4293b0fe9c24c1be400215949a6ada46 100644 GIT binary patch delta 1281 zcmV+c1^)Wg4BHHlB!2{RLP=Bz2nYy#2xN!=00t6CL_t(|obBB)avDhhhS8oaAB1z* z=C6c|XrfW=pGlOx{mFa9J zd~Al*O+5ilGu0p5cDuFyKZ>sFN)dr3{WZa3TKpf(!^1-o`Vae^r@ zq|IhiN-1SNpO@lFpea*a0X(tzVOo<00GO7N0VR__1rU>f1Qman06?%$Q%~S6X0zGU zQyAUTd#b+z*!Ph?O?b1}l%GF;mf37}@|kzY<1@s3s9!Syczk>;|Nis$+2dSY-<0KY zIlzocRr9Iw_)vepW&*Htb$xTz&#zXiLC=)tL(8gu4WK1IzJGhu??FwPy8@`ukMG~g z)%DHO*SG%vm-1SOE;$G4{ehr}iMD8!T z{_kIEPA^4Z7otlqK8u}0n!N(p8S4zcUaz11efX)j1G_oye?PSv=0F{qz5+PplqdOa z!N2xKn0^!vJ@&ENf&E`!iiJ<#hYG-Z7u0*s>ia))C;~4n{{9s~4VUFL%z^1O9f18a zS`BBnV~c-(>K6icYM29cXf^=-`|DE{-Fx2izPnmD_A{@Y@oR{Hg->7eF9P;2t6%#% zgkzWf```B;_t5(UF6EMcB}yBb55T1yJM-@c=e6k65CPcN>@7fz-g31ulan$Kpl8DKW`&4>C`9e{_2ho{|X zJt_a>_;9Z3UjsfT0#J%4<1vm8 zr>OoG02q&w0VR__1q**Ti@gZjHpPxWUDtJ68(G5irn&;?6888@GM~>&DW#iw9=y-g ze_-2*AD`h&{agY700000004-#|K<&E%ApnBbTp9Nf!uDl)<13Nx~>!v7{p)2;-@k9 z_xGi^VjV(_L%fj79ly)C7bvRj74)Rk^#nGmddi9>>2@9gka+ z5CIjFKm`z!fCLFZ9o!FKu~?MVYIXL57{@r&sVk*yx7%$g<WlvLldjsvpOWK;!WmlW_zjlOO~N9_$EYoa)D6Jaz;!PW9v15okPi z1Ts$bae6#%0h4h99FzY91(P2E29rPq21RC9VB=Ij4&$*a zFwLc9;JQ<5MZ6>$+}xe}C`bLYUnZK==9c=Se35@8Jc&Ve}8+ rc9L1Z`&s;x0R}vi5C#btFslCmMcQhdBJ|ZJ00000NkvXXu0mjfNIY;X delta 1250 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 B-3I^w diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png deleted file mode 100644 index f405049aec72dd85661a9cadc93c361a01913eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2993 zcmbVOXH=8f7X1=|M4Cn!iWG4`1*tP)fJg}pp(qnT${;N$AP6E1jDz%`gP;iF0D{y2 z(tDSd1aSbB8ah&BklrDI6aw#an0arl_v5XZcmLdd?^j` zJ|jcDYXATNAq0SPft#IA{w;9h@YOZ4fP*Ut?i>jKJZ?sMIu`d+S0}V1#pXrYH(l2S z>djnCzbZ9_o8?iw8)H9Rc;I1>^wyF0jHU9e8x}0y>Ew$J7Dt_YTEbiAY7w8g&tkkQ z8fy*7;pT=I3;0XC^H+1+MX{>CO{C82U#zOSyxytRqcL?1J~7!%RBc=*l6HI6h#%uJ zIyuWT6ZbYo544KeP0icX+NN#x`AW7s?p9B3PPD@nczF@|NT7 z6T|fzUYpMc?bXo1{lZ zcFcZA6p~<#HD-Khwmlzx(89V_v>DRC8ru8bpM*sy)k~^`2wzOY=1i?;@PwJh#Ke5w zXR~~0OM~OfW%i9fmrkD+7oU~bH5VDy&A4eQR7pzey0xr!j8NICiuaB1$p^o3atgif8d@QT2dBq|#a0HjD{yysKBPe+dt)lmjY$@~`-W=r%k5R(B z+|Me8`dvi*651T{&e#S9>FF`Oygsz`qcC6rO97B3|vp0jRaX37kQb5;kD*iAfzsR&>MAqka>K z_OScCix~2&uwxP5iA3usl$|`vI^hsmX>F)?5+x4YUVP+GGe1mOxUUUKri{v>YoF%@ zGP3&6$uHWJvXRHD+e0Zo$2gST0e*iQYMSl1aZ%s1lIcYl?GA zXJW`z>1WA`H6M&2<;k%iW5F@Jspi!H2U{xT^pcabW7HVX(Ji}7mGO_V`2}r#W|?Qz zOcXd1_-mh=1+!9eDSN)o$P8oP4jIEX-4ToYxDVlx%gUB z9I}89Zy9hRV2ze}7?NZ@rW-t(r3EZpzmrM41G09?dV=7ZC_t6|Gl0YQifz7VN1)@D#{B|9QfzqenC&-N=Z}}kmBDDU568T?3IiK0{a4wT?kPVx zT6n+!7V=~+K2y{!z@emh(}TEP3>kTa1Qr+{PySBq-~I^V6P}&2xA&&Yxg0^!ZVj%P zn-RYmk_BrZ{PKVW9s&DrMqb1H{Fk*JxnUy%wtwVaJTvwDZ^)7Z22H1v~VByBa)f- zurGx;HW%yf?y|mprxLjua=R#3o}DP48HiP5`zDH#B1@PL zen;R3)n{QWmMfoD_jrV&YDf`nHf;>(os5d_8g%Vn9F5gxH&%`|(@Nge41+{`_c(IA8pR}o&WoamaBv=Ems9`j0wrlkqM!q^(h z^3+mg^mX%@b(`Q!YdJ{o+!{*zfVn*8qM@Z0J3V&`Uv*UK$=4#!+I8L+oN`!s^!XuE zmV80twAerc8%JVWIeT2qlHvYIpZ4}g`I*hvJB+tK8n?EoFKP1t1obpAh`>AkWdkLL z;zi>(@3F_KpV|>Jq7Y47olj&G=4zIn%Y{3B5?r(a8#-d zEdqu;i%||-otFhS-VB~X3t6$lVo{pV;{`)i{jAoaZWzA9=!jB)NUzU~Qb4`ZTUf-W zhefjZ**1q)3&8;Tt5R_2x@}ln&O<+KwzRyPXLwL*YC z9sm9E;&;J+Tt+-AP>qlUdo5^89{^$y03K|&fAg3CQY~Fxl#TEqn49R$Z8PljKIcRW zjUXa@RN~_%5N;}`9!GXePiJ<#^A(o6X(0LD499;NdMV-(_)qv-9{$Ur(;-E2YYaL* zn<(}(hdW4T7Q^%zLFB6!L;j)szq}q&^rlk8!+_`!gp643f0AI;0PiRz$7g4zu9TAD z5%yuS2Epp`*#AFg6>`e6`AV>^8$UQEwU&~nl{x E0Fb+A$^ZZW diff --git a/src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png b/src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png deleted file mode 100644 index b3781407bc045a976e9053e6c8eec1ceb19ca2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmcguSyYo*626Hs1OYct0Z~8)5mCVnmuU#HIm879L1ax7!3BO15z>$i6wNdOZlJV) zpfsRF5@bmlHH%w77C|Kh2qCyY5R73o~m14Reg2txxe@x z*kd%$d>#P6$op>|egMF9CJdmEIu&~Mew0oj;@!OcQ92=_j{O4weYv;CZvUV2Wn%7S z3#pmjh-!(R_5DS#Yr8Txur@uj`p}n+>37rEnuMAnHsV?H=<{P9Qa+mBSar$>`TBh4 z@7ZC037A*>{ItcgjlCxLh?bU?ug$&U=}wZ1<-%?fK5>B5I!=@p;8maV!|n8cpI_JI zdx#dV$l0D}AZorlPXPLi2YE^Jf)H7CX%LgyN=`$5~Tu8Uyb!9xJwT(yJ z$g4iT(_-85JI(~BJ?K81g{5Vgs+ZtUke{D#KXP{Iyt@9SM>cLB@-acbJbMHQG9tVK zHI12?{V7dDkA>LARec?1JUvUIV*ncG;QaH5mG}uhcGwBBu1x#rbCS1#$EB!<>11Ab z^2A`%k?7-jE#C|3(soA!hr$eTW}KKqnPSDQe{nan*vI?9R=HNxJ%BR;Uj7af*Zm$) zOb#y{k%bh(c?b+9GK}yvjYh#lfrYotz`i1ver%%vZL55xAN;5s`xHx9RoQ|H5h7ZdX!#+(HY5cQCZf#bd8QATTbxms(Jmg4DZ8Wb?CK=1v&*cSr_ zZt(_SbyH?YNrnK{U~A3oTBWL^Jp;`>V8sEY(hyJ0$>$;@nLEjaM6dOe9ECBQ@R{x*X zPs`t1wr>B4v(0CZIdU#frjEcznDZa4r*6)2LFZUDwGi!9wQTLH<2EJPE=g)}kKm9q zgBHuRkDlfEE@gbL9acMi@3-uCx=5`*`KQ3#O?fmu#?Ip3zobve9~U+ax+^=Ftl62H{=`QeA+KZ zN(`v|3;(ax&yM)Np48V94PGqy6>;WC)A}ll#vRIE%>csb1af5Tb*I=gFrj2qR^*PF zxUXBbfIo5I|5M5TiTBE4>*Zn&I&pjH5sRiO)u*-b_`V?~l6OIG!Mox;*aL!PxT7I+ z`g+-fFJ0Bg4=U#7=5G5}L-ej z1v|Nd#)c#ULn{fJfcGs+CEMEC+Lg2i^+2Ax+5>t;{#p~O!u)&-o^4(w>Owk~mMfxn zJ_#37n>S`Po+=q!&=qxK?B%BW}fT4BK(;FQ;-{N-YZ?#b^9POnm| zBMV6LyXY-N4EP*j*-E&3dd(yUs!k76-trrd;Q77Lo@CZSLZyZydz{rJyfUDk>g7Td zXl5|Em&LuSjv1CS<7#V-X5=sK$%5|}+tCEHgZHy9mnE_*l8HIYFqK51p_3Mfu_6tA zg}a1I%}Nr*smYg|N#P~#-*cAmH_t3fEq%JHe}%h~G>LvEtbRkJY7=k%Mmo&j_UO#Z z<=q{nb>cST$1+mD?$A=lOG^An>$a`uEF5{S%v|3r^Pw|uK!f_7J*Q8^)hZ$a6%n#3 zZe2P}CheV0GBTr{!4-WobHzw~eq-9lvMb0{i3JT|wsNMK7n@zNK=GVZAv( zBx(+(2&3_HBm?iIl7VqXpe#Y)6rg6U*z%b^qhPZpgGHlxBuU~^I;75m=?xG;jQvz; zR7iC$^^&WE@FZN+Q3lmBn8V$%l1+Un6B2k$*yzDsP;_+c=`H6d?pbKh-RqL!W=v$; zHksW1CSAx_49{VL^6sI)kyCk`pxt@a)_R1P@2mPE=^3K*L!1^K?J3vjZPni=Jx9Cj6ICM}AF=gD?w{-aq yk+ODJt)7~r_gn?6DvKvx@L3|=ckkZ>XRTRqQ}{GnzQpa&ti#*$fCt?Tcm5BJYm$%v diff --git a/src/main/resources/assets/hbm/textures/items/sat_base.png b/src/main/resources/assets/hbm/textures/items/sat_base.png deleted file mode 100644 index 87405de6169c940aa1ac712f1f41a0fc68f0041d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq-5P)qN1VDrD>bBy)mU-KMa`O({5VAF+0{{S=daAfwo16du002ovPDHLkV1jmK Be{28% diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_laser.png b/src/main/resources/assets/hbm/textures/items/sat_head_laser.png deleted file mode 100644 index 0fabf144d03d5c2d7a0d17699a4ac92751ea4511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf*jHMxFfVSM@FHNT*VPFv3xj^Ch#g6nK78NR-f{eCEzf3~EiDnr)VCv(d0*TwcFH2maQt#$AByZg`O^p-AIHAB+y z*gKZXfzOTq=rOF%T|akv>dqE>E(VL|w>a*dy?Cf@lKQDyU$h>-;2f|AhT##f-M@z5YR_Y~HDBaRPUwmt11*Sh?x&lE6Y=Gr>z8^2=r< z{+s__@`wMMzO>ti&mPOTv6#(JwwN{H(qjg}N?s?9xx01Ql_o{p*Jpkn`e4(+J>SHG`+CpUXO@geCxEO=C0w diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_radar.png b/src/main/resources/assets/hbm/textures/items/sat_head_radar.png deleted file mode 100644 index 823a13240009232ba453cc076aaeb8fef18b3589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfaBgyIKI3m-UGKaSXBO z-8*Tc;2{GZ*ZsvNmggtxOgyH2VH3xctk}b9Ig`5>gO+@psV6c=$n%H_>+$@QpG%(W z&u^&LY%w@_VpYl|^Rp%ItwIk-9S?M!_Ly04<*_-&uXfE-zP~Z4hmV18Q>Fx)tH0(- z4u*TxQ?(fwY}T27*FF;PgZ1 zvoE{Np;?n-`QE&~Z^Epym1UzJ!)Eq-)iU#+e=45N+YmEhZRo$5ar@uJf0>xe;Ro~! NgQu&X%Q~loCIA`uXg2@= diff --git a/src/main/resources/assets/hbm/textures/items/satellite.death_ray.png b/src/main/resources/assets/hbm/textures/items/satellite.death_ray.png new file mode 100644 index 0000000000000000000000000000000000000000..e546efaee6b840f6d2ac28bd6810f318fb96c65c GIT binary patch literal 403 zcmV;E0c`$>P)Nkl6;F*1%LK($#y^SST)Vq&e$ zP1BU-OZdrP{<5{UG;5j$r4%6q&gU}#BEmS16~K1c;BvXV&hYVgB*w_$a3IFWZnrBV z%rHD`VX2!^D#|G(hGCfX@2smeSSdxOH7G=dg8tzZ%G2Lk>@z)!HqAH;uf@ek73 zZY4{KZ5L9dQ83#IGLuShi&(59E_t)&R>OUF?z`{tKtNFx{TL45ND>-j_C82l(7+f& z+qQIFcaS@XJkJN6Bu-2K@VvhMjqX1#RaD`>m>NfxY002ovPDHLkV1o7Ok^=w$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png b/src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png new file mode 100644 index 0000000000000000000000000000000000000000..2999b8b08d1a00578cb894cece022cf18a032c16 GIT binary patch literal 439 zcmV;o0Z9IdP)7C~cp&SC(bzL%hTW054A$0NA#zqrpM1lo)oL*21=Jt(4lN z4|>Vx5&=2U;Q0Z*R&T#f37Ksi4p`|KInkhbdd0`*D=R(Qg8c(9O;a=9J^228PrY8( z0OfKS$8iLJh!4-_b1K|$a`w1+_u+6z5Cr(XPqkVl3_}1$qmkHYFdmP^8GGzk&|Aa#5%(9u!`GqQksf%ZH-Pfx)SSgITV zGa)3?F>T^5p=!fNMdRg>hu{0ymf@c(%QEM{twuw>fm2GY8!+J4Tky**_~{28uH*fM zthFRbLR*$>m7=PuMe{vbYweU$?y{dfwttPoFhpzZilQJ00<5(trAU%wve3WAUDr_* z1yK}{rYUXP0${D39N^7iV+?)Yb2uC@#^CLrIlg!7qWfRz1C(XyE#cF{BmQQGf43dy z@L)^L=hFx0&*NnJA~K7crtxN*FS!Az>zX)@M;MrG9?}C45trxr2(MZq;zVTiAO8Z; WI?`W>e4q6MAMDsptGa5NZ8V9gX23iy9PPd z>~gC_LpZ$9;BXB&)M3tXTw;TZUA_&Wc>aKc>RFx_-uL@?J`XSaM=7Or(zmJK4%-Px zYOxbgEEZ!BDW#TDZa@>QAf?o;R!by#yDX)Y)>`X@#kT1HG3wKWp~GPWzpCVn@dK5cS&dc2|UIF1kiy&C%H{E%=I#6W&Gz{(kf!-!gN#@@cg z>?2(ExBDBB0w{M74_5=MY=&?Y#KQhvM19(1{`JW`n#DSRvCt`Z5IqJuU&+M6)jpzB wdeoE2gfwYZd$9hEi*?4YKj&(H^Zw848_3Y6yX@CdO#lD@07*qoM6N<$f`jt54gdfE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/satellite.relay.png b/src/main/resources/assets/hbm/textures/items/satellite.relay.png new file mode 100644 index 0000000000000000000000000000000000000000..08a4f2164301f98df8586869f9da3128f50d4132 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfb>YqDFTwbci%|y z9K90!plnm2PSENLb&s#wx`*2zsCUW#wkPI&Mb!FLSu5twm*4v}(lbzmhaolcA5XhS z(_-^#vttF*QghZmjT6#2^?A7xV6opTKGDK=I>cZ$Zu$Sz9fDT!hfhRFMMu*C*h$Tpj z3`FXN1mX!2iLR9`m_l1_C!&x*C6?ahSXbve*7XnYA7zZ8a!+er>HQf{3{gtu>)JJ7 z9t2c2Dy3kIA*B>8mrL(vz&r@(Wwr8@Qsn!79>O_?5CXkk@4{aRD8k)t7tT3Mr&El_ z9QONtFvgIkDXg`~vJ9P02b0OfD+hQ*I1EEXQ3N3b+U+*1wb*XANYfN=n>~*E zPc)yNFSK5S8Drp_BaUOVTCE&@eg8nif5hpSRka8^=ir=!5CXH=3;^)9+2i!{h12)( zs^-^thR?-02LRL>P1NcSw{&4?(uh(RZp}Rgxv9#8A Z!@oH4_t{$^4gmlF002ovPDHLkV1m&}yOIC^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/satellite.spy.png b/src/main/resources/assets/hbm/textures/items/satellite.spy.png new file mode 100644 index 0000000000000000000000000000000000000000..75c95afa9249d2fef6e875a56b38c3074603e706 GIT binary patch literal 371 zcmV-(0gV2MP)b;z6vpv?AZ3Wu64Zq;H%N})BV^$KoW$Z79gt_Xknxdy#A%w6Wf^fCGn>t>@OpRT zbo^lQ@_LoyOB{wFQ4~=W1=H!Y!*APn{NS1Msp;n>uIrk*u8HHAJkJ4G?~a_mKRJJ$ ze$7$)gci3IMG*iaf5K?|bU&BNrI%$HRaF7>mUeG)n_X$GAAZ-rN^3nB{{ZQ~2nt?# RL+k(m002ovPDHLkV1l|Rpz;6! literal 0 HcmV?d00001 From c95a9a8890ba05d3bee8318fea5ad95cdbb2e06e Mon Sep 17 00:00:00 2001 From: irislgtm Date: Sun, 21 Jun 2026 00:00:25 +0530 Subject: [PATCH 14/16] zquash --- .../java/com/hbm/blocks/BlockEnumMulti.java | 2 +- src/main/java/com/hbm/blocks/BlockEnums.java | 34 +++++++-- src/main/java/com/hbm/blocks/ModBlocks.java | 9 ++- .../java/com/hbm/blocks/ModSoundTypes.java | 2 + .../hbm/blocks/generic/BlockEnumMultiCT.java | 65 ++++++++++++++++++ .../hbm/blocks/generic/BlockStalagmite.java | 3 + .../com/hbm/blocks/generic/RedBarrel.java | 1 - .../java/com/hbm/config/StructureConfig.java | 4 ++ .../inventory/recipes/anvil/AnvilRecipes.java | 2 + .../java/com/hbm/main/CraftingManager.java | 8 +++ .../java/com/hbm/main/StructureManager.java | 2 + .../com/hbm/world/gen/NTMWorldGenerator.java | 12 ++++ src/main/resources/assets/hbm/lang/en_US.lang | 25 +++++++ .../assets/hbm/manual/pile/pile.json | 2 +- src/main/resources/assets/hbm/sounds.json | 3 + .../assets/hbm/sounds/block/flesh1.ogg | Bin 0 -> 6623 bytes .../assets/hbm/sounds/block/flesh2.ogg | Bin 0 -> 6571 bytes .../assets/hbm/sounds/block/flesh4.ogg | Bin 0 -> 5623 bytes .../assets/hbm/sounds/block/flesh5.ogg | Bin 0 -> 6636 bytes .../hbm/sounds/block/platemetal_bar1.ogg | Bin 0 -> 5388 bytes .../hbm/sounds/block/platemetal_bar2.ogg | Bin 0 -> 4883 bytes .../hbm/sounds/block/platemetal_bar3.ogg | Bin 0 -> 5075 bytes .../hbm/sounds/block/platemetal_bar4.ogg | Bin 0 -> 4965 bytes .../hbm/sounds/block/platemetal_bar5.ogg | Bin 0 -> 4721 bytes .../hbm/sounds/block/platemetal_bar6.ogg | Bin 0 -> 4207 bytes .../hbm/sounds/block/platemetal_step.ogg | Bin 0 -> 6354 bytes .../assets/hbm/structures/dead_dish_small.nbt | Bin 0 -> 4908 bytes .../assets/hbm/structures/water_pump.nbt | Bin 0 -> 7451 bytes .../hbm/textures/blocks/platemetal.base.png | Bin 0 -> 387 bytes .../textures/blocks/platemetal.base_ct.png | Bin 0 -> 888 bytes .../hbm/textures/blocks/platemetal.black.png | Bin 0 -> 353 bytes .../textures/blocks/platemetal.black_ct.png | Bin 0 -> 790 bytes .../hbm/textures/blocks/platemetal.blue.png | Bin 0 -> 477 bytes .../textures/blocks/platemetal.blue_ct.png | Bin 0 -> 1082 bytes .../hbm/textures/blocks/platemetal.cyan.png | Bin 0 -> 458 bytes .../textures/blocks/platemetal.cyan_ct.png | Bin 0 -> 1091 bytes .../hbm/textures/blocks/platemetal.green.png | Bin 0 -> 472 bytes .../textures/blocks/platemetal.green_ct.png | Bin 0 -> 1066 bytes .../textures/blocks/platemetal.light_blue.png | Bin 0 -> 497 bytes .../blocks/platemetal.light_blue_ct.png | Bin 0 -> 1123 bytes .../textures/blocks/platemetal.light_gray.png | Bin 0 -> 438 bytes .../blocks/platemetal.light_gray_ct.png | Bin 0 -> 1002 bytes .../hbm/textures/blocks/platemetal.lime.png | Bin 0 -> 466 bytes .../textures/blocks/platemetal.lime_ct.png | Bin 0 -> 1052 bytes .../textures/blocks/platemetal.magenta.png | Bin 0 -> 474 bytes .../textures/blocks/platemetal.magenta_ct.png | Bin 0 -> 1054 bytes .../hbm/textures/blocks/platemetal.orange.png | Bin 0 -> 479 bytes .../textures/blocks/platemetal.orange_ct.png | Bin 0 -> 1055 bytes .../hbm/textures/blocks/platemetal.pink.png | Bin 0 -> 480 bytes .../textures/blocks/platemetal.pink_ct.png | Bin 0 -> 1060 bytes .../hbm/textures/blocks/platemetal.purple.png | Bin 0 -> 476 bytes .../textures/blocks/platemetal.purple_ct.png | Bin 0 -> 1055 bytes .../hbm/textures/blocks/platemetal.red.png | Bin 0 -> 450 bytes .../hbm/textures/blocks/platemetal.red_ct.png | Bin 0 -> 1027 bytes .../hbm/textures/blocks/platemetal.white.png | Bin 0 -> 486 bytes .../textures/blocks/platemetal.white_ct.png | Bin 0 -> 1337 bytes .../hbm/textures/blocks/platemetal.yellow.png | Bin 0 -> 476 bytes .../textures/blocks/platemetal.yellow_ct.png | Bin 0 -> 1057 bytes .../textures/blocks/stalactite.glyphid1.png | Bin 0 -> 429 bytes .../textures/blocks/stalactite.glyphid2.png | Bin 0 -> 432 bytes .../textures/blocks/stalactite.glyphid3.png | Bin 0 -> 396 bytes .../hbm/textures/blocks/stalactite.ice.png | Bin 0 -> 408 bytes .../hbm/textures/blocks/stalactite.snow.png | Bin 0 -> 246 bytes .../textures/blocks/stalagmite.glyphid1.png | Bin 0 -> 377 bytes .../textures/blocks/stalagmite.glyphid2.png | Bin 0 -> 371 bytes .../textures/blocks/stalagmite.glyphid3.png | Bin 0 -> 360 bytes .../hbm/textures/blocks/stalagmite.ice.png | Bin 0 -> 424 bytes .../hbm/textures/blocks/stalagmite.snow.png | Bin 0 -> 230 bytes 68 files changed, 162 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java create mode 100644 src/main/resources/assets/hbm/sounds/block/flesh1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/flesh2.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/flesh4.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/flesh5.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar2.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar3.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_bar6.ogg create mode 100644 src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg create mode 100644 src/main/resources/assets/hbm/structures/dead_dish_small.nbt create mode 100644 src/main/resources/assets/hbm/structures/water_pump.nbt create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.base.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.black.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.blue.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.cyan_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.green.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.green_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.magenta.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.orange_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.pink.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.pink_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.purple_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.red.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.red_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.white.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/platemetal.yellow_ct.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.ice.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalactite.snow.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid1.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid2.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.ice.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/stalagmite.snow.png diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index a79493e26..fe84c3b58 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -14,7 +14,7 @@ public class BlockEnumMulti extends BlockMulti { public Class theEnum; public boolean multiName; - private boolean multiTexture; + protected boolean multiTexture; public BlockEnumMulti(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { super(mat); diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index f2cef0da2..e6a4b5644 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -26,7 +26,12 @@ public class BlockEnums { public static enum EnumStalagmiteType { SULFUR, - ASBESTOS + ASBESTOS, + ICE, + SNOW, + GLYPHID1, + GLYPHID2, + GLYPHID3 } public static enum EnumCMMaterials { @@ -49,15 +54,15 @@ public class BlockEnums { GOLD, SCHRABIDIUM } - + /** DECO / STRUCTURE ENUMS */ //i apologize in advance - + public static enum TileType { LARGE, SMALL } - + public static enum LightstoneType { UNREFINED, TILE, @@ -65,11 +70,11 @@ public class BlockEnums { BRICKS_CHISELED, CHISELED } - + public static enum DecoComputerEnum { IBM_300PL } - + public static enum DecoCabinetEnum { GREEN, STEEL @@ -81,4 +86,21 @@ public class BlockEnums { HALOGEN } + public static enum PlatemetalType { + BASE, + BLACK, + WHITE, + RED, + GREEN, + LIGHT_GRAY, + BLUE, + PURPLE, + CYAN, + PINK, + LIME, + YELLOW, + LIGHT_BLUE, + MAGENTA, + ORANGE + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d8d83ad42..aa7328075 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -255,6 +255,7 @@ public class ModBlocks { public static Block deco_rusty_steel; public static Block deco_lead; public static Block deco_beryllium; + public static Block platemetal; public static Block deco_asbestos; public static Block deco_rbmk; public static Block deco_rbmk_smooth; @@ -1430,6 +1431,7 @@ public class ModBlocks { deco_rusty_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_rusty_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_rusty_steel"); deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); + platemetal = new BlockEnumMultiCT(Material.iron, BlockEnums.PlatemetalType.class, true, true).setBlockName("platemetal").setCreativeTab(MainRegistry.blockTab).setStepSound(ModSoundTypes.platemetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":platemetal"); deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank_top"); @@ -1642,8 +1644,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); - glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); - glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); + glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -2585,6 +2587,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_rusty_steel, deco_rusty_steel.getUnlocalizedName()); GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); + GameRegistry.registerBlock(platemetal, ItemBlockBlastInfo.class, platemetal.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); @@ -2915,7 +2918,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_barrel, ItemBlockLore.class, red_barrel.getUnlocalizedName()); GameRegistry.registerBlock(pink_barrel, ItemBlockLore.class, pink_barrel.getUnlocalizedName()); GameRegistry.registerBlock(lox_barrel, ItemBlockLore.class, lox_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(taint_barrel, taint_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(taint_barrel, ItemBlockLore.class, taint_barrel.getUnlocalizedName()); GameRegistry.registerBlock(yellow_barrel, yellow_barrel.getUnlocalizedName()); GameRegistry.registerBlock(vitrified_barrel, vitrified_barrel.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java index 85f42f310..2bd3b8d6c 100644 --- a/src/main/java/com/hbm/blocks/ModSoundTypes.java +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -10,4 +10,6 @@ public class ModSoundTypes { if(type == ModSoundType.SubType.BREAK) in -= 0.15F; return in + rand.nextFloat() * 0.2F; }); + public static final ModSoundType flesh = ModSoundType.placeBreakStep("hbm:block.flesh", "hbm:block.flesh", "hbm:block.flesh", 0.5F, 1.0F); + public static final ModSoundType platemetal = ModSoundType.placeBreakStep("hbm:block.platemetalPlace", "hbm:block.platemetalPlace", "hbm:step.platemetal", 1.0F, 1.0F); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java b/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java new file mode 100644 index 000000000..670080ba5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java @@ -0,0 +1,65 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.render.block.ct.CT; +import com.hbm.render.block.ct.CTStitchReceiver; +import com.hbm.render.block.ct.IBlockCT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockEnumMultiCT extends BlockEnumMulti implements IBlockCT { + + @SideOnly(Side.CLIENT) + public CTStitchReceiver[] receivers; + // im planning ts for shi like deco blocks n shit when the time comes + public BlockEnumMultiCT(Material mat, Class theEnum, boolean multiName, boolean multiTexture) + { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public int getRenderType() { + return CT.renderID; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + if(multiTexture) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + this.receivers = new CTStitchReceiver[enums.length]; + for(int i = 0; i < icons.length; i++) + { + Enum num = enums[i]; + String texName = this.getTextureMultiName(num); + this.icons[i] = reg.registerIcon(texName); + this.receivers[i] = IBlockCT.primeReceiver(reg, texName, this.icons[i]); + } + } + else + { + this.blockIcon = reg.registerIcon(this.getTextureName()); + this.receivers = new CTStitchReceiver[1]; + this.receivers[0] = IBlockCT.primeReceiver(reg, this.getTextureName(), this.blockIcon); + } + } + + @Override + public IIcon[] getFragments(IBlockAccess world, int x, int y, int z, int side) + { + int meta = world.getBlockMetadata(x, y, z); + return receivers[meta % receivers.length].fragCache; + + } + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { + return this == block; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java index 5db100280..c595e2481 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -10,6 +10,7 @@ import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; @@ -43,6 +44,8 @@ public class BlockStalagmite extends BlockEnumMulti { switch(meta) { case 0: return ModItems.sulfur; case 1: return ModItems.powder_asbestos; + case 2: return ModItems.powder_ice; + case 3: return Items.snowball; } return null; diff --git a/src/main/java/com/hbm/blocks/generic/RedBarrel.java b/src/main/java/com/hbm/blocks/generic/RedBarrel.java index d1acf2af2..c3cbe7df4 100644 --- a/src/main/java/com/hbm/blocks/generic/RedBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/RedBarrel.java @@ -17,7 +17,6 @@ import net.minecraft.world.World; public class RedBarrel extends BlockDetonatable { - // Flammable barrels also explode when shot public RedBarrel(Material material, boolean flammable) { super(material, flammable ? 2 : 0, flammable ? 15 : 0, 100, true, flammable); } diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index e20d2410c..82d3c673c 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -42,6 +42,8 @@ public class StructureConfig { public static int lighthouseSpawnWeight = 4; public static int oilRigSpawnWeight = 5; public static int broadcastingTowerSpawnWeight = 25; + public static int waterPumpSpawnWeight = 15; + public static int deadDishSmallSpawnWeight = 15; public static int beachedPatrolSpawnWeight = 15; public static int vertibirdSpawnWeight = 6; public static int vertibirdCrashedSpawnWeight = 10; @@ -117,6 +119,8 @@ public class StructureConfig { craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.39_craneSpawnWeight", "Spawn weight for crane structure.", 20); broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25); towerBaseSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.41_towerBaseSpawnWeight", "Spawn weight for tower base.", 30); + waterPumpSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.42_waterPumpSpawnWeight", "Spawn weight for water pump structure.", 15); + deadDishSmallSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.43_deadDishSmallSpawnWeight", "Spawn weight for dead dish small structure.", 15); structureMinChunks = CommonConfig.setDef(structureMinChunks, 4); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 26f743ae4..799702a84 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -178,6 +178,7 @@ public class AnvilRecipes extends SerializableRecipe { new AStack[] {new ComparableStack(Blocks.stonebrick, 16), new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(IRON.ingot(), 8), new OreDictStack(CU.ingot(), 8)}, new AnvilOutput(new ItemStack(ModBlocks.machine_annihilator))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.plate(), 1), new AnvilOutput(new ItemStack(ModBlocks.platemetal, 4, 0))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_aluminium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BE.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_beryllium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(PB.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_lead, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); @@ -658,6 +659,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_lead, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_lead, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_beryllium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_asbestos, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_asbestos, 1))}).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.platemetal, 4, 0), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.heater_firebox), diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 37e4304cb..23beb5b69 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -2,6 +2,7 @@ package com.hbm.main; import com.hbm.blocks.BlockEnums.DecoCabinetEnum; import com.hbm.blocks.BlockEnums.LightstoneType; +import com.hbm.blocks.BlockEnums.PlatemetalType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAbsorber.EnumAbsorberTier; import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; @@ -391,6 +392,13 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored_ext, 1, OreDictionary.WILDCARD_VALUE) }); + String[] plateDyes = { "Black", "White", "Red", "Green", "LightGray", "Blue", "Purple", "Cyan", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange" }; + for(int i = 0; i < 14; i++) { + String dyeName = "dye" + plateDyes[i]; + addRecipeAuto(new ItemStack(ModBlocks.platemetal, 8, i + 1), new Object[] { "PPP", "PDP", "PPP", 'P', new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), 'D', dyeName }); + } + addShapelessAuto(new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), new Object[] { new ItemStack(ModBlocks.platemetal, 1, OreDictionary.WILDCARD_VALUE) }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE }); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 8b0709e87..05621a816 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -60,6 +60,8 @@ public class StructureManager { public static final NBTStructure beached_patrol = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/beached_patrol.nbt")); public static final NBTStructure lighthouse = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/lighthouse.nbt")); public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt")); + public static final NBTStructure water_pump = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/water_pump.nbt")); + public static final NBTStructure dead_dish_small = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dead_dish_small.nbt")); public static final NBTStructure desert_shack_1 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_1.nbt")); public static final NBTStructure desert_shack_2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_2.nbt")); public static final NBTStructure desert_shack_3 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_3.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index c0be7e888..94d6737f9 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -117,6 +117,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.dishSpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("water_pump") {{ + canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.PLAINS) || BiomeDictionary.isBiomeOfType(biome, Type.SWAMP); + structure = new JigsawPiece("water_pump", StructureManager.water_pump, -10); + spawnWeight = StructureConfig.waterPumpSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("forestchem") {{ canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome); structure = new JigsawPiece("forest_chem", StructureManager.forest_chem, -9); @@ -191,6 +197,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.desertShack3SpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("dead_dish_small") {{ + canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.SANDY); + structure = new JigsawPiece("dead_dish_small", StructureManager.dead_dish_small, -5); + spawnWeight = StructureConfig.deadDishSmallSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruinA") {{ canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt(); structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}}; diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8448a7f7a..ad9ecf572 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5382,6 +5382,21 @@ tile.crystal_virus.name=Dark Crystal tile.deco_aluminium.name=Aluminium Deco Block tile.deco_asbestos.name=Asbestos Roof tile.deco_beryllium.name=Beryllium Deco Block +tile.platemetal.base.name=Platemetal Block +tile.platemetal.black.name=Black Platemetal Block +tile.platemetal.white.name=White Platemetal Block +tile.platemetal.red.name=Red Platemetal Block +tile.platemetal.green.name=Green Platemetal Block +tile.platemetal.light_gray.name=Light Gray Platemetal Block +tile.platemetal.blue.name=Blue Platemetal Block +tile.platemetal.purple.name=Purple Platemetal Block +tile.platemetal.cyan.name=Cyan Platemetal Block +tile.platemetal.pink.name=Pink Platemetal Block +tile.platemetal.lime.name=Lime Platemetal Block +tile.platemetal.yellow.name=Yellow Platemetal Block +tile.platemetal.light_blue.name=Light Blue Platemetal Block +tile.platemetal.magenta.name=Magenta Platemetal Block +tile.platemetal.orange.name=Orange Platemetal Block tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_crt.name=Old CRT Screen tile.deco_emitter.name=Deco Light Emitter @@ -6296,8 +6311,18 @@ tile.spotlight_fluoro.name=Fluorescent Light tile.spotlight_halogen.name=Halogen Floodlight tile.stalactite.asbestos.name=Asbestos Stalactite tile.stalactite.sulfur.name=Sulfurous Stalactite +tile.stalactite.ice.name=Icy Stalactite +tile.stalactite.snow.name=Snowy Stalactite +tile.stalactite.glyphid1.name=Glyphid Stalactite +tile.stalactite.glyphid2.name=Bloated Glyphid Stalactite +tile.stalactite.glyphid3.name=Putrid Glyphid Stalactite tile.stalagmite.asbestos.name=Asbestos Stalagmite tile.stalagmite.sulfur.name=Sulfurous Stalagmite +tile.stalagmite.ice.name=Icy Stalagmite +tile.stalagmite.snow.name=Snowy Stalagmite +tile.stalagmite.glyphid1.name=Glyphid Stalagmite +tile.stalagmite.glyphid2.name=Bloated Glyphid Stalagmite +tile.stalagmite.glyphid3.name=Putrid Glyphid Stalagmite tile.steel_beam.name=Steel Beam tile.steel_corner.name=Steel Wall Corner tile.steel_grate.name=Steel Grate diff --git a/src/main/resources/assets/hbm/manual/pile/pile.json b/src/main/resources/assets/hbm/manual/pile/pile.json index a5ddf27f9..a8aeff368 100644 --- a/src/main/resources/assets/hbm/manual/pile/pile.json +++ b/src/main/resources/assets/hbm/manual/pile/pile.json @@ -6,7 +6,7 @@ "en_US": "Chicago Pile" }, "content": { - "en_US": "The Chcago Pile is a low-tech low-power reactor used for breeding nuclear material, mainly turning [[uranium|Uranium]] into [[plutonium-239|Plutonium-239]]. Due to its simplicity, operating it either requires manual intervention or some form of external operation with [[Redstone over Radio]].

The pile is constructed out of a box of Chicago Pile graphite bricks at least 5x5x5 blocks in size, and at most 15x15x15 blocks. The box does not need to be a perfect cube, so shapes like 5x7x9 are valid, so long as the box is filled. Using a hand drill, the pile is assembled, with the drilled block acting as the core.

To prepare the Chicago Pile for use, channels need to be drilled, again with a hand drill. The function of the channel depends on the orientation relative to the core. Using the hand drill again on the input side of an existing channel will close the channel again. Channels cannot intersect one another.

Fuel channels are channels that follow the core's orientation, i.e. either the input or output side is on the same face as the core's panel. Fuel channels can be loaded with Chicago Pile fuel rods using a [[fuel loader|Chicago Pile Fuel Loader]]. The amount of fuel that fits into any given channel depends on its length, with one block of channel being able to hold one fuel rod.

Ventilation channels are channels which are perpendicular to the core's orientation and therefore also to the fuel channels. Ventilation channels cool down fuel channels which touch (but not intersect) them if compressed air is supplied at a pressure of 1 PU via a [[vent|Chicago Pile Vent]]. Passive cooling in the Chicago Pile is quite low, so while technically optional, vents are basically mandatory for every Pile in practice.

Channels drilled from the top are for [[control rods|Chicago Pile Control Rod]]. Control rods are used to reduce the interactiion between fuel channels in larger Pile setups, although smaller setups are usually fine without control rods. Still, throttling the reactor can be useful when cycling fuel, since the window for extracting pure plutonium-239 is quite small.
<>br>If the Pile is disassembled, channels can be drilled again without having to remove all the attachments like fuel loaders and vents, simply shift-click the attachment with the hand drill and a channel will be drilled into the Pile behind it.

See also:
* [[Chicago Pile Operation]]" + "en_US": "The Chicago Pile is a low-tech low-power reactor used for breeding nuclear material, mainly turning [[uranium|Uranium]] into [[plutonium-239|Plutonium-239]]. Due to its simplicity, operating it either requires manual intervention or some form of external operation with [[Redstone over Radio]].

The pile is constructed out of a box of Chicago Pile graphite bricks at least 5x5x5 blocks in size, and at most 15x15x15 blocks. The box does not need to be a perfect cube, so shapes like 5x7x9 are valid, so long as the box is filled. Using a hand drill, the pile is assembled, with the drilled block acting as the core.

To prepare the Chicago Pile for use, channels need to be drilled, again with a hand drill. The function of the channel depends on the orientation relative to the core. Using the hand drill again on the input side of an existing channel will close the channel again. Channels cannot intersect one another.

Fuel channels are channels that follow the core's orientation, i.e. either the input or output side is on the same face as the core's panel. Fuel channels can be loaded with Chicago Pile fuel rods using a [[fuel loader|Chicago Pile Fuel Loader]]. The amount of fuel that fits into any given channel depends on its length, with one block of channel being able to hold one fuel rod.

Ventilation channels are channels which are perpendicular to the core's orientation and therefore also to the fuel channels. Ventilation channels cool down fuel channels which touch (but not intersect) them if compressed air is supplied at a pressure of 1 PU via a [[vent|Chicago Pile Vent]]. Passive cooling in the Chicago Pile is quite low, so while technically optional, vents are basically mandatory for every Pile in practice.

Channels drilled from the top are for [[control rods|Chicago Pile Control Rod]]. Control rods are used to reduce the interactiion between fuel channels in larger Pile setups, although smaller setups are usually fine without control rods. Still, throttling the reactor can be useful when cycling fuel, since the window for extracting pure plutonium-239 is quite small.
<>br>If the Pile is disassembled, channels can be drilled again without having to remove all the attachments like fuel loaders and vents, simply shift-click the attachment with the hand drill and a channel will be drilled into the Pile behind it.

See also:
* [[Chicago Pile Operation]]" } } diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index c9ac8d1b7..f4f4e63f5 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -27,6 +27,7 @@ "block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]}, "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": false}]}, "block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]}, + "block.flesh": {"category": "block", "sounds": ["block/flesh1", "block/flesh2", "block/flesh4", "block/flesh5"]}, "block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, "block.missileAssembly2": {"category": "block", "sounds": [{"name": "block/missileAssembly2", "stream": false}]}, "block.openDoor": {"category": "block", "sounds": ["block/door_open_1", "block/door_open_2"]}, @@ -324,6 +325,8 @@ "step.iron_land": {"category": "player", "sounds": [{"name": "footsteps/iron_land", "stream": false}]}, "step.iron": {"category": "player", "sounds": ["footsteps/iron1", "footsteps/iron2", "footsteps/iron3", "footsteps/iron4"]}, "step.metalBlock": {"category": "block", "sounds": ["footsteps/metalStep1", "footsteps/metalStep2", "footsteps/metalStep3", "footsteps/metalStep4"]}, + "step.platemetal": {"category": "block", "sounds": ["block/platemetal_step"]}, + "block.platemetalPlace": {"category": "block", "sounds": ["block/platemetal_bar1", "block/platemetal_bar2", "block/platemetal_bar3", "block/platemetal_bar4", "block/platemetal_bar5", "block/platemetal_bar6"]}, "step.powered": {"category": "player", "sounds": ["footsteps/powered1", "footsteps/powered2", "footsteps/powered3"]}, "player.vomit": {"category": "player", "sounds": [{"name": "player/vomit", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/flesh1.ogg b/src/main/resources/assets/hbm/sounds/block/flesh1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..35579854df28eddbeb3bc794849e15187b02c54d GIT binary patch literal 6623 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/flesh2.ogg b/src/main/resources/assets/hbm/sounds/block/flesh2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..621cc190ecc924f577175e7cd3b8f470190f5be6 GIT binary patch literal 6571 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..35a01cd51e2b7225c0a8015d169ece1159e3abfb GIT binary patch literal 5388 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 RFuL1X;p%V*V)Z2Ke*lI3&fEY1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4669c54b866318d4a632d18696bcf7909f7ecb0c GIT binary patch literal 4965 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 G0RI7gWVg2f literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3061ed48327c709a29e49472bc339d8ae7df30e1 GIT binary patch literal 4721 zcmZu!2{_bU)W0)kjJ+`=S;k;6vSbDa_o?QD4PKzSF;BI=B;7tV++iht@#hJHQAErCyn}Cht}4K!Leb$5aK)eQ~gw} zkNM&P{SP^=o5h*qG}P3HYCAM^^>NnJF#kX7a5Ys8RW%$zLrp_dMO{NhU0soFSP*Ka zdrhp#rgnxVAt8Y{Q*Zw;7;@tTd1Dht7~leclMAd*NzfF~U_cGh0wlkC+W;hmn4-W2 zL16Qk(pMn?0GlLwV>xx2ObZpa&mQV{C{V4K_E{8);~lQKK@%3O1K5v6Be8b zc;Yz#6$nrX0&E;oAX9)fMaeEVzxXEdVp1Zxaey&D6$K2i1xY3TBAWma@(RENpeAC> zlvaY%po}A=OV1wUQ!Fdm_h4(e@V+$lQsGdBZbgyTBVDd@UVM5ermcl;Z~ndv-S-ml zDY^=BIW`dLG!Cepu~|QKFJMWV=gLQ69ybslcAIeYHAG?!tQP^6l6wYu5k)kZhx{i( z-ISA9qyeCz#3BLht}(|Z1AyI#tgm6fzz@*MJ7=c-|BiJEO5h@h#BOYXRvU!nhtz1O zzjr|+4f?@Q&>(c5v>ucW3}nhJ;QNJ4`y0r%h%EYH|6)J?i-j_Q&Iyl>y1CzO2}|fwo5kUB0=UvF-6!A2Ok_V$a)hc^H^wsPL?U= zA_Ez;plM_=0b?o%@ckImJ=e*$LWWrsval)9N+`J)GH;tee`h45WiTj|OolY*WJp5> zmx6;sg(fYNLI&t$GPEe5B+%(l(IaSF=vXciBC?oHFh&3aF**sseobW1?4ZePRDmcJ z!d#8XCoI;00dzQ^5>gIFVF$A$9?nctvdjFjx#gYRL&VJ9?%_xSV!>M&z-CdPdt1bU zE*Oi`D)|nKhu@hSl){0igxPQ;t;D>5bBdCCmt)hzMuW#3PPw}wzaV#O+ka%64)R5ph!P%~o~-b)c?JxgUD9czFTFNf{{f0#;WXvQF94SwsXdXh>dV z+8wwP3qr#Q>O~+ioLv_vc3tcqFyDR7bj+{o460~=aSj3u(72&IaY~pRBl_je`qkn0 z)U#xq!5+91uHbx zEDpe`hmpy|-ofbw7)D0J*ly#Q(*g6)`<4d;1s@&_i;Siv(9;-a|2KIs82bXTVT2;v z_#7gFwb?5G*q=iv17P&Arp^{AIR)u!;u2!gvh7{fH83h1O`5U5)liW%9RK~j$9uYVuD01pZbG7swb0xjlX!CXTEIm^oZYja_wiDb=5H2z>#5%lq?(L++Entd#d)>JcuO}rLI`8JpdE6+Tt7A!9`Q|25=jG;Zd_}n9 zb@iN^w_{8koH6!2H7!-2B(_HwJ*cF;Lfov1!{vXS`Yc5M5|$-e+C7T) zcss~kbjW9THcAp5KbGa0HlEo3I#aOB98`Oh6}E)B=reJnYxS}-QTjoMS&KCKm;B#b zAzA3VPs?SWxiR!yjx$Z3Z^nZdg<}KW8Ql3k!<91+R`cP`YK~UN>W}vZtnQruHIBn- zh3M_KZ%^+}b6j=viFup>SJqR(2SgdU>phZ8I1f;vRpCTeHIC5q}KeRsz9SH8gMa|m1q>`It7kpB-~D&&%NUO5ZUutkAH|<0VYqP<;zU!{N@jba> z0}hyX;e-bM{o3MTE13nIt)8tvR{*xJv?Jvc=cbTT&wK(|X53?>n>1No2L~>v`#a0D z2|r5c&@=AR2}quviV@cidg$#pT`6o-)mPj>c_P#iOnuRI;3KA1D1EOZanGQXf86}V zeZkeXKfdXtj6Xk|U_8eCN{+I+=^-xn5s|+4{+BpfH#WM-%Vx~K&}66d2l)!Ik=g~< z_TD5!7{$M-c#>0h#Cm8=$)oMt4dj$6N2bltGp-8xrWUmVjCeBtDLP)yRVA+p{-gIM z04*HfBpL46rT4dyfe!MghqPu;*x8elSK-I)^bj_2{B{<&#S=SRuS=CS&GcIBa({+2 z87TSEY7v^3BhC^2@{{Fp?va6<4CRcR2QH6;bbRk`D>FOt@#B=6!M9t_1Q%0AsO15} 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg new file mode 100644 index 0000000000000000000000000000000000000000..95e7c3f1b781cee117ea292baf94b17d3aa91131 GIT binary patch literal 6354 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 B+S>pC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/dead_dish_small.nbt b/src/main/resources/assets/hbm/structures/dead_dish_small.nbt new file mode 100644 index 0000000000000000000000000000000000000000..08bc7b2a11312ce1ae9f64d9ead3637176ab756a GIT binary patch literal 4908 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 L#~vH;-Mjt=N#u(; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.base.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.base.png new file mode 100644 index 0000000000000000000000000000000000000000..859cd678b8faf788c27fa7eac5bb859007867660 GIT binary patch literal 387 zcmV-}0et?6P)jb zQm13KZIk0T9Ioq<`@ZEoPucg~afs`>x*U6vFUunHJj*zaVnFnL?>?q!l3^JBfK7A(=-)>1%M==Th>D4 zSkMVrYd`Kra5Mek)xfoFD_NF_(Tap$Nefa0h@waglzb2T>e?4A76gG9eP=F^Lk@4W zKU{lw(EmCM_=f6=KIc5J);{K~J76VtgB(|;Kv5K8nx^@fufFRyu%Htt%kpsu5l>jp zULQmebOAU4{D8z$=Dfc}c83_pv7mGJl<}e6=F6lX{&ZNqs;ak%cnp{){va3&NN}&$ h%jKv7pi=@o@dE*{zP|`L6y5*;002ovPDHLkV1nSyrfdKJ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..74bdf9144042921cd55a529065a02d4b505de000 GIT binary patch literal 888 zcmV-;1Bd*HP)g$yFIuI8$TpL#q?V z?yg?lDf|7t6YX}pZoA!9uJ^;?Q2FtA>`tds$&TKa8icwpryzU>;c(C@`7R|wC?>@$INgz1oA@P2U_!9 zYee&X-x^%F&Z?q8>=P9LE#{5JgT7t~Qga^xv~s1@7qasfy3;MR)qrwBqBq<*Tk{{4 z=gq2peG+n>vo|=;apt4qRGu>f8&h^u?X4c5rJQD|K;P7S_>BOmn3qxOol{XsI0b0T3k> zk(|kS=QG>0dT4nzv*L&OeBKLIlB9B$kXkVXYhA6lbw9M+u3ON1i!)NKF@GEwhHrza z&T(F}5t)ee3ilVG5otOR`CX*3+3WnK%S3;+`n}d3fyj(c4`z$E*Z%?Xn+%i6D+Oo( O0000c<;UO|*LC%4I9`^;=6SYp9L<3khQUv!Y4VZaBIU7`Xqx6DkR*xq zeeV|o6xE3T7-w1L$7Nam3+O_ELh67!BN-7wjtL|IwX8ylw?Nl*KW8KE9Fa#}p64G2 zPl+K<5!TJA15FAohsl^nQDjcftQ9AR+Gu_F@2dvGtFmlUn4rQ6UxV)92wF6CsNz*s znQPnjr@wmEr|!H3>bm|)Lc|rmyS_XgTmxPJACPE?-nuZ-9b%fM2Ioaln8QS?eb>J5 zJz#e{Bws}AjDDge07!6g9Q!dI40eK30zB~t4ik)gTtTsh00000NkvXXu0mjfd?u3` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..3c2b7f7f882d26d1dd84b7f04a9c01e30b6c347e GIT binary patch literal 790 zcmV+x1L^#UP)!s{neaopM*sF=TK-Kmwv}P!`~V)oS%E#eWI99$S8SdHxd!Fnx z)|En-1%IL4tDv%8(ruLrkdG@Hteolnr^@|i#k$4-4^lR$P#JK=uG|Awjq|v|+RA`h zs;^m9K-zUq0jlCewf7qXgCS2=D=U6SsPbMWBxcA;NgKWI&u-57i?^3iDV+(Zq;#9} z*<78_b*ZQ&P(=@(D>`1!HETT8JbMxdo>%yR2Vy$d72_MF*drXJINcA4cHDwoTlj&} z=sym6VDF)deV+G;y~Ii_#XtkW>jc6+1gvme=Wv$4=<|p#e7kXPi=x_g`H~NMheu#~CHh7a5 z#%6<8bT?km=|3aQA7SWh+o}9XdrxTRGk+Mwn|AueZl_4>MDAvKT>#KfsqG=j#zioJ z94LK~%*1RgAl2wl-u31g0ba!@s6llP6fn@rOy+xa?FdGw(@AtYEh-0;OF-I&YefL! z?%kY$1MqKUZ4WdKOVkLhZBP~*??ZXhs2Zl*O^-vejFrQ&*Wd|ng zSslW{^(}%q(X=%M@){&`y1+$2Lp?$enL^{Z04UAdwNTmzWn(93We*-8iqB!<&W$%{ zWlaoOlv;3$6~z}YjpTCPvrCpe4`;9Y;o76{Ji>rKG;)>wy#Kkqkl7g3=m2r&7WMU0 z82$;>*3I;rs0^Go)PU8S=~b~vTn5gQ9|*@nBW=soU3v3^VI?wU&%9~p1PJg4AHL4Q TP@oF{00000NkvXXu0mjf1W457 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..dd1402d576ca6521565d504f004354337e133908 GIT binary patch literal 1082 zcmV-A1jYM_P)`6pHRCt_)SKCe$K@gq)Fd(}KEU@g%uH5_xUyS;oMvc)|6P36G z2oa-3k?1FnIW=`^PuGt6(CL|;>FTyI|?G^g$E^xWq0^r9Wl zF1uOB?9%o%hu>|+z&iF}?A^WU{+XV4`~82Mfr00h!Naz~f!xdu3n8Bt0w^5HLP1v= z3YgNO_+>g0d&60X<3Sj2Jv^*5>XRK2J%30fZ)>hP-p$IRy%d-`s zq=#a5{A=Ms#@;>FhXpE*?}Lr!ZAF0^1{KJIsR%u_Jvp(tIl3+YOXaenG*ZX<=ym6T z43KPT47Y+pF)Rew4DYaSwKzK=9 zU67blF~boaP!y9i`f@+`fz&;{uq;rL(gXOf))=HO-vfloWXfJS{{t@qMuO0&*sWBi zGK&UP)EKa$8% zI($@AP7ML^fHhc;J^-^RpezY++kn#kcqaP?3P=z&Ti{4O_MBk?hDEQRv%CJgKe6MoDkQ)&7jvff5*!_?>`})6v zoV0m$xs}E?+$(KaP_y)WdhpWWsb>hUNY-eURD4(hm0Ib_82QAvPKly+Xi<}Ltc`E( zimI&nLg-c56={i1p~!oS!?jGOejzZ>M>@r2LeQ*TZc#P!ekCSpdUYLZ5duZI_HODr zWy^y9GiOLhmr^_#Tjh?YC_>t-aFEqf%`Z|dXHU8}Dw$Q(da(H-1Op_RuSFU)r$)tv z7wWlDF~1k}A-SD5A}U-Fk)XzWaVWwdjjG-guuuEN$bfXGP_OWtQ8BbZV}R}iEfSu& zhPD}N`5TG}Znn5y54T=*$|uAxbx-aUO?!C#57Ea>#CMAyga7~l07*qoM6N<$g3jOt A^#A|> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..4ad996f1435e30bbcbd4572f7df50db6d331126d GIT binary patch literal 458 zcmV;*0X6=KP)RCt_SQ_Bj%Kn&co)xJJT5D|Q!DD>b(QEIo;2ZD;C;&(?T zZqluXCEFxBnM_iX+-{UU9+W5nAr>H0xgn=9=Vr=oSC>SIdkNMtS zEXaToBLmg1E|UTq_I^Znrf92cUOh%#TxW!_C&T?7zES0h6 z01**oKcqbfpXUxB%h-uk)_KFa{n!6Mge(dQhC>4L_Iyqz7>ycg%Vz2(3IiE0G{|!b zSF7J5VHq$_{2&+$ob2oM_>Lb2mB3UE{Fnd$zS2wQkq{QLd@*980X6ZJL<8&wT_t`5g8uNi zX{V=qI*a!{O!jly)34J`b=EXV*Lt1KR;zri>vXo+=ymk`oJMV%ue{n;_l>{4^8TjL z_quPhNu#&7{Eytfy!ijBLsrwIlgrCgsY2Taw zdsU`fAy>X*34rtSR4Ez=6d;0DHozkDf_q5>LE&nZ#-E>hJ-N8(JZ8oya8nLh{%_Ny z!Oe|%0O;6y0Kq*30Epa+2L!-+-6@9Urrg1ZHw^&f3}&-bxrG)A_ky`R0HGKo6qE1o z4j5t&j~&Sc0GIE>`8-uFkix(Mq1Y1%o?0&TI^OR?!aBGDs2fS^&%;CZK$##tOR+2= z9b{eS5Xc_O8&2L{-f##un+#y|8)~wi^TL(eH>m=zAnc=mf>#+xT^oS5OO{aoC><^_ z3yoJv+hzb30P}eU5bE7F z20maSF&4xB2!V%%$*cqeZZXEyGW3$6^6*4sFHnMNl9{maZs#1}O3BrM#6ZOs4)*|O zF-XH}w@5+=gi@)3KvJZ@m2;1g^0jAA!oXx;FEk*~DMG}_NJ*&l3M+{z{eMwxAsk#^ zr_;yBq72tv60%E!#Rad+vwMJ(l;t6u=(Yl6xlE@|PsW7Je_CPcR1*?FU$i73-%3yX#20M}{R4~lV%E5WOV`hJgssc$d{34wUQiRjq8*BjBKx7)zs@5t)VMVZ>! zAmRzR@8$t&GC`QU$85+Tx7!dRPQKuFV%R`V_FVM_hH?NQ@3_TaOPhYcoX6(BKu!$G zJOLO^1%&ekLXwdc*s=wh&PA zgyvKXtezKCx?y6Xv7Qe!J%%N)Rd3?qCd9)E7Bac)`CMvrvI=0!xv@3?dPumv?F6q@ zv0k~1>RPEd2$u0`I`!|t%F^w2A_CwF8L8A*92`Ozcu=Ktg6`va5k?eeig4b6P)$@TwpJiEpE2<5;`x3?= zcI~+!t4{@4dCW^^oD&D<(tS>UmLKxc8Rfia&?vHxLmOh-!$5WOG7~0%p|Ts7_8`z; z2$RAGtrrJ@CaE1J^;|zoivuJWHPBRNB8z~PaT({@QBs^jgL4o%Ar`VtL>pVt1dBIW zkAMky_J|^WAVk`_&C1+KN*sgWpiEYx5D|;a?8U_)69erfTix=)%lI#C$Hdv5>40Y6 zN?1f1TVo>6K^x8}aFS5VhfM-KdrT6|yxD@?2ajeLNbBx5L8G4**SyMj11s~QMPaLR zu^Rm;ar5WXzGq&>3ftNHDMamoc!(mv2S%*2e-Hm?Pvjtw>V86+*IB8bro>eb5`Wm{ zX8Q3(2*?dMK=p--Ot?r`2Fw!=1Y>~_w(?F)&v-DX1f=L08g@(o34Q?GZoEOlw=H-8 O0000`LvL*wuk++^|5c)?NLA7Ia$cp@j}}D zyl7Wl*u%N~AIo;dvUewW-925*=T7ps{2n^6aDV;rRBE7*hk3w-e3=NKa5Hw4&)_T! zFr&rrdtaCG*>RRZxp>co^Mi+1Qe$414J@@50vH7MhUJo+@>bZG>2%O~zP%%CC^W`4*jH#hATwy>}zT?Z4Yh>160|Vs%6-7WQ9@Ge?>hRZ~#St<8G!Wr;BZvJ0!f{>i zJg9u2L_!wh_e=p5Yc!%UT%?CGoVC3L8|h+bW88B2psp)?GL@2f}Q`g;uwv+Z@JUq$`n+MOSvSZ z*Yp(S&}Sgr`@WR00487OgY@9fij^1^o)0g|-bH@q;ymExDt*A|muV=o01ViCH=kCY zPUi?*HgrUS(rC5L2DYq9vUqQxENQs)c7B2Z?dKXw1tAqG;P`&^$#m5@H3h^2_TW9{ z09?%g9m%@-L2KNSO6cnQk%F~vs1c|FM8S!uYu;;(Xs4MYA~$q#Mpaefkn#lXeI8H- zRAG2#dsQPb_f-Z6_%!Uwuu4vRZsNcY2aqZ{q7X)L`XO_6&3_d+iBXi>Xl@x^9m}Xp zXFgRNmB*REqaszKRnqV#f=a!lF(4m*SB%i!p-oNOu@1g*Dr%zTF7&h>GPLAkD&pBn zxwPpxFE|FeNT>Rl5H#zQt6ejmSIp?ptNYmV6jUge*-b;IY^g*OIYUz#OFTN;#ED0n zP&KS@vA#pkSG33Ksfa9)SwpLDzM6HxMix@9RT+))uT>R=Vc)3Oqb6R)u=9_I1~)_` zs4@OHRB4bwRsR!kPUl7ElJHMaMWwtmDuy)}3^1KwM8ZAyFg9Z^zC$y?pDli`*Wb)# k;{)R3^u(xW*(2(I0pnBw^JTWpz5oCK07*qoM6N<$f@S>nR{#J2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..e641e15c05ffbcbff4ae218f382202e3f9a1819e GIT binary patch literal 497 zcmVFQDSDKY5C}<1VMeM=s`sWQIus5(Ti3D ziDg-M5yc3Ch=_>#(2tuqb9aW-KJ1;nv$JQ;oS8N0`a5MBpOm@(qU^&DO}Bn2+x({V z%?JBnQ?)maL2T;!m8PyHnwio^ZiO-h80P*8HWgq~uS2k83Xdz7FCryg17RV?fF4;AhNtszeB}r(0n+%X7 z(7n``-O)uZ<9}#ojf`8f9I&-@LmLrIOS3?#L89bq;Gm$c9xe!XVdc<@==57laOc6Y z;Y4ST3J~4$$i$9r)ghTxD3^s>f*q`A&LcCnbE!2;HjFTjuN6_dV9SH>Sj+$)I5Eol z9x7d(f3YGYYf|BQ#COG@pN^PZdFw6_F8r=%uDyFPT&% z*;NxSVi-mg5gAfHZ({AU*S>4!T%aqWAfGKdL5qE4&!^XvAk=)2d>;tl^NvXwZqr| zV`BZNo(TY;V64>*&;VfI1^DFaFZEgg#q9gqI*!%-bmr2nR2dq7VLa3 zFzZJFfcp&He3~kvW+=i7jHd#T7&8>JJHKN?#-1MQmkR`r|A*%mQWYCY7<9uh%tUfe zU0B+&d8TumB`m>}KzT?VBlp_wfg(W~C#7dRAp>NqYay^T%o|DGGH)~lcsDZNPSt6s zv(rmn#EJYrQ~^E2b^48ZRe@lb2Q*o-`uDhNiA8AK7}f$n#8|TZG~?=-;XBW34=^#9 z&6<#!4+?^zn(6#%a6}n@0)+bs(g4gM3B7z8Nu+!rL_!wh_Y6T87BXvqac&{wS{brr zv^*lw)C-cJR@1)O^ybeV`4FVIT1kvl%y5JUvMhGeh`1I>7&Y!jQ3V-EiGeUKJqG2= z=SV_jG8!TOGf9JzB@Z+SL9cO2VM=}v!wlis>yOgtLMJc7F-byoX?Eg**YQjbXp-uF z(FMJC0EmsntvUqb|7pdgH>TcvwGd%u2(redTvCJ=`_nk=SrSgY{gyD0OdO!s*$;oL z#OiUJX0}i2ciSiRvyadNELZ6RQPS=iY5@QkefB;LUVB)3;9sJnB&f_=<=T=hr6hTJ z{Kqhyf4tGl0qy5mYbGDa2{qx^qz11(u$k4PAqX~w@x?9E0hkSdO0s_apdq)U5+X6B z@0S#;eM3Q@3gCqxqJDa>lxWu5U2ueKlT+*atg7Td$`knA(*x3EbTg}WZ?6gxx-Szf zl6;xlg<+MP_*|8Op&>xjI~1tSmQ+8%oPG448qYeb?^|hX>E2A1xiQsznPIA4(T}Ab z2pu40$||YYE;XqbR~loP843AG1B8F4hP4@G&%y@;SP^;VZW>UL;oM(dHt7D6t{YWQ zswwwMl`ZVk*W&~pDg#E)a_MNSS5+;dHzTZ8*F~wyZfQ=XV2!+x(#;f;$a=ldlnkq2 zt5We~w;M^Ah#%{_?D<-1ajgb za)%&qk!B{z+$1+?csw4~_r1MdFZ+BxHVlKk-*0<9pV5ZC-|sPo*xT)9*Xz|Tmy5M+ zYXRr^e2$l{>#S*-Bm|+cx7#lOhVgi8r_(70BLc;T=8hkb>2w;;%jMDn zC1E7cXBUvKK$&^Wc{ZC_z=2@IiTIK|kZfut0_^wuRDl3=R4sjV4nOSj0GdM(P$LU{4ivq gQhG*XX958H0X4j1p)~Cx<^TWy07*qoM6N<$f}0M!o&W#< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..e8885edf22226ccb62f17847792930c6adfc7a0b GIT binary patch literal 1002 zcmVhYq;5* znqy4O%tMe>nU%5LSgI`+iy<_h&xgCayT0Dv-w(^>vab&h55sD;>Z>Vxx%c||+SgF_ zb1(Gt^wht}b5_2Oj8LBU_V$Jrfn4SS^!WHVGJtu$jbbPr1+rT4=jZ2sH+QnaH|J39 z@9gXhE!waVvbJG>7Z4am2+ZA=mzTco?(UA?Vhof!@Z#I>J32brdI0Tgy)WYdTb}2v zQ6MXVv7GxnXCDRNb9{U}G_)oZcmbDJD^QS7e0_b542eA+o5BK$=lta4WN0vS7|amC zD1xVMZ*Tkh{{H?0uqam*#Yoe|#l_YG6(H482rFP3N(i#DZ}3*!I0V_7&1OUUo7T48 zxIj2($pWXPt+oNYqe!TGz+kaAh?`T4&>$>p6ma^Q&y;X`=Ircj>j8iPnhi+f!AcOS zkB^T(YDA4c3da2?85tdfq)!Er>wyaiRgCWm0fOy~stmP-irdqWlyQ0>*j_L|12UMs zy}gY!0HJoZix{PtaEu->iYXdXxer!g97-0rNLc{iy2m7ac^^UOO6KZS^B+M5BOpw9 z#Y$I7zK>u+czAd?Twh=ROvAZAXqVdJTG#WA2Mkj4!?W~`C=$B4x!Hzb@t;;)y|G@e zdx)|U0yi#$u7)@K5gvIRgqzJ~2n9?~%Io*{cTcfU-akJ-`(D<(L(Bt&#eINu!!yhR zQQ+$8YB)GJ*m~e!Lq{!8_Ex=HtEE#C>vKjJE-x>CW5E5~t~3Y{Xuxs4zrX*Zb2d z9_Im9Kr_ob?bS+V?y~|0pWW^X>*BHBT==FZ~#t<0gp55#^S4$U~S~DEdn&Q>iRwo`eAp-^i z$+hPj?KOLBc`arQtxr!+N5%n(^VMmTODV->oc)wy&TVCNJAXtd+(2YXWBqY(7(A%@ zKOy%#FJeUfr?6Kz>!mo_WH88dk`XD->}71uUOh`Q$)9b0ug}lVyAl=gb$Y@pPWyQM Y7kRm^NqOdEM*si-07*qoM6N<$g0+X+y8r+H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png new file mode 100644 index 0000000000000000000000000000000000000000..b17ef6ff9d18f804336ebe755d25fd8d2859c45d GIT binary patch literal 466 zcmV;@0WJQCP)Ns6#1DgK8ZT5^h`x zLP&)maY0B3iI*Jt_VVwp^kVkRnwj;_%)e&4?e~)He3q^KRkq!qitYbatn*#A)`$0@ zx88gXxtp&gYrYh%@m#d}L%|%u)w@D`Sbr?o+I>$*LT^0zWNdP4U9T6;BM*RMxRJJ% z+k6ay2$UF_GjTx1+L_p%KFXS-C7dLN)deJ5U;@G(?_|soKyVU7bfF(eK8+FsEMEDx zgdWbQWbp$R>U8NkZ<7aEb4ns0>8~Uap(--cOq&BqiQ%QNddQ0|a~`av%!M;6fY#h_ zBhoaQfD#UB-Cklpp&=h32zp}gA0T{hjS%jGx*=!z#)D(e9OukcFQUYu$|5T4BCM{( znmx&xn>!syW>z&;7!Z*tAdLs{NZbJ*oUF3m8?F797Ln-DR>rEAkxd#SkzXX1f%oJG;aPCv8>**bn;(Wsbjr+V{Ja1Fe_4C@Lm#fS3;+NC07*qo IM6N<$g0ch3>i_@% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..1e76d953bed8b17c809367c93237ecd01fa31208 GIT binary patch literal 1052 zcmV+%1mpXOP)}Xiwcd5u-SVrMK4bC4bbs;rbeor6&h(dF&$RjS zo0`VDCBT9A|PYs{XhT! z@|?W^2Iv6DY~ZUOXWQAF$&B25XXN~WrG0%DG%RFfa|WQW0tzDtg*m(aWvFVw!hd4Y1iB?_<*=e);OHIR&E0h7hn!0!$* zT!XTl4FG&>w(q6fmN|8AVqgJ?0h>)o^T8l+)yDVvzj8$NKLBHXKt@L+A>mU=n zLKb5`E+0%BxD>O5Y1LFK|?Zx-TXGN0N{~>QYSG|G42>zz$_+dV75v^ z1fn!i;3Q=Q>~)Pv`0_p^p)(mu$p4U(+nWa_VbUwNbf#o~6yw69o8$e$ld0WdxF{0Z zq`q;@>v_ilCaLA&PHIPhWSoEc#|6v(DaF+qYoF$ti!$Q^7cP^ox;OGs9(|33*FVqo z86guR>GjsH{Vl}W*q-kth28{Hy7x3Ch;0 zXKS`}NOJpp!wu&iP3>^N_1vZ;ANYnQ97XEz+E|;39=iZOWG%N(ACS2La7#9-9@KWr zkpMAW_iGAv-7ttmL98%LM5Fq>+M=bl({QlnTYKG6i>kC zbHB(X>OY08!nc-+gC>nZx|6g>d1ftbbJps&6qEef=J)#a{fP#mGQM_CSjAx?zx}hs=#Rg6(wEA09I;yPv&|gd}t)+wyU2a_`a&uP>%f`v5rB zMpo^1rtU!yff7S=CJxAUe8byEiHbQ|!bxIST|lx0CLrvc_@+4m2u^~CE(`+6r%^mW zGj$eqAOP7)7C&&IPOqlVZEt+boRSDg1}jNKsEU+Ei{?O5Vt6U69`d5goL7dH%!M;6 zfY#h_BhoaQfFcg=(v2u_kkF8i5CmNrEB67y_tpsEKByaVZe}hbfNFBzTs>8b9I7m$ z!Y;z%dvI4Ox5f#v1_gz zEB#|zn<+ljfw+MKs-I7u^cRU`;63?4cov-aio?s^=7*sYoiZ~TKQ92lAGwP}LEYx3 QPyhe`07*qoM6N<$g7|69vH$=8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..cebfce506688fad5f17c9a7e0879080b090b952d GIT binary patch literal 1054 zcmV+(1mXLMP)^ebT==`nZj6jy>z&9e>%z zjoDZI=83g7S~8b?yQe?4F_QW0i+r4W+t%dy!|d9yJ~|?KzI5P1-$fytvycNKTPN1r z2!K3iZGZtf05Tf*r@4)`H+wR2ZoVVge{SE|z6%;AB3T>(6jnfC4nkq}?ws0c$IJ5b{atboZ4 z#6HFqKNfa|1Mxi;8^;BJ=lktL*ZPhF?FJu+VoZvqUL09%$D#>6KeLQ?fpaapCpJEB(`%mAzs3 zS|qededC(f^Ns~fQlE!AsT~0lc|P-Ku|4m)oZg$k+h5B^y@{ zYP;n~fS9iPH3hqF7(}8VRu~e|xPGs;XsPWq9L)LFo_AFFLe3L;9{K?n86TE+%Bw-9 z@3V_cKAYVc*2#(Yt~Ly{0kL(sG1-#ths-&y|Fd#~;@r-@#k_9IQ0AV`is^dYKh}N# zlRHd_l8$m|QsGyW5oSp~+!PS3vtkz`zdIiQumicxjRH3r%#zWJx4?ssBx)9d-nH5ZsXE>5*!MTtY#9h2L7|IpM7Yp`AIcwB@`7z8HQ zns2uI&&nWb-#7q>EFZc)92}B3UL8i+lvM14GoMt3iMq%lZ$k`^h?%%yG4T>X|}l0V!0Uf-L#)j(9n*X{|cIP7Ef YU+K9nT)=12^8f$<07*qoM6N<$f_TC6rvLx| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png new file mode 100644 index 0000000000000000000000000000000000000000..020ce5462bce068c2c74b4ddc60b638a7f9af99e GIT binary patch literal 479 zcmV<50U-W~P)<#1fhErz8TB#!3%YcF}xI34|&mL z&g;!7bK%Sipfxw#h%}8Rpc)6&N|J;$5*qRmf}r<1{{X`G)(GJ~s2g&wN9zE`y;*Y? zLvhWa$|5T4BCM{(I_b-rJMGWbW>z&;7!Z*tAdLs{i0^<8PF7j(jn@84i%9f#IWjsw z?9Q0mDM$a<)@F(ibs%owfa+%hP01p$47?{l2+x8O-$qNy+x#$8qElu@RCt_)m&uA1K@dgj2kgP_e%;^V!U1P=C(iTS>dK`kZbU>x zT<90L5D{sl5m7`$L_`$DFDkiNoagD_wJwsZ%F2wm8F6E%ZuR(lpRsauzJGaSm|q>6 z?_Zx-X!Dzs3;ny(3vKquTF!mFwAkj1tmj$4?QG6uMsB_{a{l_J4Sg3hEM#PJ2B5G43L^-GIs4_} zsLeMvPmT9-nE*#Qve+AWcXvz=766@Z4-lRa0FXRq4uH%k=H@5|Ox6K_oO?T``wrB& z0xMv01F?^B#jmSNV}bY{i%sGJ!1Mk7u9?0=pxt1BD8{5%>c!!?Hh*7UTtisERiIqb za^`;C6iO`I=ATzu%c`I-1f~-B+KihZfq4w>~3zYLMQGkUw=RLNnfn+ob zm@Kvies_rB8kFU10N`V@eLdy2%)>o1g9RW4Y&Idy2ZO*>Kb8jz)SLSqfH6NHqoa|K z@TnwnK5!x-i?JUUpxDW*f+4q%aa$M?G7b-jW-FMWAsNEHT^;}c9yus=5+fDkjd%uO7=%FF1)jSx_@?X zZfzK@h=ew&Z(Q?w-m!p5YI(Sm+7Tcb&kxNFE?E6fDX!M|bbhFGnQ?&&mq}OM8~G@Y zzDB~&7e;+X$izr`{e5kzg;+-3e_k2ZGUuH^KY&|Y2M9MTLoW~jal!3vQ-cNm)pXPZ zWoy;5HCs9)xqZIjhNlNM{^fw{xlKtv@C{8kiqx&GQ*9=C>;m|ZwcI{^K;{O(E!m`c zP}?m>0>pIPuPNAd!yw{yk+HD6Q(g@+ zeV<)q^4aXpuue|AceP=t4T!D7jmegDKV;5H{hyT^6mmQJ7W29-Lz#O%E2isp|5*D0 zOztoxN;=A=NrhigMwlh}a8p3A&x&1){O)`Jzz*a#HwxTjko)V;2IjBnx<)~@3|8rU za8h082DmD~_~xIEdfti2O|RFp)?8rnxH#2@6(tT`cT8^U{X~yEd3KM*zV|5YdHB zAo(BdzyZ}S61nywu?)N?KM2o)6JN1=%-j4hRH9R6M&suN0Qdtz Wynw#R%}MtF00000g%za-0giIcVr|Y_+IC=M0nqvO0O6Sf0Fvj70gw^J+#KbA$vgl!XL~;Q4-g$7J7epxxjDQH)8k)RV&(+xTVf?r($zTm{M{ zEvpm9Mi!_9sW(L+B!@=gf{gIS6>4$ha*G2^oh6M6(r4(2$J7KA*cY-@a26Vp)(mu$p4U(+nWa_VbUwNbf#o|6yw6ht^516 zL+5`F!*!9+CiRVLUe7xgFiCwL?xc1ENaXS4g^>%M|ECmJYrH?b++36q7r1blbk)5% zALY^4NciE*tv(VmAxW=4F0Hl@i{$;=h5KzTW8M+^0o>v`K)7KUdVv5~J2=-bY}q%m zz`vS~nxJg0y0>Oaha|VpH{9@O|LiXgxSrdT3 z0JtR^R}X5tA6L}u`0T&q` zmUqglL8kAsi%dS7-5J)&iTAEH47CBVb+|FvlJ1AhIj;Y+a)aXB&c4OGZp%>Sp3jQu zdfh+PegKm@Oo@_?a%ocGSCkQENj}^Z5UjIe7bCwr9{{iexy_9NHyPyq`m=%gYr3vc zP%VR1I&U0T*SP_%3NXI;r=#w7Vsg{#`OGyJm^>~{wP8hxL)RUX+j{@d)C_B|UF~>W zgiII&CfAy8w)@Y@AZp(@0En#YJUkp6k~m%+M%k29?1M9(RLpnZvYMSgA^>+VGO4lt zIM@wtRQ;cjeeM^zME$3*RruCYanPhONOzJJDbLKMZO&Z%mSU1W+x%YN-#y(xRL0lt e39C5lWA&eaBPD%&jiW3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png new file mode 100644 index 0000000000000000000000000000000000000000..36d5851d8a14503dec3e5dee2a1f32e604399beb GIT binary patch literal 476 zcmV<20VDp2P)DUkR%$%7y_sra99=D%=x5L7x9TmUqr1)c}lfQOc{I-L_ zhxeg-`8S_KZa4R8o!pDGjrz;+u28JW$q&(3B8kj@^Nf(8<|_LE6MXd z0FIgAvTdbrJP0CCVrb690hx<6yuCcuF-J={NertCNVdQPggqZ`nj?VVB#7w3Adq|- z#RF`nE~5?vAX~}e2QJiUEp=s!qiu6aA|M&8BoU!1GCNW+2a*!QOJVhp7hUE&HMC|f zoLK?1=7t-QrqKixanQ)zMu~%jhJ1t|=!JNz4-me$MhN#o-H=mHUq=8diLSY7@*;Am zvWN=12&-$cRuesQ>*Gh!%Ν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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png new file mode 100644 index 0000000000000000000000000000000000000000..771dae2b7bd3da6bc408484da2ba1274346dac14 GIT binary patch literal 1337 zcmV-91;+Y`P)Px(^GQTOR9J;=S3OVcFc6$HFN?4Xf-}4!U0m1`gjF{&c&N=mDSr$Er z??pt{TZ5jTp8)_Of^i&?Qc~n%j1UnucE8^P0Cu|_oQ0bsAtJ0?!^?OP9}&Ub-5mg+ zswynYf}$v}uB&=omZidfb91BngfX|?@G=@jc@!*u>X*!TAsZoO4Pto-vN&2J)YuAB^J&5y3DFdU=cyUDrV@>4*S5 z~GlIRgO8vTVZU zz296;qFQbZ!=UfQ9vVVG&KXV9V4i11!DdC*b!gjGIl_@fGGrD#A_E-Nk4B2f(SV$@ z<|wUfnnsDk4>ykEs4(+jhK2Qms>)2^JvnFPQrC4y5?TSWu!;ys($o0I7*Up`uG#PR zo6AK+5w!#t5gZN&gb+{^1tg_}x~>sI&_7bI>vr27B3AeYm3OC;a&~RBN zuCK2lBKZ0FISP@@0)D3#0MIlI0H7!eoS&bgsw!MwUT$*Q>IO&eJ;rfFUDv7`mYg|f zxXa7S4T%U7i3kAex^6h6A763dwJ)x?qBe71>kLP;t zF$@FV-`_QSg>A`BU2F(;vDxfE1Yv$6@L+Q3YUd`nx=p111lka+j_ux zqGG+a`Vd0E+1Z(*EY@<4tnu`QSujnLYDC}nO3-y(|Jx%noHn#w*KMn*Eg-`%Y>H1+ zRREw|pvSz7h?HfCvMiNww&I-%k<}XS{gH&s-ShMFjVBZ-8e$D&fnhaV*Y%&ilJagf zg59_FAoDzsZzdBDPDn^-C-zcVB;MmX=iwpt_} zy&T6;J+}=BJ!Ckvx%k~{^@1U>29fadJRcDd5v=Q~T?>iG%T60m!Ym^Cr^A+G!fh)k z=TF=HO%~V%!!T^LfgZ9aWGF}~?Qnh-l8$jC3cTEOV1L_j#)pb$s~WxFhr(i|)`rIt z&uWR~1%P8iGS4#(hl8dJTPAy$tpU%^&*~}Hy}rIG0xZc&G*-Uf@$KzR&noWk?^j-G z)sT;c)Ha)Z_x=5ii;Ig*2za?g&vr?+Gji|m@A?;OU02m<+kEhU9^d7h@%j0QuIsSd v?EoB0vu)pOA81htA)swrjN^!pj}QC-@RTs&Fx7O-00000NkvXXu0mjf^Cx*R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd940184a9b77e097ea468d19a20b76a46eebcd GIT binary patch literal 476 zcmV<20VDp2P)h8vNl(F7E6&~AiDNH3v2A3g|reR?ni@ZVb_`1_!4$hoO!B7oh6q`C90bmUNF z5#@K`SJz_I7n9}=R)?aQRgDz}L?jAG<3T(UbifBEtE~4%YyYK1BzmbdU>CKtRp%4t zmP_$}Y-=;chdK~9a6t95%~ZHZECcV!55lwH#5XhEAK3gbRH9R6M&suN0QdtG8BV^0 SKS~w=0000Nv?#rsE9*DFGR$taS9;_ zDT0y`L_~;)AmWFOy!*>D9?MrQcJ|Dkz1Mp8TJJhcw|Qf(&)B#&*FU|wv(3-1&-E{F z?rQU^Tf6!u@0S4#*$ZX*6?=Q5oIg=T=`Oe7s<-ObbE@)WD$mR?{VFeUM5DIhl)1$>U zAKN!E?By~6j&fwNH}Xy&ni^REbiO@6ct!v~@|-yUGNYKAqZ}|<2LN);9Nyk{pvDzg z0h1eueT*x9Y%UD~@jVtB#|41r``IJg`woG2g9V}(lVYjImv^@L>&EUs2n)ChluLSC zIXN@3KqW}MDFZ?xG$Ss^3~x-{${V{NYgboi`fe-KzP)*Ya=s-Bun_0G$5u6vjAj9o z#n!;@4l!JVvYZV7d~CLFrQDXeaC~}X0f+&cO-S>>AaK>UXS@H(5!L?yjQIf>9gT#9 zPbHD_ffET?jQzL(#ZG1w47r7j+rp5Lad<#9Tfqbk$q@GC$;bkLM-EDz#7M=sW3Yf( zOwzz?m4paHX`;YM$_m))8k6wleITJT8A{0ikd)h-2PR?CE4Or}WPcRn!c)sr{e!jH zKf`cCB(zC=!V7S85g*4nRL~?k&p7| zYb5;maIwz_nHWj0KVR%=A(oN%@6VUoTIRen=m&6%>j2?~W#|P0VEy83zj|zrmJUg7pKrL~-nkvWIpBJ3Q<4vSLlcf7b>hHen~5H~06t_bw@)9CxdCuX zHm)AjcFU0fF@ z118s+Z?^l-${=drH~`2ve{^~f9FjO*9Y#5nRBXXnPb%iSZ&}UG9}$2%7@5>qe;n)v zH>&9(l%$UeoHaQpKX4x*H)$*h|2idJz*7x beXRZq0ghQrgna_f00000NkvXXu0mjf4uAL^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c50a16ba301b36a7a9776725cb14d58211f9e0c GIT binary patch literal 429 zcmV;e0aE^nP)Px$XGugsR5*>Dk-tj+2HDt6~oVILrVe{eb#g zlk9Op1pGeimnPAe)-wWBDz?My0OV6^GIz2k0M0INC|flE7Sd@{T?b&ZUKBgQr2G+( zJJ}PmwjcpsjaxjXLD{NdzcfiC=E&TiI+DBku?Vm|xg=+k%P5K$fb4NW$SP8(PS2{2Me*V>jn6dod*H~|LRa(iVLYZmLyObU;%;s3fYPJYGe%>YE5LOHH54E^9R}dR zwEhmLKG}%p4ii?1b(asofEBjR4@9TaaZMfy0Pw5Izyl7|?n*`u>lrvfXeRjo^xx_O XF3@qg1U9V800000NkvXXu0mjfZ=k$} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad11a5143004195fd2f40fe3f1a9a9aa3cf54e5 GIT binary patch literal 432 zcmV;h0Z;ykP)Px$YDq*vR5*>Dk-tkqQ5c4wlP!9YTXMy$EHo+`(jjOqXliM3YO(%-q&;Y8Y6&Fg zK%5iW`n4oMV-yid3mjE8O%3I?dm*T`1 z@N>O)2!PM8Q7V?vrXn~DgUWk@tNVEWDWQ6Ls8y;2!y(fMP%4%!W(#077MICvMgZiFbCe#70F2Dfp-n{q*uKh%#N>=@ z2}ou$Lcd&+0FA-}4#S}ISfo~|G8Ua+?I>$W{#MH&Kzw{!_D3SP6ej@d>6FkfXJsgQ zV)1m_0hEy-F2#w%FwEIcb6ddB=rEr*1?pdwWNTK`y0000Px$MoC0LR5*>DkWWhjK^TXhX$oavQA8YCLRm2U2GKVtWTlIr&Wo^@2)qbO6nN|q zU4)`j2l1lJWmwnwe-ai5$3_}M{EEWM!N};vp^Zf$=?Vn?2bE>+A zloD$#!{JZ>2sYB~cHIgtm&=UDV}8=_wFJn(04JM*#bQAeMWWGYkR%B~5UfD}Gn;4N zj35j{7ss&x7>!04V*qG2n^biTfXC-2(Z0ELI|XqZi~E-c2jG@Vq?8zANRotBt3|)x z&vag8=Oe&fr{m5F1(Z?%L{TJOzuw&S<<;&LwsTRhqm)8QiIft6ZFsN1_kE<4q-jc; zrg>%gg6VX+27@5T6`baMR4Nrpr4j&>$>i?>Yc1AVJkMh=7~~#1cZFWBmkS*w0Ps9- q?*R{{-EO->HG3z}TK~WMvH1m+8f)?(^>aG_0000u z40Z83SS`aU2=j)dq$JpYn-88dqLJvG#7vZQbtmQ;rH*~4Da8+C*1|Jx8C{B#>NItRC9M>CLma1!WoDl1Hx>C z@oL7IkYJ{R5)|{F&kXsIrZ_FaDFHHM)`qM9Uwr(JGYt@Q0mvJ;;-6p`fD}+{0CKj) z#RdRCL4Fbc#Qh}z000nVWkN?VI7KouI5tEzHZe0rLNr12FFN=D0000|#06mKR=~f6hTCPx$Gf6~2R5*>b(!Wl^P!z}UFQiFY$w&w6q`_jm5S@ZWX3vmZqD<39n8{SeuY1lo;e zP+4A#1f-~@;#gR6>hB5O>tK6Vcn`t^?M5>wS5^SHeHsgKAy8b(VO3KYIeju}DiYzF{&MO=buD;wpYZVLE-m>-U6!a0SCyAYaImOv>oGN-I+h zeTh)uu(TQ6Uq7PGDdY=Te8VJVR)3eEm8k}rBy-d4a^C3xkS}D}+E@z(V&6{&&?Fh# zb^%b<>(pu`+_A^0bp^oQ$Px$ElET{R5*>blFdp2VHAd+q+%RL(m=obff970(rD2pG6>qbYbCUE69ipE_t0f@ z3DPaJ5CR!6A&W85nJI>$$Z2CzF`uH)*}k0Tyyra!{=2Tu&izSxXd1wLewnCG1k}nE ze@oBL4~RGeT1I<*z;|7ooJw<8lnJ$R#n($a0Q6sNDO?Iz-^h;bd&3VYK)OQv;Sm7M z?jcf%*&Rfj0ouFAFqP%av}OlkrXii+@^tTIhao-N@$5yE&A&-zW^HbT#)+h RE-3&2002ovPDHLkV1nd|pnU)U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png new file mode 100644 index 0000000000000000000000000000000000000000..9aab0358c083bbbb2626a2cdc427394e52434b80 GIT binary patch literal 360 zcmV-u0hj)XP)Px$B1uF+R5*>b(!ELpK@h<4f6kA@wYbX$nLJgDSN%%?toH? zG);F0zM|jnJNK~fN+d~AcDr2w=JUA|cLJSGhsT!(09H140?rYps}yzI0HD=qZx5_& z&g<0R@10T$wH@*cR3`3$Qssw6lod<&wKx<8wW%y?`?0e4T#TApu1Y-;U zqtWQQ&ih%cwZ`{-vMfVHczgaF+Ze-aHltpz(`+`^e&z?w0b3;S=)}`)2B~hJ>Ne*XJ|;b$54;e0FdpX(y9ys ze4Jp--+ugKc=_NILsg19aRz__kXKNY;mfx_U;`w?1Q>q*e8+JA1@q?CL{&dzZ(wyn zW&h^?dZu;^5!QSRi}t@}5a8ti>v??dHbYLhF^V1x13;QpbZr=toCO$WY=6n{@6R^| z9!?g9FW>(#e0=+ofs>UHB}xHZcz_XpPqz{P000nVWkN?YMMXkEGe$KwFhxT!F*!sm SECH(k0000l zQ9JB}?gbxPwj)1GyiZPz(>gMJ=|-lWsZWmIVq6< Date: Sun, 26 Jul 2026 21:13:05 +0200 Subject: [PATCH 15/16] documentation ! yea --- changelog | 14 +- .../recipes/AssemblyMachineRecipes.java | 70 +- .../com/hbm/items/IItemControlReceiver.java | 3 +- .../hbm/items/machine/ItemFluidIDMulti.java | 2 +- .../com/hbm/items/tool/ItemRTTYPager.java | 2 +- .../com/hbm/items/tool/ItemSatInterface.java | 5 +- .../com/hbm/items/tool/ItemToolAbility.java | 2 +- .../packet/toserver/NBTItemControlPacket.java | 2 +- .../entity/effect/RenderOrbitalLaser.java | 2 + .../hbm/render/tileentity/RenderSatLink.java | 2 +- .../saveddata/satellites/SatelliteRadar.java | 2 +- .../satellites/SatelliteResonator.java | 4 +- .../machine/TileEntityMachineSatLink.java | 13 + .../hbm/manual/satellite/asteroidminer.json | 11 + .../hbm/manual/satellite/lunarminer.json | 11 + .../hbm/manual/satellite/orbitaldeathray.json | 11 + .../hbm/manual/satellite/orbitallaser.json | 11 + .../assets/hbm/manual/satellite/radarsat.json | 11 + .../hbm/manual/satellite/satellite.json | 11 + .../assets/hbm/manual/satellite/satlink.json | 11 + .../assets/hbm/manual/satellite/scansat.json | 11 + .../assets/hbm/manual/satellite/spysat.json | 11 + .../assets/hbm/manual/satellite/xenrelay.json | 11 + .../assets/hbm/models/machines/battery.obj | 740 +++++++++--------- .../hbm/models/machines/radar_screen.obj | 4 +- .../items/satellite.xenium_resonator.png | Bin 0 -> 490 bytes 26 files changed, 609 insertions(+), 368 deletions(-) create mode 100644 src/main/resources/assets/hbm/manual/satellite/asteroidminer.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/lunarminer.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/orbitallaser.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/radarsat.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/satellite.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/satlink.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/scansat.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/spysat.json create mode 100644 src/main/resources/assets/hbm/manual/satellite/xenrelay.json create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png diff --git a/changelog b/changelog index dc6b0c05c..12858495b 100644 --- a/changelog +++ b/changelog @@ -13,6 +13,8 @@ * Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand * This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again * Piles that overheat will explode, throwing flaming graphite everywhere +* Satelllite Ground Station + * Can relay RoR commands to connected satellites and satellite info back to RoR ## Changed * Updated all oil well GUI textures @@ -31,6 +33,15 @@ * Reduced the cost for the heavy stirling engine * Removed the satellite interface item for being basically completely useless * Updated the satellite ID manager texture and recipe +* Satellite ID chips are now soldered +* Overhauled all satellites + * Satellites now use one item ID with meta, most satellites now have new textures + * Satellites can now be connected to ground stations and controlled with RoR commands + * Satellites now have manual pages detailing the commands + * The recipes have been updated, they now use mostly common parts and no longer feature the satellite base and heads items which are welded together + * Legacy satellites still function and can still be launched +* The PWR's coolant levels can now be read with RoR +* Soyuz and related assembly recipes now use 25kHE/t instead of just 100 ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI @@ -40,4 +51,5 @@ * Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible * This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons * Fixed some issues regarding the new crane structure -* Fixed skeletonizer ashes floating over the floor after landing \ No newline at end of file +* Fixed skeletonizer ashes floating over the floor after landing +* Fixed backface rendering of the capacitor frames when inserted in the battery socket diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index b8d034cab..13536e3d0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -32,6 +32,7 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod; import com.hbm.items.machine.ItemPistons.EnumPistonType; +import com.hbm.items.special.ItemSatellite.EnumSatType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze; import com.hbm.items.weapon.grenade.ItemGrenadeShell.EnumGrenadeShell; @@ -942,13 +943,13 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000))); // space - this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1)) + this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 25_000).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 16), new ComparableStack(ModItems.upgrade_speed_3), new ComparableStack(ModItems.upgrade_power_3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.soyuz").setup(6_000, 100).outputItems(new ItemStack(ModItems.missile_soyuz, 1)) + this.register(new GenericRecipe("ass.soyuz").setup(6_000, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz, 1)) .inputItems(new OreDictStack(TI.shell(), 32), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.rocket_fuel, 64), @@ -956,7 +957,7 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.lander").setup(2_400, 100).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1)) + this.register(new GenericRecipe("ass.lander").setup(2_400, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1)) .inputItems(new OreDictStack(AL.shell(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.rocket_fuel, 16), @@ -964,6 +965,69 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); + this.register(new GenericRecipe("ass.spysat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SPY.ordinal())) + .inputItems(new OreDictStack(AL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), + new ComparableStack(ModItems.part_generic, 8, EnumPartType.GLASS_POLARIZED), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.scansat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SCANNER.ordinal())) + .inputItems(new OreDictStack(AL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new OreDictStack(GOLD.wireDense(), 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.radarsat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.RADAR.ordinal())) + .inputItems(new OreDictStack(GOLD.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.magnetron, 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.astrominer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO.ordinal())) + .inputItems(new OreDictStack(BIGMT.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 8), + new ComparableStack(ModItems.thruster_medium, 1), + new ComparableStack(ModItems.motor_bismuth, 4), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.lunarminer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR.ordinal())) + .inputItems(new OreDictStack(BIGMT.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 8), + new ComparableStack(ModItems.thruster_medium, 1), + new ComparableStack(ModItems.motor_bismuth, 4), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.orbitallaser").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER.ordinal())) + .inputItems(new OreDictStack(WEAPONSTEEL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_TANTALUM), + new ComparableStack(ModItems.crystal_redstone, 16), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.deathray").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY.ordinal())) + .inputItems(new OreDictStack(WEAPONSTEEL.shell(), 32), + new OreDictStack(PURG.billet(), 32), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_BISMUTH), + new OreDictStack(EMERALD.gem(), 32), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.xenrelay").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR.ordinal())) + .inputItems(new OreDictStack(GOLD.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.crystal_xen, 1), + new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED))); + + this.register(new GenericRecipe("ass.satlink").setup(100, 1_000).outputItems(new ItemStack(ModBlocks.machine_satlink)) + .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), + new OreDictStack(AL.plate(), 16), + new ComparableStack(ModItems.magnetron, 3), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.nitra").setupNamed(200, 500) .inputItems(new ComparableStack(ModItems.nitra)) .setIconToFirstIngredient() diff --git a/src/main/java/com/hbm/items/IItemControlReceiver.java b/src/main/java/com/hbm/items/IItemControlReceiver.java index f51bcec4a..c8a7c0c18 100644 --- a/src/main/java/com/hbm/items/IItemControlReceiver.java +++ b/src/main/java/com/hbm/items/IItemControlReceiver.java @@ -1,9 +1,10 @@ package com.hbm.items; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public interface IItemControlReceiver { - public void receiveControl(ItemStack stack, NBTTagCompound data); + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data); } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 5dda87f7e..f1b8c517f 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -64,7 +64,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { if(data.hasKey("primary")) { setType(stack, Fluids.fromID(data.getInteger("primary")), true); } diff --git a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java index ac3d2b018..dfea6222c 100644 --- a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java +++ b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java @@ -72,7 +72,7 @@ public class ItemRTTYPager extends Item implements IItemControlReceiver, IGUIPro } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { if(data.hasKey("chan")) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.stackTagCompound.setString(KEY_CHANNEL, data.getString(KEY_CHANNEL)); diff --git a/src/main/java/com/hbm/items/tool/ItemSatInterface.java b/src/main/java/com/hbm/items/tool/ItemSatInterface.java index e0cff0d60..4e0de1089 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatInterface.java +++ b/src/main/java/com/hbm/items/tool/ItemSatInterface.java @@ -53,7 +53,8 @@ public class ItemSatInterface extends ItemSatChip implements IGUIProvider, IItem } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { - + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { + SatelliteBase sat = SatelliteSavedData.getData(player.worldObj).getSatFromFreq(this.getFreq(stack)); + if(sat != null) sat.onCoordAction(player.worldObj, player, data.getInteger("x"), data.hasKey("y") ? data.getInteger("y") : -1, data.getInteger("z")); } } diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 6483867c2..6be56142f 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -534,7 +534,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { Configuration config = new Configuration(); config.readFromNBT(data); config.restrictTo(availableAbilities); diff --git a/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java index 7ea765550..37cf8331e 100644 --- a/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java @@ -65,7 +65,7 @@ public class NBTItemControlPacket implements IMessage { ItemStack held = p.getHeldItem(); if(held != null && held.getItem() instanceof IItemControlReceiver) { - ((IItemControlReceiver) held.getItem()).receiveControl(held, nbt); + ((IItemControlReceiver) held.getItem()).receiveControl(p, held, nbt); } } diff --git a/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java index 99e3a4f8f..bd529c1a6 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java @@ -43,6 +43,8 @@ public class RenderOrbitalLaser extends Render { tessellator.draw(); } + GL11.glColor3f(1F, 1F, 1F); + for(int i = 0; i < 8; i++) { tessellator.startDrawing(6); tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); diff --git a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java index 5698a1736..df7493046 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java @@ -21,7 +21,7 @@ public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRen GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glRotatef(180, 0F, 1F, 0F); TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile; diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java index 65199ae1b..454d2980d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java @@ -103,7 +103,7 @@ public class SatelliteRadar extends SatelliteBase { public Entity getTargetFromIndex(String cmd) { if(filteredRadarResults.size() <= 0) return null; - int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()); + int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()) - 1; Entity target = filteredRadarResults.get(index); if(target.isDead) return null; return target; diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java index d4cab13b2..d5ee8dfe4 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -16,7 +16,9 @@ public class SatelliteResonator extends SatelliteBase { world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); player.mountEntity(null); - ((EntityPlayerMP)player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch); + world.getChunkFromChunkCoords(x >> 4, z >> 4); + if(y < 0) y = world.getHeightValue(x, z); + ((EntityPlayerMP) player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch); world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java index 3fd818bca..65f802d77 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java @@ -9,6 +9,7 @@ import api.hbm.redstoneoverradio.IRORValueProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive { @@ -73,6 +74,18 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I this.freq = buf.readInt(); } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.freq = nbt.getInteger("freq"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("power", freq); + } + AxisAlignedBB bb = null; @Override diff --git a/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json b/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json new file mode 100644 index 000000000..26d9d1384 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json @@ -0,0 +1,11 @@ +{ + "name": "Asteroid Mining Ship", + "icon": ["hbm:item.satellite", 1, 3], + "trigger": [["hbm:item.satellite", 1, 3]], + "title": { + "en_US": "Asteroid Mining Ship" + }, + "content": { + "en_US": "The asteroid mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined in space. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/lunarminer.json b/src/main/resources/assets/hbm/manual/satellite/lunarminer.json new file mode 100644 index 000000000..972a57927 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/lunarminer.json @@ -0,0 +1,11 @@ +{ + "name": "Lunar Mining Ship", + "icon": ["hbm:item.satellite", 1, 4], + "trigger": [["hbm:item.satellite", 1, 4]], + "title": { + "en_US": "Lunar Mining Ship" + }, + "content": { + "en_US": "The lunar mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined on the moon. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.

Unlike the [[asteroid mining ship|Asteroid Mining Ship]], the selection of items it can harvest is much smaller, however, the large quantities of moon turf it can produce are important for [[helium-3|Helium-3]], a powerful fuel for the [[fusion reactor|Fusion Reactor]].

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json b/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json new file mode 100644 index 000000000..11ed06953 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json @@ -0,0 +1,11 @@ +{ + "name": "Orbital Death Ray", + "icon": ["hbm:item.satellite", 1, 6], + "trigger": [["hbm:item.satellite", 1, 6]], + "title": { + "en_US": "Orbital Death Ray" + }, + "content": { + "en_US": "The orbital death ray is a powerful nuclear-powered orbital weapon firing a laser that deals as much damage as a high-yield mini nuke, but without the radiation. Despite the powerful energy source, the ray takes five minutes to fully charge. Unlike the [[precision laser|Orbital Precision Laser]], it lacks the entity targeting option that would let it shoot down missiles or hit fast-moving targets.

* '§efire§r' will fire the laser at the current target position, assuming the ray has finished charging.
* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the death ray is ready to fire.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json b/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json new file mode 100644 index 000000000..a06149353 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json @@ -0,0 +1,11 @@ +{ + "name": "Orbital Precision Laser", + "icon": ["hbm:item.satellite", 1, 5], + "trigger": [["hbm:item.satellite", 1, 5]], + "title": { + "en_US": "Orbital Precision Laser" + }, + "content": { + "en_US": "The orbital precision laser is a low-power weapon that harvests sunlight to charge up a small laser beam. The beam only takes five seconds to charge up, and deals marginally more block damage than TNT. The direct hit damage for struck entities is however much higher. When combined with the targeting data of a [[radar satellite|Radar Satellite]], it can potentially also shoot down missiles.

* '§efire§r' will fire the laser at the current target position, assuming the laser has finished charging. If the satellite has been supplied with entity target data, it will use the position of that entitiy instead, assuming it its within 1,000 blocks of the target position. After one shot, the entity targeting data is used up and the satellite's target position will be used again.
* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the laser is ready to fire.
* '§esetentitytarget §eid§r' supplies an entity ID for precise targeting, which is used up after one shot. The ID can be obtained from a radar satellite.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/radarsat.json b/src/main/resources/assets/hbm/manual/satellite/radarsat.json new file mode 100644 index 000000000..4a1664e97 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/radarsat.json @@ -0,0 +1,11 @@ +{ + "name": "Radar Satellite", + "icon": ["hbm:item.satellite", 1, 2], + "trigger": [["hbm:item.satellite", 1, 2]], + "title": { + "en_US": "Radar Satellite" + }, + "content": { + "en_US": "The radar satellite can detect all radar-detectable entities like players and missiles in a 1,000 block radius around its target position. It can compile, filter, and provide a list of detected objects, along with their type and exact position.

* '§esurvey§r' scans the area and saves the results to a base list and a filtered list. These two lists are now the same, and stored within the satellite.
* '§efilter §ename§r' will overwrite the filtered list with a new list, containing only entries from the original list that match that name filter. Since the original list is retained, the filter operation can be run multiple times for multiple types without needing a survey operation.
* '§ecount§r' writes the amount of entries on the filterd list to RX.
* '§egettargetid §eindex§r' retrieves the unique entity ID from that entry on the list. This ID can be used for precise entity targeting by other satellites.
* '§egetposition §eindex§r' retrieves the exact x/y/z position of the specified entry. The coordinates are separated by semicolons.
* '§egetname §eindex§r' retrieves the class name of that entry, this name is what's used for filtering.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/satellite.json b/src/main/resources/assets/hbm/manual/satellite/satellite.json new file mode 100644 index 000000000..4aa613831 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/satellite.json @@ -0,0 +1,11 @@ +{ + "name": "Satellite", + "icon": ["hbm:item.satellite"], + "trigger": [], + "title": { + "en_US": "Satellite" + }, + "content": { + "en_US": "Satellites can be launched into earth orbit using a [[Soyuz]] rocket. Satellites communicate with items and blocks on earth using frequencies, so in order to actually use one, it's necessary to set a random frequency in the satellite ID manager, and then copying that ID to another item, for example a satellite chip.

Some satellites can perform minor tasks when linked with certain items, like the [[depth scanning satellite|Depth Scanning Satellite]] enabling the neutrino lens, or the [[xenium resonator satellite|Xenium Resonator Satellite]] connected to a satellite laser designator allowing for short range line of sight teleportation. Satellites however are the most powerful when paired with [[Redstone over Radio]] by linking them to a [[ground station|Satellite Ground Station]].

By using a [[RoR reader|Redstone-over-Radio Reader]], ground stations can receive the RX value, which is received from the connected satellite. Each satellite can only provide one RX value at a time, and the value persists until it changes. The contents of RX depend on what function the satellite has performed prior.

By using a ground station's TX command, commands can be relayed to the connected satellite. Most commands vary between satellite types, however all satellites have a ground target, i.e. the spot on the surface they are aiming at.

The common target commands are as follows:
* '§esettarget §ex §ez§r' (Example RoR: '§6tx!settarget §6200 §6300§r')
* '§egettarget§r' (Example RoR: '§6tx!gettarget§r'), writes the current target X and Z separated by semicolon to the ground station's RX
* '§egettargetx§r'
* '§egettargetz§r'

See also:
* [[Spy Satellite]]
* [[Depth Scanning Satellite]]
* [[Radar Satellite]]
* [[Asteroid Mining Ship]]
* [[Lunar Mining Ship]]
* [[Orbital Precision Laser]]
* [[Orbital Death Ray]]
* [[Xenium Resonator Satellite]]
* [[Relay Satellite]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/satlink.json b/src/main/resources/assets/hbm/manual/satellite/satlink.json new file mode 100644 index 000000000..88dd83963 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/satlink.json @@ -0,0 +1,11 @@ +{ + "name": "Satellite Ground Station", + "icon": ["hbm:tile.machine_satlink"], + "trigger": [["hbm:tile.machine_satlink"]], + "title": { + "en_US": "Satellite Ground Station" + }, + "content": { + "en_US": "The satellite ground station is an advanced [[Redstone over Radio]] component that allows indirect connection of traditional RoR components and [[satellites|Satellite]]. It doesn't send or receive RoR signals directly, instead, it needs an external [[receiver|Redstone-over-Radio Controller]] or [[transmitter|Redstone-over-Radio Reader]] to interface with RoR.

The ground station can only connect to one satellite at a time. The frequency can be set either by using a configured satellite ID chip on the ground station, or via RoR command.

The two most important RoR functions the ground station has are RX and TX.

RX is a readable value that is relayed from the satellite. The contents of that value depend on the satellite, and is usually set in response to a command. For example, on the [[orbital precision laser|Orbital Precision Laser]], the function 'canfire' will set the RX value to either 'TRUE' or 'FALSE' depending on whether the laser is ready to fire.

TX is a function that allows commands to be relayed from the ground station to the satellite to control it or to request data. For example, the RoR command 'tx!settarget 200 300' will relay the command 'settarget 200 300' to the connected satellite. Do note that satellite commands do not use parameter separators like RoR commands do, since the satellite command is technically just one big RoR parameter.

In conjunction with the [[AUTOCAL]], the ground station becomes incredibly powerful, as it allows for automated targeting of satellites, data processing and more. For example, a [[radar satellite|Radar Satellite]] could survey the airspace for airborne missiles, relay that data to the AUTOCAL which then sends a signal to a precision laser which intercepts the missile." + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/scansat.json b/src/main/resources/assets/hbm/manual/satellite/scansat.json new file mode 100644 index 000000000..b1b83b58d --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/scansat.json @@ -0,0 +1,11 @@ +{ + "name": "Depth Scanning Satellite", + "icon": ["hbm:item.satellite", 1, 1], + "trigger": [["hbm:item.satellite", 1, 1]], + "title": { + "en_US": "Depth Scanning Satellite" + }, + "content": { + "en_US": "The depth scanning satellite is required for the neutrino lens to work. It does not yet have any special interactions with the ground station.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/spysat.json b/src/main/resources/assets/hbm/manual/satellite/spysat.json new file mode 100644 index 000000000..c886755bc --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/spysat.json @@ -0,0 +1,11 @@ +{ + "name": "Spy Satellite", + "icon": ["hbm:item.satellite", 1, 0], + "trigger": [["hbm:item.satellite", 1, 0]], + "title": { + "en_US": "Spy Satellite" + }, + "content": { + "en_US": "The spy satellite allows remote viewing of earth's surface. Due to RoR pixel displays not existing as of now, surface mapping functionality does not yet work. However, they can be used in detecting loaded chunks and spotting players in a small radius.

* '§etargetloaded§r' writes 'TRUE' or 'FALSE' to RX depending on if the chunk that the satellite is pointed at is loaded or not.
* '§espotplayers§r' detects surface players in a 250 block radius and writes all names separated by semicolon to RX.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/xenrelay.json b/src/main/resources/assets/hbm/manual/satellite/xenrelay.json new file mode 100644 index 000000000..624506f12 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/xenrelay.json @@ -0,0 +1,11 @@ +{ + "name": "Xenium Resonator Satellite", + "icon": ["hbm:item.satellite", 1, 7], + "trigger": [["hbm:item.satellite", 1, 7]], + "title": { + "en_US": "Xenium Resonator Satellite" + }, + "content": { + "en_US": "The xenium resonator allows teleportation within the same dimension. It can be controlled either with a satellite designator or the satellite laser designator. When using the satellite designator, the Y value can be omitted, which will default it to surface level.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/models/machines/battery.obj b/src/main/resources/assets/hbm/models/machines/battery.obj index 850bcf5b7..5a3c21f9a 100644 --- a/src/main/resources/assets/hbm/models/machines/battery.obj +++ b/src/main/resources/assets/hbm/models/machines/battery.obj @@ -152,6 +152,14 @@ v -0.750000 1.750000 -0.750000 v -0.750000 1.750000 0.750000 v 0.750000 1.750000 0.750000 v 0.750000 1.750000 -0.750000 +v -0.875000 0.125000 0.875000 +v 0.875000 0.125000 0.875000 +v -0.875000 0.125000 -0.875000 +v 0.875000 0.125000 -0.875000 +v -0.875000 1.875000 -0.875000 +v -0.875000 1.875000 0.875000 +v 0.875000 1.875000 0.875000 +v 0.875000 1.875000 -0.875000 vt 0.269231 0.000000 vt 0.000000 0.333333 vt 0.000000 0.000000 @@ -180,10 +188,26 @@ vt 1.000000 0.285714 vt 0.769231 0.571429 vt 1.000000 0.285714 vt 0.769231 0.571429 +vt 0.000000 0.333333 +vt 0.269231 0.000000 +vt 0.000000 0.000000 +vt 0.269231 1.000000 +vt 0.000000 0.666667 +vt 0.000000 1.000000 +vt -0.000000 0.666667 +vt 0.269231 0.333333 +vt -0.000000 0.333333 +vt 0.269231 0.666667 +vt 0.538462 0.333333 +vt 0.269231 0.333333 +vt 0.269231 0.666667 +vt 0.538462 0.333333 vt 0.538462 0.666667 vt 0.538462 0.666667 vt 1.000000 0.571429 vt 1.000000 0.571429 +vt 0.538462 0.666667 +vt 0.538462 0.666667 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 vn -1.0000 0.0000 0.0000 @@ -203,18 +227,30 @@ f 44/77/11 47/74/11 42/72/11 f 41/78/8 45/79/8 43/80/8 f 43/81/9 48/82/9 44/77/9 f 42/83/10 46/84/10 41/78/10 +f 50/85/7 51/86/7 49/87/7 +f 53/88/6 55/89/6 54/90/6 +f 53/91/11 49/92/11 51/93/11 +f 56/94/10 51/95/10 52/96/10 +f 54/97/9 50/98/9 49/92/9 +f 55/89/8 52/96/8 50/85/8 f 35/57/6 36/68/6 34/58/6 f 39/60/7 40/67/7 37/61/7 f 33/63/8 38/70/8 37/64/8 -f 35/66/9 37/85/9 40/67/9 -f 34/69/10 39/86/10 38/70/10 +f 35/66/9 37/99/9 40/67/9 +f 34/69/10 39/100/10 38/70/10 f 36/68/11 40/67/11 39/60/11 f 43/71/6 44/77/6 42/72/6 f 47/74/7 48/82/7 45/75/7 f 44/77/11 48/82/11 47/74/11 f 41/78/8 46/84/8 45/79/8 -f 43/81/9 45/87/9 48/82/9 -f 42/83/10 47/88/10 46/84/10 +f 43/81/9 45/101/9 48/82/9 +f 42/83/10 47/102/10 46/84/10 +f 50/85/7 52/96/7 51/86/7 +f 53/88/6 56/94/6 55/89/6 +f 53/91/11 54/97/11 49/92/11 +f 56/94/10 53/103/10 51/95/10 +f 54/97/9 55/104/9 50/98/9 +f 55/89/8 56/94/8 52/96/8 o Battery v 0.687500 1.875000 -0.875000 v 0.875000 1.875000 -0.687500 @@ -483,158 +519,158 @@ vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 0.0000 s off -f 56/89/12 62/90/12 70/91/12 -f 83/92/13 74/93/13 51/94/13 -f 68/95/14 51/96/14 74/97/14 -f 68/98/15 64/99/15 58/100/15 -f 72/101/15 63/102/15 74/103/15 -f 58/104/16 60/105/16 65/106/16 -f 58/104/13 56/89/13 55/107/13 -f 60/108/14 66/109/14 65/110/14 -f 70/111/17 68/112/17 67/113/17 -f 62/114/18 64/99/18 63/115/18 -f 64/99/19 56/89/19 57/116/19 -f 75/117/18 73/118/18 78/119/18 -f 77/120/20 71/121/20 76/122/20 -f 63/123/13 54/124/13 62/125/13 -f 75/117/15 84/126/15 92/127/15 -f 62/128/12 50/129/12 77/130/12 -f 90/131/21 86/132/21 81/133/21 -f 78/134/17 76/122/17 75/135/17 -f 49/136/18 72/101/18 71/121/18 -f 72/101/19 54/124/19 53/137/19 -f 88/138/14 52/139/14 92/140/14 -f 59/141/13 80/142/13 66/143/13 -f 80/142/16 82/144/16 85/145/16 -f 83/146/12 78/119/12 95/147/12 -f 82/148/14 86/132/14 85/149/14 -f 90/131/17 88/150/17 87/151/17 -f 67/152/18 83/153/18 70/154/18 -f 85/155/15 87/156/15 84/157/15 -f 96/158/21 92/140/21 52/139/21 -f 95/159/20 91/160/20 94/161/20 -f 89/162/12 81/163/12 79/164/12 -f 96/158/17 94/161/17 93/165/17 -f 108/166/20 104/167/20 105/168/20 -f 100/169/12 104/167/12 102/170/12 -f 108/171/15 106/172/15 110/173/15 -f 112/174/21 102/170/21 107/175/21 -f 106/172/19 100/169/19 109/176/19 -f 106/172/18 104/177/18 103/178/18 -f 102/179/17 108/166/17 107/180/17 -f 112/174/14 98/181/14 97/182/14 -f 100/183/13 110/184/13 109/185/13 -f 110/184/16 98/186/16 111/187/16 -f 124/188/20 120/189/20 121/190/20 -f 116/191/12 120/189/12 118/192/12 -f 124/193/15 122/194/15 126/195/15 -f 128/196/21 118/192/21 123/197/21 -f 122/194/19 116/191/19 125/198/19 -f 122/194/18 120/199/18 119/200/18 -f 118/201/17 124/188/17 123/202/17 -f 128/196/14 114/203/14 113/204/14 -f 116/205/13 126/206/13 125/207/13 -f 126/206/16 114/208/16 127/209/16 -f 70/91/12 59/210/12 60/211/12 -f 60/211/12 55/212/12 56/89/12 -f 56/89/12 61/213/12 62/90/12 -f 62/90/12 69/214/12 70/91/12 -f 70/91/12 60/211/12 56/89/12 -f 83/92/13 84/215/13 74/93/13 -f 68/95/14 69/216/14 51/96/14 -f 58/100/15 65/217/15 66/218/15 -f 66/218/15 67/219/15 68/98/15 -f 68/98/15 63/220/15 64/99/15 -f 64/99/15 57/116/15 58/100/15 -f 58/100/15 66/218/15 68/98/15 -f 74/103/15 75/221/15 76/222/15 -f 76/222/15 71/223/15 72/101/15 -f 72/101/15 53/137/15 63/102/15 -f 63/102/15 68/224/15 74/103/15 -f 74/103/15 76/222/15 72/101/15 -f 58/104/16 55/107/16 60/105/16 -f 58/104/13 57/116/13 56/89/13 -f 60/108/14 59/225/14 66/109/14 -f 70/111/17 69/226/17 68/112/17 -f 62/114/18 61/213/18 64/99/18 -f 64/99/19 61/213/19 56/89/19 -f 75/117/18 91/160/18 73/118/18 -f 77/120/20 49/136/20 71/121/20 -f 63/123/13 53/137/13 54/124/13 -f 92/127/15 93/227/15 94/228/15 -f 94/228/15 91/229/15 75/117/15 -f 75/117/15 74/93/15 84/126/15 -f 84/126/15 88/230/15 92/127/15 -f 92/127/15 94/228/15 75/117/15 -f 77/130/12 78/231/12 51/232/12 -f 51/232/12 69/233/12 62/128/12 -f 62/128/12 54/124/12 50/129/12 -f 50/129/12 49/234/12 77/130/12 -f 77/130/12 51/232/12 62/128/12 -f 90/131/21 87/151/21 86/132/21 -f 78/134/17 77/120/17 76/122/17 -f 49/136/18 50/129/18 72/101/18 -f 72/101/19 50/129/19 54/124/19 -f 88/138/14 89/235/14 52/139/14 -f 59/141/13 79/236/13 80/142/13 -f 80/142/16 79/236/16 82/144/16 -f 95/147/12 96/237/12 52/238/12 -f 52/238/12 89/239/12 83/146/12 -f 83/146/12 51/94/12 78/119/12 -f 78/119/12 73/240/12 95/147/12 -f 95/147/12 52/238/12 83/146/12 -f 82/148/14 81/133/14 86/132/14 -f 90/131/17 89/241/17 88/150/17 -f 67/152/18 84/242/18 83/153/18 -f 84/157/15 67/152/15 66/143/15 -f 66/143/15 80/243/15 85/155/15 -f 85/155/15 86/244/15 87/156/15 -f 87/156/15 88/245/15 84/157/15 -f 84/157/15 66/143/15 85/155/15 -f 96/158/21 93/165/21 92/140/21 -f 95/159/20 73/118/20 91/160/20 -f 79/164/12 59/141/12 70/154/12 -f 70/154/12 83/246/12 89/162/12 -f 89/162/12 90/247/12 81/163/12 -f 81/163/12 82/248/12 79/164/12 -f 79/164/12 70/154/12 89/162/12 -f 96/158/17 95/159/17 94/161/17 -f 108/166/20 101/249/20 104/167/20 -f 102/170/12 97/182/12 98/186/12 -f 98/186/12 99/250/12 100/169/12 -f 100/169/12 103/178/12 104/167/12 -f 104/167/12 101/249/12 102/170/12 -f 102/170/12 98/186/12 100/169/12 -f 110/173/15 111/251/15 112/252/15 -f 112/252/15 107/253/15 108/171/15 -f 108/171/15 105/254/15 106/172/15 -f 106/172/15 109/176/15 110/173/15 -f 110/173/15 112/252/15 108/171/15 -f 112/174/21 97/182/21 102/170/21 -f 106/172/19 103/178/19 100/169/19 -f 106/172/18 105/255/18 104/177/18 -f 102/179/17 101/249/17 108/166/17 -f 112/174/14 111/256/14 98/181/14 -f 100/183/13 99/250/13 110/184/13 -f 110/184/16 99/250/16 98/186/16 -f 124/188/20 117/257/20 120/189/20 -f 118/192/12 113/204/12 114/208/12 -f 114/208/12 115/258/12 116/191/12 -f 116/191/12 119/200/12 120/189/12 -f 120/189/12 117/257/12 118/192/12 -f 118/192/12 114/208/12 116/191/12 -f 126/195/15 127/259/15 128/260/15 -f 128/260/15 123/261/15 124/193/15 -f 124/193/15 121/262/15 122/194/15 -f 122/194/15 125/198/15 126/195/15 -f 126/195/15 128/260/15 124/193/15 -f 128/196/21 113/204/21 118/192/21 -f 122/194/19 119/200/19 116/191/19 -f 122/194/18 121/263/18 120/199/18 -f 118/201/17 117/257/17 124/188/17 -f 128/196/14 127/264/14 114/203/14 -f 116/205/13 115/258/13 126/206/13 -f 126/206/16 115/258/16 114/208/16 +f 64/105/12 70/106/12 78/107/12 +f 91/108/13 82/109/13 59/110/13 +f 76/111/14 59/112/14 82/113/14 +f 76/114/15 72/115/15 66/116/15 +f 80/117/15 71/118/15 82/119/15 +f 66/120/16 68/121/16 73/122/16 +f 66/120/13 64/105/13 63/123/13 +f 68/124/14 74/125/14 73/126/14 +f 78/127/17 76/128/17 75/129/17 +f 70/130/18 72/115/18 71/131/18 +f 72/115/19 64/105/19 65/132/19 +f 83/133/18 81/134/18 86/135/18 +f 85/136/20 79/137/20 84/138/20 +f 71/139/13 62/140/13 70/141/13 +f 83/133/15 92/142/15 100/143/15 +f 70/144/12 58/145/12 85/146/12 +f 98/147/21 94/148/21 89/149/21 +f 86/150/17 84/138/17 83/151/17 +f 57/152/18 80/117/18 79/137/18 +f 80/117/19 62/140/19 61/153/19 +f 96/154/14 60/155/14 100/156/14 +f 67/157/13 88/158/13 74/159/13 +f 88/158/16 90/160/16 93/161/16 +f 91/162/12 86/135/12 103/163/12 +f 90/164/14 94/148/14 93/165/14 +f 98/147/17 96/166/17 95/167/17 +f 75/168/18 91/169/18 78/170/18 +f 93/171/15 95/172/15 92/173/15 +f 104/174/21 100/156/21 60/155/21 +f 103/175/20 99/176/20 102/177/20 +f 97/178/12 89/179/12 87/180/12 +f 104/174/17 102/177/17 101/181/17 +f 116/182/20 112/183/20 113/184/20 +f 108/185/12 112/183/12 110/186/12 +f 116/187/15 114/188/15 118/189/15 +f 120/190/21 110/186/21 115/191/21 +f 114/188/19 108/185/19 117/192/19 +f 114/188/18 112/193/18 111/194/18 +f 110/195/17 116/182/17 115/196/17 +f 120/190/14 106/197/14 105/198/14 +f 108/199/13 118/200/13 117/201/13 +f 118/200/16 106/202/16 119/203/16 +f 132/204/20 128/205/20 129/206/20 +f 124/207/12 128/205/12 126/208/12 +f 132/209/15 130/210/15 134/211/15 +f 136/212/21 126/208/21 131/213/21 +f 130/210/19 124/207/19 133/214/19 +f 130/210/18 128/215/18 127/216/18 +f 126/217/17 132/204/17 131/218/17 +f 136/212/14 122/219/14 121/220/14 +f 124/221/13 134/222/13 133/223/13 +f 134/222/16 122/224/16 135/225/16 +f 78/107/12 67/226/12 68/227/12 +f 68/227/12 63/228/12 64/105/12 +f 64/105/12 69/229/12 70/106/12 +f 70/106/12 77/230/12 78/107/12 +f 78/107/12 68/227/12 64/105/12 +f 91/108/13 92/231/13 82/109/13 +f 76/111/14 77/232/14 59/112/14 +f 66/116/15 73/233/15 74/234/15 +f 74/234/15 75/235/15 76/114/15 +f 76/114/15 71/236/15 72/115/15 +f 72/115/15 65/132/15 66/116/15 +f 66/116/15 74/234/15 76/114/15 +f 82/119/15 83/237/15 84/238/15 +f 84/238/15 79/239/15 80/117/15 +f 80/117/15 61/153/15 71/118/15 +f 71/118/15 76/240/15 82/119/15 +f 82/119/15 84/238/15 80/117/15 +f 66/120/16 63/123/16 68/121/16 +f 66/120/13 65/132/13 64/105/13 +f 68/124/14 67/241/14 74/125/14 +f 78/127/17 77/242/17 76/128/17 +f 70/130/18 69/229/18 72/115/18 +f 72/115/19 69/229/19 64/105/19 +f 83/133/18 99/176/18 81/134/18 +f 85/136/20 57/152/20 79/137/20 +f 71/139/13 61/153/13 62/140/13 +f 100/143/15 101/243/15 102/244/15 +f 102/244/15 99/245/15 83/133/15 +f 83/133/15 82/109/15 92/142/15 +f 92/142/15 96/246/15 100/143/15 +f 100/143/15 102/244/15 83/133/15 +f 85/146/12 86/247/12 59/248/12 +f 59/248/12 77/249/12 70/144/12 +f 70/144/12 62/140/12 58/145/12 +f 58/145/12 57/250/12 85/146/12 +f 85/146/12 59/248/12 70/144/12 +f 98/147/21 95/167/21 94/148/21 +f 86/150/17 85/136/17 84/138/17 +f 57/152/18 58/145/18 80/117/18 +f 80/117/19 58/145/19 62/140/19 +f 96/154/14 97/251/14 60/155/14 +f 67/157/13 87/252/13 88/158/13 +f 88/158/16 87/252/16 90/160/16 +f 103/163/12 104/253/12 60/254/12 +f 60/254/12 97/255/12 91/162/12 +f 91/162/12 59/110/12 86/135/12 +f 86/135/12 81/256/12 103/163/12 +f 103/163/12 60/254/12 91/162/12 +f 90/164/14 89/149/14 94/148/14 +f 98/147/17 97/257/17 96/166/17 +f 75/168/18 92/258/18 91/169/18 +f 92/173/15 75/168/15 74/159/15 +f 74/159/15 88/259/15 93/171/15 +f 93/171/15 94/260/15 95/172/15 +f 95/172/15 96/261/15 92/173/15 +f 92/173/15 74/159/15 93/171/15 +f 104/174/21 101/181/21 100/156/21 +f 103/175/20 81/134/20 99/176/20 +f 87/180/12 67/157/12 78/170/12 +f 78/170/12 91/262/12 97/178/12 +f 97/178/12 98/263/12 89/179/12 +f 89/179/12 90/264/12 87/180/12 +f 87/180/12 78/170/12 97/178/12 +f 104/174/17 103/175/17 102/177/17 +f 116/182/20 109/265/20 112/183/20 +f 110/186/12 105/198/12 106/202/12 +f 106/202/12 107/266/12 108/185/12 +f 108/185/12 111/194/12 112/183/12 +f 112/183/12 109/265/12 110/186/12 +f 110/186/12 106/202/12 108/185/12 +f 118/189/15 119/267/15 120/268/15 +f 120/268/15 115/269/15 116/187/15 +f 116/187/15 113/270/15 114/188/15 +f 114/188/15 117/192/15 118/189/15 +f 118/189/15 120/268/15 116/187/15 +f 120/190/21 105/198/21 110/186/21 +f 114/188/19 111/194/19 108/185/19 +f 114/188/18 113/271/18 112/193/18 +f 110/195/17 109/265/17 116/182/17 +f 120/190/14 119/272/14 106/197/14 +f 108/199/13 107/266/13 118/200/13 +f 118/200/16 107/266/16 106/202/16 +f 132/204/20 125/273/20 128/205/20 +f 126/208/12 121/220/12 122/224/12 +f 122/224/12 123/274/12 124/207/12 +f 124/207/12 127/216/12 128/205/12 +f 128/205/12 125/273/12 126/208/12 +f 126/208/12 122/224/12 124/207/12 +f 134/211/15 135/275/15 136/276/15 +f 136/276/15 131/277/15 132/209/15 +f 132/209/15 129/278/15 130/210/15 +f 130/210/15 133/214/15 134/211/15 +f 134/211/15 136/276/15 132/209/15 +f 136/212/21 121/220/21 126/208/21 +f 130/210/19 127/216/19 124/207/19 +f 130/210/18 129/279/18 128/215/18 +f 126/217/17 125/273/17 132/204/17 +f 136/212/14 135/280/14 122/219/14 +f 124/221/13 123/274/13 134/222/13 +f 134/222/16 123/274/16 122/224/16 o Socket v -1.000000 0.000000 1.000000 v 1.000000 0.000000 1.000000 @@ -1037,199 +1073,199 @@ vn -0.7099 0.7043 0.0000 vn 0.7099 -0.7043 0.0000 vn -0.7071 -0.7071 0.0000 s off -f 131/265/22 130/266/22 129/267/22 -f 136/268/23 151/269/23 134/270/23 -f 131/265/24 140/271/24 132/272/24 -f 130/266/25 138/273/25 129/267/25 -f 132/272/26 139/274/26 130/266/26 -f 129/267/23 137/275/23 131/265/23 -f 135/276/27 138/277/27 133/278/27 -f 133/278/27 139/274/27 134/279/27 -f 134/279/27 140/280/27 136/281/27 -f 136/281/27 137/282/27 135/276/27 -f 142/283/26 143/284/26 141/285/26 -f 145/286/23 147/287/23 146/288/23 -f 151/269/27 149/289/27 150/290/27 -f 143/284/27 146/288/27 141/285/27 -f 144/291/24 145/286/24 143/284/24 -f 141/285/25 147/292/25 142/293/25 -f 133/294/26 149/289/26 135/295/26 -f 135/296/25 152/297/25 136/298/25 -f 134/299/24 150/290/24 133/300/24 -f 154/301/26 155/302/26 153/303/26 -f 157/304/23 159/305/23 158/306/23 -f 155/302/27 158/306/27 153/303/27 -f 156/307/24 157/304/24 155/302/24 -f 153/303/25 159/308/25 154/309/25 -f 162/310/23 163/311/23 161/312/23 -f 165/313/26 167/314/26 166/315/26 -f 163/311/27 166/315/27 161/312/27 -f 164/316/25 165/313/25 163/311/25 -f 161/312/24 167/317/24 162/318/24 -f 170/319/23 171/320/23 169/321/23 -f 173/322/26 175/323/26 174/324/26 -f 171/320/27 174/324/27 169/321/27 -f 172/325/25 173/322/25 171/320/25 -f 169/321/24 175/326/24 170/327/24 -f 178/328/24 179/329/24 177/330/24 -f 181/331/25 183/332/25 182/333/25 -f 179/329/27 182/333/27 177/330/27 -f 180/334/23 181/331/23 179/329/23 -f 177/330/26 183/335/26 178/336/26 -f 186/337/24 187/338/24 185/339/24 -f 189/340/25 191/341/25 190/342/25 -f 187/338/27 190/342/27 185/339/27 -f 188/343/23 189/340/23 187/338/23 -f 185/339/26 191/344/26 186/345/26 -f 194/346/25 195/347/25 193/348/25 -f 197/349/24 199/350/24 198/351/24 -f 195/347/27 198/351/27 193/348/27 -f 196/352/26 197/349/26 195/347/26 -f 193/348/23 199/353/23 194/354/23 -f 202/355/25 203/356/25 201/357/25 -f 205/358/24 207/359/24 206/360/24 -f 203/356/27 206/360/27 201/357/27 -f 204/361/26 205/358/26 203/356/26 -f 201/357/23 207/362/23 202/363/23 -f 210/364/24 225/365/24 209/366/24 -f 224/367/27 222/368/27 223/369/27 -f 220/370/27 218/371/27 219/372/27 -f 216/373/24 221/374/24 217/375/24 -f 215/376/25 219/377/25 214/378/25 -f 217/375/26 220/370/26 215/376/26 -f 214/379/23 218/380/23 216/373/23 -f 211/381/25 223/382/25 212/383/25 -f 209/366/26 224/367/26 211/381/26 -f 212/384/23 222/385/23 210/364/23 -f 227/386/24 241/387/24 226/388/24 -f 240/389/27 238/390/27 239/391/27 -f 236/392/27 234/393/27 235/394/27 -f 232/395/24 237/396/24 233/397/24 -f 231/398/25 235/399/25 230/400/25 -f 233/397/26 236/392/26 231/398/26 -f 230/401/23 234/402/23 232/395/23 -f 228/403/25 239/404/25 229/405/25 -f 226/388/26 240/389/26 228/403/26 -f 229/406/23 238/407/23 227/386/23 -f 242/408/27 243/409/27 213/410/27 -f 242/408/28 246/411/28 244/412/28 -f 245/413/26 248/414/26 246/411/26 -f 243/409/29 249/415/29 213/410/29 -f 250/416/23 251/417/23 249/415/23 -f 254/418/27 255/419/27 253/420/27 -f 254/418/28 258/421/28 256/422/28 -f 257/423/26 260/424/26 258/421/26 -f 255/419/29 261/425/29 253/420/29 -f 262/426/23 263/427/23 261/425/23 -f 217/375/22 214/428/22 216/429/22 -f 233/397/22 230/430/22 232/431/22 -f 228/403/22 227/432/22 226/388/22 -f 211/381/22 210/433/22 209/366/22 -f 266/434/26 267/435/26 268/436/26 -f 268/436/30 274/437/30 276/438/30 -f 269/439/23 272/440/23 271/441/23 -f 271/441/31 275/442/31 273/443/31 -f 274/437/22 275/442/22 276/438/22 -f 278/444/26 279/445/26 280/446/26 -f 280/446/30 286/447/30 288/448/30 -f 281/449/23 284/450/23 283/451/23 -f 283/451/31 287/452/31 285/453/31 -f 286/447/22 287/452/22 288/448/22 -f 131/265/22 132/272/22 130/266/22 -f 136/268/23 152/297/23 151/269/23 -f 131/265/24 137/454/24 140/271/24 -f 130/266/25 139/455/25 138/273/25 -f 132/272/26 140/280/26 139/274/26 -f 129/267/23 138/456/23 137/275/23 -f 135/276/27 137/282/27 138/277/27 -f 133/278/27 138/277/27 139/274/27 -f 134/279/27 139/274/27 140/280/27 -f 136/281/27 140/280/27 137/282/27 -f 142/283/26 144/457/26 143/284/26 -f 145/286/23 148/458/23 147/287/23 -f 151/269/27 152/297/27 149/289/27 -f 143/284/27 145/286/27 146/288/27 -f 144/291/24 148/459/24 145/286/24 -f 141/285/25 146/288/25 147/292/25 -f 133/294/26 150/290/26 149/289/26 -f 135/296/25 149/289/25 152/297/25 -f 134/299/24 151/269/24 150/290/24 -f 154/301/26 156/460/26 155/302/26 -f 157/304/23 160/461/23 159/305/23 -f 155/302/27 157/304/27 158/306/27 -f 156/307/24 160/462/24 157/304/24 -f 153/303/25 158/306/25 159/308/25 -f 162/310/23 164/463/23 163/311/23 -f 165/313/26 168/464/26 167/314/26 -f 163/311/27 165/313/27 166/315/27 -f 164/316/25 168/465/25 165/313/25 -f 161/312/24 166/315/24 167/317/24 -f 170/319/23 172/466/23 171/320/23 -f 173/322/26 176/467/26 175/323/26 -f 171/320/27 173/322/27 174/324/27 -f 172/325/25 176/468/25 173/322/25 -f 169/321/24 174/324/24 175/326/24 -f 178/328/24 180/469/24 179/329/24 -f 181/331/25 184/470/25 183/332/25 -f 179/329/27 181/331/27 182/333/27 -f 180/334/23 184/471/23 181/331/23 -f 177/330/26 182/333/26 183/335/26 -f 186/337/24 188/472/24 187/338/24 -f 189/340/25 192/473/25 191/341/25 -f 187/338/27 189/340/27 190/342/27 -f 188/343/23 192/474/23 189/340/23 -f 185/339/26 190/342/26 191/344/26 -f 194/346/25 196/475/25 195/347/25 -f 197/349/24 200/476/24 199/350/24 -f 195/347/27 197/349/27 198/351/27 -f 196/352/26 200/477/26 197/349/26 -f 193/348/23 198/351/23 199/353/23 -f 202/355/25 204/478/25 203/356/25 -f 205/358/24 208/479/24 207/359/24 -f 203/356/27 205/358/27 206/360/27 -f 204/361/26 208/480/26 205/358/26 -f 201/357/23 206/360/23 207/362/23 -f 210/364/24 222/385/24 225/365/24 -f 224/367/27 225/365/27 222/368/27 -f 220/370/27 221/374/27 218/371/27 -f 216/373/24 218/380/24 221/374/24 -f 215/376/25 220/370/25 219/377/25 -f 217/375/26 221/374/26 220/370/26 -f 214/379/23 219/481/23 218/380/23 -f 211/381/25 224/367/25 223/382/25 -f 209/366/26 225/365/26 224/367/26 -f 212/384/23 223/482/23 222/385/23 -f 227/386/24 238/407/24 241/387/24 -f 240/389/27 241/387/27 238/390/27 -f 236/392/27 237/396/27 234/393/27 -f 232/395/24 234/402/24 237/396/24 -f 231/398/25 236/392/25 235/399/25 -f 233/397/26 237/396/26 236/392/26 -f 230/401/23 235/483/23 234/402/23 -f 228/403/25 240/389/25 239/404/25 -f 226/388/26 241/387/26 240/389/26 -f 229/406/23 239/484/23 238/407/23 -f 242/408/27 244/412/27 243/409/27 -f 242/408/28 245/413/28 246/411/28 -f 245/413/26 247/485/26 248/414/26 -f 243/409/29 250/416/29 249/415/29 -f 250/416/23 252/486/23 251/417/23 -f 254/418/27 256/422/27 255/419/27 -f 254/418/28 257/423/28 258/421/28 -f 257/423/26 259/487/26 260/424/26 -f 255/419/29 262/426/29 261/425/29 -f 262/426/23 264/488/23 263/427/23 -f 217/375/22 215/376/22 214/428/22 -f 233/397/22 231/398/22 230/430/22 -f 228/403/22 229/489/22 227/432/22 -f 211/381/22 212/490/22 210/433/22 -f 266/434/26 265/491/26 267/435/26 -f 268/436/30 267/435/30 274/437/30 -f 269/439/23 270/492/23 272/440/23 -f 271/441/31 272/440/31 275/442/31 -f 274/437/22 273/443/22 275/442/22 -f 278/444/26 277/493/26 279/445/26 -f 280/446/30 279/445/30 286/447/30 -f 281/449/23 282/494/23 284/450/23 -f 283/451/31 284/450/31 287/452/31 -f 286/447/22 285/453/22 287/452/22 +f 139/281/22 138/282/22 137/283/22 +f 144/284/23 159/285/23 142/286/23 +f 139/281/24 148/287/24 140/288/24 +f 138/282/25 146/289/25 137/283/25 +f 140/288/26 147/290/26 138/282/26 +f 137/283/23 145/291/23 139/281/23 +f 143/292/27 146/293/27 141/294/27 +f 141/294/27 147/290/27 142/295/27 +f 142/295/27 148/296/27 144/297/27 +f 144/297/27 145/298/27 143/292/27 +f 150/299/26 151/300/26 149/301/26 +f 153/302/23 155/303/23 154/304/23 +f 159/285/27 157/305/27 158/306/27 +f 151/300/27 154/304/27 149/301/27 +f 152/307/24 153/302/24 151/300/24 +f 149/301/25 155/308/25 150/309/25 +f 141/310/26 157/305/26 143/311/26 +f 143/312/25 160/313/25 144/314/25 +f 142/315/24 158/306/24 141/316/24 +f 162/317/26 163/318/26 161/319/26 +f 165/320/23 167/321/23 166/322/23 +f 163/318/27 166/322/27 161/319/27 +f 164/323/24 165/320/24 163/318/24 +f 161/319/25 167/324/25 162/325/25 +f 170/326/23 171/327/23 169/328/23 +f 173/329/26 175/330/26 174/331/26 +f 171/327/27 174/331/27 169/328/27 +f 172/332/25 173/329/25 171/327/25 +f 169/328/24 175/333/24 170/334/24 +f 178/335/23 179/336/23 177/337/23 +f 181/338/26 183/339/26 182/340/26 +f 179/336/27 182/340/27 177/337/27 +f 180/341/25 181/338/25 179/336/25 +f 177/337/24 183/342/24 178/343/24 +f 186/344/24 187/345/24 185/346/24 +f 189/347/25 191/348/25 190/349/25 +f 187/345/27 190/349/27 185/346/27 +f 188/350/23 189/347/23 187/345/23 +f 185/346/26 191/351/26 186/352/26 +f 194/353/24 195/354/24 193/355/24 +f 197/356/25 199/357/25 198/358/25 +f 195/354/27 198/358/27 193/355/27 +f 196/359/23 197/356/23 195/354/23 +f 193/355/26 199/360/26 194/361/26 +f 202/362/25 203/363/25 201/364/25 +f 205/365/24 207/366/24 206/367/24 +f 203/363/27 206/367/27 201/364/27 +f 204/368/26 205/365/26 203/363/26 +f 201/364/23 207/369/23 202/370/23 +f 210/371/25 211/372/25 209/373/25 +f 213/374/24 215/375/24 214/376/24 +f 211/372/27 214/376/27 209/373/27 +f 212/377/26 213/374/26 211/372/26 +f 209/373/23 215/378/23 210/379/23 +f 218/380/24 233/381/24 217/382/24 +f 232/383/27 230/384/27 231/385/27 +f 228/386/27 226/387/27 227/388/27 +f 224/389/24 229/390/24 225/391/24 +f 223/392/25 227/393/25 222/394/25 +f 225/391/26 228/386/26 223/392/26 +f 222/395/23 226/396/23 224/389/23 +f 219/397/25 231/398/25 220/399/25 +f 217/382/26 232/383/26 219/397/26 +f 220/400/23 230/401/23 218/380/23 +f 235/402/24 249/403/24 234/404/24 +f 248/405/27 246/406/27 247/407/27 +f 244/408/27 242/409/27 243/410/27 +f 240/411/24 245/412/24 241/413/24 +f 239/414/25 243/415/25 238/416/25 +f 241/413/26 244/408/26 239/414/26 +f 238/417/23 242/418/23 240/411/23 +f 236/419/25 247/420/25 237/421/25 +f 234/404/26 248/405/26 236/419/26 +f 237/422/23 246/423/23 235/402/23 +f 250/424/27 251/425/27 221/426/27 +f 250/424/28 254/427/28 252/428/28 +f 253/429/26 256/430/26 254/427/26 +f 251/425/29 257/431/29 221/426/29 +f 258/432/23 259/433/23 257/431/23 +f 262/434/27 263/435/27 261/436/27 +f 262/434/28 266/437/28 264/438/28 +f 265/439/26 268/440/26 266/437/26 +f 263/435/29 269/441/29 261/436/29 +f 270/442/23 271/443/23 269/441/23 +f 225/391/22 222/444/22 224/445/22 +f 241/413/22 238/446/22 240/447/22 +f 236/419/22 235/448/22 234/404/22 +f 219/397/22 218/449/22 217/382/22 +f 274/450/26 275/451/26 276/452/26 +f 276/452/30 282/453/30 284/454/30 +f 277/455/23 280/456/23 279/457/23 +f 279/457/31 283/458/31 281/459/31 +f 282/453/22 283/458/22 284/454/22 +f 286/460/26 287/461/26 288/462/26 +f 288/462/30 294/463/30 296/464/30 +f 289/465/23 292/466/23 291/467/23 +f 291/467/31 295/468/31 293/469/31 +f 294/463/22 295/468/22 296/464/22 +f 139/281/22 140/288/22 138/282/22 +f 144/284/23 160/313/23 159/285/23 +f 139/281/24 145/470/24 148/287/24 +f 138/282/25 147/471/25 146/289/25 +f 140/288/26 148/296/26 147/290/26 +f 137/283/23 146/472/23 145/291/23 +f 143/292/27 145/298/27 146/293/27 +f 141/294/27 146/293/27 147/290/27 +f 142/295/27 147/290/27 148/296/27 +f 144/297/27 148/296/27 145/298/27 +f 150/299/26 152/473/26 151/300/26 +f 153/302/23 156/474/23 155/303/23 +f 159/285/27 160/313/27 157/305/27 +f 151/300/27 153/302/27 154/304/27 +f 152/307/24 156/475/24 153/302/24 +f 149/301/25 154/304/25 155/308/25 +f 141/310/26 158/306/26 157/305/26 +f 143/312/25 157/305/25 160/313/25 +f 142/315/24 159/285/24 158/306/24 +f 162/317/26 164/476/26 163/318/26 +f 165/320/23 168/477/23 167/321/23 +f 163/318/27 165/320/27 166/322/27 +f 164/323/24 168/478/24 165/320/24 +f 161/319/25 166/322/25 167/324/25 +f 170/326/23 172/479/23 171/327/23 +f 173/329/26 176/480/26 175/330/26 +f 171/327/27 173/329/27 174/331/27 +f 172/332/25 176/481/25 173/329/25 +f 169/328/24 174/331/24 175/333/24 +f 178/335/23 180/482/23 179/336/23 +f 181/338/26 184/483/26 183/339/26 +f 179/336/27 181/338/27 182/340/27 +f 180/341/25 184/484/25 181/338/25 +f 177/337/24 182/340/24 183/342/24 +f 186/344/24 188/485/24 187/345/24 +f 189/347/25 192/486/25 191/348/25 +f 187/345/27 189/347/27 190/349/27 +f 188/350/23 192/487/23 189/347/23 +f 185/346/26 190/349/26 191/351/26 +f 194/353/24 196/488/24 195/354/24 +f 197/356/25 200/489/25 199/357/25 +f 195/354/27 197/356/27 198/358/27 +f 196/359/23 200/490/23 197/356/23 +f 193/355/26 198/358/26 199/360/26 +f 202/362/25 204/491/25 203/363/25 +f 205/365/24 208/492/24 207/366/24 +f 203/363/27 205/365/27 206/367/27 +f 204/368/26 208/493/26 205/365/26 +f 201/364/23 206/367/23 207/369/23 +f 210/371/25 212/494/25 211/372/25 +f 213/374/24 216/495/24 215/375/24 +f 211/372/27 213/374/27 214/376/27 +f 212/377/26 216/496/26 213/374/26 +f 209/373/23 214/376/23 215/378/23 +f 218/380/24 230/401/24 233/381/24 +f 232/383/27 233/381/27 230/384/27 +f 228/386/27 229/390/27 226/387/27 +f 224/389/24 226/396/24 229/390/24 +f 223/392/25 228/386/25 227/393/25 +f 225/391/26 229/390/26 228/386/26 +f 222/395/23 227/497/23 226/396/23 +f 219/397/25 232/383/25 231/398/25 +f 217/382/26 233/381/26 232/383/26 +f 220/400/23 231/498/23 230/401/23 +f 235/402/24 246/423/24 249/403/24 +f 248/405/27 249/403/27 246/406/27 +f 244/408/27 245/412/27 242/409/27 +f 240/411/24 242/418/24 245/412/24 +f 239/414/25 244/408/25 243/415/25 +f 241/413/26 245/412/26 244/408/26 +f 238/417/23 243/499/23 242/418/23 +f 236/419/25 248/405/25 247/420/25 +f 234/404/26 249/403/26 248/405/26 +f 237/422/23 247/500/23 246/423/23 +f 250/424/27 252/428/27 251/425/27 +f 250/424/28 253/429/28 254/427/28 +f 253/429/26 255/501/26 256/430/26 +f 251/425/29 258/432/29 257/431/29 +f 258/432/23 260/502/23 259/433/23 +f 262/434/27 264/438/27 263/435/27 +f 262/434/28 265/439/28 266/437/28 +f 265/439/26 267/503/26 268/440/26 +f 263/435/29 270/442/29 269/441/29 +f 270/442/23 272/504/23 271/443/23 +f 225/391/22 223/392/22 222/444/22 +f 241/413/22 239/414/22 238/446/22 +f 236/419/22 237/505/22 235/448/22 +f 219/397/22 220/506/22 218/449/22 +f 274/450/26 273/507/26 275/451/26 +f 276/452/30 275/451/30 282/453/30 +f 277/455/23 278/508/23 280/456/23 +f 279/457/31 280/456/31 283/458/31 +f 282/453/22 281/459/22 283/458/22 +f 286/460/26 285/509/26 287/461/26 +f 288/462/30 287/461/30 294/463/30 +f 289/465/23 290/510/23 292/466/23 +f 291/467/31 292/466/31 295/468/31 +f 294/463/22 293/469/22 295/468/22 diff --git a/src/main/resources/assets/hbm/models/machines/radar_screen.obj b/src/main/resources/assets/hbm/models/machines/radar_screen.obj index 18f4a3cc5..3f69a3c90 100644 --- a/src/main/resources/assets/hbm/models/machines/radar_screen.obj +++ b/src/main/resources/assets/hbm/models/machines/radar_screen.obj @@ -47,9 +47,9 @@ vt 1.000000 0.785714 vt 1.000000 0.214286 vt 0.681818 0.285714 vt 0.954545 0.285714 -vt 0.954545 0.267857 +vt 0.954545 0.285714 vt 0.681818 0.714286 -vt 0.681818 0.267857 +vt 0.681818 0.285714 vt 0.500000 0.107143 vt 0.772727 0.035714 vt 0.772727 0.107143 diff --git a/src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png b/src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png new file mode 100644 index 0000000000000000000000000000000000000000..fd49d5ce653a16911dd8b9ccd597674bb68e7cfb GIT binary patch literal 490 zcmVZ8$)-u`yc%mR75pCzzTc@N-!67&RRSu9M zHy{OlB!p5iMU;Xj1r*6Dvqg$TvSuu^5{)rCDPU%8A(AGqdA7#id;feEJW*v?dH}7p z_}hCLfa!GVe`T*oHa1z^-2y*RN&$F)qA0?r9zZFDF=jm=%QEcNHc2{S)wSr4#{%#H zwALb}3_~%-ptTlpK+`m|xL$&FS!*%IV2nX2g>x>RJ(-{^OJ5X4g!|8Vo<~o~Ai>hn zUR&DbdV`cQrU;wsy8d^9;6N!Ag#~%eIhv*!I?!5+%cIZU{^;Nt%z6%-a}n&{e~{qv zDD~r=F;Fw!8B_k=_5IELtA-?iPy4XUC&+xl{OsG{R|R1q>BB4!Ao?(XT~zm?zTYRA zpH>{)9MUcwqpj^huk^7<_TF}4ep*F1qzJHlk@DgBJCcn}l5{la013eC1o7ql6*8Y- z7Zr9 Date: Sun, 26 Jul 2026 21:25:38 +0200 Subject: [PATCH 16/16] hot steamy load coming through diarreah --- changelog | 7 +++++++ gradle.properties | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelog b/changelog index 12858495b..b69c7887b 100644 --- a/changelog +++ b/changelog @@ -15,6 +15,11 @@ * Piles that overheat will explode, throwing flaming graphite everywhere * Satelllite Ground Station * Can relay RoR commands to connected satellites and satellite info back to RoR +* Platemetal + * Decorative connected texture metal block + * Comes in all colors except brown + * NTM poop theory debunked + * Make a nice clanking noise when placing and breaking ## Changed * Updated all oil well GUI textures @@ -42,6 +47,8 @@ * Legacy satellites still function and can still be launched * The PWR's coolant levels can now be read with RoR * Soyuz and related assembly recipes now use 25kHE/t instead of just 100 +* Updated the GUI textures for the refinery, various particle accelerator parts and a few other machines +* Glyphid hive blocks now use state-of-the-fart flesh sounds ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI diff --git a/gradle.properties b/gradle.properties index fb5115c4e..283f402c4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5758 +mod_build_number=5768 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 7edfe0a91..626bc5a1b 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5758)"; + public static final String VERSION = "1.0.27 BETA (5768)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version