mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
assembler module
This commit is contained in:
parent
b3983f7fb8
commit
0880287660
@ -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; }
|
||||||
|
}
|
||||||
@ -1,7 +1,6 @@
|
|||||||
package com.hbm.module;
|
package com.hbm.module.machine;
|
||||||
|
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
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.GenericRecipe;
|
||||||
import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput;
|
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.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
/**
|
public abstract class ModuleMachineBase {
|
||||||
* 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 {
|
|
||||||
|
|
||||||
// setup
|
// setup
|
||||||
public int index;
|
public int index;
|
||||||
public IEnergyHandlerMK2 battery;
|
public IEnergyHandlerMK2 battery;
|
||||||
public ItemStack[] slots;
|
public ItemStack[] slots;
|
||||||
public int[] inputSlots = new int[3];
|
public int[] inputSlots;
|
||||||
public int[] outputSlots = new int[3];
|
public int[] outputSlots;
|
||||||
public FluidTank[] inputTanks = new FluidTank[3];
|
public FluidTank[] inputTanks;
|
||||||
public FluidTank[] outputTanks = new FluidTank[3];
|
public FluidTank[] outputTanks;
|
||||||
// running vars
|
// running vars
|
||||||
public String recipe = "null";
|
public String recipe = "null";
|
||||||
public double progress;
|
public double progress;
|
||||||
@ -34,7 +27,7 @@ public class ModuleMachineChemplant {
|
|||||||
public boolean didProcess = false;
|
public boolean didProcess = false;
|
||||||
public boolean markDirty = 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.index = index;
|
||||||
this.battery = battery;
|
this.battery = battery;
|
||||||
this.slots = slots;
|
this.slots = slots;
|
||||||
@ -43,8 +36,8 @@ public class ModuleMachineChemplant {
|
|||||||
/** Chances tank type and pressure based on recipe */
|
/** Chances tank type and pressure based on recipe */
|
||||||
public void setupTanks(GenericRecipe recipe) {
|
public void setupTanks(GenericRecipe recipe) {
|
||||||
if(recipe == null) return;
|
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 < 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 < 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 < 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 */
|
/** 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) {
|
public void update(double speed, double power, boolean extraCondition) {
|
||||||
GenericRecipe recipe = ChemicalPlantRecipes.INSTANCE.recipeNameMap.get(this.recipe);
|
GenericRecipe recipe = getRecipe();
|
||||||
this.setupTanks(recipe);
|
this.setupTanks(recipe);
|
||||||
|
|
||||||
this.didProcess = false;
|
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 */
|
/** 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) {
|
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 == null) return false;
|
||||||
if(recipe.inputItem == null) return false;
|
if(recipe.inputItem == null) return false;
|
||||||
|
|
||||||
@ -162,11 +157,6 @@ public class ModuleMachineChemplant {
|
|||||||
|
|
||||||
return false;
|
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) {
|
public void serialize(ByteBuf buf) {
|
||||||
buf.writeDouble(progress);
|
buf.writeDouble(progress);
|
||||||
@ -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; }
|
||||||
|
}
|
||||||
@ -14,7 +14,7 @@ import com.hbm.items.machine.ItemMachineUpgrade;
|
|||||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.module.ModuleMachineChemplant;
|
import com.hbm.module.machine.ModuleMachineChemplant;
|
||||||
import com.hbm.sound.AudioWrapper;
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.IUpgradeInfoProvider;
|
import com.hbm.tileentity.IUpgradeInfoProvider;
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import com.hbm.items.machine.ItemMachineUpgrade;
|
|||||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.module.ModuleMachineChemplant;
|
import com.hbm.module.machine.ModuleMachineChemplant;
|
||||||
import com.hbm.sound.AudioWrapper;
|
import com.hbm.sound.AudioWrapper;
|
||||||
import com.hbm.tileentity.IGUIProvider;
|
import com.hbm.tileentity.IGUIProvider;
|
||||||
import com.hbm.tileentity.IUpgradeInfoProvider;
|
import com.hbm.tileentity.IUpgradeInfoProvider;
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/textures/gui/gui_slab.png
Normal file
BIN
src/main/resources/assets/hbm/textures/gui/gui_slab.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
BIN
src/main/resources/assets/hbm/textures/items/tent_tablet.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/tent_tablet.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 231 B |
Loading…
x
Reference in New Issue
Block a user