From 820ca984d2dea005a126ef585661503f8cc992f5 Mon Sep 17 00:00:00 2001 From: kekzdealer Date: Wed, 9 Oct 2019 02:43:07 +0200 Subject: improved T.F.F.T code; Prepared for MultiHatch --- src/main/java/kekztech/GTMultiController.java | 610 +++++++++++------------ src/main/java/kekztech/GTRecipe.java | 208 ++++---- src/main/java/kekztech/Items.java | 96 ++-- src/main/java/kekztech/KekzCore.java | 688 +++++++++++++------------- src/main/java/kekztech/MultiFluidHandler.java | 138 ++++++ 5 files changed, 928 insertions(+), 812 deletions(-) create mode 100644 src/main/java/kekztech/MultiFluidHandler.java (limited to 'src/main/java/kekztech') diff --git a/src/main/java/kekztech/GTMultiController.java b/src/main/java/kekztech/GTMultiController.java index d824077201..2138907faa 100644 --- a/src/main/java/kekztech/GTMultiController.java +++ b/src/main/java/kekztech/GTMultiController.java @@ -1,305 +1,305 @@ -package kekztech; - -import java.util.ArrayList; - -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -/** - * Only purpose of this class is to make me learn about GT multis :) - * @author Kekzdealer - * - */ -public abstract class GTMultiController { - - private final GTRecipe GT_RECIPE = new GTRecipe(); - - private boolean running = false; - private boolean structureValid = false; - - public final ArrayList mDynamoHatches = new ArrayList<>(); - public final ArrayList mEnergyHatches = new ArrayList<>(); - public final ArrayList mInputHatches = new ArrayList<>(); - public final ArrayList mOutputHatches = new ArrayList<>(); - public final ArrayList mInputBusses = new ArrayList<>(); - public final ArrayList mOutputBusses = new ArrayList<>(); - public final ArrayList mMufflerHatches = new ArrayList<>(); - public final ArrayList mMaintenanceHatches = new ArrayList<>(); - - protected GTRecipe getGT_RECIPE() { - return GT_RECIPE; - } - - protected abstract boolean checkStructure(); - protected abstract String[] getDescription(); - - protected long getMaxInputVoltage() { - long voltage = 0L; - for(GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { - voltage += energyHatch.getBaseMetaTileEntity().getInputVoltage(); - } - return voltage; - } - - private void updateDynamoHatches() { - if(GT_RECIPE.getEuPerTick() > 0) { - long remOutput = GT_RECIPE.getEuPerTick(); - for(GT_MetaTileEntity_Hatch_Dynamo dynamoHatch : mDynamoHatches) { - final long deltaCapacity = dynamoHatch.getBaseMetaTileEntity().getEUCapacity() - - dynamoHatch.getBaseMetaTileEntity().getStoredEU(); - final long toOutput = Math.min(deltaCapacity, GT_RECIPE.getEuPerTick()); - dynamoHatch.getBaseMetaTileEntity().increaseStoredEnergyUnits(toOutput, false); - remOutput -= toOutput; - } - } - } - - private void updateEnergyHatches() { - if(GT_RECIPE.getEuPerTick() < 0) { - long remConsumption = GT_RECIPE.getEuPerTick(); - for(GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { - if(remConsumption > 0) { - final long toConsume = Math.min(remConsumption, energyHatch.getBaseMetaTileEntity().getStoredEU()); - energyHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(toConsume, false); - remConsumption -= toConsume; - } - } - } - } - - private void updateInputBusses() { - if(GT_RECIPE.getInputItems() != null) { - // Check for each input stack... - for(ItemStack inputStack : GT_RECIPE.getInputItems()) { - int remainingRequired = inputStack.stackSize; - // ...Each slot in each input bus... - for(GT_MetaTileEntity_Hatch_InputBus inputBus : mInputBusses) { - for(int slot = 0; slot <= inputBus.getBaseMetaTileEntity().getSizeInventory(); slot++) { - - final ItemStack slotStack = inputBus.getBaseMetaTileEntity().getStackInSlot(slot); - if(GT_Utility.isStackValid(slotStack)) { - if(GT_Utility.areStacksEqual(inputStack, slotStack)) { - // Found correct slot - final int toConsume = Math.min(slotStack.stackSize, inputStack.stackSize); - final ItemStack retrievedStack = inputBus.getBaseMetaTileEntity().decrStackSize(slot, toConsume); - } - } - } - } - } - } - } - - private void updateInputHatches() { - if(GT_RECIPE.getInputFluids() != null) { - // Check for each input stack - for(FluidStack inputStack : GT_RECIPE.getInputFluids()) { - int remainingRequired = inputStack.amount; - // ...In each input hatch... - for(GT_MetaTileEntity_Hatch_Input inputHatch : mInputHatches) { - - FluidStack slotStack = inputHatch.getFluid(); - if(slotStack.amount > 0 && slotStack.isFluidEqual(inputStack)) { - // Found correct hatch - final int toConsume = Math.min(slotStack.amount, remainingRequired); - inputHatch.drain(toConsume, true); - remainingRequired -= toConsume; - } - } - } - } - } - - private void updateOutputBusses() { - if(GT_RECIPE.getOutputItems() != null) { - - } - } - - private void updateOutputHatches() { - if(GT_RECIPE.getOutputFluids() != null) { - // Find for each output stack... - for(FluidStack outputStack : GT_RECIPE.getOutputFluids()) { - // ...an output hatch that can accept the stack - for(GT_MetaTileEntity_Hatch_Output outputHatch : mOutputHatches) { - - } - } - } - } - - protected boolean tryAddHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - final IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else { - if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - } - - if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) { - return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) { - return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) { - return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) { - return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { - return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) { - return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity); - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) { - return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) aMetaTileEntity); - } else { - return aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler - ? this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity) - : false; - } - } - } - } - - protected boolean tryAddMaintenanceHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddEnergyHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddDynamoHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddMufflerHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddInputBus(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddInputHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddOutputBus(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity); - } else { - return false; - } - } - } - - protected boolean tryAddOutputHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { - if (hatch == null) { - return false; - } else { - IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); - if (aMetaTileEntity == null) { - return false; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) { - ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); - return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity); - } else { - return false; - } - } - } -} +package kekztech; + +import java.util.ArrayList; + +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; +import gregtech.api.util.GT_Utility; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +/** + * Only purpose of this class is to make me learn about GT multis :) + * @author Kekzdealer + * + */ +public abstract class GTMultiController { + + private final GTRecipe GT_RECIPE = new GTRecipe(); + + private boolean running = false; + private boolean structureValid = false; + + public final ArrayList mDynamoHatches = new ArrayList<>(); + public final ArrayList mEnergyHatches = new ArrayList<>(); + public final ArrayList mInputHatches = new ArrayList<>(); + public final ArrayList mOutputHatches = new ArrayList<>(); + public final ArrayList mInputBusses = new ArrayList<>(); + public final ArrayList mOutputBusses = new ArrayList<>(); + public final ArrayList mMufflerHatches = new ArrayList<>(); + public final ArrayList mMaintenanceHatches = new ArrayList<>(); + + protected GTRecipe getGT_RECIPE() { + return GT_RECIPE; + } + + protected abstract boolean checkStructure(); + protected abstract String[] getDescription(); + + protected long getMaxInputVoltage() { + long voltage = 0L; + for(GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { + voltage += energyHatch.getBaseMetaTileEntity().getInputVoltage(); + } + return voltage; + } + + private void updateDynamoHatches() { + if(GT_RECIPE.getEuPerTick() > 0) { + long remOutput = GT_RECIPE.getEuPerTick(); + for(GT_MetaTileEntity_Hatch_Dynamo dynamoHatch : mDynamoHatches) { + final long deltaCapacity = dynamoHatch.getBaseMetaTileEntity().getEUCapacity() + - dynamoHatch.getBaseMetaTileEntity().getStoredEU(); + final long toOutput = Math.min(deltaCapacity, GT_RECIPE.getEuPerTick()); + dynamoHatch.getBaseMetaTileEntity().increaseStoredEnergyUnits(toOutput, false); + remOutput -= toOutput; + } + } + } + + private void updateEnergyHatches() { + if(GT_RECIPE.getEuPerTick() < 0) { + long remConsumption = GT_RECIPE.getEuPerTick(); + for(GT_MetaTileEntity_Hatch_Energy energyHatch : mEnergyHatches) { + if(remConsumption > 0) { + final long toConsume = Math.min(remConsumption, energyHatch.getBaseMetaTileEntity().getStoredEU()); + energyHatch.getBaseMetaTileEntity().decreaseStoredEnergyUnits(toConsume, false); + remConsumption -= toConsume; + } + } + } + } + + private void updateInputBusses() { + if(GT_RECIPE.getInputItems() != null) { + // Check for each input stack... + for(ItemStack inputStack : GT_RECIPE.getInputItems()) { + int remainingRequired = inputStack.stackSize; + // ...Each slot in each input bus... + for(GT_MetaTileEntity_Hatch_InputBus inputBus : mInputBusses) { + for(int slot = 0; slot <= inputBus.getBaseMetaTileEntity().getSizeInventory(); slot++) { + + final ItemStack slotStack = inputBus.getBaseMetaTileEntity().getStackInSlot(slot); + if(GT_Utility.isStackValid(slotStack)) { + if(GT_Utility.areStacksEqual(inputStack, slotStack)) { + // Found correct slot + final int toConsume = Math.min(slotStack.stackSize, inputStack.stackSize); + final ItemStack retrievedStack = inputBus.getBaseMetaTileEntity().decrStackSize(slot, toConsume); + } + } + } + } + } + } + } + + private void updateInputHatches() { + if(GT_RECIPE.getInputFluids() != null) { + // Check for each input stack + for(FluidStack inputStack : GT_RECIPE.getInputFluids()) { + int remainingRequired = inputStack.amount; + // ...In each input hatch... + for(GT_MetaTileEntity_Hatch_Input inputHatch : mInputHatches) { + + FluidStack slotStack = inputHatch.getFluid(); + if(slotStack.amount > 0 && slotStack.isFluidEqual(inputStack)) { + // Found correct hatch + final int toConsume = Math.min(slotStack.amount, remainingRequired); + inputHatch.drain(toConsume, true); + remainingRequired -= toConsume; + } + } + } + } + } + + private void updateOutputBusses() { + if(GT_RECIPE.getOutputItems() != null) { + + } + } + + private void updateOutputHatches() { + if(GT_RECIPE.getOutputFluids() != null) { + // Find for each output stack... + for(FluidStack outputStack : GT_RECIPE.getOutputFluids()) { + // ...an output hatch that can accept the stack + for(GT_MetaTileEntity_Hatch_Output outputHatch : mOutputHatches) { + + } + } + } + } + + protected boolean tryAddHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + final IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else { + if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + } + + if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) { + return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) { + return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) { + return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) { + return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { + return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) { + return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity); + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) { + return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) aMetaTileEntity); + } else { + return aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler + ? this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity) + : false; + } + } + } + } + + protected boolean tryAddMaintenanceHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddEnergyHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddDynamoHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddMufflerHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddInputBus(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddInputHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddOutputBus(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity); + } else { + return false; + } + } + } + + protected boolean tryAddOutputHatch(IGregTechTileEntity hatch, int aBaseCasingIndex) { + if (hatch == null) { + return false; + } else { + IMetaTileEntity aMetaTileEntity = hatch.getMetaTileEntity(); + if (aMetaTileEntity == null) { + return false; + } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) { + ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex); + return this.mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity); + } else { + return false; + } + } + } +} diff --git a/src/main/java/kekztech/GTRecipe.java b/src/main/java/kekztech/GTRecipe.java index 2add4d3c0e..1939afc8ff 100644 --- a/src/main/java/kekztech/GTRecipe.java +++ b/src/main/java/kekztech/GTRecipe.java @@ -1,104 +1,104 @@ -package kekztech; - -import java.util.ArrayList; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import util.Util; - -public class GTRecipe { - - private int euPerTick = 0; - private int duration = 0; - - private ArrayList inputItems; - private ArrayList inputFluids; - private ArrayList outputItems; - private ArrayList outputFluids; - - public int getEuPerTick() { - return euPerTick; - } - public int getDuration() { - return duration; - } - public ItemStack[] getInputItems() { - return Util.toItemStackArray(inputItems); - } - public FluidStack[] getInputFluids() { - return Util.toFluidStackArray(inputFluids); - } - public ItemStack[] getOutputItems() { - return Util.toItemStackArray(outputItems); - } - public FluidStack[] getOutputFluids() { - return Util.toFluidStackArray(outputFluids); - } - public ItemStack getInputItem() { - final ItemStack[] s = Util.toItemStackArray(inputItems); - return s[0]; - } - public FluidStack getInputFluid() { - final FluidStack[] s = Util.toFluidStackArray(inputFluids); - return s[0]; - } - public ItemStack getOutputItem() { - final ItemStack[] s = Util.toItemStackArray(outputItems); - return s[0]; - } - public FluidStack getOutputFluid() { - final FluidStack[] s = Util.toFluidStackArray(outputFluids); - return s[0]; - } - - public GTRecipe addInputItem(ItemStack inputItem) { - if(inputItems == null) { - inputItems = new ArrayList(); - inputItems.add(inputItem); - } else { - inputItems.add(inputItem); - } - return this; - } - - public GTRecipe addOutputItem(ItemStack outputItem) { - if(outputItems == null) { - outputItems = new ArrayList(); - outputItems.add(outputItem); - } else { - outputItems.add(outputItem); - } - return this; - } - - public GTRecipe addInputFluid(FluidStack inputFluid) { - if(inputFluids == null) { - inputFluids = new ArrayList(); - inputFluids.add(inputFluid); - } else { - inputFluids.add(inputFluid); - } - return this; - } - - public GTRecipe addOutputFluid(FluidStack outputFluid) { - if(outputFluids == null) { - outputFluids = new ArrayList(); - outputFluids.add(outputFluid); - } else { - outputFluids.add(outputFluid); - } - return this; - } - - public GTRecipe setEUPerTick(int euPerTick) { - this.euPerTick = euPerTick; - return this; - } - - public GTRecipe setDuration(int duration) { - this.duration = duration; - return this; - } - -} +package kekztech; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import util.Util; + +public class GTRecipe { + + private int euPerTick = 0; + private int duration = 0; + + private ArrayList inputItems; + private ArrayList inputFluids; + private ArrayList outputItems; + private ArrayList outputFluids; + + public int getEuPerTick() { + return euPerTick; + } + public int getDuration() { + return duration; + } + public ItemStack[] getInputItems() { + return Util.toItemStackArray(inputItems); + } + public FluidStack[] getInputFluids() { + return Util.toFluidStackArray(inputFluids); + } + public ItemStack[] getOutputItems() { + return Util.toItemStackArray(outputItems); + } + public FluidStack[] getOutputFluids() { + return Util.toFluidStackArray(outputFluids); + } + public ItemStack getInputItem() { + final ItemStack[] s = Util.toItemStackArray(inputItems); + return s[0]; + } + public FluidStack getInputFluid() { + final FluidStack[] s = Util.toFluidStackArray(inputFluids); + return s[0]; + } + public ItemStack getOutputItem() { + final ItemStack[] s = Util.toItemStackArray(outputItems); + return s[0]; + } + public FluidStack getOutputFluid() { + final FluidStack[] s = Util.toFluidStackArray(outputFluids); + return s[0]; + } + + public GTRecipe addInputItem(ItemStack inputItem) { + if(inputItems == null) { + inputItems = new ArrayList(); + inputItems.add(inputItem); + } else { + inputItems.add(inputItem); + } + return this; + } + + public GTRecipe addOutputItem(ItemStack outputItem) { + if(outputItems == null) { + outputItems = new ArrayList(); + outputItems.add(outputItem); + } else { + outputItems.add(outputItem); + } + return this; + } + + public GTRecipe addInputFluid(FluidStack inputFluid) { + if(inputFluids == null) { + inputFluids = new ArrayList(); + inputFluids.add(inputFluid); + } else { + inputFluids.add(inputFluid); + } + return this; + } + + public GTRecipe addOutputFluid(FluidStack outputFluid) { + if(outputFluids == null) { + outputFluids = new ArrayList(); + outputFluids.add(outputFluid); + } else { + outputFluids.add(outputFluid); + } + return this; + } + + public GTRecipe setEUPerTick(int euPerTick) { + this.euPerTick = euPerTick; + return this; + } + + public GTRecipe setDuration(int duration) { + this.duration = duration; + return this; + } + +} diff --git a/src/main/java/kekztech/Items.java b/src/main/java/kekztech/Items.java index 47708971c7..52539222e7 100644 --- a/src/main/java/kekztech/Items.java +++ b/src/main/java/kekztech/Items.java @@ -1,48 +1,48 @@ -package kekztech; - -public enum Items { - // Heat Vents - T1HeatVent(0), T2HeatVent(1), T3HeatVent(2), T4HeatVent(3), - T1ComponentHeatVent(4), T2ComponentHeatVent(5), T3ComponentHeatVent(6), T4ComponentHeatVent(7), - T1OverclockedHeatVent(8), T2OverclockedHeatVent(9), T3OverclockedHeatVent(10), T4OverclockedHeatVent(11), - // Heat Exchanger - T1HeatExchanger(12), T2HeatExchanger(13), T3HeatExchanger(14), T4HeatExchanger(15), - // Fuel Rods - UraniumFuelRod(16), UraniumDualFuelRod(17), UraniumQuadFuelRod(18), - ThoriumFuelRod(19), ThoriumDualFuelRod(20), ThoriumQuadFuelRod(21), - MOXFuelRod(22), MOXDualFuelRod(23), MOXQuadFuelRod(24), - NaquadahFuelRod(25), NaquadahDualFuelRod(26), NaquadahQuadFuelRod(27), - Th_MOXFuelRod(28), Th_MOXDualFuelRod(29), Th_MOXQuadFuelRod(30), - // Depleted Fuel Rods - DepletedUraniumFuelRod(31), DepletedUraniumDualFuelRod(32), DepletedUraniumQuadFuelRod(33), - DepletedThoriumFuelRod(34), DepletedThoriumDualFuelRod(35), DepletedThoriumQuadFuelRod(36), - DepletedMOXFuelRod(37), DepletedMOXDualFuelRod(38), DepletedMOXQuadFuelRod(39), - DepletedNaquadahFuelRod(40), DepletedNaquadahDualFuelRod(41), DepletedNaquadahQuadFuelRod(42), - Th_DepletedMOXFuelRod(43), Th_DepletedMOXDualFuelRod(44), Th_DepletedMOXQuadFuelRod(45), - // Neutron Reflectors - T1NeutronReflector(46), T2NeutronReflector(47), - // Coolant Cells - HeliumCoolantCell360k(48), NaKCoolantCell360k(49), - - // Heat Pipes - CopperHeatPipe(0), SilverHeatPipe(1), BoronArsenideHeatPipe(2), DiamondHeatPipe(3), - BoronArsenideDust(4), IsotopicallyPureDiamondDust(5), AmineCarbamiteDust(6), - BoronArsenideCrystal(7), IsotopicallyPureDiamondCrystal(8), - // Ceramics - YSZCeramicDust(9), GDCCeramicDust(10), - YttriaDust(11), ZirconiaDust(12), CeriaDust(13), - YSZCeramicPlate(14), GDCCeramicPlate(15), - // Error Item - Error(0); - - private final int metaID; - - private Items(int metaID) { - this.metaID = metaID; - } - - public int getMetaID() { - return metaID; - } - -} +package kekztech; + +public enum Items { + // Heat Vents + T1HeatVent(0), T2HeatVent(1), T3HeatVent(2), T4HeatVent(3), + T1ComponentHeatVent(4), T2ComponentHeatVent(5), T3ComponentHeatVent(6), T4ComponentHeatVent(7), + T1OverclockedHeatVent(8), T2OverclockedHeatVent(9), T3OverclockedHeatVent(10), T4OverclockedHeatVent(11), + // Heat Exchanger + T1HeatExchanger(12), T2HeatExchanger(13), T3HeatExchanger(14), T4HeatExchanger(15), + // Fuel Rods + UraniumFuelRod(16), UraniumDualFuelRod(17), UraniumQuadFuelRod(18), + ThoriumFuelRod(19), ThoriumDualFuelRod(20), ThoriumQuadFuelRod(21), + MOXFuelRod(22), MOXDualFuelRod(23), MOXQuadFuelRod(24), + NaquadahFuelRod(25), NaquadahDualFuelRod(26), NaquadahQuadFuelRod(27), + Th_MOXFuelRod(28), Th_MOXDualFuelRod(29), Th_MOXQuadFuelRod(30), + // Depleted Fuel Rods + DepletedUraniumFuelRod(31), DepletedUraniumDualFuelRod(32), DepletedUraniumQuadFuelRod(33), + DepletedThoriumFuelRod(34), DepletedThoriumDualFuelRod(35), DepletedThoriumQuadFuelRod(36), + DepletedMOXFuelRod(37), DepletedMOXDualFuelRod(38), DepletedMOXQuadFuelRod(39), + DepletedNaquadahFuelRod(40), DepletedNaquadahDualFuelRod(41), DepletedNaquadahQuadFuelRod(42), + Th_DepletedMOXFuelRod(43), Th_DepletedMOXDualFuelRod(44), Th_DepletedMOXQuadFuelRod(45), + // Neutron Reflectors + T1NeutronReflector(46), T2NeutronReflector(47), + // Coolant Cells + HeliumCoolantCell360k(48), NaKCoolantCell360k(49), + + // Heat Pipes + CopperHeatPipe(0), SilverHeatPipe(1), BoronArsenideHeatPipe(2), DiamondHeatPipe(3), + BoronArsenideDust(4), IsotopicallyPureDiamondDust(5), AmineCarbamiteDust(6), + BoronArsenideCrystal(7), IsotopicallyPureDiamondCrystal(8), + // Ceramics + YSZCeramicDust(9), GDCCeramicDust(10), + YttriaDust(11), ZirconiaDust(12), CeriaDust(13), + YSZCeramicPlate(14), GDCCeramicPlate(15), + // Error Item + Error(0); + + private final int metaID; + + private Items(int metaID) { + this.metaID = metaID; + } + + public int getMetaID() { + return metaID; + } + +} diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index e84b428219..5eb2916e02 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -1,355 +1,333 @@ -package kekztech; - -import blocks.Block_GDCUnit; -import blocks.Block_TFFTCasing; -import blocks.Block_TFFTStorageFieldBlockT1; -import blocks.Block_TFFTStorageFieldBlockT2; -import blocks.Block_TFFTStorageFieldBlockT3; -import blocks.Block_TFFTStorageFieldBlockT4; -import blocks.Block_YSZUnit; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import gregtech.api.enums.GT_Values; -import gregtech.api.enums.ItemList; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Utility; -import items.ErrorItem; -import items.MetaItem_CraftingComponent; -import items.MetaItem_ReactorComponent; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidRegistry; -import tileentities.GTMTE_FluidMultiStorage; -import tileentities.GTMTE_ModularNuclearReactor; -import tileentities.GTMTE_SOFuelCellMK1; -import tileentities.GTMTE_SOFuelCellMK2; -import util.Util; - -@Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION, - dependencies = "required-after:IC2; " - + "required-after:gregtech" - ) -public class KekzCore { - - public static final String NAME = "KekzTech"; - public static final String MODID = "kekztech"; - public static final String VERSION = "0.1a"; - - private GTMTE_SOFuelCellMK1 sofc1; - private GTMTE_SOFuelCellMK2 sofc2; - private GTMTE_ModularNuclearReactor mdr; - private GTMTE_FluidMultiStorage fms; - - @Mod.Instance("kekztech") - public static KekzCore instance; - - @Mod.EventHandler - public void preInit(FMLPreInitializationEvent event) { - // Items - ErrorItem.getInstance().registerItem(); - MetaItem_ReactorComponent.getInstance().registerItem(); - MetaItem_CraftingComponent.getInstance().registerItem(); - // Blocks - Block_YSZUnit.getInstance().registerBlock(); - Block_GDCUnit.getInstance().registerBlock(); - Block_TFFTCasing.getInstance().registerBlock(); - Block_TFFTStorageFieldBlockT1.getInstance().registerBlock(); - Block_TFFTStorageFieldBlockT2.getInstance().registerBlock(); - Block_TFFTStorageFieldBlockT3.getInstance().registerBlock(); - Block_TFFTStorageFieldBlockT4.getInstance().registerBlock(); - } - - @Mod.EventHandler - public void init(FMLInitializationEvent event ) { - sofc1 = new GTMTE_SOFuelCellMK1(5000, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I"); - sofc2 = new GTMTE_SOFuelCellMK2(5001, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II"); - mdr = new GTMTE_ModularNuclearReactor(5002, "multimachine.nuclearreactor", "Nuclear Reactor"); - fms = new GTMTE_FluidMultiStorage(5003, "multimachine.tf_fluidtank", "T.F.F.T"); - - } - - @Mod.EventHandler - public void postInit(FMLPostInitializationEvent event) { - System.out.println("Registering KekzTech recipes..."); - - final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); - final MetaItem_ReactorComponent reactorItem = MetaItem_ReactorComponent.getInstance(); - - // Multiblock Controllers - final Object[] mk1_recipe = { - "CCC", "PHP", "FBL", - 'C', OrePrefixes.circuit.get(Materials.Advanced), - 'P', ItemList.Electric_Pump_HV.get(1L, (Object[]) null), - 'H', ItemList.Hull_HV.get(1L, (Object[]) null), - 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.StainlessSteel, 1), - 'B', GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.Gold, 1), - 'L', GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.StainlessSteel, 1) - }; - GT_ModHandler.addCraftingRecipe(sofc1.getStackForm(1), mk1_recipe); - final Object[] mk2_recipe = { - "CCC", "PHP", "FBL", - 'C', OrePrefixes.circuit.get(Materials.Master), - 'P', ItemList.Electric_Pump_IV.get(1L, (Object[]) null), - 'H', ItemList.Hull_IV.get(1L, (Object[]) null), - 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.Ultimate, 1), - 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1), - 'L', GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Ultimate, 1) - }; - GT_ModHandler.addCraftingRecipe(sofc2.getStackForm(1), mk2_recipe); - final Object[] tfft_recipe = { - "HFH", "PVP", "CFC", - 'H', OrePrefixes.pipeMedium.get(Materials.StainlessSteel), - 'F', ItemList.Field_Generator_LV.get(1L, (Object[]) null), - 'P', ItemList.Electric_Pump_HV.get(1L, (Object[]) null), - 'V', OrePrefixes.rotor.get(Materials.VibrantAlloy), - 'C', OrePrefixes.circuit.get(Materials.Advanced) - }; - GT_ModHandler.addCraftingRecipe(fms.getStackForm(1), tfft_recipe); - - // Ceramic Electrolyte Units - final ItemStack[] yszUnit = { - GT_Utility.getIntegratedCircuit(6), - craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4), - GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Yttrium, 1), - GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1), - ItemList.Electric_Motor_HV.get(1L, (Object[]) null), - }; - GT_Values.RA.addAssemblerRecipe( - yszUnit, - Materials.Hydrogen.getGas(4000), - new ItemStack(Block_YSZUnit.getInstance(), 1), - 1200, 480); - final ItemStack[] gdcUnit = { - GT_Utility.getIntegratedCircuit(6), - craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 8), - GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), - GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Desh, new ItemStack(ErrorItem.getInstance(), 1), 1), - ItemList.Electric_Motor_IV.get(1L, (Object[]) null), - }; - GT_Values.RA.addAssemblerRecipe( - gdcUnit, - Materials.Hydrogen.getGas(16000), - new ItemStack(Block_GDCUnit.getInstance(), 1), - 2400, 1920); - - // T.F.F.T Structure blocks - final ItemStack[] tfftcasing = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DarkSteel, 3), - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderPearl, 3), - GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1), - }; - GT_Values.RA.addAssemblerRecipe( - tfftcasing, - FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144), - new ItemStack(Block_TFFTCasing.getInstance(), 1), - 200, 256); - final ItemStack[] tfftstoragefield1 = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Basic, 4), - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 1), - GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 1), - ItemList.Electric_Pump_LV.get(1L, (Object[]) null) - }; - GT_Values.RA.addAssemblerRecipe( - tfftstoragefield1, - FluidRegistry.getFluidStack("molten.glass", 144), - new ItemStack(Block_TFFTStorageFieldBlockT1.getInstance(), 1), - 200, 256); - final ItemStack[] tfftstoragefield2 = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Good, 4), - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 4), - GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.StainlessSteel, 1), - ItemList.Electric_Pump_MV.get(1L, (Object[]) null) - }; - GT_Values.RA.addAssemblerRecipe( - tfftstoragefield2, - FluidRegistry.getFluidStack("molten.plastic", 144), - new ItemStack(Block_TFFTStorageFieldBlockT2.getInstance(), 1), - 200, 480); - final ItemStack[] tfftstoragefield3 = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 4), - GT_OreDictUnificator.get(OrePrefixes.plate, Materials.VibrantAlloy, 2), - GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Titanium, 1), - ItemList.Field_Generator_LV.get(1L, (Object[]) null), - ItemList.Electric_Pump_HV.get(1L, (Object[]) null) - }; - GT_Values.RA.addAssemblerRecipe( - tfftstoragefield3, - FluidRegistry.getFluidStack("molten.epoxid", 576), - new ItemStack(Block_TFFTStorageFieldBlockT3.getInstance(), 1), - 300, 1920); - final ItemStack[] tfftstoragefield4 = { - GT_Utility.getIntegratedCircuit(6), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 4), - GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.NiobiumTitanium, 1), - GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.TungstenSteel, 1), - ItemList.Field_Generator_HV.get(1L, (Object[]) null), - ItemList.Electric_Pump_EV.get(1L, (Object[]) null) - }; - GT_Values.RA.addAssemblerRecipe( - tfftstoragefield4, - FluidRegistry.getFluidStack("molten.epoxid", 1152), - new ItemStack(Block_TFFTStorageFieldBlockT4.getInstance(), 1), - 400, 4098); - - // Ceramic plates - GT_Values.RA.addAlloySmelterRecipe( - craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 10), - ItemList.Shape_Mold_Plate.get(1, (Object[]) null), - craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 1), - 400, 480); - GT_Values.RA.addFormingPressRecipe( - craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), - ItemList.Shape_Mold_Plate.get(1, (Object[]) null), - craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 1), - 800, 480); - - // Dusts - GT_Values.RA.addMixerRecipe(Materials.Boron.getDust(1), Materials.Arsenic.getDust(1), GT_Utility.getIntegratedCircuit(6), null, - null, null, craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 2), - 100, 1920); - GT_Values.RA.addChemicalRecipe( - Materials.Ammonia.getCells(2), - Materials.CarbonDioxide.getCells(1), - null, - null, - craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), - Util.getStackofAmountFromOreDict("cellEmpty", 3), - 400, 30); - GT_Values.RA.addChemicalRecipe( - craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), - Materials.Diamond.getDust(16), - Materials.CarbonDioxide.getGas(1000), - null, - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 1), - null, 1200, 480); - GT_Values.RA.addChemicalRecipe( - Materials.Yttrium.getDust(1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), - null, craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), null, - 400, 30); - GT_Values.RA.addChemicalRecipe( - Util.getStackofAmountFromOreDict("dustZirconium", 1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(2000), - null, craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 1), null, - 400, 30); - GT_Values.RA.addChemicalRecipe( - Materials.Cerium.getDust(2), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), - null, craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 2), null, - 400, 30); - GT_Values.RA.addMixerRecipe( - craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), - craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 5), - GT_Utility.getIntegratedCircuit(6), null, null, null, - craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 6), - 400, 96); - GT_Values.RA.addMixerRecipe( - GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), - craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9), - GT_Utility.getIntegratedCircuit(6), null, null, null, - craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), - 400, 1920); - - // Crystals - GT_Values.RA.addAutoclaveRecipe( - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), - Materials.CarbonDioxide.getGas(16000), - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680); - GT_Values.RA.addAutoclaveRecipe( - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), - Materials.CarbonDioxide.getGas(16000), - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 1920); - - // Heat Pipes - GT_Values.RA.addLatheRecipe( - GT_OreDictUnificator.get(OrePrefixes.stick, Materials.AnnealedCopper, 1), - craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()), - null, 120, 120); - GT_Values.RA.addLatheRecipe( - GT_OreDictUnificator.get(OrePrefixes.stick, Materials.Silver, 1), - craftingItem.getStackFromDamage(Items.SilverHeatPipe.getMetaID()), - null, 120, 480); - GT_Values.RA.addLatheRecipe( - craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4), - craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()), - null, 1200, 1920); - GT_Values.RA.addLatheRecipe( - craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4), - craftingItem.getStackFromDamage(Items.DiamondHeatPipe.getMetaID()), - null, 1200, 7680); - - // Heat Vents - final ItemStack[] t1HeatVent = { - craftingItem.getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 2), - ItemList.Electric_Motor_MV.get(1L, (Object[]) null), - GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 1), - GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 2), - GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 8), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Good, 1), - GT_Utility.getIntegratedCircuit(6) - }; - GT_Values.RA.addAssemblerRecipe( - t1HeatVent, - FluidRegistry.getFluidStack("molten.copper", 144), - reactorItem.getStackFromDamage(Items.T1HeatVent.getMetaID()), - 200, 120); - final ItemStack[] t2HeatVent = { - craftingItem.getStackOfAmountFromDamage(Items.SilverHeatPipe.getMetaID(), 2), - ItemList.Electric_Motor_HV.get(1L, (Object[]) null), - GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 1), - GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 2), - GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 8), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 1), - GT_Utility.getIntegratedCircuit(6) - }; - GT_Values.RA.addAssemblerRecipe( - t2HeatVent, - FluidRegistry.getFluidStack("molten.silver", 144), - reactorItem.getStackFromDamage(Items.T2HeatVent.getMetaID()), - 400, 480); - final ItemStack[] t3HeatVent = { - craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideHeatPipe.getMetaID(), 2), - ItemList.Electric_Motor_IV.get(1L, (Object[]) null), - GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.TungstenSteel, new ItemStack(ErrorItem.getInstance(), 1), 1), - GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.TungstenSteel, new ItemStack(ErrorItem.getInstance(), 1), 2), - GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Tungsten, new ItemStack(ErrorItem.getInstance(), 1), 8), - GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1), - GT_Utility.getIntegratedCircuit(6) - }; - GT_Values.RA.addAssemblerRecipe( - t3HeatVent, - FluidRegistry.getFluidStack("molten.gallium", 576), - reactorItem.getStackFromDamage(Items.T3HeatVent.getMetaID()), - 800, 7680); - - System.out.println("...done"); - } - - - - - - - - - - - - - - - - - - - - - - - -} +package kekztech; + +import blocks.Block_GDCUnit; +import blocks.Block_TFFTCasing; +import blocks.Block_TFFTStorageFieldBlockT1; +import blocks.Block_TFFTStorageFieldBlockT2; +import blocks.Block_TFFTStorageFieldBlockT3; +import blocks.Block_TFFTStorageFieldBlockT4; +import blocks.Block_YSZUnit; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Utility; +import items.ErrorItem; +import items.MetaItem_CraftingComponent; +import items.MetaItem_ReactorComponent; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import tileentities.GTMTE_FluidMultiStorage; +import tileentities.GTMTE_ModularNuclearReactor; +import tileentities.GTMTE_SOFuelCellMK1; +import tileentities.GTMTE_SOFuelCellMK2; +import util.Util; + +@Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION, + dependencies = "required-after:IC2; " + + "required-after:gregtech" + ) +public class KekzCore { + + public static final String NAME = "KekzTech"; + public static final String MODID = "kekztech"; + public static final String VERSION = "0.1a"; + + @Mod.Instance("kekztech") + public static KekzCore instance; + + private GTMTE_SOFuelCellMK1 sofc1; + private GTMTE_SOFuelCellMK2 sofc2; + private GTMTE_ModularNuclearReactor mdr; + private GTMTE_FluidMultiStorage fms; + + @Mod.EventHandler + public void preInit(FMLPreInitializationEvent event) { + // Items + ErrorItem.getInstance().registerItem(); + MetaItem_ReactorComponent.getInstance().registerItem(); + MetaItem_CraftingComponent.getInstance().registerItem(); + // Blocks + Block_YSZUnit.getInstance().registerBlock(); + Block_GDCUnit.getInstance().registerBlock(); + Block_TFFTCasing.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT1.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT2.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT3.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT4.getInstance().registerBlock(); + } + + @Mod.EventHandler + public void init(FMLInitializationEvent event ) { + // Multiblock controllers + sofc1 = new GTMTE_SOFuelCellMK1(5000, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I"); + sofc2 = new GTMTE_SOFuelCellMK2(5001, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II"); + mdr = new GTMTE_ModularNuclearReactor(5002, "multimachine.nuclearreactor", "Nuclear Reactor"); + fms = new GTMTE_FluidMultiStorage(5003, "multimachine.tf_fluidtank", "T.F.F.T"); + } + + @Mod.EventHandler + public void postInit(FMLPostInitializationEvent event) { + System.out.println("Registering KekzTech recipes..."); + + final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); + final MetaItem_ReactorComponent reactorItem = MetaItem_ReactorComponent.getInstance(); + + // Multiblock Controllers + final Object[] mk1_recipe = { + "CCC", "PHP", "FBL", + 'C', OrePrefixes.circuit.get(Materials.Advanced), + 'P', ItemList.Electric_Pump_HV.get(1L, (Object[]) null), + 'H', ItemList.Hull_HV.get(1L, (Object[]) null), + 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.StainlessSteel, 1), + 'B', GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.Gold, 1), + 'L', GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.StainlessSteel, 1) + }; + GT_ModHandler.addCraftingRecipe(sofc1.getStackForm(1), mk1_recipe); + final Object[] mk2_recipe = { + "CCC", "PHP", "FBL", + 'C', OrePrefixes.circuit.get(Materials.Master), + 'P', ItemList.Electric_Pump_IV.get(1L, (Object[]) null), + 'H', ItemList.Hull_IV.get(1L, (Object[]) null), + 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.Ultimate, 1), + 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1), + 'L', GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Ultimate, 1) + }; + GT_ModHandler.addCraftingRecipe(sofc2.getStackForm(1), mk2_recipe); + final Object[] tfft_recipe = { + "HFH", "PVP", "CFC", + 'H', OrePrefixes.pipeMedium.get(Materials.StainlessSteel), + 'F', ItemList.Field_Generator_LV.get(1L, (Object[]) null), + 'P', ItemList.Electric_Pump_HV.get(1L, (Object[]) null), + 'V', OrePrefixes.rotor.get(Materials.VibrantAlloy), + 'C', OrePrefixes.circuit.get(Materials.Advanced) + }; + GT_ModHandler.addCraftingRecipe(fms.getStackForm(1), tfft_recipe); + + // Ceramic Electrolyte Units + final ItemStack[] yszUnit = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Yttrium, 1), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1), + ItemList.Electric_Motor_HV.get(1L, (Object[]) null), + }; + GT_Values.RA.addAssemblerRecipe( + yszUnit, + Materials.Hydrogen.getGas(4000), + new ItemStack(Block_YSZUnit.getInstance(), 1), + 1200, 480); + final ItemStack[] gdcUnit = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 8), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Desh, new ItemStack(ErrorItem.getInstance(), 1), 1), + ItemList.Electric_Motor_IV.get(1L, (Object[]) null), + }; + GT_Values.RA.addAssemblerRecipe( + gdcUnit, + Materials.Hydrogen.getGas(16000), + new ItemStack(Block_GDCUnit.getInstance(), 1), + 2400, 1920); + + // T.F.F.T Structure blocks + final ItemStack[] tfftcasing = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DarkSteel, 3), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderPearl, 3), + GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1), + }; + GT_Values.RA.addAssemblerRecipe( + tfftcasing, + FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144), + new ItemStack(Block_TFFTCasing.getInstance(), 1), + 200, 256); + final ItemStack[] tfftstoragefield1 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Basic, 4), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 1), + ItemList.Electric_Pump_LV.get(1L, (Object[]) null) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield1, + FluidRegistry.getFluidStack("molten.glass", 144), + new ItemStack(Block_TFFTStorageFieldBlockT1.getInstance(), 1), + 200, 256); + final ItemStack[] tfftstoragefield2 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Good, 4), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 4), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.StainlessSteel, 1), + ItemList.Electric_Pump_MV.get(1L, (Object[]) null) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield2, + FluidRegistry.getFluidStack("molten.plastic", 144), + new ItemStack(Block_TFFTStorageFieldBlockT2.getInstance(), 1), + 200, 480); + final ItemStack[] tfftstoragefield3 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 4), + GT_OreDictUnificator.get(OrePrefixes.plate, Materials.VibrantAlloy, 2), + GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Titanium, 1), + ItemList.Field_Generator_LV.get(1L, (Object[]) null), + ItemList.Electric_Pump_HV.get(1L, (Object[]) null) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield3, + FluidRegistry.getFluidStack("molten.epoxid", 576), + new ItemStack(Block_TFFTStorageFieldBlockT3.getInstance(), 1), + 300, 1920); + final ItemStack[] tfftstoragefield4 = { + GT_Utility.getIntegratedCircuit(6), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 4), + GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.NiobiumTitanium, 1), + GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.TungstenSteel, 1), + ItemList.Field_Generator_HV.get(1L, (Object[]) null), + ItemList.Electric_Pump_EV.get(1L, (Object[]) null) + }; + GT_Values.RA.addAssemblerRecipe( + tfftstoragefield4, + FluidRegistry.getFluidStack("molten.epoxid", 1152), + new ItemStack(Block_TFFTStorageFieldBlockT4.getInstance(), 1), + 400, 4098); + + // Ceramic plates + GT_Values.RA.addAlloySmelterRecipe( + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 10), + ItemList.Shape_Mold_Plate.get(1, (Object[]) null), + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 1), + 400, 480); + GT_Values.RA.addFormingPressRecipe( + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), + ItemList.Shape_Mold_Plate.get(1, (Object[]) null), + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 1), + 800, 480); + + // Dusts + GT_Values.RA.addMixerRecipe(Materials.Boron.getDust(1), Materials.Arsenic.getDust(1), GT_Utility.getIntegratedCircuit(6), null, + null, null, craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 2), + 100, 1920); + GT_Values.RA.addChemicalRecipe( + Materials.Ammonia.getCells(2), + Materials.CarbonDioxide.getCells(1), + null, + null, + craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), + Util.getStackofAmountFromOreDict("cellEmpty", 3), + 400, 30); + GT_Values.RA.addChemicalRecipe( + craftingItem.getStackOfAmountFromDamage(Items.AmineCarbamiteDust.getMetaID(), 1), + Materials.Diamond.getDust(16), + Materials.CarbonDioxide.getGas(1000), + null, + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 1), + null, 1200, 480); + GT_Values.RA.addChemicalRecipe( + Materials.Yttrium.getDust(1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), + null, craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), null, + 400, 30); + GT_Values.RA.addChemicalRecipe( + Util.getStackofAmountFromOreDict("dustZirconium", 1), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(2000), + null, craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 1), null, + 400, 30); + GT_Values.RA.addChemicalRecipe( + Materials.Cerium.getDust(2), GT_Utility.getIntegratedCircuit(6), Materials.Oxygen.getGas(3000), + null, craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 2), null, + 400, 30); + GT_Values.RA.addMixerRecipe( + craftingItem.getStackOfAmountFromDamage(Items.YttriaDust.getMetaID(), 1), + craftingItem.getStackOfAmountFromDamage(Items.ZirconiaDust.getMetaID(), 5), + GT_Utility.getIntegratedCircuit(6), null, null, null, + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 6), + 400, 96); + GT_Values.RA.addMixerRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1), + craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9), + GT_Utility.getIntegratedCircuit(6), null, null, null, + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), + 400, 1920); + + // Crystals + GT_Values.RA.addAutoclaveRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), + Materials.CarbonDioxide.getGas(16000), + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680); + GT_Values.RA.addAutoclaveRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), + Materials.CarbonDioxide.getGas(16000), + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 1920); + + // Heat Pipes + GT_Values.RA.addLatheRecipe( + GT_OreDictUnificator.get(OrePrefixes.stick, Materials.AnnealedCopper, 1), + craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()), + null, 120, 120); + GT_Values.RA.addLatheRecipe( + GT_OreDictUnificator.get(OrePrefixes.stick, Materials.Silver, 1), + craftingItem.getStackFromDamage(Items.SilverHeatPipe.getMetaID()), + null, 120, 480); + GT_Values.RA.addLatheRecipe( + craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4), + craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()), + null, 1200, 1920); + GT_Values.RA.addLatheRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4), + craftingItem.getStackFromDamage(Items.DiamondHeatPipe.getMetaID()), + null, 1200, 7680); + + // Heat Vents + final ItemStack[] t1HeatVent = { + craftingItem.getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 2), + ItemList.Electric_Motor_MV.get(1L, (Object[]) null), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 1), + GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 2), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Steel, new ItemStack(ErrorItem.getInstance(), 1), 8), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Good, 1), + GT_Utility.getIntegratedCircuit(6) + }; + GT_Values.RA.addAssemblerRecipe( + t1HeatVent, + FluidRegistry.getFluidStack("molten.copper", 144), + reactorItem.getStackFromDamage(Items.T1HeatVent.getMetaID()), + 200, 120); + final ItemStack[] t2HeatVent = { + craftingItem.getStackOfAmountFromDamage(Items.SilverHeatPipe.getMetaID(), 2), + ItemList.Electric_Motor_HV.get(1L, (Object[]) null), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 1), + GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 2), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Aluminium, new ItemStack(ErrorItem.getInstance(), 1), 8), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 1), + GT_Utility.getIntegratedCircuit(6) + }; + GT_Values.RA.addAssemblerRecipe( + t2HeatVent, + FluidRegistry.getFluidStack("molten.silver", 144), + reactorItem.getStackFromDamage(Items.T2HeatVent.getMetaID()), + 400, 480); + final ItemStack[] t3HeatVent = { + craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideHeatPipe.getMetaID(), 2), + ItemList.Electric_Motor_IV.get(1L, (Object[]) null), + GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.TungstenSteel, new ItemStack(ErrorItem.getInstance(), 1), 1), + GT_OreDictUnificator.get(OrePrefixes.plateDouble, Materials.TungstenSteel, new ItemStack(ErrorItem.getInstance(), 1), 2), + GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Tungsten, new ItemStack(ErrorItem.getInstance(), 1), 8), + GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 1), + GT_Utility.getIntegratedCircuit(6) + }; + GT_Values.RA.addAssemblerRecipe( + t3HeatVent, + FluidRegistry.getFluidStack("molten.gallium", 576), + reactorItem.getStackFromDamage(Items.T3HeatVent.getMetaID()), + 800, 7680); + + System.out.println("...done"); + } + +} diff --git a/src/main/java/kekztech/MultiFluidHandler.java b/src/main/java/kekztech/MultiFluidHandler.java new file mode 100644 index 0000000000..9b4d8b1bc4 --- /dev/null +++ b/src/main/java/kekztech/MultiFluidHandler.java @@ -0,0 +1,138 @@ +package kekztech; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.fluids.FluidStack; + +public class MultiFluidHandler { + + private static final int MAX_DISTINCT_FLUIDS = 25; + + private final List fluids = new ArrayList<>(); + private final int capacityPerFluid; + + public MultiFluidHandler(int capacityPerFluid) { + this.capacityPerFluid = capacityPerFluid; + } + + public MultiFluidHandler(int capacityPerFluid, List fluids) { + this.capacityPerFluid = capacityPerFluid; + this.fluids.addAll(fluids); + } + + public boolean contains(FluidStack fluid) { + return fluids.contains(fluid); + } + + public int getCapacity() { + return capacityPerFluid; + } + + public List getFluids(){ + return fluids; + } + + public FluidStack getFluid(int slot) { + return fluids.get(slot); + } + + public NBTTagCompound getAsNBTTag(NBTTagCompound nbt) { + nbt = (nbt == null) ? new NBTTagCompound() : nbt; + int c = 0; + for(FluidStack f : fluids) { + nbt.setTag("" + c, f.writeToNBT(new NBTTagCompound())); + } + return nbt; + } + + public ArrayList getInfoData() { + final ArrayList lines = new ArrayList<>(fluids.size() + 1); + lines.add(EnumChatFormatting.YELLOW + "Stored Fluids:" + EnumChatFormatting.RESET); + for(int i = 0; i < fluids.size(); i++) { + lines.add(i + " - " + fluids.get(i).getLocalizedName() + ": " + + fluids.get(i).amount + "L (" + + (Math.round(100.0f * fluids.get(i).amount / getCapacity())) + "%)"); + } + lines.add(EnumChatFormatting.YELLOW + "Operational Data:" + EnumChatFormatting.RESET); + + return lines; + } + + public int pushFluid(FluidStack push) { + if(fluids.size() == MAX_DISTINCT_FLUIDS && !contains(push)) { + return 0; + } else if (fluids.size() < MAX_DISTINCT_FLUIDS && !contains(push)) { + final int fit = Math.min(getCapacity(), push.amount); + fluids.add(new FluidStack(push.getFluid(), fit)); + return fit; + } else { + final FluidStack fs = fluids.get(fluids.indexOf(push)); + final int remcap = getCapacity() - fs.amount; + final int fit = Math.min(remcap, push.amount); + fs.amount += fit; + return fit; + } + } + + public int pushFluid(FluidStack push, int slot) { + if(slot < 0 || slot >= MAX_DISTINCT_FLUIDS) { + return 0; + } + if(!fluids.get(slot).equals(push)) { + return 0; + } else { + final FluidStack fs = fluids.get(slot); + final int remcap = getCapacity() - fs.amount; + final int fit = Math.min(remcap, push.amount); + fs.amount += fit; + return fit; + } + } + + public int pullFluid(FluidStack pull) { + if(!contains(pull)) { + return 0; + } else { + final FluidStack pulled = fluids.get(fluids.indexOf(pull)); + final int rec = Math.min(pull.amount, pulled.amount); + if(pulled.amount <= rec) { + fluids.remove(pulled); + } else { + pulled.amount -= rec; + } + return rec; + } + } + + public int pullFluid(FluidStack pull, int slot) { + if(slot < 0 || slot >= MAX_DISTINCT_FLUIDS) { + return 0; + } + if(!fluids.get(slot).equals(pull)) { + return 0; + } else { + final FluidStack pulled = fluids.get(slot); + final int rec = Math.min(pull.amount, pulled.amount); + if(pulled.amount <= rec) { + fluids.remove(pulled); + } else { + pulled.amount -= rec; + } + return rec; + } + } + + public boolean couldPush(FluidStack push) { + if(fluids.size() == MAX_DISTINCT_FLUIDS && !contains(push)) { + return false; + } else if (fluids.size() < MAX_DISTINCT_FLUIDS && !contains(push)) { + return Math.min(getCapacity(), push.amount) > 0; + } else { + final int remcap = getCapacity() - fluids.get(fluids.indexOf(push)).amount; + return Math.min(remcap, push.amount) > 0; + } + } +} -- cgit