From 0880287660caf2e2ed4283077c33cdaa2d4e79af Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 4 Jul 2025 15:24:28 +0200 Subject: [PATCH] assembler module --- .../machine/ModuleMachineAssembler.java | 28 ++++++++++++++ .../ModuleMachineBase.java} | 36 +++++++----------- .../machine/ModuleMachineChemplant.java | 35 +++++++++++++++++ .../TileEntityMachineChemicalFactory.java | 2 +- .../TileEntityMachineChemicalPlant.java | 2 +- .../assets/hbm/textures/gui/gui_slab.png | Bin 0 -> 4295 bytes .../assets/hbm/textures/items/tent_tablet.png | Bin 0 -> 231 bytes 7 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java rename src/main/java/com/hbm/module/{ModuleMachineChemplant.java => machine/ModuleMachineBase.java} (75%) create mode 100644 src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java create mode 100644 src/main/resources/assets/hbm/textures/gui/gui_slab.png create mode 100644 src/main/resources/assets/hbm/textures/items/tent_tablet.png diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java new file mode 100644 index 000000000..e132a5031 --- /dev/null +++ b/src/main/java/com/hbm/module/machine/ModuleMachineAssembler.java @@ -0,0 +1,28 @@ +package com.hbm.module.machine; + +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.loader.GenericRecipe; + +import api.hbm.energymk2.IEnergyHandlerMK2; +import net.minecraft.item.ItemStack; + +public class ModuleMachineAssembler extends ModuleMachineBase { + + public ModuleMachineAssembler(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) { + super(index, battery, slots); + this.inputSlots = new int[12]; + this.outputSlots = new int[1]; + this.inputTanks = new FluidTank[1]; + this.outputTanks = new FluidTank[1]; + } + + @Override + public GenericRecipe getRecipe() { + return null; + } + + public ModuleMachineAssembler itemInput(int... a) { for(int i = 0; i < inputSlots.length; i++) inputSlots[i] = a[i]; return this; } + public ModuleMachineAssembler itemOutput(int a) { outputSlots[0] = a; return this; } + public ModuleMachineAssembler fluidInput(FluidTank a) { inputTanks[0] = a; return this; } + public ModuleMachineAssembler fluidOutput(FluidTank a) { outputTanks[0] = a; return this; } +} diff --git a/src/main/java/com/hbm/module/ModuleMachineChemplant.java b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java similarity index 75% rename from src/main/java/com/hbm/module/ModuleMachineChemplant.java rename to src/main/java/com/hbm/module/machine/ModuleMachineBase.java index 4c6cbdbcd..7787b4fbd 100644 --- a/src/main/java/com/hbm/module/ModuleMachineChemplant.java +++ b/src/main/java/com/hbm/module/machine/ModuleMachineBase.java @@ -1,7 +1,6 @@ -package com.hbm.module; +package com.hbm.module.machine; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.recipes.ChemicalPlantRecipes; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput; @@ -11,22 +10,16 @@ import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -/** - * Option 1: Make a base class with weird arbitrary overrides to define shit like slots for multi machines like the chemfac - * Option 2: Make an easy to define module which can be used by whatever needs it, hypothetically allowing a mixed recipe machine. - * In the hudson bay, you know how we do it. - * @author hbm - */ -public class ModuleMachineChemplant { +public abstract class ModuleMachineBase { // setup public int index; public IEnergyHandlerMK2 battery; public ItemStack[] slots; - public int[] inputSlots = new int[3]; - public int[] outputSlots = new int[3]; - public FluidTank[] inputTanks = new FluidTank[3]; - public FluidTank[] outputTanks = new FluidTank[3]; + public int[] inputSlots; + public int[] outputSlots; + public FluidTank[] inputTanks; + public FluidTank[] outputTanks; // running vars public String recipe = "null"; public double progress; @@ -34,7 +27,7 @@ public class ModuleMachineChemplant { public boolean didProcess = false; public boolean markDirty = false; - public ModuleMachineChemplant(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) { + public ModuleMachineBase(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) { this.index = index; this.battery = battery; this.slots = slots; @@ -43,8 +36,8 @@ public class ModuleMachineChemplant { /** Chances tank type and pressure based on recipe */ public void setupTanks(GenericRecipe recipe) { if(recipe == null) return; - for(int i = 0; i < 3; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].conform(recipe.inputFluid[i]); else inputTanks[i].resetTank(); - for(int i = 0; i < 3; i++) if(recipe.outputFluid != null && recipe.outputFluid.length > i) outputTanks[i].conform(recipe.outputFluid[i]); else outputTanks[i].resetTank(); + for(int i = 0; i < inputTanks.length; i++) if(recipe.inputFluid != null && recipe.inputFluid.length > i) inputTanks[i].conform(recipe.inputFluid[i]); else inputTanks[i].resetTank(); + for(int i = 0; i < outputTanks.length; i++) if(recipe.outputFluid != null && recipe.outputFluid.length > i) outputTanks[i].conform(recipe.outputFluid[i]); else outputTanks[i].resetTank(); } /** Expects the tanks to be set up correctly beforehand */ @@ -135,8 +128,10 @@ public class ModuleMachineChemplant { } } + public abstract GenericRecipe getRecipe(); + public void update(double speed, double power, boolean extraCondition) { - GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(this.recipe); + GenericRecipe recipe = getRecipe(); this.setupTanks(recipe); this.didProcess = false; @@ -152,7 +147,7 @@ public class ModuleMachineChemplant { /** For item IO, instead of the TE doing all the work it only has to handle non-recipe stuff, the module does the rest */ public boolean isItemValid(int slot, ItemStack stack) { - GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(this.recipe); + GenericRecipe recipe = getRecipe(); if(recipe == null) return false; if(recipe.inputItem == null) return false; @@ -162,11 +157,6 @@ public class ModuleMachineChemplant { return false; } - - public ModuleMachineChemplant itemInput(int a, int b, int c) { inputSlots[0] = a; inputSlots[1] = b; inputSlots[2] = c; return this; } - public ModuleMachineChemplant itemOutput(int a, int b, int c) { outputSlots[0] = a; outputSlots[1] = b; outputSlots[2] = c; return this; } - public ModuleMachineChemplant fluidInput(FluidTank a, FluidTank b, FluidTank c) { inputTanks[0] = a; inputTanks[1] = b; inputTanks[2] = c; return this; } - public ModuleMachineChemplant fluidOutput(FluidTank a, FluidTank b, FluidTank c) { outputTanks[0] = a; outputTanks[1] = b; outputTanks[2] = c; return this; } public void serialize(ByteBuf buf) { buf.writeDouble(progress); diff --git a/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java b/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java new file mode 100644 index 000000000..c6268e2cd --- /dev/null +++ b/src/main/java/com/hbm/module/machine/ModuleMachineChemplant.java @@ -0,0 +1,35 @@ +package com.hbm.module.machine; + +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.ChemicalPlantRecipes; +import com.hbm.inventory.recipes.loader.GenericRecipe; + +import api.hbm.energymk2.IEnergyHandlerMK2; +import net.minecraft.item.ItemStack; + +/** + * Option 1: Make a base class with weird arbitrary overrides to define shit like slots for multi machines like the chemfac + * Option 2: Make an easy to define module which can be used by whatever needs it, hypothetically allowing a mixed recipe machine. + * In the hudson bay, you know how we do it. + * @author hbm + */ +public class ModuleMachineChemplant extends ModuleMachineBase { + + public ModuleMachineChemplant(int index, IEnergyHandlerMK2 battery, ItemStack[] slots) { + super(index, battery, slots); + this.inputSlots = new int[3]; + this.outputSlots = new int[3]; + this.inputTanks = new FluidTank[3]; + this.outputTanks = new FluidTank[3]; + } + + @Override + public GenericRecipe getRecipe() { + return ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(this.recipe); + } + + public ModuleMachineChemplant itemInput(int a, int b, int c) { inputSlots[0] = a; inputSlots[1] = b; inputSlots[2] = c; return this; } + public ModuleMachineChemplant itemOutput(int a, int b, int c) { outputSlots[0] = a; outputSlots[1] = b; outputSlots[2] = c; return this; } + public ModuleMachineChemplant fluidInput(FluidTank a, FluidTank b, FluidTank c) { inputTanks[0] = a; inputTanks[1] = b; inputTanks[2] = c; return this; } + public ModuleMachineChemplant fluidOutput(FluidTank a, FluidTank b, FluidTank c) { outputTanks[0] = a; outputTanks[1] = b; outputTanks[2] = c; return this; } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java index 8b31f6f11..e7695b078 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalFactory.java @@ -14,7 +14,7 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.module.ModuleMachineChemplant; +import com.hbm.module.machine.ModuleMachineChemplant; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java index 2bb6584f8..47e0a7d62 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemicalPlant.java @@ -15,7 +15,7 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.module.ModuleMachineChemplant; +import com.hbm.module.machine.ModuleMachineChemplant; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; diff --git a/src/main/resources/assets/hbm/textures/gui/gui_slab.png b/src/main/resources/assets/hbm/textures/gui/gui_slab.png new file mode 100644 index 0000000000000000000000000000000000000000..02dab2c1cdcfeb790cd31c765e653aea3ef13243 GIT binary patch literal 4295 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/tent_tablet.png b/src/main/resources/assets/hbm/textures/items/tent_tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..8769aeeec7ee11e53c91380f5451510e101ac20a GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#zY&+tf+irRRcP%u#**S#nniU&hBA`2*<&aW<