diff options
| author | Christina Berchtold <kekzdealer@gmail.com> | 2019-06-08 00:22:03 +0200 |
|---|---|---|
| committer | Christina Berchtold <kekzdealer@gmail.com> | 2019-06-08 00:22:03 +0200 |
| commit | 528d3633ab5b7534325281759ffeec4772f68da9 (patch) | |
| tree | 478a79f7eefa827f7e3752c6483a1880652ed96c /src/main/java/kekztech | |
| parent | 57c5da35a3a6b5cbf6cf36d6ab9e4886fc1e6342 (diff) | |
| download | GT5-Unofficial-528d3633ab5b7534325281759ffeec4772f68da9.tar.gz GT5-Unofficial-528d3633ab5b7534325281759ffeec4772f68da9.tar.bz2 GT5-Unofficial-528d3633ab5b7534325281759ffeec4772f68da9.zip | |
I haven't commited in a while D;
Diffstat (limited to 'src/main/java/kekztech')
| -rw-r--r-- | src/main/java/kekztech/ErrorItem.java | 41 | ||||
| -rw-r--r-- | src/main/java/kekztech/GTMultiController.java | 300 | ||||
| -rw-r--r-- | src/main/java/kekztech/GTRecipe.java | 103 | ||||
| -rw-r--r-- | src/main/java/kekztech/Items.java | 43 | ||||
| -rw-r--r-- | src/main/java/kekztech/KekzCore.java | 93 | ||||
| -rw-r--r-- | src/main/java/kekztech/MetaItem_CraftingComponent.java | 103 | ||||
| -rw-r--r-- | src/main/java/kekztech/MetaItem_ReactorComponent.java | 139 | ||||
| -rw-r--r-- | src/main/java/kekztech/Util.java | 50 |
8 files changed, 872 insertions, 0 deletions
diff --git a/src/main/java/kekztech/ErrorItem.java b/src/main/java/kekztech/ErrorItem.java new file mode 100644 index 0000000000..7047d3f057 --- /dev/null +++ b/src/main/java/kekztech/ErrorItem.java @@ -0,0 +1,41 @@ +package kekztech; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ErrorItem extends Item { + + private static final ErrorItem instance = new ErrorItem(); + + private ErrorItem() { + // I am a singleton + } + + public static ErrorItem getInstance() { + return instance; + } + + public void registerItem() { + super.setHasSubtypes(false); + final String unlocalizedName = "kekztech_error_item"; + super.setUnlocalizedName(unlocalizedName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setMaxStackSize(64); + super.setTextureName(KekzCore.MODID + ":" + "Error"); + GameRegistry.registerItem(getInstance(), unlocalizedName); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) { + list.add("Placeholder item in case something went wrong"); + list.add("You may report this to:"); + list.add("https://github.com/kekzdealer/KekzTech"); + } + +} diff --git a/src/main/java/kekztech/GTMultiController.java b/src/main/java/kekztech/GTMultiController.java new file mode 100644 index 0000000000..e27c2c39bd --- /dev/null +++ b/src/main/java/kekztech/GTMultiController.java @@ -0,0 +1,300 @@ +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; + +public abstract class GTMultiController { + + private final GTRecipe GT_RECIPE = new GTRecipe(); + + private boolean running = false; + private boolean structureValid = false; + + public final ArrayList<GT_MetaTileEntity_Hatch_Dynamo> mDynamoHatches = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_Energy> mEnergyHatches = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_Input> mInputHatches = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_Output> mOutputHatches = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_InputBus> mInputBusses = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_OutputBus> mOutputBusses = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_Muffler> mMufflerHatches = new ArrayList<>(); + public final ArrayList<GT_MetaTileEntity_Hatch_Maintenance> 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 new file mode 100644 index 0000000000..4b287499f5 --- /dev/null +++ b/src/main/java/kekztech/GTRecipe.java @@ -0,0 +1,103 @@ +package kekztech; + +import java.util.ArrayList; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; + +public class GTRecipe { + + private int euPerTick = 0; + private int duration = 0; + + private ArrayList<ItemStack> inputItems; + private ArrayList<FluidStack> inputFluids; + private ArrayList<ItemStack> outputItems; + private ArrayList<FluidStack> 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<ItemStack>(); + inputItems.add(inputItem); + } else { + inputItems.add(inputItem); + } + return this; + } + + public GTRecipe addOutputItem(ItemStack outputItem) { + if(outputItems == null) { + outputItems = new ArrayList<ItemStack>(); + outputItems.add(outputItem); + } else { + outputItems.add(outputItem); + } + return this; + } + + public GTRecipe addInputFluid(FluidStack inputFluid) { + if(inputFluids == null) { + inputFluids = new ArrayList<FluidStack>(); + inputFluids.add(inputFluid); + } else { + inputFluids.add(inputFluid); + } + return this; + } + + public GTRecipe addOutputFluid(FluidStack outputFluid) { + if(outputFluids == null) { + outputFluids = new ArrayList<FluidStack>(); + 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 new file mode 100644 index 0000000000..f7ce2e883a --- /dev/null +++ b/src/main/java/kekztech/Items.java @@ -0,0 +1,43 @@ +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), + // Error Item + Error(9); + + 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 new file mode 100644 index 0000000000..8d191a5901 --- /dev/null +++ b/src/main/java/kekztech/KekzCore.java @@ -0,0 +1,93 @@ +package kekztech; + +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 net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidRegistry; +import reactor.items.CoolantCell; +import reactor.items.FuelRod; +import reactor.items.HeatExchanger; +import reactor.items.HeatPipe; +import reactor.items.HeatVent; +import reactor.items.NeutronReflector; + +@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; + + @Mod.EventHandler + public void preInit(FMLPreInitializationEvent event) { + ErrorItem.getInstance().registerItem(); + MetaItem_ReactorComponent.getInstance().registerItem(); + MetaItem_CraftingComponent.getInstance().registerItem(); + } + + @Mod.EventHandler + public void init(FMLInitializationEvent event ) { + + } + + @Mod.EventHandler + public void postInit(FMLPostInitializationEvent event) { + for(GTRecipe recipe : HeatPipe.RECIPE) { + GT_Values.RA.addLatheRecipe(recipe.getInputItem(), recipe.getOutputItem(), null, recipe.getDuration(), recipe.getEuPerTick()); + } + + for(GTRecipe recipe : HeatExchanger.RECIPE) { + GT_Values.RA.addAssemblerRecipe( + recipe.getInputItems(), recipe.getInputFluid(), recipe.getOutputItem(), recipe.getDuration(), recipe.getEuPerTick()); + } + + // Heat Vents + final ItemStack[] t1HeatVent = { + MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 2), + ItemList.Electric_Motor_MV.get(1L, (Object[]) null), + Util.getStackofAmountFromOreDict("rotorSteel", 1), + Util.getStackofAmountFromOreDict("plateDoubleSteel", 2), + Util.getStackofAmountFromOreDict("screwSteel", 8), + Util.getStackofAmountFromOreDict("circuitGood", 1) + }; + GT_Values.RA.addAssemblerRecipe(t1HeatVent, + FluidRegistry.getFluidStack("molten.copper", 144), + MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1HeatVent.getMetaID()), + 200, 120 + ); + + } + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/kekztech/MetaItem_CraftingComponent.java b/src/main/java/kekztech/MetaItem_CraftingComponent.java new file mode 100644 index 0000000000..89a015998f --- /dev/null +++ b/src/main/java/kekztech/MetaItem_CraftingComponent.java @@ -0,0 +1,103 @@ +package kekztech; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import reactor.items.HeatPipe; + +public class MetaItem_CraftingComponent extends Item { + + private static MetaItem_CraftingComponent instance = new MetaItem_CraftingComponent(); + private final IIcon[] icons = new IIcon[16]; + + private MetaItem_CraftingComponent() { + // I am a singleton + } + + public static MetaItem_CraftingComponent getInstance() { + return instance; + } + + public void registerItem() { + super.setHasSubtypes(true); + final String unlocalizedName = "kekztech_crafting_item"; + super.setUnlocalizedName(unlocalizedName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setMaxStackSize(64); + GameRegistry.registerItem(getInstance(), unlocalizedName); + } + + @Override + public void registerIcons(IIconRegister reg) { + int counter = 0; + // Raw heat pipes + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + HeatPipe.RESOURCE_NAMES[0]); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + HeatPipe.RESOURCE_NAMES[1]); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + HeatPipe.RESOURCE_NAMES[2]); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + HeatPipe.RESOURCE_NAMES[3]); + // Dust + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "BoronArsenideDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "IsotopicallyPureDiamondDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "AmineCarbamateDust"); + // Crystal + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "BoronArsenideCrystal"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "IsotopicallyPureDiamondCrystal"); + // Ceramics + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "YSZCeramicDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "GDCCeramicDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "YttriaDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "ZirconiaDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "CeriaDust"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "YSZCeramicPlate"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "GDCCeramicPlate"); + } + + @Override + public IIcon getIconFromDamage(int meta) { + return icons[meta]; + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < icons.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) { + list.add("Crafting component for KekzTech things"); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + return 0.0d; + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return false; + } + + public ItemStack getStackFromDamage(int meta) { + return new ItemStack(getInstance(), 1, meta); + } + + public ItemStack getStackOfAmountFromDamage(int meta, int amount) { + return new ItemStack(getInstance(), amount, meta); + } + +} diff --git a/src/main/java/kekztech/MetaItem_ReactorComponent.java b/src/main/java/kekztech/MetaItem_ReactorComponent.java new file mode 100644 index 0000000000..16f3f1403f --- /dev/null +++ b/src/main/java/kekztech/MetaItem_ReactorComponent.java @@ -0,0 +1,139 @@ +package kekztech; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import reactor.items.CoolantCell; +import reactor.items.FuelRod; +import reactor.items.HeatExchanger; +import reactor.items.HeatVent; +import reactor.items.NeutronReflector; + +public class MetaItem_ReactorComponent extends Item { + + private static MetaItem_ReactorComponent instance = new MetaItem_ReactorComponent(); + private final IIcon[] icons = new IIcon[50]; + + private MetaItem_ReactorComponent() { + // I am a singleton + } + + public static MetaItem_ReactorComponent getInstance() { + return instance; + } + + public void registerItem() { + super.setHasSubtypes(true); + final String unlocalizedName = "kekztech_reactor_item"; + super.setUnlocalizedName(unlocalizedName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setMaxStackSize(1); + GameRegistry.registerItem(getInstance(), unlocalizedName); + } + + @Override + public void registerIcons(IIconRegister reg) { + int counter = 0; + for(String s : HeatVent.RESOURCE_NAMES) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + for(String s : HeatExchanger.RESOURCE_NAME) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + for(String s : FuelRod.RESOURCE_NAME) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + for(String s : FuelRod.RESOURCE_NAME_DEPLETED) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + for(String s : NeutronReflector.RESOURCE_NAME) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + for(String s : CoolantCell.RESOURCE_NAME) { + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + s); + } + } + + @Override + public IIcon getIconFromDamage(int meta) { + return icons[meta]; + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < icons.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) { + list.add("Part for the Modular Nuclear Reactor"); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + NBTTagCompound nbt = (stack.getTagCompound() == null) ? new NBTTagCompound() : stack.getTagCompound(); + if(nbt.getInteger("HEALTH") != 0 && nbt.getInteger("MAXHEALTH") != 0) { + return 1 - (double) (nbt.getInteger("HEALTH") / nbt.getInteger("MAXHEALTH")); + } else { + return 0.0d; + } + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + final int meta = stack.getItemDamage(); + if(meta >= 31 && meta <= 45) { + return false; + } else { + return true; + } + } + + public ItemStack getStackFromDamage(int meta) { + return new ItemStack(getInstance(), 1, meta); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/src/main/java/kekztech/Util.java b/src/main/java/kekztech/Util.java new file mode 100644 index 0000000000..c1243cadd8 --- /dev/null +++ b/src/main/java/kekztech/Util.java @@ -0,0 +1,50 @@ +package kekztech; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; + +public class Util { + + public static ItemStack getStackofAmountFromOreDict(String oredictName, final int amount){ + final ArrayList<ItemStack> list = OreDictionary.getOres(oredictName); + if(!list.isEmpty()) { + final ItemStack ret = list.get(0).copy(); + ret.stackSize = amount; + return ret; + } + System.err.println("Failed to find " + oredictName + " in OreDict"); + return new ItemStack(ErrorItem.getInstance(), amount); + } + + public static ItemStack[] toItemStackArray(List<ItemStack> stacksList) { + if(stacksList.size() == 0) { + return null; + } + + ItemStack[] ret = new ItemStack[stacksList.size()]; + Iterator<ItemStack> iterator = stacksList.iterator(); + for(int i = 0; i < ret.length; i++ ) { + ret[i] = iterator.next(); + } + return ret; + } + + public static FluidStack[] toFluidStackArray(List<FluidStack> stacksList) { + if(stacksList.size() == 0) { + return null; + } + + FluidStack[] ret = new FluidStack[stacksList.size()]; + Iterator<FluidStack> iterator = stacksList.iterator(); + for(int i = 0; i < ret.length; i++ ) { + ret[i] = iterator.next(); + } + return ret; + } + +} |
