From e806e19f3b42df2759231880afff02648908239f Mon Sep 17 00:00:00 2001 From: Christina Berchtold Date: Sun, 9 Jun 2019 23:41:14 +0200 Subject: gradle building and recipes. SOFC fully functional. Probably first release :) --- src/main/java/blocks/Block_GDCUnit.java | 29 +++ src/main/java/blocks/Block_YSZUnit.java | 29 +++ .../container/Container_ModularNuclearReactor.java | 70 +++++ .../GUIContainer_ModularNuclearReactor.java | 53 ++++ src/main/java/fuelcell/Block_GDCUnit.java | 29 --- src/main/java/fuelcell/Block_YSZUnit.java | 29 --- src/main/java/fuelcell/GTMTE_SOFuelCellMK1.java | 233 ----------------- src/main/java/fuelcell/GTMTE_SOFuelCellMK2.java | 226 ---------------- src/main/java/items/ErrorItem.java | 42 +++ .../java/items/MetaItem_CraftingComponent.java | 103 ++++++++ src/main/java/items/MetaItem_ReactorComponent.java | 140 ++++++++++ src/main/java/kekztech/ErrorItem.java | 41 --- src/main/java/kekztech/GTMultiController.java | 5 + src/main/java/kekztech/Items.java | 7 +- src/main/java/kekztech/KekzCore.java | 202 +++++++++++++-- .../java/kekztech/MetaItem_CraftingComponent.java | 103 -------- .../java/kekztech/MetaItem_ReactorComponent.java | 139 ---------- src/main/java/kekztech/Util.java | 1 + .../reactor/Container_ModularNuclearReactor.java | 68 ----- .../java/reactor/GTMTE_ModularNuclearReactor.java | 183 ------------- .../GUIContainer_ModularNuclearReactor.java | 53 ---- src/main/java/reactor/items/CoolantCell.java | 2 +- src/main/java/reactor/items/FuelRod.java | 2 +- src/main/java/reactor/items/HeatExchanger.java | 4 +- src/main/java/reactor/items/HeatPipe.java | 29 --- src/main/java/reactor/items/HeatVent.java | 4 +- src/main/java/reactor/items/NeutronReflector.java | 2 +- .../tileentities/GTMTE_ModularNuclearReactor.java | 185 ++++++++++++++ .../java/tileentities/GTMTE_SOFuelCellMK1.java | 284 +++++++++++++++++++++ .../java/tileentities/GTMTE_SOFuelCellMK2.java | 283 ++++++++++++++++++++ 30 files changed, 1416 insertions(+), 1164 deletions(-) create mode 100644 src/main/java/blocks/Block_GDCUnit.java create mode 100644 src/main/java/blocks/Block_YSZUnit.java create mode 100644 src/main/java/container/Container_ModularNuclearReactor.java create mode 100644 src/main/java/container/GUIContainer_ModularNuclearReactor.java delete mode 100644 src/main/java/fuelcell/Block_GDCUnit.java delete mode 100644 src/main/java/fuelcell/Block_YSZUnit.java delete mode 100644 src/main/java/fuelcell/GTMTE_SOFuelCellMK1.java delete mode 100644 src/main/java/fuelcell/GTMTE_SOFuelCellMK2.java create mode 100644 src/main/java/items/ErrorItem.java create mode 100644 src/main/java/items/MetaItem_CraftingComponent.java create mode 100644 src/main/java/items/MetaItem_ReactorComponent.java delete mode 100644 src/main/java/kekztech/ErrorItem.java delete mode 100644 src/main/java/kekztech/MetaItem_CraftingComponent.java delete mode 100644 src/main/java/kekztech/MetaItem_ReactorComponent.java delete mode 100644 src/main/java/reactor/Container_ModularNuclearReactor.java delete mode 100644 src/main/java/reactor/GTMTE_ModularNuclearReactor.java delete mode 100644 src/main/java/reactor/GUIContainer_ModularNuclearReactor.java delete mode 100644 src/main/java/reactor/items/HeatPipe.java create mode 100644 src/main/java/tileentities/GTMTE_ModularNuclearReactor.java create mode 100644 src/main/java/tileentities/GTMTE_SOFuelCellMK1.java create mode 100644 src/main/java/tileentities/GTMTE_SOFuelCellMK2.java (limited to 'src') diff --git a/src/main/java/blocks/Block_GDCUnit.java b/src/main/java/blocks/Block_GDCUnit.java new file mode 100644 index 0000000000..d11681b1d6 --- /dev/null +++ b/src/main/java/blocks/Block_GDCUnit.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_GDCUnit extends Block { + + private static Block_GDCUnit instance = new Block_GDCUnit(); + + private Block_GDCUnit() { + // I am a singleton + super(Material.iron); + } + + public static Block_GDCUnit getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_gdcceramicelectrolyteunit_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "GDCCeramicElectrolyteUnit"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/blocks/Block_YSZUnit.java b/src/main/java/blocks/Block_YSZUnit.java new file mode 100644 index 0000000000..1e4df40c67 --- /dev/null +++ b/src/main/java/blocks/Block_YSZUnit.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_YSZUnit extends Block { + + private static Block_YSZUnit instance = new Block_YSZUnit(); + + private Block_YSZUnit() { + // I am a singleton + super(Material.iron); + } + + public static Block_YSZUnit getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_yszceramicelectrolyteunit_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "YSZCeramicElectrolyteUnit"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/container/Container_ModularNuclearReactor.java b/src/main/java/container/Container_ModularNuclearReactor.java new file mode 100644 index 0000000000..41b686c901 --- /dev/null +++ b/src/main/java/container/Container_ModularNuclearReactor.java @@ -0,0 +1,70 @@ +package container; + +import gregtech.api.gui.GT_Container_MultiMachine; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import reactor.ButtonSlot; +import tileentities.GTMTE_ModularNuclearReactor; + +public class Container_ModularNuclearReactor extends GT_Container_MultiMachine { + + private final GTMTE_ModularNuclearReactor REACTOR_TILE; + private final IInventory PLAYER_INVENTORY; + + private int nextSlotID = 0; + private final Slot[] REACTOR_SLOTS = new Slot[54]; + private final Slot SLOT_CONFIGURATION; + private final Slot BUTTON_EU_MODE; + private final Slot BUTTON_FLUID_MODE; + private final Slot BUTTON_CONDITION; + private final Slot BUTTON_CONFIGURE; + private final Slot BUTTON_RESET; + + + public Container_ModularNuclearReactor(InventoryPlayer inventoryPlayer, IGregTechTileEntity reactorTile) { + + super(inventoryPlayer, reactorTile); + + this.REACTOR_TILE = (GTMTE_ModularNuclearReactor) reactorTile; + this.PLAYER_INVENTORY = inventoryPlayer; + + // Add the reactor chamber + for(int x = 0; x < 9; x++) { + for(int y = 0; y < 6; y++){ + REACTOR_SLOTS[nextSlotID] = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), (16 + 67 * x), (16 + 67 * y))); + } + } + // Add the configuration slot + SLOT_CONFIGURATION = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + + // Add buttons (they're also slots) + BUTTON_EU_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + BUTTON_FLUID_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + BUTTON_CONDITION = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + BUTTON_CONFIGURE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + BUTTON_RESET = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); + + } + + private int getNextSlotID() { + nextSlotID++; + return nextSlotID - 1; + } + + @Override + public boolean canInteractWith(EntityPlayer p_75145_1_) { + return true; + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + if (REACTOR_TILE.getBaseMetaTileEntity().isServerSide() == false) { + return; + } + } + +} diff --git a/src/main/java/container/GUIContainer_ModularNuclearReactor.java b/src/main/java/container/GUIContainer_ModularNuclearReactor.java new file mode 100644 index 0000000000..58a9ff6caf --- /dev/null +++ b/src/main/java/container/GUIContainer_ModularNuclearReactor.java @@ -0,0 +1,53 @@ +package container; + +import org.lwjgl.opengl.GL11; + +import gregtech.api.gui.GT_GUIContainerMetaTile_Machine; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import kekztech.KekzCore; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIContainer_ModularNuclearReactor extends GT_GUIContainerMetaTile_Machine { + + private final String resourceName; + private final ResourceLocation texture; + + public GUIContainer_ModularNuclearReactor(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, + String aName, String aTextureFile) { + + super(new Container_ModularNuclearReactor(aInventoryPlayer, aTileEntity), aTextureFile); + + this.resourceName = aTextureFile; + this.texture = new ResourceLocation(KekzCore.MODID, "textures/gui/" + resourceName); + } + + @SuppressWarnings("unchecked") + @Override + public void initGui() { + super.initGui(); + + // The parameters of GuiButton are (id, x, y, width, height, text) + super.buttonList.add(new GuiButton(1, 100, 200, 100, 20, "Hello")); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + final int x = (super.width - super.xSize); + final int y = (super.height - super.ySize); + + super.drawTexturedModalRect(x, y, 0, 0, super.xSize, super.ySize); + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) { + + } + +} diff --git a/src/main/java/fuelcell/Block_GDCUnit.java b/src/main/java/fuelcell/Block_GDCUnit.java deleted file mode 100644 index 6107e017a1..0000000000 --- a/src/main/java/fuelcell/Block_GDCUnit.java +++ /dev/null @@ -1,29 +0,0 @@ -package fuelcell; - -import cpw.mods.fml.common.registry.GameRegistry; -import kekztech.KekzCore; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; - -public class Block_GDCUnit extends Block { - - private static Block_GDCUnit instance = new Block_GDCUnit(); - - private Block_GDCUnit() { - // I am a singleton - super(Material.iron); - } - - public static Block_GDCUnit getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_gdcceramicelectrolyteunit_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "GDCCeramicElectrolyteUnit"); - GameRegistry.registerBlock(getInstance(), blockName); - } -} diff --git a/src/main/java/fuelcell/Block_YSZUnit.java b/src/main/java/fuelcell/Block_YSZUnit.java deleted file mode 100644 index c93f6f374a..0000000000 --- a/src/main/java/fuelcell/Block_YSZUnit.java +++ /dev/null @@ -1,29 +0,0 @@ -package fuelcell; - -import cpw.mods.fml.common.registry.GameRegistry; -import kekztech.KekzCore; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; - -public class Block_YSZUnit extends Block { - - private static Block_YSZUnit instance = new Block_YSZUnit(); - - private Block_YSZUnit() { - // I am a singleton - super(Material.iron); - } - - public static Block_YSZUnit getInstance() { - return instance; - } - - public void registerBlock() { - final String blockName = "kekztech_yszceramicelectrolyteunit_block"; - super.setBlockName(blockName); - super.setCreativeTab(CreativeTabs.tabMisc); - super.setBlockTextureName(KekzCore.MODID + ":" + "YSZCeramicElectrolyteUnit"); - GameRegistry.registerBlock(getInstance(), blockName); - } -} diff --git a/src/main/java/fuelcell/GTMTE_SOFuelCellMK1.java b/src/main/java/fuelcell/GTMTE_SOFuelCellMK1.java deleted file mode 100644 index c99f4e7dbc..0000000000 --- a/src/main/java/fuelcell/GTMTE_SOFuelCellMK1.java +++ /dev/null @@ -1,233 +0,0 @@ -package fuelcell; - -import gregtech.api.GregTech_API; -import gregtech.api.enums.Textures; -import gregtech.api.gui.GT_GUIContainer_MultiMachine; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import gregtech.api.objects.GT_RenderedTexture; -import net.minecraft.block.Block; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.ForgeDirection; -import reactor.GUIContainer_ModularNuclearReactor; - -public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { - - final Block CASING = GregTech_API.sBlockCasings4; - final int CASING_META = 1; - final int CASING_TEXTURE_ID = 49; - - public GTMTE_SOFuelCellMK1(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); - - } - - public GTMTE_SOFuelCellMK1(String aName) { - super(aName); - - } - - @Override - public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) { - return new GTMTE_SOFuelCellMK1(super.mName); - } - - @Override - public String[] getDescription() { - return new String[] { - "Oxidizes gas fuels to generate electricity without polluting the environment", - "29,480EU worth of fuel are consumed each second", - "Outputs 1024EU/t and 18,000L/s Steam", - "Additionally requires 360L/s Oxygen gas", - "------------------------------------------", - "Dimensions: 3x3x5 (WxHxL)", - "Structure:", - " 3x YSZ Ceramic Electrolyte Unit (center 1x1x3)", - " 12x Clean Stainless Steel Machine Casing (at least)", - " Controller front center", - " Dynamo Hatch back center", - " Maintenance Hatch, Input Hatches, Output Hatches" - }; - } - - //TODO - @Override - public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, - final byte aColorIndex, final boolean aActive, final boolean aRedstone) { - return aSide == aFacing - ? new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[CASING_TEXTURE_ID], - new GT_RenderedTexture(aActive ? - Textures.BlockIcons.OVERLAY_FRONT_HEAT_EXCHANGER_ACTIVE - : Textures.BlockIcons.OVERLAY_FRONT_HEAT_EXCHANGER)} - : new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[CASING_TEXTURE_ID]}; - } - - //TODO - public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), - "LargeTurbine.png"); - } - - @Override - public boolean isCorrectMachinePart(ItemStack stack) { - return true; - } - - @Override - public boolean checkRecipe(ItemStack stack) { - return false; - } - - //TODO - @Override - public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) { - - final int XDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX; - final int ZDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ; - - int minCasingAmount = 12; - boolean checklist = true; // if this is still true at the end, machine is good to go :) - - // Front slice - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - if(X == 0 && Y == 0) { - continue; // is controller - } - // Get next TE - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + -1; - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - System.out.println("Front slice status: " +checklist +" / casings left of 12: " +minCasingAmount); - - // Middle three slices - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - for(int Z = 0; Z < 3; Z++) { - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + Z; - if(X == 0 && Y == 0) { - if(!thisController.getBlockOffset(THIS_X, 0, THIS_Z).getUnlocalizedName() - .equals("kekztech_yszceramicelectrolyteunit_block")) { - checklist = false; - System.out.println("Expected YSZ Ceramic"); - } - continue; - } - if(Y == 0 && (X == -1 || X == 1)) { - if(!thisController.getBlockOffset(XDIR_BACKFACE, 0, ZDIR_BACKFACE * Z).getUnlocalizedName() - .equals("blockAlloyGlass")) { - checklist = false; - System.out.println("Expected Reinforced Glass"); - } - continue; - } - // Get next TE - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - } - System.out.println("Middle slices status: " +checklist); - - // Back slice - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - // Get next TE - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + 3; - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addDynamoToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - System.out.println("Back slice status: " +checklist); - - if(minCasingAmount > 0) { - checklist = false; - } - - if(this.mDynamoHatches.size() < 1) { - System.out.println("At least one dynamo hatch is required!"); - checklist = false; - } - if(this.mInputHatches.size() < 2) { - System.out.println("At least two input hatches are required!"); - checklist = false; - } - - return checklist; - } - - @Override - public int getMaxEfficiency(ItemStack stack) { - return 10000; - } - - @Override - public int getPollutionPerTick(ItemStack stack) { - return 0; - } - - @Override - public int getDamageToComponent(ItemStack stack) { - return 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack stack) { - return false; - } - -} diff --git a/src/main/java/fuelcell/GTMTE_SOFuelCellMK2.java b/src/main/java/fuelcell/GTMTE_SOFuelCellMK2.java deleted file mode 100644 index 030e926867..0000000000 --- a/src/main/java/fuelcell/GTMTE_SOFuelCellMK2.java +++ /dev/null @@ -1,226 +0,0 @@ -package fuelcell; - -import gregtech.api.GregTech_API; -import gregtech.api.enums.Textures; -import gregtech.api.gui.GT_GUIContainer_MultiMachine; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import gregtech.api.objects.GT_RenderedTexture; -import net.minecraft.block.Block; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.ForgeDirection; -import reactor.GUIContainer_ModularNuclearReactor; - -public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { - - final Block CASING = GregTech_API.sBlockCasings4; - final int CASING_META = 0; - final int CASING_TEXTURE_ID = 48; - - public GTMTE_SOFuelCellMK2(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional); - - } - - public GTMTE_SOFuelCellMK2(String aName) { - super(aName); - - } - - @Override - public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) { - return new GTMTE_SOFuelCellMK2(super.mName); - } - - @Override - public String[] getDescription() { - return new String[] { - "Oxidizes gas fuels to generate electricity without polluting the environment", - "375,680EU worth of fuel are consumed each second", - "Outputs 16,384EU/t and 96,000L/s Steam", - "Additionally requires 1920L/s Oxygen gas", - "------------------------------------------", - "Dimensions: 3x3x5 (WxHxL)", - "Structure:", - " 3x GDC Ceramic Electrolyte Unit (center 1x1x3)", - " 12x Robust Tungstensteel Machine Casing (at least)", - " Controller front center", - " Dynamo Hatch back center", - " Maintenance Hatch, Input Hatches, Output Hatches" - }; - } - - //TODO - @Override - public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, - final byte aColorIndex, final boolean aActive, final boolean aRedstone) { - return aSide == aFacing - ? new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[CASING_TEXTURE_ID], - new GT_RenderedTexture(aActive ? - Textures.BlockIcons.OVERLAY_FRONT_HEAT_EXCHANGER_ACTIVE - : Textures.BlockIcons.OVERLAY_FRONT_HEAT_EXCHANGER)} - : new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[CASING_TEXTURE_ID]}; - } - - //TODO - public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { - return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), - "LargeTurbine.png"); - } - - @Override - public boolean isCorrectMachinePart(ItemStack stack) { - return true; - } - - @Override - public boolean checkRecipe(ItemStack stack) { - return false; - } - - //TODO - @Override - public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) { - - final int XDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX; - final int ZDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ; - - int minCasingAmount = 12; - boolean checklist = true; // if this is still true at the end, machine is good to go :) - - // Front slice - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - if(X == 0 && Y == 0) { - continue; // is controller - } - // Get next TE - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + 0; - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - - // Middle three slices - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - for(int Z = 1; Z <= 3; Z++) { - if(X == 0 && Y == 0) { - if(!thisController.getBlockOffset(XDIR_BACKFACE, 0, ZDIR_BACKFACE * Z).getUnlocalizedName() - .equals("kekztech_yszceramicelectrolyteunit_block")) { - checklist = false; - } - } - if(Y == 0 && (X == -1 || X == 1)) { - if(!thisController.getBlockOffset(XDIR_BACKFACE, 0, ZDIR_BACKFACE * Z).getUnlocalizedName() - .equals("blockAlloyGlass")) { - checklist = false; - } - } - // Get next TE - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + Z; - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - } - - // Back slice - for(int X = -1; X <= 1; X++) { - for(int Y = -1; Y <= 1; Y++) { - // Get next TE - final int THIS_X = XDIR_BACKFACE + X; - final int THIS_Z = ZDIR_BACKFACE + 0; - IGregTechTileEntity currentTE = - thisController.getIGregTechTileEntityOffset(THIS_X, Y, THIS_Z);// x, y ,z - - // Tries to add TE as either of those kinds of hatches. - // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) - if ( !super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addDynamoToMachineList(currentTE, CASING_TEXTURE_ID)) { - - // If it's not a hatch, is it the right casing for this machine? Check block and block meta. - if ((thisController.getBlockOffset(THIS_X, Y, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, Y, THIS_Z) == CASING_META)) { - // Seems to be valid casing. Decrement counter. - minCasingAmount--; - } else { - checklist = false; - } - } - } - } - - if(minCasingAmount > 0) { - checklist = false; - } - - if(this.mDynamoHatches.size() < 1) { - System.out.println("At least one dynamo hatch is required!"); - checklist = false; - } - if(this.mInputHatches.size() < 2) { - System.out.println("At least two input hatches are required!"); - checklist = false; - } - - return checklist; - } - - @Override - public int getMaxEfficiency(ItemStack stack) { - return 10000; - } - - @Override - public int getPollutionPerTick(ItemStack stack) { - return 0; - } - - @Override - public int getDamageToComponent(ItemStack stack) { - return 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack stack) { - return false; - } - -} diff --git a/src/main/java/items/ErrorItem.java b/src/main/java/items/ErrorItem.java new file mode 100644 index 0000000000..5694b4e800 --- /dev/null +++ b/src/main/java/items/ErrorItem.java @@ -0,0 +1,42 @@ +package items; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +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/items/MetaItem_CraftingComponent.java b/src/main/java/items/MetaItem_CraftingComponent.java new file mode 100644 index 0000000000..29b8e8ac1f --- /dev/null +++ b/src/main/java/items/MetaItem_CraftingComponent.java @@ -0,0 +1,103 @@ +package items; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +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; + +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 + ":" + "CopperHeatPipe"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "SilverHeatPipe"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "BoronArsenideHeatPipe"); + icons[counter++] = reg.registerIcon(KekzCore.MODID + ":" + "DiamondHeatPipe"); + // 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/items/MetaItem_ReactorComponent.java b/src/main/java/items/MetaItem_ReactorComponent.java new file mode 100644 index 0000000000..458de48a00 --- /dev/null +++ b/src/main/java/items/MetaItem_ReactorComponent.java @@ -0,0 +1,140 @@ +package items; + +import java.util.List; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +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/ErrorItem.java b/src/main/java/kekztech/ErrorItem.java deleted file mode 100644 index 7047d3f057..0000000000 --- a/src/main/java/kekztech/ErrorItem.java +++ /dev/null @@ -1,41 +0,0 @@ -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 index e27c2c39bd..d824077201 100644 --- a/src/main/java/kekztech/GTMultiController.java +++ b/src/main/java/kekztech/GTMultiController.java @@ -17,6 +17,11 @@ 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(); diff --git a/src/main/java/kekztech/Items.java b/src/main/java/kekztech/Items.java index f7ce2e883a..47708971c7 100644 --- a/src/main/java/kekztech/Items.java +++ b/src/main/java/kekztech/Items.java @@ -23,12 +23,17 @@ public enum Items { 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(9); + Error(0); private final int metaID; diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index bfcd382577..bb65090625 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -1,20 +1,24 @@ package kekztech; +import blocks.Block_GDCUnit; +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 fuelcell.Block_GDCUnit; -import fuelcell.Block_YSZUnit; -import fuelcell.GTMTE_SOFuelCellMK1; -import fuelcell.GTMTE_SOFuelCellMK2; +import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +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 reactor.GTMTE_ModularNuclearReactor; -import reactor.items.HeatExchanger; -import reactor.items.HeatPipe; +import tileentities.GTMTE_ModularNuclearReactor; +import tileentities.GTMTE_SOFuelCellMK1; +import tileentities.GTMTE_SOFuelCellMK2; @Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION, dependencies = "required-after:IC2; " @@ -25,6 +29,10 @@ 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; @Mod.Instance("kekztech") public static KekzCore instance; @@ -42,38 +50,186 @@ public class KekzCore { @Mod.EventHandler public void init(FMLInitializationEvent event ) { - final GTMTE_SOFuelCellMK1 sofc1 = new GTMTE_SOFuelCellMK1(5000, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I"); - final GTMTE_SOFuelCellMK2 sofc2 = new GTMTE_SOFuelCellMK2(5001, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II"); - final GTMTE_ModularNuclearReactor mdr = new GTMTE_ModularNuclearReactor(5002, "multimachine.nuclearreactor", "Nuclear Reactor"); + 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"); } @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()); - } + System.out.println("Registering KekzTech recipes..."); + + final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance(); + final MetaItem_ReactorComponent reactorItem = MetaItem_ReactorComponent.getInstance(); + + // Multiblock Controllers + GameRegistry.addShapedRecipe(sofc1.getStackForm(1), + "CCC", "PHP", "FBL", + 'C', Util.getStackofAmountFromOreDict("circuitAdvanced", 1), + 'P', ItemList.Electric_Pump_HV.get(1L, (Object[]) null), + 'H', ItemList.Hull_HV.get(1L, (Object[]) null), + 'F', Util.getStackofAmountFromOreDict("pipeSmallStainlessSteel", 1), + 'B', Util.getStackofAmountFromOreDict("cableGt02Gold", 1), + 'L', Util.getStackofAmountFromOreDict("pipeLargeStainlessSteel", 1)); + GameRegistry.addShapedRecipe(sofc2.getStackForm(1), + "CCC", "PHP", "FBL", + 'C', Util.getStackofAmountFromOreDict("circuitMaster", 1), + 'P', ItemList.Electric_Pump_IV.get(1L, (Object[]) null), + 'H', ItemList.Hull_IV.get(1L, (Object[]) null), + 'F', Util.getStackofAmountFromOreDict("pipeSmallUltimate", 1), + 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1), + 'L', Util.getStackofAmountFromOreDict("pipeMediumUltimate", 1)); + + // Ceramic Electrolyte Units + final ItemStack[] yszUnit = { + GT_Utility.getIntegratedCircuit(6), + craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4), + Util.getStackofAmountFromOreDict("frameGtYttrium", 1), + Util.getStackofAmountFromOreDict("rotorStainlessSteel", 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), + Util.getStackofAmountFromOreDict("frameGtGadolinium", 1), + Util.getStackofAmountFromOreDict("rotorDesh", 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); + + // 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.addAutoclaveRecipe( + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4), + Materials.CarbonDioxide.getGas(16000), + craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680); + 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( + Util.getStackofAmountFromOreDict("dustGadolinium", 1), + craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9), + GT_Utility.getIntegratedCircuit(6), null, null, null, + craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10), + 400, 1920); - for(GTRecipe recipe : HeatExchanger.RECIPE) { - GT_Values.RA.addAssemblerRecipe( - recipe.getInputItems(), recipe.getInputFluid(), recipe.getOutputItem(), recipe.getDuration(), recipe.getEuPerTick()); - } + // Heat Pipes + GT_Values.RA.addLatheRecipe( + Util.getStackofAmountFromOreDict("stickCopper", 1), + craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()), + null, 120, 120); + GT_Values.RA.addLatheRecipe( + Util.getStackofAmountFromOreDict("stickSilver", 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 = { - MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 2), + craftingItem.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) + Util.getStackofAmountFromOreDict("circuitGood", 1), + GT_Utility.getIntegratedCircuit(6) }; - GT_Values.RA.addAssemblerRecipe(t1HeatVent, + GT_Values.RA.addAssemblerRecipe( + t1HeatVent, FluidRegistry.getFluidStack("molten.copper", 144), - MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1HeatVent.getMetaID()), - 200, 120 - ); + reactorItem.getStackFromDamage(Items.T1HeatVent.getMetaID()), + 200, 120); + final ItemStack[] t2HeatVent = { + craftingItem.getStackOfAmountFromDamage(Items.SilverHeatPipe.getMetaID(), 2), + ItemList.Electric_Motor_HV.get(1L, (Object[]) null), + Util.getStackofAmountFromOreDict("rotorAluminium", 1), + Util.getStackofAmountFromOreDict("plateDoubleAluminium", 2), + Util.getStackofAmountFromOreDict("screwAluminium", 8), + Util.getStackofAmountFromOreDict("circuitAdvanced", 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), + Util.getStackofAmountFromOreDict("rotorTungstenSteel", 1), + Util.getStackofAmountFromOreDict("plateDoubleTungstenSteel", 2), + Util.getStackofAmountFromOreDict("screwTungsten", 8), + Util.getStackofAmountFromOreDict("circuitData", 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/MetaItem_CraftingComponent.java b/src/main/java/kekztech/MetaItem_CraftingComponent.java deleted file mode 100644 index 89a015998f..0000000000 --- a/src/main/java/kekztech/MetaItem_CraftingComponent.java +++ /dev/null @@ -1,103 +0,0 @@ -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 deleted file mode 100644 index 16f3f1403f..0000000000 --- a/src/main/java/kekztech/MetaItem_ReactorComponent.java +++ /dev/null @@ -1,139 +0,0 @@ -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 index c1243cadd8..ccbcc799e6 100644 --- a/src/main/java/kekztech/Util.java +++ b/src/main/java/kekztech/Util.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import items.ErrorItem; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; diff --git a/src/main/java/reactor/Container_ModularNuclearReactor.java b/src/main/java/reactor/Container_ModularNuclearReactor.java deleted file mode 100644 index 4ecfe61836..0000000000 --- a/src/main/java/reactor/Container_ModularNuclearReactor.java +++ /dev/null @@ -1,68 +0,0 @@ -package reactor; - -import gregtech.api.gui.GT_Container_MultiMachine; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; - -public class Container_ModularNuclearReactor extends GT_Container_MultiMachine { - - private final GTMTE_ModularNuclearReactor REACTOR_TILE; - private final IInventory PLAYER_INVENTORY; - - private int nextSlotID = 0; - private final Slot[] REACTOR_SLOTS = new Slot[54]; - private final Slot SLOT_CONFIGURATION; - private final Slot BUTTON_EU_MODE; - private final Slot BUTTON_FLUID_MODE; - private final Slot BUTTON_CONDITION; - private final Slot BUTTON_CONFIGURE; - private final Slot BUTTON_RESET; - - - public Container_ModularNuclearReactor(InventoryPlayer inventoryPlayer, IGregTechTileEntity reactorTile) { - - super(inventoryPlayer, reactorTile); - - this.REACTOR_TILE = (GTMTE_ModularNuclearReactor) reactorTile; - this.PLAYER_INVENTORY = inventoryPlayer; - - // Add the reactor chamber - for(int x = 0; x < 9; x++) { - for(int y = 0; y < 6; y++){ - REACTOR_SLOTS[nextSlotID] = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), (16 + 67 * x), (16 + 67 * y))); - } - } - // Add the configuration slot - SLOT_CONFIGURATION = super.addSlotToContainer(new Slot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - - // Add buttons (they're also slots) - BUTTON_EU_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_FLUID_MODE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_CONDITION = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_CONFIGURE = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - BUTTON_RESET = super.addSlotToContainer(new ButtonSlot(PLAYER_INVENTORY, getNextSlotID(), 0, 0)); - - } - - private int getNextSlotID() { - nextSlotID++; - return nextSlotID - 1; - } - - @Override - public boolean canInteractWith(EntityPlayer p_75145_1_) { - return true; - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - if (REACTOR_TILE.getBaseMetaTileEntity().isServerSide() == false) { - return; - } - } - -} diff --git a/src/main/java/reactor/GTMTE_ModularNuclearReactor.java b/src/main/java/reactor/GTMTE_ModularNuclearReactor.java deleted file mode 100644 index f7572d589b..0000000000 --- a/src/main/java/reactor/GTMTE_ModularNuclearReactor.java +++ /dev/null @@ -1,183 +0,0 @@ -package reactor; - -import gregtech.api.GregTech_API; -import gregtech.api.enums.Textures; -import gregtech.api.interfaces.ITexture; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import gregtech.api.objects.GT_RenderedTexture; -import net.minecraft.block.Block; -import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.item.ItemSt