aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kekztech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kekztech')
-rw-r--r--src/main/java/kekztech/GuiHandler.java8
-rw-r--r--src/main/java/kekztech/KekzCore.java417
-rw-r--r--src/main/java/kekztech/MultiFluidHandler.java79
-rw-r--r--src/main/java/kekztech/MultiItemHandler.java132
4 files changed, 200 insertions, 436 deletions
diff --git a/src/main/java/kekztech/GuiHandler.java b/src/main/java/kekztech/GuiHandler.java
index 439baff31f..97d4350b71 100644
--- a/src/main/java/kekztech/GuiHandler.java
+++ b/src/main/java/kekztech/GuiHandler.java
@@ -1,9 +1,9 @@
package kekztech;
-import container.Container_ItemProxyEndpoint;
-import container.Container_ItemProxySource;
-import container.Gui_ItemProxyEndpoint;
-import container.Gui_ItemProxySource;
+import client.gui.Gui_ItemProxyEndpoint;
+import client.gui.Gui_ItemProxySource;
+import common.container.Container_ItemProxyEndpoint;
+import common.container.Container_ItemProxySource;
import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java
index 247131c7f7..7574c1f399 100644
--- a/src/main/java/kekztech/KekzCore.java
+++ b/src/main/java/kekztech/KekzCore.java
@@ -1,55 +1,23 @@
package kekztech;
-import blocks.Block_ControlRod;
-import blocks.Block_GDCUnit;
-import blocks.Block_ItemProxyCable;
-import blocks.Block_ItemProxyEndpoint;
-import blocks.Block_ItemProxySource;
-import blocks.Block_ItemServerDrive;
-import blocks.Block_ItemServerIOPort;
-import blocks.Block_ItemServerRackCasing;
-import blocks.Block_ReactorChamber_OFF;
-import blocks.Block_ReactorChamber_ON;
-import blocks.Block_TFFTCasing;
-import blocks.Block_TFFTMultiHatch;
-import blocks.Block_TFFTStorageFieldBlockT1;
-import blocks.Block_TFFTStorageFieldBlockT2;
-import blocks.Block_TFFTStorageFieldBlockT3;
-import blocks.Block_TFFTStorageFieldBlockT4;
-import blocks.Block_YSZUnit;
+import client.renderer.TESR_SECapacitor;
+import client.renderer.TESR_SETether;
+import common.Blocks;
+import common.Recipes;
+import common.Researches;
+import common.tileentities.*;
import cpw.mods.fml.client.registry.ClientRegistry;
-import cpw.mods.fml.common.Loader;
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 cpw.mods.fml.common.network.NetworkRegistry;
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.enums.OrePrefixes;
-import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Utility;
import items.ErrorItem;
-import items.Item_Configurator;
import items.MetaItem_CraftingComponent;
import items.MetaItem_ReactorComponent;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.FluidRegistry;
-import render.ConduitRenderer;
-import tileentities.GTMTE_FluidMultiStorage;
-import tileentities.GTMTE_ItemServer;
-import tileentities.GTMTE_ModularNuclearReactor;
-import tileentities.GTMTE_SOFuelCellMK1;
-import tileentities.GTMTE_SOFuelCellMK2;
-import tileentities.TE_ItemProxyCable;
-import tileentities.TE_ItemProxyEndpoint;
-import tileentities.TE_ItemProxySource;
-import tileentities.TE_ItemServerIOPort;
-import tileentities.TE_TFFTMultiHatch;
-import util.Util;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* My GT-Meta-IDs are: 13101 - 13500
@@ -59,25 +27,32 @@ import util.Util;
*/
@Mod(modid = KekzCore.MODID, name = KekzCore.NAME, version = KekzCore.VERSION,
dependencies =
- "required-after:IC2; "
+ "required-after:IC2;"
+ "required-after:gregtech;"
- + "after:bartworks"
+ + "required-after:tectech;"
+ + "required-after:Thaumcraft;"
+ + "required-after:ThaumicTinkerer;"
+ + "after:bartworks;"
+ + "after:dreamcraft"
)
public class KekzCore {
public static final String NAME = "KekzTech";
public static final String MODID = "kekztech";
- public static final String VERSION = "0.2.2";
-
+ public static final String VERSION = "0.4.5";
+
+ public static final Logger LOGGER = LogManager.getLogger(NAME);
+
@Mod.Instance("kekztech")
public static KekzCore instance;
- private GTMTE_SOFuelCellMK1 sofc1;
- private GTMTE_SOFuelCellMK2 sofc2;
- @SuppressWarnings("unused")
- private GTMTE_ModularNuclearReactor mdr;
- private GTMTE_FluidMultiStorage fms;
- private GTMTE_ItemServer is;
+ public static GTMTE_SOFuelCellMK1 sofc1;
+ public static GTMTE_SOFuelCellMK2 sofc2;
+ public static GTMTE_ModularNuclearReactor mdr;
+ public static GTMTE_FluidMultiStorage fms;
+ public static GTMTE_ItemServer is;
+ public static GTMTE_LapotronicSuperCapacitor lsc;
+ public static GTMTE_SpaceElevator se;
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
@@ -85,350 +60,46 @@ public class KekzCore {
ErrorItem.getInstance().registerItem();
MetaItem_ReactorComponent.getInstance().registerItem();
MetaItem_CraftingComponent.getInstance().registerItem();
- Item_Configurator.getInstance().registerItem();
Items.registerOreDictNames();
- // Blocks
- Block_YSZUnit.getInstance().registerBlock();
- Block_GDCUnit.getInstance().registerBlock();
- Block_TFFTCasing.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT1.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT2.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT3.getInstance().registerBlock();
- Block_TFFTStorageFieldBlockT4.getInstance().registerBlock();
- Block_TFFTMultiHatch.getInstance().registerBlock();
- Block_ReactorChamber_OFF.getInstance().registerBlock();
- Block_ReactorChamber_ON.getInstance().registerBlock();
- Block_ControlRod.getInstance().registerBlock();
- Block_ItemServerDrive.getInstance().registerBlock();
- Block_ItemServerRackCasing.getInstance().registerBlock();
- Block_ItemServerIOPort.getInstance().registerBlock();
- Block_ItemProxyCable.getInstance().registerBlock();
- Block_ItemProxySource.getInstance().registerBlock();
- Block_ItemProxyEndpoint.getInstance().registerBlock();
+
+ Blocks.preInit();
+
// Register TileEntities
GameRegistry.registerTileEntity(TE_TFFTMultiHatch.class, "kekztech_tfftmultihatch_tile");
- GameRegistry.registerTileEntity(TE_ItemServerIOPort.class, "kekztech_itemserverioport_tile");
+ //GameRegistry.registerTileEntity(TE_ItemServerIOPort.class, "kekztech_itemserverioport_tile");
GameRegistry.registerTileEntity(TE_ItemProxyCable.class, "kekztech_itemproxycable_tile");
GameRegistry.registerTileEntity(TE_ItemProxySource.class, "kekztech_itemproxysource_tile");
GameRegistry.registerTileEntity(TE_ItemProxyEndpoint.class, "kekztech_itemproxyendpoint_tile");
+ GameRegistry.registerTileEntity(TE_ThaumiumReinforcedJar.class, "kekztech_thaumiumreinforcedjar");
+ GameRegistry.registerTileEntity(TE_IchorJar.class, "kekztech_ichorjar");
// Register guis
NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler());
+
+ // Register TESR
+ ClientRegistry.bindTileEntitySpecialRenderer(TE_SpaceElevatorTether.class, new TESR_SETether());
+ ClientRegistry.bindTileEntitySpecialRenderer(TE_SpaceElevatorCapacitor.class, new TESR_SECapacitor());
+
+ Researches.preInit();
}
@Mod.EventHandler
- public void init(FMLInitializationEvent event ) {
+ public void init(FMLInitializationEvent event) {
// Multiblock controllers
sofc1 = new GTMTE_SOFuelCellMK1(13101, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I");
sofc2 = new GTMTE_SOFuelCellMK2(13102, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II");
mdr = new GTMTE_ModularNuclearReactor(13103, "multimachine.nuclearreactor", "Nuclear Reactor");
fms = new GTMTE_FluidMultiStorage(13104, "multimachine.tf_fluidtank", "T.F.F.T");
- is = new GTMTE_ItemServer(13105, "multimachine.itemserver", "Item Server");
+ //is = new GTMTE_ItemServer(13105, "multimachine.itemserver", "Item Server");
+ lsc = new GTMTE_LapotronicSuperCapacitor(13106, "multimachine.supercapacitor", "Lapotronic Supercapacitor");
+ se = new GTMTE_SpaceElevator(13107, "multimachine.spaceelevator", "Space Elevator");
// Register renderer
- ConduitRenderer.getInstance().registerRenderer();
+ //RenderingRegistry.registerBlockHandler(ConduitRenderer.getInstance());
}
@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event) {
- System.out.println("Registering KekzTech recipes...");
-
- final MetaItem_CraftingComponent craftingItem = MetaItem_CraftingComponent.getInstance();
-
- // Multiblock Controllers
- final Object[] mk1_recipe = {
- "CCC", "PHP", "FBL",
- 'C', OrePrefixes.circuit.get(Materials.Advanced),
- 'P', ItemList.Electric_Pump_HV.get(1L),
- 'H', ItemList.Hull_HV.get(1L),
- 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.StainlessSteel, 1),
- 'B', GT_OreDictUnificator.get(OrePrefixes.cableGt02, Materials.Gold, 1),
- 'L', GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.StainlessSteel, 1)
- };
- GT_ModHandler.addCraftingRecipe(sofc1.getStackForm(1), mk1_recipe);
- final Object[] mk2_recipe = {
- "CCC", "PHP", "FBL",
- 'C', OrePrefixes.circuit.get(Materials.Master),
- 'P', ItemList.Electric_Pump_IV.get(1L),
- 'H', ItemList.Hull_IV.get(1L),
- 'F', GT_OreDictUnificator.get(OrePrefixes.pipeSmall, Materials.Ultimate, 1),
- 'B', Util.getStackofAmountFromOreDict("wireGt04SuperconductorEV", 1),
- 'L', GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Ultimate, 1)
- };
- GT_ModHandler.addCraftingRecipe(sofc2.getStackForm(1), mk2_recipe);
- final Object[] tfft_recipe = {
- "HFH", "PVP", "CFC",
- 'H', OrePrefixes.pipeMedium.get(Materials.StainlessSteel),
- 'F', ItemList.Field_Generator_MV.get(1L),
- 'P', ItemList.Electric_Pump_HV.get(1L),
- 'V', OrePrefixes.rotor.get(Materials.VibrantAlloy),
- 'C', OrePrefixes.circuit.get(Materials.Data)
- };
- GT_ModHandler.addCraftingRecipe(fms.getStackForm(1), tfft_recipe);
- final Object[] is_recipe = {
- "FRF", "CGC", "PZP",
- 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.TungstenSteel, 1),
- 'C', ItemList.Conveyor_Module_LuV.get(1L),
- 'G', ItemList.Field_Generator_EV.get(1L),
- 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt04, Materials.VanadiumGallium, 1),
- 'Z', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Master, 1)
- };
- GT_ModHandler.addCraftingRecipe(is.getStackForm(1), is_recipe);
-
-
- // Ceramic Electrolyte Units
- final ItemStack[] yszUnit = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 4),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Yttrium, 1),
- GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1),
- ItemList.Electric_Motor_HV.get(1L),
- };
- GT_Values.RA.addAssemblerRecipe(
- yszUnit,
- Materials.Hydrogen.getGas(4000),
- new ItemStack(Block_YSZUnit.getInstance(), 1),
- 1200, 480);
- final ItemStack[] gdcUnit = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicPlate.getMetaID(), 8),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1),
- GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Desh, new ItemStack(ErrorItem.getInstance(), 1), 1),
- ItemList.Electric_Motor_IV.get(1L),
- };
- GT_Values.RA.addAssemblerRecipe(
- gdcUnit,
- Materials.Hydrogen.getGas(16000),
- new ItemStack(Block_GDCUnit.getInstance(), 1),
- 2400, 1920);
-
- // Item Server Structure blocks
- final Object[] is_rack_recipe = {
- "BRB", "CFC", "BRB",
- 'B', GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1),
- 'C', GT_OreDictUnificator.get(OrePrefixes.cableGt01, Materials.Platinum, 1),
- 'F', GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.TungstenSteel, 1),
- };
- GT_ModHandler.addCraftingRecipe(new ItemStack(Block_ItemServerRackCasing.getInstance()), is_rack_recipe);
- final ItemStack[] is_ioport = {
- GT_Utility.getIntegratedCircuit(6),
- new ItemStack(Block_ItemServerRackCasing.getInstance()),
- GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.Platinum, 16),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Platinum, 2),
- ItemList.Field_Generator_HV.get(1L),
- ItemList.Robot_Arm_EV.get(4L)
- };
- GT_Values.RA.addAssemblerRecipe(
- is_ioport,
- FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144),
- new ItemStack(Block_ItemServerIOPort.getInstance(), 1),
- 200, 7680);
- final Object[] is_blade = {
- "CRC", "CMC", "HPH",
- 'C', GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.Aluminium, 1),
- 'P', GT_OreDictUnificator.get(OrePrefixes.cableGt08, Materials.Platinum, 1),
- 'M', ItemList.Electric_Motor_EV.get(1L),
- 'H', craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()),
- };
- GT_ModHandler.addCraftingRecipe(craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8), is_blade);
- final ItemStack[] is_drive = {
- GT_Utility.getIntegratedCircuit(6),
- craftingItem.getStackOfAmountFromDamage(Items.ItemServerBlade.getMetaID(), 8),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlueSteel, 4),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.Aluminium, 1),
- GT_OreDictUnificator.get(OrePrefixes.screw, Materials.Aluminium, 16)
- };
- GT_Values.RA.addAssemblerRecipe(
- is_drive,
- FluidRegistry.getFluidStack("molten.polyethylene", 1152),
- new ItemStack(Block_ItemServerDrive.getInstance(), 1),
- 200, 7680);
-
- // T.F.F.T Structure blocks
- final ItemStack[] tfftcasing = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DarkSteel, 3),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.EnderPearl, 3),
- GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.StainlessSteel, 1),
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftcasing,
- FluidRegistry.getFluidStack("molten.polytetrafluoroethylene", 144),
- new ItemStack(Block_TFFTCasing.getInstance(), 1),
- 200, 256);
- final ItemStack[] tfftstoragefield1 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 1),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeLarge, Materials.Steel, 1),
- ItemList.Electric_Pump_LV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield1,
- FluidRegistry.getFluidStack("molten.glass", 144),
- new ItemStack(Block_TFFTStorageFieldBlockT1.getInstance(), 1),
- 200, 256);
- final ItemStack[] tfftstoragefield2 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Advanced, 2),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.PulsatingIron, 4),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.StainlessSteel, 1),
- ItemList.Electric_Pump_MV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield2,
- FluidRegistry.getFluidStack("molten.plastic", 576),
- new ItemStack(Block_TFFTStorageFieldBlockT2.getInstance(), 1),
- 200, 480);
- final ItemStack[] tfftstoragefield3 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Data, 4),
- GT_OreDictUnificator.get(OrePrefixes.plate, Materials.VibrantAlloy, 2),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Titanium, 1),
- ItemList.Field_Generator_MV.get(1L),
- ItemList.Electric_Pump_HV.get(2L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield3,
- FluidRegistry.getFluidStack("molten.epoxid", 576),
- new ItemStack(Block_TFFTStorageFieldBlockT3.getInstance(), 1),
- 300, 1920);
- final ItemStack[] tfftstoragefield4 = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.Elite, 4),
- GT_OreDictUnificator.get(OrePrefixes.plateTriple, Materials.NiobiumTitanium, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.TungstenSteel, 1),
- ItemList.Field_Generator_HV.get(1L),
- ItemList.Electric_Pump_EV.get(1L)
- };
- GT_Values.RA.addAssemblerRecipe(
- tfftstoragefield4,
- FluidRegistry.getFluidStack("molten.epoxid", 1152),
- new ItemStack(Block_TFFTStorageFieldBlockT4.getInstance(), 1),
- 400, 4098);
- final Object[] multi_hatch = {
- "PRP", "UFU", "PRP",
- 'P', GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.NiobiumTitanium, 1),
- 'R', GT_OreDictUnificator.get(OrePrefixes.rotor, Materials.StainlessSteel, 1),
- 'U', ItemList.Electric_Pump_IV.get(1L),
- 'F', ItemList.Field_Generator_HV.get(1L)
- };
- GT_ModHandler.addCraftingRecipe(new ItemStack(Block_TFFTMultiHatch.getInstance()), multi_hatch);
-
- // Reactor structure blocks
- final ItemStack[] controlrod = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeMedium, Materials.Steel, 4),
- GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Carbon, 64)
- };
- GT_Values.RA.addAssemblerRecipe(
- controlrod,
- null,
- new ItemStack(Block_ControlRod.getInstance(), 1),
- 800, 480);
- final ItemStack[] reactorchamber = {
- GT_Utility.getIntegratedCircuit(6),
- GT_OreDictUnificator.get(OrePrefixes.pipeHuge, Materials.Lead, 1),
- GT_OreDictUnificator.get(OrePrefixes.pipeTiny, Materials.Lead, 9),
- GT_OreDictUnificator.get(OrePrefixes.ring, Materials.TungstenSteel, 18),
- GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Steel, 2),
- };
- GT_Values.RA.addAssemblerRecipe(
- reactorchamber,
- FluidRegistry.getFluidStack("wet.concrete", 144),
- new ItemStack(Block_ReactorChamber_OFF.getInstance(), 1),
- 1600, 480);
-
- // Ceramic plates
- GT_Values.RA.addAlloySmelterRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), Loader.isModLoaded("bartworks") ? 3 : 10),
- ItemList.Shape_Mold_Plate.get(1),
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicPlate.getMetaID(), 1),
- 400, 480);
- GT_Values.RA.addFormingPressRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10),
- ItemList.Shape_Mold_Plate.get(1),
- 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);
- if (!Loader.isModLoaded("bartworks")) {
- 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(
- Items.YttriaDust.getOreDictedItemStack(1),
- Items.ZirconiaDust.getOreDictedItemStack(5),
- GT_Utility.getIntegratedCircuit(6), null, null, null,
- craftingItem.getStackOfAmountFromDamage(Items.YSZCeramicDust.getMetaID(), 6),
- 400, 96);
- GT_Values.RA.addMixerRecipe(
- GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gadolinium, new ItemStack(ErrorItem.getInstance(), 1), 1),
- craftingItem.getStackOfAmountFromDamage(Items.CeriaDust.getMetaID(), 9),
- GT_Utility.getIntegratedCircuit(6), null, null, null,
- craftingItem.getStackOfAmountFromDamage(Items.GDCCeramicDust.getMetaID(), 10),
- 400, 1920);
-
- // Crystals
- GT_Values.RA.addAutoclaveRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondDust.getMetaID(), 4),
- Materials.CarbonDioxide.getGas(16000),
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 1), 10000, 2400, 7680);
- GT_Values.RA.addAutoclaveRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideDust.getMetaID(), 4),
- Materials.Nitrogen.getGas(4000),
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 1), 10000, 2400, 1920);
-
- // Heat Pipes
- GT_Values.RA.addLatheRecipe(
- GT_OreDictUnificator.get(OrePrefixes.stick, Materials.AnnealedCopper, 1),
- craftingItem.getStackFromDamage(Items.CopperHeatPipe.getMetaID()),
- null, 120, 120);
- GT_Values.RA.addLatheRecipe(
- GT_OreDictUnificator.get(OrePrefixes.stick, Materials.Silver, 1),
- craftingItem.getStackFromDamage(Items.SilverHeatPipe.getMetaID()),
- null, 120, 480);
- GT_Values.RA.addLatheRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.BoronArsenideCrystal.getMetaID(), 4),
- craftingItem.getStackFromDamage(Items.BoronArsenideHeatPipe.getMetaID()),
- null, 1200, 1920);
- GT_Values.RA.addLatheRecipe(
- craftingItem.getStackOfAmountFromDamage(Items.IsotopicallyPureDiamondCrystal.getMetaID(), 4),
- craftingItem.getStackFromDamage(Items.DiamondHeatPipe.getMetaID()),
- null, 1200, 7680);
-
- System.out.println("...done");
+ Recipes.postInit();
+ Researches.postInit();
}
-
}
diff --git a/src/main/java/kekztech/MultiFluidHandler.java b/src/main/java/kekztech/MultiFluidHandler.java
index a96094a8f0..f1a527b2c0 100644
--- a/src/main/java/kekztech/MultiFluidHandler.java
+++ b/src/main/java/kekztech/MultiFluidHandler.java
@@ -15,6 +15,8 @@ public class MultiFluidHandler {
private int capacityPerFluid;
private boolean locked = true;
+ private boolean doVoidExcess = false;
+ private byte fluidSelector = -1;
public MultiFluidHandler() {
@@ -38,6 +40,28 @@ public class MultiFluidHandler {
public void setLock(boolean state) {
locked = state;
}
+
+ public void setDoVoidExcess(boolean doVoidExcess) { this.doVoidExcess = doVoidExcess; }
+
+ /**
+ * Used to tell the MFH if a fluid is selected by
+ * an Integrated Circuit in the controller.
+ *
+ * @param fluidSelector
+ * Selected fluid or -1 if no fluid is selected
+ */
+ public void setFluidSelector(byte fluidSelector) {
+ this.fluidSelector = fluidSelector;
+ }
+
+ /**
+ *
+ * @return
+ * Selected fluid or -1 if no fluid is selected
+ */
+ public byte getSelectedFluid() {
+ return fluidSelector;
+ }
public boolean contains(FluidStack fluid) {
return !locked && fluids.contains(fluid);
@@ -48,7 +72,7 @@ public class MultiFluidHandler {
}
public List<FluidStack> getFluids(){
- return (!locked) ? fluids : new ArrayList<FluidStack>();
+ return (!locked) ? fluids : new ArrayList<>();
}
public FluidStack getFluid(int slot) {
@@ -110,24 +134,25 @@ public class MultiFluidHandler {
return 0;
}
if(fluids.size() == MAX_DISTINCT_FLUIDS && !contains(push)) {
+ // Already contains 25 fluids and this isn't one of them
return 0;
} else if (fluids.size() < MAX_DISTINCT_FLUIDS && !contains(push)) {
// Add new fluid
- final int remcap = getCapacity();
- final int fit = Math.min(remcap, push.amount);
+ final int fit = Math.min(getCapacity(), push.amount);
if(doPush) {
fluids.add(new FluidStack(push.getFluid(), fit));
}
- return fit;
+ // If doVoidExcess, pretend all of it fit
+ return doVoidExcess ? push.amount : fit;
} else {
// Add to existing fluid
- final FluidStack fs = fluids.get(fluids.indexOf(push));
- final int remcap = getCapacity() - fs.amount;
- final int fit = Math.min(remcap, push.amount);
+ final FluidStack existing = fluids.get(fluids.indexOf(push));
+ final int fit = Math.min(getCapacity() - existing.amount, push.amount);
if(doPush) {
- fs.amount += fit;
+ existing.amount += fit;
}
- return fit;
+ // If doVoidExcess, pretend all of it fit
+ return doVoidExcess ? push.amount : fit;
}
}
@@ -147,18 +172,21 @@ public class MultiFluidHandler {
return 0;
}
if(slot < 0 || slot >= MAX_DISTINCT_FLUIDS) {
+ // Invalid slot
return 0;
}
- if(!fluids.get(slot).equals(push)) {
+ if((fluids.get(slot) != null) && !fluids.get(slot).equals(push)) {
+ // Selected slot is taken by a non-matching fluid
return 0;
} else {
- final FluidStack fs = fluids.get(slot);
- final int remcap = getCapacity() - fs.amount;
- final int fit = Math.min(remcap, push.amount);
+ // Add to existing fluid
+ final FluidStack existing = fluids.get(slot);
+ final int fit = Math.min(getCapacity() - existing.amount, push.amount);
if(doPush) {
- fs.amount += fit;
+ existing.amount += fit;
}
- return fit;
+ // If doVoidExcess, pretend all of it fit
+ return doVoidExcess ? push.amount : fit;
}
}
@@ -172,18 +200,15 @@ public class MultiFluidHandler {
* @return Amount of fluid that was (or would have been, if simulated) pulled.
*/
public int pullFluid(FluidStack pull, boolean doPull) {
- if(locked) {
- return 0;
- }
- if(!contains(pull)) {
+ if (locked || !contains(pull)) {
return 0;
} else {
final FluidStack src = fluids.get(fluids.indexOf(pull));
final int rec = Math.min(pull.amount, src.amount);
- if(doPull) {
+ if (doPull) {
src.amount -= rec;
}
- if(src.amount == 0) {
+ if (src.amount == 0) {
fluids.remove(src);
}
return rec;
@@ -211,13 +236,13 @@ public class MultiFluidHandler {
if(!fluids.get(slot).equals(pull)) {
return 0;
} else {
- final FluidStack pulled = fluids.get(slot);
- final int rec = Math.min(pull.amount, pulled.amount);
+ final FluidStack src = fluids.get(slot);
+ final int rec = Math.min(pull.amount, src.amount);
if(doPull) {
- pulled.amount -= rec;
+ src.amount -= rec;
}
- if(pulled.amount == 0) {
- fluids.remove(pulled);
+ if(src.amount == 0) {
+ fluids.remove(src);
}
return rec;
}
@@ -239,7 +264,7 @@ public class MultiFluidHandler {
return Math.min(getCapacity(), push.amount) > 0;
} else {
final int remcap = getCapacity() - fluids.get(fluids.indexOf(push)).amount;
- return Math.min(remcap, push.amount) > 0;
+ return doVoidExcess ? true : (Math.min(remcap, push.amount) > 0);
}
}
}
diff --git a/src/main/java/kekztech/MultiItemHandler.java b/src/main/java/kekztech/MultiItemHandler.java
index 766abbbb93..27d936efec 100644
--- a/src/main/java/kekztech/MultiItemHandler.java
+++ b/src/main/java/kekztech/MultiItemHandler.java
@@ -1,6 +1,7 @@
package kekztech;
import java.util.ArrayList;
+import java.util.List;
import net.minecraft.item.ItemStack;
@@ -10,31 +11,58 @@ public class MultiItemHandler {
private boolean locked = true;
- private final ArrayList<ItemStack> items = new ArrayList<>();
+ private ItemStack[] items;
public MultiItemHandler() {
}
- /**
- * Tries to adapt the internal storage to match structure changes.
- * Structure should turn off and give a warning if this returns false.
- * Otherwise items might unavailable.
+ public List<String> debugPrint() {
+ if(items == null) {
+ return new ArrayList<String>();
+ }
+ final ArrayList<String> slots = new ArrayList<>();
+
+ for(int i = 0; i < items.length; i++) {
+ slots.add("Slot " + i + " contains " + items[i].stackSize + " " + items[i].getDisplayName());
+ }
+
+ return slots;
+ }
+
+ /**
+ * Adapts the internal storage to structure changes.
+ * In the event of structure down-sizing, all excess items
+ * will be dropped on the ground.
*
* @param itemTypeCapacity
- * New item array length to adapt to.
- * @return Success status of the operation.
*/
- public boolean setItemTypeCapacity(int itemTypeCapacity) {
- if(items.size() > itemTypeCapacity) {
- System.out.println("WARNING: ITEM SERVER STRUCTURE WAS DOWNSIZED TOO FAR! LOCKING FOR SAFETY.");
- setLock(true);
- return false;
+ public void setItemTypeCapacity(int itemTypeCapacity) {
+ System.out.println("Configuring type capacity");
+ if(items.length > itemTypeCapacity) {
+ // Generate new smaller backing array
+ final ItemStack[] newItems = new ItemStack[itemTypeCapacity];
+ for(int i = 0; i < newItems.length; i++) {
+ newItems[i] = items[i];
+ }
+ // Sort out item overflow
+ final ItemStack[] toDrop = new ItemStack[items.length - itemTypeCapacity];
+ for(int i = 0; i < toDrop.length; i++) {
+ toDrop[i] = items[i + newItems.length - 1];
+ }
+ // TODO drop overflow items to the ground
+
+ // Swap array
+ items = newItems;
} else {
- items.ensureCapacity(itemTypeCapacity);
- // If the lock was engaged, it should only be disengaged by turning
- // the structure back on after fixing the above warning.
- return true;
+ // Generate new larger backing array
+ final ItemStack[] newItems = new ItemStack[itemTypeCapacity];
+ for(int i = 0; i < items.length; i++) {
+ newItems[i] = items[i];
+ }
+
+ // Swap array
+ items = newItems;
}
}
@@ -44,7 +72,6 @@ public class MultiItemHandler {
/**
* Lock internal storage in case Item Server is not running.
- * May also be engaged in case of item safety issues.
*
* @param state
* Lock state.
@@ -54,60 +81,101 @@ public class MultiItemHandler {
}
public int getItemTypeCapacity() {
- return items.size();
+ return items != null ? items.length : 0;
}
public int getPerTypeCapacity() {
return perTypeCapacity;
}
+ /**
+ * Returns the ItemStack from the specified slot.
+ *
+ * @param slot
+ * Storage slot number. Zero indexed.
+ * @return
+ * ItemStack from storage or null if
+ * storage is locked or invalid slot parameter.
+ */
public ItemStack getStackInSlot(int slot) {
System.out.println("Stack in slot " + slot + " requested");
- if(locked || slot >= items.size()) {
+ if(locked || slot >= items.length) {
return null;
} else {
- return items.get(slot);
+ return items[slot];
}
}
- public void insertStackInSlot(int slot, ItemStack itemStack) {
+ /**
+ * Inserts a new ItemStack into storage,
+ * but only if the slot is still unassigned.
+ *
+ * @param slot
+ * Storage slot number. Zero indexed.
+ * @param itemStack
+ * ItemStack to insert.
+ * @return
+ * Operation success state.
+ */
+ public boolean insertStackInSlot(int slot, ItemStack itemStack) {
System.out.println("Inserting " + itemStack.getDisplayName() + " into " + slot);
if(itemStack == null
- || items.get(slot) != null
+ || items[slot] != null
|| locked
- || slot >= items.size()) {
- return;
+ || slot >= items.length) {
+ return false;
} else {
- items.set(slot, itemStack);
+ items[slot] = itemStack;
+ return true;
}
}
+ /**
+ * Tries to increase the item amount in a specified slot.
+ *
+ * @param slot
+ * Storage slot number. Zero indexed.
+ * @param amount
+ * Amount to increase by.
+ * @return
+ * Actual amount the item amount was increased by.
+ */
public int increaseStackInSlot(int slot, int amount) {
System.out.println("Increasing item in slot " + slot + " by " + amount);
- if(slot >= items.size()
+ if(slot >= items.length
|| locked
|| amount <= 0) {
return 0;
} else {
- final int space = perTypeCapacity - items.get(slot).stackSize;
+ final int space = perTypeCapacity - items[slot].stackSize;
final int fit = Math.min(space, amount);
- items.get(slot).stackSize += fit;
+ items[slot].stackSize += fit;
return fit;
}
}
+ /**
+ * Tries to reduce the item amount in a specified slot.
+ *
+ * @param slot
+ * Storage slot number. Zero indexed.
+ * @param amount
+ * Amount to decrease by.
+ * @return
+ * Actual amount the item amount was decreased by.
+ */
public int reduceStackInSlot(int slot, int amount) {
System.out.println("Reducing item in slot " + slot + " by " + amount);
- if(slot >= items.size()
+ if(slot >= items.length
|| locked
|| amount <= 0) {
return 0;
} else {
- final int available = items.get(slot).stackSize;
+ final int available = items[slot].stackSize;
final int take = Math.min(available, amount);
- items.get(slot).stackSize -= take;
+ items[slot].stackSize -= take;
if(take == available) {
- items.set(slot, null);
+ items[slot] = null;
}
return take;
}