aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/reactor
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/reactor')
-rw-r--r--src/main/java/reactor/ButtonSlot.java14
-rw-r--r--src/main/java/reactor/Container_ModularNuclearReactor.java68
-rw-r--r--src/main/java/reactor/GTMTE_ModularNuclearReactor.java188
-rw-r--r--src/main/java/reactor/GUIContainer_ModularNuclearReactor.java53
-rw-r--r--src/main/java/reactor/items/CoolantCell.java26
-rw-r--r--src/main/java/reactor/items/FuelRod.java114
-rw-r--r--src/main/java/reactor/items/HeatExchanger.java60
-rw-r--r--src/main/java/reactor/items/HeatPipe.java29
-rw-r--r--src/main/java/reactor/items/HeatVent.java111
-rw-r--r--src/main/java/reactor/items/NeutronReflector.java26
10 files changed, 689 insertions, 0 deletions
diff --git a/src/main/java/reactor/ButtonSlot.java b/src/main/java/reactor/ButtonSlot.java
new file mode 100644
index 0000000000..6d777ca280
--- /dev/null
+++ b/src/main/java/reactor/ButtonSlot.java
@@ -0,0 +1,14 @@
+package reactor;
+
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+
+public class ButtonSlot extends Slot {
+
+ public ButtonSlot(IInventory playerIventory, int slotID, int posX, int posY) {
+ super(playerIventory, slotID, posX, posY);
+
+
+ }
+
+}
diff --git a/src/main/java/reactor/Container_ModularNuclearReactor.java b/src/main/java/reactor/Container_ModularNuclearReactor.java
new file mode 100644
index 0000000000..4ecfe61836
--- /dev/null
+++ b/src/main/java/reactor/Container_ModularNuclearReactor.java
@@ -0,0 +1,68 @@
+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
new file mode 100644
index 0000000000..f3d9a2a00c
--- /dev/null
+++ b/src/main/java/reactor/GTMTE_ModularNuclearReactor.java
@@ -0,0 +1,188 @@
+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.ItemStack;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class GTMTE_ModularNuclearReactor extends GT_MetaTileEntity_MultiBlockBase {
+
+ final Block CASING = GregTech_API.sBlockCasings3;
+ final int CASING_META = 12;
+ final int CASING_TEXTURE_ID = 44;
+
+ private boolean euMode = true;
+
+ public GTMTE_ModularNuclearReactor(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+
+ }
+
+ public GTMTE_ModularNuclearReactor(String aName) {
+ super(aName);
+
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) {
+ return new GTMTE_ModularNuclearReactor(super.mName);
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[] {
+ "Modular Nuclear Reactor",
+ "------------------------------------------",
+ "EU-MODE - Turn nuclear fuel into directly into electricity.",
+ "",
+ "COOLANT-MODE - Heat up coolant for other applications",
+ "HU to Hot Coolant ratio is 1HU = 1L Hot Coolant",
+ "------------------------------------------",
+ "Dimensions: 5x5x5 (WxHxL)",
+ "Structure:",
+ " 80x Radiation Proof Machine Casing (at least)",
+ " Controller front center",
+ " Dynamo Hatch (ONLY in EU-mode, at least one)",
+ " Input Bus, Output Bus (optional)",
+ " Input Hatch, Output Hatch (ONLY in Coolant-Mode, at least one each)"
+ };
+ }
+
+ @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]};
+ }
+
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
+ return new GUIContainer_ModularNuclearReactor(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(),
+ "MultiblockDisplay.png");
+ }
+
+ @Override
+ public boolean isCorrectMachinePart(ItemStack stack) {
+ return true;
+ }
+
+ @Override
+ public boolean checkRecipe(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) {
+
+ final byte SIDE_LENGTH = 5;
+ final byte MAX_OFFSET = (byte) Math.floor(SIDE_LENGTH / 2);
+ final int XDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX * MAX_OFFSET;
+ final int ZDIR_BACKFACE = ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ * MAX_OFFSET;
+
+ int minCasingAmount = 92;
+ boolean checklist = true; // if this is still true at the end, machine is good to go :)
+
+ for (int leftToRight = -MAX_OFFSET; leftToRight <= MAX_OFFSET; leftToRight++) {
+
+ for (int frontToBack = -MAX_OFFSET; frontToBack <= MAX_OFFSET; frontToBack++) {
+
+ for (int thisY = -MAX_OFFSET; thisY <= MAX_OFFSET; thisY++) {
+
+ // Center 3x3x3 air cube
+ if((leftToRight > -2 && leftToRight < 2) && (frontToBack > -2 && frontToBack < 2) && (thisY > -2 && thisY < 2)) {
+ if(!thisController.getAirOffset(XDIR_BACKFACE + leftToRight, thisY, ZDIR_BACKFACE + frontToBack)) {
+ checklist = false;
+ }
+ } else if (!(XDIR_BACKFACE + leftToRight == 0 && ZDIR_BACKFACE + frontToBack == 0 && thisY == 0)) { // Make sure this isn't the controller
+ // Get next TE
+ final int THIS_X = XDIR_BACKFACE + leftToRight;
+ final int THIS_Z = ZDIR_BACKFACE + frontToBack;
+ IGregTechTileEntity currentTE =
+ thisController.getIGregTechTileEntityOffset(THIS_X, thisY, 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, thisY, THIS_Z) == CASING) && (thisController.getMetaIDOffset(THIS_X, thisY, THIS_Z) == CASING_META)) {
+ // Seems to be valid casing. Decrement counter.
+ minCasingAmount--;
+ } else {
+ checklist = false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if(minCasingAmount > 0) {
+ checklist = false;
+ }
+
+ if(euMode) {
+ if(this.mDynamoHatches.size() == 0) {
+ System.out.println("Dynamo hatches are required in EU mode!");
+ checklist = false;
+ }
+ if(this.mInputHatches.size() > 0) {
+ System.out.println("Input hatches are only allowed in coolant mode!");
+ checklist = false;
+ }
+ if(this.mOutputHatches.size() > 0) {
+ System.out.println("Output hatches are only allowed in coolant mode!");
+ checklist = false;
+ }
+ } else {
+ if(this.mDynamoHatches.size() > 0) {
+ System.out.println("Dynamo hatches are only allowed in EU mode!");
+ checklist = false;
+ }
+ if(this.mInputHatches.size() == 0) {
+ System.out.println("Coolant input hatches are required in coolant mode!");
+ checklist = false;
+ }
+ if(this.mOutputHatches.size() == 0) {
+ System.out.println("Hot coolant output hatches are required in coolant mode!");
+ 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/reactor/GUIContainer_ModularNuclearReactor.java b/src/main/java/reactor/GUIContainer_ModularNuclearReactor.java
new file mode 100644
index 0000000000..1f8248e5bb
--- /dev/null
+++ b/src/main/java/reactor/GUIContainer_ModularNuclearReactor.java
@@ -0,0 +1,53 @@
+package reactor;
+
+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/reactor/items/CoolantCell.java b/src/main/java/reactor/items/CoolantCell.java
new file mode 100644
index 0000000000..64b979acc4
--- /dev/null
+++ b/src/main/java/reactor/items/CoolantCell.java
@@ -0,0 +1,26 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_ReactorComponent;
+
+public class CoolantCell {
+
+ public static String TYPE = "CoolantCell";
+
+ public static String[] RESOURCE_NAME = {
+ "HeliumCoolantCell360k", "NaKCoolantCell360k"
+ };
+
+ public static int[] HEAT_CAPACITY = {
+ 360000, 360000
+ };
+
+ public static GTRecipe[] RECIPE = {
+ new GTRecipe().setDuration(1200).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.HeliumCoolantCell360k.getMetaID())),
+ new GTRecipe().setDuration(1200).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.NaKCoolantCell360k.getMetaID()))
+ };
+
+}
diff --git a/src/main/java/reactor/items/FuelRod.java b/src/main/java/reactor/items/FuelRod.java
new file mode 100644
index 0000000000..adef6f3409
--- /dev/null
+++ b/src/main/java/reactor/items/FuelRod.java
@@ -0,0 +1,114 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_ReactorComponent;
+
+public class FuelRod {
+
+ public static final int METAOFFSET = 17;
+ public static final int METAOFFSET_DEPLETED = 29;
+
+ public static final String TYPE = "FuelRod";
+ public static final String TYPE_DEPLETED = "DepletedFuelRod";
+ public static final String LIFETIME = "LIFETIME";
+ public static final String PULSES = "PULSES";
+ public static final String HEAT_PER_SECOND = "HEAT_PER_SECOND";
+ public static final String HEAT_PER_PULSE = "HEAT_PER_PULSE";
+ public static final String HEAT_BOOST_RATE = "HEAT_BOOST_RATE";
+ public static final String EU_PER_TICK = "EU_PER_TICK";
+ public static final String EU_PER_PULSE = "EU_PER_PULSE";
+
+
+ public static final String[] RESOURCE_NAME = {
+ "UraniumFuelRod", "UraniumDualFuelRod", "UraniumQuadFuelRod",
+ "ThoriumFuelRod", "ThoriumDualFuelRod", "ThoriumQuadFuelRod",
+ "MOXFuelRod", "MOXDualFuelRod", "MOXQuadFuelRod",
+ "NaquadahFuelRod", "NaquadahDualFuelRod", "NaquadahQuadFuelRod",
+ "Th_MOXFuelRod", "Th_MOXDualFuelRod", "Th_MOXQuadFuelRod"
+ };
+
+ public static final String[] RESOURCE_NAME_DEPLETED = {
+ "DepletedUraniumFuelRod", "DepletedUraniumDualFuelRod", "DepletedUraniumQuadFuelRod",
+ "DepletedThoriumFuelRod", "DepletedThoriumDualFuelRod", "DepletedThoriumQuadFuelRod",
+ "DepletedMOXFuelRod", "DepletedMOXDualFuelRod", "DepletedMOXQuadFuelRod",
+ "DepletedNaquadahFuelRod", "DepletedNaquadahDualFuelRod", "DepletedNaquadahQuadFuelRod",
+ "Th_DepletedMOXFuelRod", "Th_DepletedMOXDualFuelRod", "Th_DepletedMOXQuadFuelRod"
+ };
+
+ public static final int[] VALUES_LIFETIME = {
+ 20000, 20000, 20000, 100000, 100000, 100000,
+ 10000, 10000, 10000, 100000, 100000, 100000,
+ 50000, 50000, 50000
+ };
+
+ public static final int[] VALUES_PULSES = {
+ 1, 2, 4, 1, 2, 4,
+ 1, 2, 4, 1, 2, 4,
+ 1, 2, 4
+ };
+
+ public static final int[] VALUES_HEAT_PER_SECOND = {
+ 4, 24, 96, 1, 6, 24,
+ 4, 24, 96, 80, 480, 1920,
+ 1, 6, 24
+ };
+
+ public static final int[] VALUES_HEAT_PER_PULSE = {
+ 4, 4, 4, 1, 1, 1,
+ 4, 4, 4, 80, 80, 80,
+ 1, 1, 1
+
+ };
+
+ public static final double[] VALUES_HEAT_BOOST_RATE = {
+ 1, 1, 1, 1, 1, 1,
+ 5, 5, 5, 1, 1, 1,
+ 2, 2, 2
+ };
+
+ public static final int[] VALUES_EU_PER_TICK = {
+ 50, 200, 600, 10, 40, 120,
+ 50, 200, 600, 100, 400, 1200,
+ 10, 40, 120
+ };
+
+ public static final int[] VALUES_EU_PER_PULSE = {
+ 50, 50, 50, 10, 10, 10,
+ 50, 50, 50, 100, 100, 100,
+ 10, 10, 10
+ };
+
+ public static final GTRecipe[] RECIPE = {
+ // Uranium Fuel Rod
+ new GTRecipe().setDuration(600).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.UraniumFuelRod.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.UraniumDualFuelRod.getMetaID())),
+ new GTRecipe().setDuration(1000).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.UraniumQuadFuelRod.getMetaID())),
+ // Thorium Fuel Rod
+ new GTRecipe().setDuration(600).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.ThoriumFuelRod.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.ThoriumDualFuelRod.getMetaID())),
+ new GTRecipe().setDuration(1000).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.ThoriumQuadFuelRod.getMetaID())),
+ // MOX Fuel Rod
+ new GTRecipe().setDuration(600).setEUPerTick(1920)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.MOXFuelRod.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(1920)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.MOXDualFuelRod.getMetaID())),
+ new GTRecipe().setDuration(1000).setEUPerTick(1920)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.MOXQuadFuelRod.getMetaID())),
+ // Naquadah Fuel Rod
+ new GTRecipe().setDuration(600).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.NaquadahFuelRod.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.NaquadahDualFuelRod.getMetaID())),
+ new GTRecipe().setDuration(1000).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.NaquadahQuadFuelRod.getMetaID())),
+ // Thorium MOX Fuel Rod
+ };
+
+}
diff --git a/src/main/java/reactor/items/HeatExchanger.java b/src/main/java/reactor/items/HeatExchanger.java
new file mode 100644
index 0000000000..b34baf25cf
--- /dev/null
+++ b/src/main/java/reactor/items/HeatExchanger.java
@@ -0,0 +1,60 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_CraftingComponent;
+import kekztech.MetaItem_ReactorComponent;
+import kekztech.Util;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class HeatExchanger {
+
+ public static String TYPE = "HeatExchanger";
+
+ public static String[] RESOURCE_NAME = {
+ "T1HeatExchanger", "T2HeatExchanger", "T3HeatExchanger", "T4HeatExchanger"
+ };
+
+ public static int[] HEAT_CAPACITY = {
+ 2000, 8000, 32000, 128000
+ };
+
+ public static int[] COMPONENT_EXCHANGE_RATE = {
+ 12, 24, 96, 384
+ };
+
+ public static int[] HULL_EXCHANGE_RATE = {
+ 4, 8, 32, 128
+ };
+
+ public static GTRecipe[] RECIPE = {
+ new GTRecipe().setDuration(200).setEUPerTick(120)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 4))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDenseCopper", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.copper", 576))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1HeatExchanger.getMetaID())),
+ new GTRecipe().setDuration(400).setEUPerTick(480)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.SilverHeatPipe.getMetaID(), 4))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDenseSilver", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.silver", 576))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T2HeatExchanger.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(7680)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.BoronArsenideHeatPipe.getMetaID(), 4))
+ .addInputItem(Util.getStackofAmountFromOreDict("pipeTinyCopper", 4))
+ .addInputItem(Util.getStackofAmountFromOreDict("wireFineSilver", 16))
+ //.addInputItem(new ItemStack(ItemList.Pump_EV.getItem(), 1))
+ .addInputFluid(FluidRegistry.getFluidStack("ic2coolant", 720))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T3HeatExchanger.getMetaID())),
+ new GTRecipe().setDuration(1600).setEUPerTick(30720)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.DiamondHeatPipe.getMetaID(), 4))
+ .addInputItem(Util.getStackofAmountFromOreDict("frameGTHSSE", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateHSSE", 6))
+ .addInputItem(Util.getStackofAmountFromOreDict("screwOsmiridium", 24))
+ .addInputItem(Util.getStackofAmountFromOreDict("pipeTinyEnderium", 4))
+ //.addInputItem(new ItemStack(ItemList.Pump_LuV.getItem(), 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.gallium", 1152))
+ .addInputFluid(FluidRegistry.getFluidStack("helium", 10000))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T4HeatExchanger.getMetaID()))
+ };
+
+}
diff --git a/src/main/java/reactor/items/HeatPipe.java b/src/main/java/reactor/items/HeatPipe.java
new file mode 100644
index 0000000000..5f907b02fc
--- /dev/null
+++ b/src/main/java/reactor/items/HeatPipe.java
@@ -0,0 +1,29 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_CraftingComponent;
+import kekztech.Util;
+
+public class HeatPipe {
+
+ public static String[] RESOURCE_NAMES = {
+ "CopperHeatPipe", "SilverHeatPipe", "BoronArsenideHeatPipe", "DiamondHeatPipe"
+ };
+
+ public static final GTRecipe[] RECIPE = {
+ new GTRecipe().setEUPerTick(120).setDuration(120)
+ .addInputItem(Util.getStackofAmountFromOreDict("stickCopper", 1))
+ .addOutputItem(MetaItem_CraftingComponent.getInstance().getStackFromDamage(Items.CopperHeatPipe.getMetaID())),
+ new GTRecipe().setEUPerTick(480).setDuration(120)
+ .addInputItem(Util.getStackofAmountFromOreDict("stickSilver", 1))
+ .addOutputItem(MetaItem_CraftingComponent.getInstance().getStackFromDamage(Items.SilverHeatPipe.getMetaID())),
+ new GTRecipe().setEUPerTick(1920).setDuration(1200)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4))
+ .addOutputItem(MetaItem_CraftingComponent.getInstance().getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID())),
+ new GTRecipe().setEUPerTick(7680).setDuration(1200)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4))
+ .addOutputItem(MetaItem_CraftingComponent.getInstance().getStackFromDamage(Items.DiamondHeatPipe.getMetaID()))
+ };
+
+}
diff --git a/src/main/java/reactor/items/HeatVent.java b/src/main/java/reactor/items/HeatVent.java
new file mode 100644
index 0000000000..e6ad50fb95
--- /dev/null
+++ b/src/main/java/reactor/items/HeatVent.java
@@ -0,0 +1,111 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_CraftingComponent;
+import kekztech.MetaItem_ReactorComponent;
+import kekztech.Util;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class HeatVent {
+
+ public static final String TYPE = "HeatVent";
+ public static final String HEAT = "HEAT";
+ public static final String RESOURCE_NAME = "RESOURCE_NAME";
+ public static final String HEAT_CAPACITY = "HEAT_CAPACITY";
+ public static final String COMPONENT_VENT_RATE = "COMPONENT_VENT_RATE";
+ public static final String HULL_DRAW_RATE = "HULL_DRAW_RATE";
+ public static final String SELF_COOL_RATE = "SELF_COOL_RATE";
+
+
+ public static String[] RESOURCE_NAMES = {
+ "T1HeatVent", "T2HeatVent", "T3HeatVent", "T4HeatVent",
+ "T1ComponentHeatVent", "T2ComponentHeatVent", "T3ComponentHeatVent", "T4ComponentHeatVent",
+ "T1OverclockedHeatVent", "T2OverclockedHeatVent", "T3OverclockedHeatVent", "T4OverclockedHeatVent"
+ };
+
+ public static int[] HEAT_CAPACITIES = {
+ 1000, 4000, 8000, 32000,
+ 1000, 4000, 8000, 32000,
+ 1000, 4000, 8000, 32000
+ };
+
+ public static int[] COMPONENT_VENT_RATES = {
+ 0, 0, 0, 0,
+ 6, 12, 48, 96,
+ 0, 0, 0, 0
+ };
+
+ public static int[] HULL_DRAW_RATES = {
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 18, 36, 144, 288
+ };
+
+ public static int[] SELF_COOL_RATES = {
+ 6, 12, 48, 96,
+ 0, 0, 0, 0,
+ 10, 20, 80, 160
+ };
+
+ public static final GTRecipe[] RECIPE = {
+ // Heat Vents
+ new GTRecipe().setDuration(200).setEUPerTick(120)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.CopperHeatPipe.getMetaID(), 2))
+ // MV Motor
+ .addInputItem(Util.getStackofAmountFromOreDict("rotorSteel", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDoubleSteel", 2))
+ .addInputItem(Util.getStackofAmountFromOreDict("screwSteel", 8))
+ .addInputItem(Util.getStackofAmountFromOreDict("circuitGood", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.copper", 144))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1HeatVent.getMetaID())),
+ new GTRecipe().setDuration(400).setEUPerTick(480)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.SilverHeatPipe.getMetaID(), 2))
+ // HV Motor
+ .addInputItem(Util.getStackofAmountFromOreDict("rotorAluminium", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDoubleAluminium", 2))
+ .addInputItem(Util.getStackofAmountFromOreDict("screwAluminium", 8))
+ .addInputItem(Util.getStackofAmountFromOreDict("circuitAdvanced", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.silver", 144))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T2HeatVent.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(7680)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.BoronArsenideHeatPipe.getMetaID(), 2))
+ // EV Motor
+ .addInputItem(Util.getStackofAmountFromOreDict("rotorTungstenSteel", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDoubleTungstenSteel", 2))
+ .addInputItem(Util.getStackofAmountFromOreDict("screwTungsten", 8))
+ .addInputItem(Util.getStackofAmountFromOreDict("circuitData", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.gallium", 288))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T3HeatVent.getMetaID())),
+ new GTRecipe().setDuration(400).setEUPerTick(30720)
+ .addInputItem(MetaItem_CraftingComponent.getInstance().getStackOfAmountFromDamage(Items.DiamondHeatPipe.getMetaID(), 2))
+ // LuV Motor
+ .addInputItem(Util.getStackofAmountFromOreDict("rotorHSSS", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("frameGTHSSS", 1))
+ .addInputItem(Util.getStackofAmountFromOreDict("plateDoubleIridium", 6))
+ .addInputItem(Util.getStackofAmountFromOreDict("screwOsmiridium", 24))
+ .addInputItem(Util.getStackofAmountFromOreDict("circuitMaster", 1))
+ .addInputFluid(FluidRegistry.getFluidStack("lubricant", 1000))
+ .addInputFluid(FluidRegistry.getFluidStack("molten.gallium", 1152))
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T4HeatVent.getMetaID())),
+ // Component Heat Vents
+ new GTRecipe().setDuration(200).setEUPerTick(120)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1ComponentHeatVent.getMetaID())),
+ new GTRecipe().setDuration(400).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T2ComponentHeatVent.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T3ComponentHeatVent.getMetaID())),
+ new GTRecipe().setDuration(1600).setEUPerTick(30720)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T4ComponentHeatVent.getMetaID())),
+ // OC Heat Vents
+ new GTRecipe().setDuration(200).setEUPerTick(120)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1OverclockedHeatVent.getMetaID())),
+ new GTRecipe().setDuration(400).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T2OverclockedHeatVent.getMetaID())),
+ new GTRecipe().setDuration(800).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T3OverclockedHeatVent.getMetaID())),
+ new GTRecipe().setDuration(1600).setEUPerTick(30720)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T4OverclockedHeatVent.getMetaID())),
+ };
+
+}
diff --git a/src/main/java/reactor/items/NeutronReflector.java b/src/main/java/reactor/items/NeutronReflector.java
new file mode 100644
index 0000000000..0066a93917
--- /dev/null
+++ b/src/main/java/reactor/items/NeutronReflector.java
@@ -0,0 +1,26 @@
+package reactor.items;
+
+import kekztech.GTRecipe;
+import kekztech.Items;
+import kekztech.MetaItem_ReactorComponent;
+
+public class NeutronReflector {
+
+ public static String TYPE = "NeutronReflector";
+
+ public static String[] RESOURCE_NAME = {
+ "T1NeutronReflector", "T2NeutronReflector"
+ };
+
+ public static int[] DURABILITY = {
+ 512000, 2147483647
+ };
+
+ public static GTRecipe[] RECIPE = {
+ new GTRecipe().setDuration(1200).setEUPerTick(480)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T1NeutronReflector.getMetaID())),
+ new GTRecipe().setDuration(4800).setEUPerTick(7680)
+ .addOutputItem(MetaItem_ReactorComponent.getInstance().getStackFromDamage(Items.T2NeutronReflector.getMetaID()))
+ };
+
+}