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 000000000..02dab2c1c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/gui_slab.png differ 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 000000000..8769aeeec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/tent_tablet.png differ