aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/item
diff options
context:
space:
mode:
author‭huajijam <strhuaji@gmail.com>2019-03-18 20:52:30 +0800
committer‭huajijam <strhuaji@gmail.com>2019-03-18 20:52:30 +0800
commit8b090e1fd20eb4c301996b5e1dfeb78353e595e4 (patch)
tree52152dd767d195c76baa8fd8bacb14b105aaa146 /src/Java/gtPlusPlus/core/item
parent40d7e5da9f5b84213e2c3e4596fdc69b94bd523e (diff)
downloadGT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.tar.gz
GT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.tar.bz2
GT5-Unofficial-8b090e1fd20eb4c301996b5e1dfeb78353e595e4.zip
fix a bug
Diffstat (limited to 'src/Java/gtPlusPlus/core/item')
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java68
-rw-r--r--src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java26
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/FluidItemBlock.java (renamed from src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java)29
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java48
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtFrameBox.java71
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java77
-rw-r--r--src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java7
-rw-r--r--src/Java/gtPlusPlus/core/item/base/rods/BaseItemRod.java30
-rw-r--r--src/Java/gtPlusPlus/core/item/base/screws/BaseItemScrew.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java408
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java285
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java108
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java11
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/NuclearChem.java44
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/OilChem.java201
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java493
-rw-r--r--src/Java/gtPlusPlus/core/item/crafting/ItemDummyResearch.java111
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemControlCore.java22
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java39
-rw-r--r--src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java5
-rw-r--r--src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java13
-rw-r--r--src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java123
-rw-r--r--src/Java/gtPlusPlus/core/item/init/ItemsFoods.java12
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/misc/DebugScanner.java100
-rw-r--r--src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java129
25 files changed, 2037 insertions, 427 deletions
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index 8d7db4f40a..e8f0e31458 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -32,11 +32,14 @@ import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble;
import gtPlusPlus.core.item.bauble.BatteryPackBaseBauble;
import gtPlusPlus.core.item.bauble.HealthBoostBauble;
import gtPlusPlus.core.item.bauble.ModularBauble;
+import gtPlusPlus.core.item.chemistry.AgriculturalChem;
import gtPlusPlus.core.item.chemistry.CoalTar;
+import gtPlusPlus.core.item.chemistry.GenericChem;
import gtPlusPlus.core.item.chemistry.IonParticles;
import gtPlusPlus.core.item.chemistry.NuclearChem;
import gtPlusPlus.core.item.chemistry.RocketFuels;
import gtPlusPlus.core.item.chemistry.StandardBaseParticles;
+import gtPlusPlus.core.item.crafting.ItemDummyResearch;
import gtPlusPlus.core.item.effects.RarityUncommon;
import gtPlusPlus.core.item.general.BaseItemGrindle;
import gtPlusPlus.core.item.general.BufferCore;
@@ -59,8 +62,10 @@ import gtPlusPlus.core.item.general.chassis.ItemDehydratorCoil;
import gtPlusPlus.core.item.general.chassis.ItemDehydratorCoilWire;
import gtPlusPlus.core.item.general.throwables.ItemHydrofluoricAcidPotion;
import gtPlusPlus.core.item.general.throwables.ItemSulfuricAcidPotion;
+import gtPlusPlus.core.item.general.throwables.ItemThrowableBomb;
import gtPlusPlus.core.item.init.ItemsFoods;
import gtPlusPlus.core.item.materials.DustDecayable;
+import gtPlusPlus.core.item.tool.misc.DebugScanner;
import gtPlusPlus.core.item.tool.misc.GregtechPump;
import gtPlusPlus.core.item.tool.misc.SandstoneHammer;
import gtPlusPlus.core.item.tool.misc.box.AutoLunchBox;
@@ -87,6 +92,7 @@ import gtPlusPlus.core.util.data.StringUtils;
import gtPlusPlus.core.util.debug.DEBUG_INIT;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.everglades.GTplusplus_Everglades;
import gtPlusPlus.xmod.eio.material.MaterialEIO;
import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems;
@@ -217,6 +223,8 @@ public final class ModItems {
public static Item dustCalciumCarbonate;
public static Item dustLi2CO3CaOH2;
public static Item dustLi2BeF4;
+
+ public static Item dustTumbagaMix;
public static Item dustAer;
public static Item dustIgnis;
@@ -304,7 +312,7 @@ public final class ModItems {
public static GregtechPump toolGregtechPump;
- public static Item itemGenericToken;
+ public static ItemGenericToken itemGenericToken;
public static Item itemControlCore;
@@ -328,6 +336,15 @@ public final class ModItems {
public static BatteryPackBaseBauble itemChargePack3;
public static BatteryPackBaseBauble itemChargePack4;
+ public static DebugScanner itemDebugScanner;
+
+ public static ItemDummyResearch itemDummyResearch;
+
+ public static CoreItem itemBombCasing;
+ public static CoreItem itemBombUnf;
+ public static CoreItem itemDetCable;
+ public static ItemThrowableBomb itemBomb;
+
static {
Logger.INFO("Items!");
//Default item used when recipes fail, handy for debugging. Let's make sure they exist when this class is called upon.
@@ -336,9 +353,13 @@ public final class ModItems {
}
public static final void init(){
+
+ itemDebugScanner = new DebugScanner();
+
itemAlkalusDisk = new BaseItemDamageable("itemAlkalusDisk", AddToCreativeTab.tabMisc, 1, 0, "Unknown Use", EnumRarity.rare, EnumChatFormatting.AQUA, false, null);
itemBigEgg = new ItemGiantEgg("itemBigEgg", "Ginourmous Chicken Egg", tabMisc, 64, 0, "I had best try disassemble this.. for science!", "fuelLargeChickenEgg", 5000, 0).setTextureName(CORE.MODID + ":itemBigEgg");
itemGenericToken = new ItemGenericToken();
+ itemDummyResearch = new ItemDummyResearch();
//Debug Loading
if (CORE.DEBUG){
@@ -353,7 +374,7 @@ public final class ModItems {
//Some Simple forms of materials
itemStickyRubber = new Item().setUnlocalizedName("itemStickyRubber").setCreativeTab(tabMachines).setTextureName(CORE.MODID + ":itemStickyRubber");
GameRegistry.registerItem(itemStickyRubber, "itemStickyRubber");
- GT_OreDictUnificator.registerOre("ingotRubber", ItemUtils.getItemStack(CORE.MODID+":itemStickyRubber", 1));
+ GT_OreDictUnificator.registerOre("ingotRubber", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemStickyRubber", 1));
itemCoalCoke = new BaseItemBurnable("itemCoalCoke", "Coking Coal", tabMisc, 64, 0, "Used for metallurgy.", "fuelCoke", 3200, 0).setTextureName(CORE.MODID + ":itemCoalCoke");
@@ -689,7 +710,8 @@ public final class ModItems {
GT_OreDictUnificator.registerOre("pelletZirconium", new ItemStack(itemZirconiumChlorideCinterPellet));
//Zirconium Chloride
dustZrCl4 = ItemUtils.generateSpecialUseDusts("ZrCl4", "ZrCl4", "ZrCl4", Utils.rgbtoHexValue(180, 180, 180))[0]; //http://www.iaea.org/inis/collection/NCLCollectionStore/_Public/39/036/39036750.pdf
- dustCookedZrCl4 = ItemUtils.generateSpecialUseDusts("CookedZrCl4", "Cooked ZrCl4", "ZrCl4", Utils.rgbtoHexValue(180, 180, 180))[0]; //http://www.iaea.org/inis/collection/NCLCollectionStore/_Public/39/036/39036750.pdf
+ dustCookedZrCl4 = ItemUtils.generateSpecialUseDusts("CookedZrCl4", "Cooked ZrCl4", "ZrCl4", Utils.rgbtoHexValue(180, 180, 180))[0]; //http://www.iaea.org/inis/collection/NCLCollectionStore/_Public/39/036/39036750.pdf
+
//Zirconium Tetrafluoride
/*GT_OreDictUnificator.registerOre("cellZrF4", ItemUtils.getItemStackOfAmountFromOreDict("cellZirconiumTetrafluoride", 1));
GT_OreDictUnificator.registerOre("dustZrF4", ItemUtils.getItemStackOfAmountFromOreDict("dustZirconiumTetrafluoride", 1));*/
@@ -830,7 +852,9 @@ public final class ModItems {
if ((ItemUtils.getItemStackOfAmountFromOreDictNoBroken("plateDoubleEuropium", 1) == null) && CORE.ConfigSwitches.enableCustom_Pipes){
itemDoublePlateEuropium = new BaseItemPlateDouble(ELEMENT.getInstance().EUROPIUM);
}
-
+
+ //Tumbaga Mix (For Simple Crafting)
+ dustTumbagaMix = ItemUtils.generateSpecialUseDusts("MixTumbaga", "Tumbaga Mix", "Au2Cu", Utils.rgbtoHexValue(255, 150, 80))[0];
/*
* Decayable Materials
@@ -863,12 +887,28 @@ public final class ModItems {
itemControlCore = new ItemControlCore();
//Chemistry
- CoalTar.run();
- RocketFuels.run();
+ new CoalTar();
+ new RocketFuels();
//Nuclear Processing
- NuclearChem.run();
-
+ new NuclearChem();
+
+ //Farm Animal Fun
+ new AgriculturalChem();
+
+ //General Chemistry
+ new GenericChem();
+
+
+ //Bombs
+ itemBombCasing = new CoreItem("itemBombCasing", "Bomb Casing", tabMisc);
+ itemBombCasing.setTextureName(CORE.MODID + ":bomb_casing");
+ itemBombUnf = new CoreItem("itemBombUnf", "Bomb (unf)", tabMisc);
+ itemBombUnf.setTextureName(CORE.MODID + ":bomb_casing");
+ itemDetCable = new CoreItem("itemDetCable", "Det. Cable", tabMisc);
+ itemDetCable.setTextureName("string");
+ itemBomb = new ItemThrowableBomb();
+
//Only used for debugging.
/*if (CORE.DEVENV) {
new ConnectedBlockFinder();
@@ -1002,7 +1042,7 @@ public final class ModItems {
//Baubles Mod Test
try {
- final Class<?> baublesTest = Class.forName("baubles.api.IBauble");
+ final Class<?> baublesTest = ReflectionUtils.getClass("baubles.api.IBauble");
if (baublesTest != null){
COMPAT_Baubles.run();
}
@@ -1064,10 +1104,10 @@ public final class ModItems {
}
public static void registerCustomTokens() {
- ItemGenericToken.register(0, "BitCoin", 16, "Can be used on the dark web");
- ItemGenericToken.register(1, "Hand Pump Trade Token I", 1, "Craft into a Tier I Hand pump");
- ItemGenericToken.register(2, "Hand Pump Trade Token II", 1, "Craft into a Tier II Hand pump");
- ItemGenericToken.register(3, "Hand Pump Trade Token III", 1, "Craft into a Tier III Hand pump");
- ItemGenericToken.register(4, "Hand Pump Trade Token IV", 1, "Craft into a Tier IV Hand pump");
+ itemGenericToken.register(0, "BitCoin", 16, "Can be used on the dark web");
+ itemGenericToken.register(1, "Hand Pump Trade Token I", 1, "Craft into a Tier I Hand pump");
+ itemGenericToken.register(2, "Hand Pump Trade Token II", 1, "Craft into a Tier II Hand pump");
+ itemGenericToken.register(3, "Hand Pump Trade Token III", 1, "Craft into a Tier III Hand pump");
+ itemGenericToken.register(4, "Hand Pump Trade Token IV", 1, "Craft into a Tier IV Hand pump");
}
}
diff --git a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
index 4dbb5851f2..ceeff7e655 100644
--- a/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
+++ b/src/Java/gtPlusPlus/core/item/base/BaseItemComponent.java
@@ -8,6 +8,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.TextureSet;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.api.objects.Logger;
@@ -17,11 +18,12 @@ import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.state.MaterialState;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.data.StringUtils;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.sys.KeyboardUtils;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
@@ -66,9 +68,9 @@ public class BaseItemComponent extends Item{
GT_OreDictUnificator.registerOre(componentType.getOreDictName()+material.getUnlocalizedName(), ItemUtils.getSimpleStack(this));
if (LoadedMods.Thaumcraft) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.METALLUM, 1);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.METALLUM.mAspect), 1);
if (componentMaterial.isRadioactive) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.RADIO, 2);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.RADIO.mAspect), componentMaterial.vRadiationLevel);
}
}
registerComponent();
@@ -76,18 +78,28 @@ public class BaseItemComponent extends Item{
//For Cell Generation
public BaseItemComponent(final String unlocalName, final String localName, final short[] RGBA) {
+
+ // Handles .'s from fluid internal names.
+ String aFormattedNameForFluids;
+ if (unlocalName.contains(".")) {
+ aFormattedNameForFluids = StringUtils.splitAndUppercase(unlocalName, ".");
+ }
+ else {
+ aFormattedNameForFluids = unlocalName;
+ }
+
this.componentMaterial = null;
- this.unlocalName = "itemCell"+unlocalName;
+ this.unlocalName = "itemCell"+aFormattedNameForFluids;
this.materialName = localName;
this.componentType = ComponentTypes.CELL;
this.setCreativeTab(AddToCreativeTab.tabMisc);
- this.setUnlocalizedName(unlocalName);
+ this.setUnlocalizedName(aFormattedNameForFluids);
this.setMaxStackSize(64);
this.componentColour = MathUtils.getRgbAsHex(RGBA);
this.extraData = RGBA;
this.setTextureName(CORE.MODID + ":" + "item"+ComponentTypes.CELL.COMPONENT_NAME);
- GameRegistry.registerItem(this, unlocalName);
- GT_OreDictUnificator.registerOre(ComponentTypes.CELL.getOreDictName()+unlocalName, ItemUtils.getSimpleStack(this));
+ GameRegistry.registerItem(this, aFormattedNameForFluids);
+ GT_OreDictUnificator.registerOre(ComponentTypes.CELL.getOreDictName()+aFormattedNameForFluids, ItemUtils.getSimpleStack(this));
registerComponent();
}
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java b/src/Java/gtPlusPlus/core/item/base/itemblock/FluidItemBlock.java
index 84fae41bb0..96b5425437 100644
--- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/FluidItemBlock.java
@@ -13,38 +13,30 @@ import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
-public class ItemBlockFluid extends ItemBlock{
+public class FluidItemBlock extends ItemBlock{
protected final int blockColour;
- protected final int sRadiation;
- protected Material thisFluid;
final BlockFluidBase baseBlock;
String name;
- public ItemBlockFluid(final Block block) {
+ public FluidItemBlock(final Block block) {
super(block);
this.baseBlock = (BlockFluidBase) block;
this.blockColour = this.baseBlock.getRenderColor(1);
- this.thisFluid = this.baseBlock.getFluidMaterial();
- this.sRadiation=ItemUtils.getRadioactivityLevel(this.baseBlock.getUnlocalizedName());
this.name = this.baseBlock.getLocalizedName().replace("tile", "").replace("fluid", "").replace("name", "").replace("block", "").replace(".", "");
//GT_OreDictUnificator.registerOre("frameGt"+block.getUnlocalizedName().replace("tile.", "").replace("tile.BlockGtFrame", "").replace("-", "").replace("_", "").replace(" ", "").replace("FrameBox", ""), UtilsItems.getSimpleStack(this));
}
- public final Material setFluidMaterial(final Material M){
- return this.thisFluid=M;
- }
-
public int getRenderColor(final int aMeta) {
return this.blockColour;
}
@Override
public String getItemStackDisplayName(final ItemStack iStack) {
- if (this.thisFluid != null){
+ /*if (this.thisFluid != null){
this.name = "Molten "+this.thisFluid.getLocalizedName();
return this.name;
- }
+ }*/
this.name = "Molten "+this.baseBlock.getLocalizedName().replace("tile", "").replace("fluid", "").replace("name", "").replace("block", "").replace(".", "");
return this.name;
}
@@ -55,24 +47,15 @@ public class ItemBlockFluid extends ItemBlock{
return MathUtils.generateSingularRandomHexValue();
}
return this.blockColour;
-
}
@Override
public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
- list.add("Temperature: "+MathUtils.celsiusToKelvin(this.thisFluid.getMeltingPointC())+"K");
+ /*list.add("Temperature: "+MathUtils.celsiusToKelvin(this.thisFluid.getMeltingPointC())+"K");
if (this.sRadiation > 0){
list.add(CORE.GT_Tooltip_Radioactive);
- }
+ }*/
super.addInformation(stack, aPlayer, list, bool);
}
- public String GetProperName() {
- String tempIngot;
-
- tempIngot = "Molten "+this.baseBlock.getLocalizedName();
-
- return tempIngot;
- }
-
}
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java
index 517e3f7c1f..396689ef63 100644
--- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java
@@ -15,6 +15,7 @@ import gtPlusPlus.core.block.base.BlockBaseOre;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.sys.KeyboardUtils;
@@ -44,7 +45,16 @@ public class ItemBlockGtBlock extends ItemBlock {
this.blockColour = block.getBlockColor();
} else {
this.blockColour = block.getBlockColor();
+ }
+
+ if (block instanceof BlockBaseModular){
+ BlockBaseModular g = (BlockBaseModular) block;
+ this.mMaterial = g.getMaterialEx();
+ }
+ else {
+ this.mMaterial = null;
}
+
// GT_OreDictUnificator.registerOre("block"+block.getUnlocalizedName().replace("tile.block",
// "").replace("tile.", "").replace("of", "").replace("Of", "").replace("Block",
// "").replace("-", "").replace("_", "").replace(" ", ""),
@@ -59,24 +69,32 @@ public class ItemBlockGtBlock extends ItemBlock {
public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
if (this.mMaterial != null) {
- list.add(this.mMaterial.vChemicalFormula);
- if (this.mMaterial.vRadiationLevel > 0) {
- list.add(CORE.GT_Tooltip_Radioactive);
- }
+ list.add(this.mMaterial.vChemicalFormula);
} else {
- list.add("Material is Null.");
+
+ try {
+ BlockBaseModular g = (BlockBaseModular) thisBlock;
+ this.mMaterial = g.getMaterialEx();
+ }
+ catch (Throwable t) {
+
+ }
+
+
+ //list.add("Material is Null.");
}
+ if (this.isOre) {
if (KeyboardUtils.isCtrlKeyDown()) {
Block b = Block.getBlockFromItem(stack.getItem());
if (b != null) {
String aTool = b.getHarvestTool(stack.getItemDamage());
int aMiningLevel1 = b.getHarvestLevel(stack.getItemDamage());
- list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5));
if (this.mMaterial != null) {
- list.add("Ore contains: ");
+ list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5));
+ list.add("Contains: ");
if (mMaterial.getComposites().isEmpty()) {
list.add("- " + mMaterial.getLocalizedName());
} else {
@@ -89,6 +107,22 @@ public class ItemBlockGtBlock extends ItemBlock {
} else {
list.add(EnumChatFormatting.DARK_GRAY + "Hold Ctrl to show additional info.");
}
+ }
+ else {
+ Block b = Block.getBlockFromItem(stack.getItem());
+ if (b != null) {
+ String aTool = b.getHarvestTool(stack.getItemDamage());
+ int aMiningLevel1 = b.getHarvestLevel(stack.getItemDamage());
+ list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5));
+ }
+ }
+
+ if (this.mMaterial != null) {
+ if (this.mMaterial.vRadiationLevel > 0) {
+ list.add(CORE.GT_Tooltip_Radioactive);
+ }
+ }
+
super.addInformation(stack, aPlayer, list, bool);
}
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtFrameBox.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtFrameBox.java
index 74dd2f196c..0dd125bf7b 100644
--- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtFrameBox.java
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtFrameBox.java
@@ -1,18 +1,45 @@
package gtPlusPlus.core.item.base.itemblock;
import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.world.World;
+
+import java.util.List;
import gtPlusPlus.core.block.base.BlockBaseModular;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.util.minecraft.EntityUtils;
+import gtPlusPlus.core.util.sys.KeyboardUtils;
public class ItemBlockGtFrameBox extends ItemBlock{
protected int blockColour;
+ private Material mMaterial;
+ private int sRadiation;
public ItemBlockGtFrameBox(final Block block) {
super(block);
final BlockBaseModular baseBlock = (BlockBaseModular) block;
this.blockColour = baseBlock.getRenderColor(1);
+
+
+
+ if (block instanceof BlockBaseModular){
+ BlockBaseModular g = (BlockBaseModular) block;
+ this.mMaterial = g.getMaterialEx();
+ sRadiation = mMaterial.vRadiationLevel;
+ }
+ else {
+ this.mMaterial = null;
+ sRadiation = 0;
+ }
+
//GT_OreDictUnificator.registerOre("frameGt"+block.getUnlocalizedName().replace("tile.", "").replace("tile.BlockGtFrame", "").replace("-", "").replace("_", "").replace(" ", "").replace("FrameBox", ""), ItemUtils.getSimpleStack(this));
}
@@ -20,4 +47,48 @@ public class ItemBlockGtFrameBox extends ItemBlock{
return this.blockColour;
}
+ @SuppressWarnings("unchecked")
+ @Override
+ public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
+ if (this.mMaterial != null) {
+ list.add(this.mMaterial.vChemicalFormula);
+ if (this.mMaterial.vRadiationLevel > 0) {
+ list.add(CORE.GT_Tooltip_Radioactive);
+ }
+ } else {
+ list.add("Material is Null.");
+ }
+ if (KeyboardUtils.isCtrlKeyDown()) {
+ Block b = Block.getBlockFromItem(stack.getItem());
+ if (b != null) {
+ String aTool = b.getHarvestTool(stack.getItemDamage());
+ int aMiningLevel1 = b.getHarvestLevel(stack.getItemDamage());
+ list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5));
+ if (this.mMaterial != null) {
+ list.add("Contains: ");
+ if (mMaterial.getComposites().isEmpty()) {
+ list.add("- " + mMaterial.getLocalizedName());
+ } else {
+ for (MaterialStack m : mMaterial.getComposites()) {
+ list.add("- " + m.getStackMaterial().getLocalizedName() + " x" + m.getPartsPerOneHundred());
+ }
+ }
+ }
+ }
+ } else {
+ list.add(EnumChatFormatting.DARK_GRAY + "Hold Ctrl to show additional info.");
+ }
+ super.addInformation(stack, aPlayer, list, bool);
+ }
+
+ @Override
+ public void onUpdate(final ItemStack iStack, final World world, final Entity entityHolding, final int p_77663_4_,
+ final boolean p_77663_5_) {
+
+ if (this.sRadiation > 0) {
+ EntityUtils.applyRadiationDamageToEntity(iStack.stackSize, this.sRadiation, world, entityHolding);
+ }
+ }
+
+
}
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java
index 1d48bbbbf9..b26ac67225 100644
--- a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockMeta.java
@@ -1,8 +1,14 @@
package gtPlusPlus.core.item.base.itemblock;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-
+import gtPlusPlus.api.interfaces.ITileTooltip;
+import gtPlusPlus.api.objects.data.AutoMap;
import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlockWithMetadata;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
@@ -10,13 +16,36 @@ import net.minecraft.util.IIcon;
public class ItemBlockMeta extends ItemBlockWithMetadata
{
private final Block mBlock;
+ private HashMap<Integer, AutoMap<String>> aTooltips = new LinkedHashMap<Integer, AutoMap<String>>();
- public ItemBlockMeta(final Block p_i45326_1_)
+ public ItemBlockMeta(final Block aBlock)
{
- super(p_i45326_1_, p_i45326_1_);
- this.mBlock = p_i45326_1_;
+ super(aBlock, aBlock);
+ this.mBlock = aBlock;
this.setMaxDamage(0);
this.setHasSubtypes(true);
+ if (aBlock instanceof ITileTooltip) {
+ ITileTooltip aTooltip = (ITileTooltip) aBlock;
+ //aTooltips.put(aTooltip.getTooltipID(), aTooltip.getTooltipMap());
+ }
+ }
+
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Override
+ public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) {
+ Block aThis = Block.getBlockFromItem(stack.getItem());
+ if (aThis != null) {
+ if (!aTooltips.isEmpty()) {
+ AutoMap<String> h = aTooltips.get(stack.getItemDamage());
+ if (h != null && !h.isEmpty()) {
+ for (String s : h) {
+ list.add(s);
+ }
+ }
+ }
+ }
+ super.addInformation(stack, aPlayer, list, bool);
}
/**
@@ -42,4 +71,44 @@ public class ItemBlockMeta extends ItemBlockWithMetadata
public String getUnlocalizedName(final ItemStack stack) {
return this.getUnlocalizedName() + "." + stack.getItemDamage();
}
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) {
+ return false;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
+ return false;
+ }
+
+ @Override
+ public int getDisplayDamage(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public double getDurabilityForDisplay(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public int getItemEnchantability(ItemStack stack) {
+ return 0;
+ }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
index 2b3f477c56..de47ed8225 100644
--- a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
+++ b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
@@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TC_Aspects;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.creative.AddToCreativeTab;
@@ -26,7 +27,7 @@ import gtPlusPlus.core.material.state.MaterialState;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.EntityUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
public class BaseOreComponent extends Item{
@@ -57,9 +58,9 @@ public class BaseOreComponent extends Item{
registerComponent();
GT_OreDictUnificator.registerOre(componentType.getComponent()+material.getUnlocalizedName(), ItemUtils.getSimpleStack(this));
if (LoadedMods.Thaumcraft) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.METALLUM, 2);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.METALLUM.mAspect), 1);
if (componentMaterial.isRadioactive) {
- ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), GTPP_Aspects.RADIO, 4);
+ ThaumcraftUtils.addAspectToItem(ItemUtils.getSimpleStack(this), TC_Aspect_Wrapper.generate(TC_Aspects.RADIO.mAspect), componentMaterial.vRadiationLevel);
}
}
diff --git a/src/Java/gtPlusPlus/core/item/base/rods/BaseItemRod.java b/src/Java/gtPlusPlus/core/item/base/rods/BaseItemRod.java
index b6a5dff2ac..eaa0905c93 100644
--- a/src/Java/gtPlusPlus/core/item/base/rods/BaseItemRod.java
+++ b/src/Java/gtPlusPlus/core/item/base/rods/BaseItemRod.java
@@ -14,22 +14,36 @@ public class BaseItemRod extends BaseItemComponent{
public BaseItemRod(final Material material) {
super(material, BaseItemComponent.ComponentTypes.ROD);
this.addExtruderRecipe();
+ this.addLatheRecipe();
}
private void addExtruderRecipe(){
Logger.WARNING("Adding cutter recipe for "+this.materialName+" Rods");
-
final ItemStack stackStick = this.componentMaterial.getRod(1);
final ItemStack stackBolt = this.componentMaterial.getBolt(4);
-
+
if (ItemUtils.checkForInvalidItems(new ItemStack[] {stackStick, stackBolt}))
- GT_Values.RA.addCutterRecipe(
- stackStick,
- stackBolt,
- null,
- (int) Math.max(this.componentMaterial.getMass() * 2L, 1L),
- 4);
+ GT_Values.RA.addCutterRecipe(
+ stackStick,
+ stackBolt,
+ null,
+ (int) Math.max(this.componentMaterial.getMass() * 2L, 1L),
+ 4);
+ }
+
+
+ private void addLatheRecipe(){
+ Logger.WARNING("Adding recipe for "+this.materialName+" Rod");
+ ItemStack boltStack = this.componentMaterial.getIngot(1);
+ if (ItemUtils.checkForInvalidItems(boltStack)){
+ GT_Values.RA.addLatheRecipe(
+ boltStack,
+ ItemUtils.getSimpleStack(this),
+ null,
+ (int) Math.max(this.componentMaterial.getMass() / 8L, 1L),
+ 4);
+ }
}
}
diff --git a/src/Java/gtPlusPlus/core/item/base/screws/BaseItemScrew.java b/src/Java/gtPlusPlus/core/item/base/screws/BaseItemScrew.java
index af74c1d535..29e525ed10 100644
--- a/src/Java/gtPlusPlus/core/item/base/screws/BaseItemScrew.java
+++ b/src/Java/gtPlusPlus/core/item/base/screws/BaseItemScrew.java
@@ -18,8 +18,8 @@ public class BaseItemScrew extends BaseItemComponent{
private void addLatheRecipe(){
Logger.WARNING("Adding recipe for "+this.materialName+" Screws");
- final ItemStack boltStack = ItemUtils.getItemStackOfAmountFromOreDict(this.unlocalName.replace("itemScrew", "bolt"), 1);
- if (null != boltStack){
+ ItemStack boltStack = this.componentMaterial.getBolt(1);
+ if (ItemUtils.checkForInvalidItems(boltStack)){
GT_Values.RA.addLatheRecipe(
boltStack,
ItemUtils.getSimpleStack(this),
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java b/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java
new file mode 100644
index 0000000000..0c2bdaa3ef
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java
@@ -0,0 +1,408 @@
+package gtPlusPlus.core.item.chemistry;
+
+import java.util.ArrayList;
+
+import forestry.plugins.PluginCore;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class AgriculturalChem extends ItemPackage {
+
+ private static boolean aBOP;
+ private static boolean aTiCon;
+
+ private static AutoMap<FluidStack> mBloodFluids = new AutoMap<FluidStack>();
+
+ /**
+ * Fluids
+ */
+
+ // Poop Juice
+ public static Fluid PoopJuice;
+ // Manure Slurry
+ public static Fluid ManureSlurry;
+ // Fertile Manure Slurry
+ public static Fluid FertileManureSlurry;
+ // Blood
+ public static Fluid CustomBlood;
+
+ /**
+ * Items
+ */
+
+ // Manure Byproducts
+ public static Item dustManureByproducts;
+ // Organic Fertilizer
+ public static Item dustOrganicFertilizer;
+ // Dirt
+ public static Item dustDirt;
+
+ // Poop Juice
+ // vv - Centrifuge
+ // Manure Slurry && Manure Byproducts -> (Elements) Centrifuge to several tiny
+ // piles
+ // vv - Chem Reactor - Add Peat, Meat
+ // Organic Fertilizer
+ // vv - Dehydrate
+ // Fertilizer
+
+ // Poop Juice
+ // vv - Mixer - Add Blood, Bone, Meat (1000L Poo, 200L Blood, x2 Bone, x3 Meat)
+ // Fertile Manure Slurry
+ // vv - Chem Reactor - Add Peat x1.5
+ // Organic Fertilizer x3
+ // vv - Dehydrate
+ // Fertilizer
+
+
+ @Override
+ public void items() {
+ // Nitrogen, Ammonium Nitrate, Phosphates, Calcium, Copper, Carbon
+ dustManureByproducts = ItemUtils.generateSpecialUseDusts("ManureByproducts", "Manure Byproduct",
+ "(N2H4O3)N2P2Ca3CuC8", Utils.rgbtoHexValue(110, 75, 25))[0];
+
+ // Basically Guano
+ dustOrganicFertilizer = ItemUtils.generateSpecialUseDusts("OrganicFertilizer", "Organic Fertilizer",
+ "Ca5(PO4)3(OH)", Utils.rgbtoHexValue(240, 240, 240))[0];
+
+ // Dirt Dust :)
+ dustDirt = ItemUtils.generateSpecialUseDusts("Dirt", "Dried Earth", Utils.rgbtoHexValue(65, 50, 15))[0];
+ }
+
+ @Override
+ public void blocks() {
+ // None yet
+ }
+
+ @Override
+ public void fluids() {
+ // Sewage
+ PoopJuice = FluidUtils.generateFluidNonMolten("raw.waste", "Raw Animal Waste", 32 + 175,
+ new short[] { 100, 70, 30, 100 }, null, null, 0, true);
+
+ // Sewage
+ ManureSlurry = FluidUtils.generateFluidNonMolten("manure.slurry", "Manure Slurry", 39 + 175,
+ new short[] { 75, 45, 15, 100 }, null, null, 0, true);
+
+ // Sewage
+ FertileManureSlurry = FluidUtils.generateFluidNonMolten("fertile.manure.slurry", "Fertile Manure Slurry",
+ 45 + 175, new short[] { 65, 50, 15, 100 }, null, null, 0, true);
+ }
+
+
+
+ public AgriculturalChem() {
+ super();
+
+ aBOP = LoadedMods.BiomesOPlenty;
+ aTiCon = LoadedMods.TiCon;
+
+ Logger.INFO("Adding Agrochemical content");
+
+ FluidStack aBlood;
+ if (aBOP) {
+ aBlood = FluidUtils.getFluidStack("hell_blood", 100);
+ if (aBlood != null) {
+ Logger.INFO("Found Biome's o Plenty, enabled Blood support.");
+ CustomBlood = aBlood.getFluid();
+ mBloodFluids.put(aBlood);
+ }
+ }
+
+ if (aTiCon) {
+ aBlood = FluidUtils.getFluidStack("hell_blood", 100);
+ if (aBlood != null) {
+ Logger.INFO("Found Tinker's Construct, enabled Blood support.");
+ CustomBlood = aBlood.getFluid();
+ mBloodFluids.put(FluidUtils.getFluidStack("blood", 100));
+ }
+ }
+
+ // Handle Blood Internally, Create if required.
+ if (mBloodFluids.isEmpty() || CustomBlood == null) {
+ Logger.INFO(
+ "Did not find any existing Blood fluids. Trying to wildcard search the fluid registry, then generate our own if that fails.");
+ FluidStack aTempBlood = FluidUtils.getWildcardFluidStack("blood", 100);
+ if (aTempBlood != null) {
+ CustomBlood = aTempBlood.getFluid();
+ } else {
+ aTempBlood = FluidUtils.getWildcardFluidStack("hell_blood", 100);
+ if (aTempBlood == null) {
+ CustomBlood = FluidUtils.generateFluidNoPrefix("blood", "Blood", 32 + 175,
+ new short[] { 175, 25, 25, 100 }, true);
+ } else {
+ CustomBlood = aTempBlood.getFluid();
+ }
+ }
+ Logger.INFO("Using " + CustomBlood.getName());
+ mBloodFluids.put(FluidUtils.getFluidStack(CustomBlood, 100));
+ }
+
+ }
+
+ private static AutoMap<ItemStack> mMeats = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mFish = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mFruits = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mVege = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mNuts = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mSeeds = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mPeat = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mBones = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mBoneMeal = new AutoMap<ItemStack>();
+
+ private static AutoMap<ItemStack> mList_Master_Meats = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_FruitVege = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_Bones = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_Seeds = new AutoMap<ItemStack>();
+
+ private static void processAllOreDict() {
+ processOreDict("listAllmeatraw", mMeats);
+ processOreDict("listAllfishraw", mFish);
+ processOreDict("listAllfruit", mFruits);
+ processOreDict("listAllVeggie", mVege);
+ processOreDict("listAllnut", mNuts);
+ processOreDict("listAllSeed", mSeeds);
+ processOreDict("brickPeat", mPeat);
+ processOreDict("bone", mBones);
+ processOreDict("dustBone", mBoneMeal);
+ // Just make a mega list, makes life easier.
+ if (!mMeats.isEmpty()) {
+ for (ItemStack g : mMeats) {
+ mList_Master_Meats.put(g);
+ }
+ }
+ if (!mFish.isEmpty()) {
+ for (ItemStack g : mFish) {
+ mList_Master_Meats.put(g);
+ }
+ }
+ if (!mFruits.isEmpty()) {
+ for (ItemStack g : mFruits) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mVege.isEmpty()) {
+ for (ItemStack g : mVege) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mNuts.isEmpty()) {
+ for (ItemStack g : mNuts) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mSeeds.isEmpty()) {
+ for (ItemStack g : mSeeds) {
+ mList_Master_Seeds.put(g);
+ }
+ }
+ if (!mBoneMeal.isEmpty()) {
+ for (ItemStack g : mBoneMeal) {
+ mList_Master_Bones.put(g);
+ }
+ }
+ if (!mBones.isEmpty()) {
+ for (ItemStack g : mBones) {
+ mList_Master_Bones.put(g);
+ }
+ }
+ }
+
+ private static void processOreDict(String aOreName, AutoMap<ItemStack> aMap) {
+ ArrayList<ItemStack> aTemp = OreDictionary.getOres(aOreName);
+ if (!aTemp.isEmpty()) {
+ for (ItemStack stack : aTemp) {
+ aMap.put(stack);
+ }
+ }
+ }
+
+ private static void addBasicSlurryRecipes() {
+
+ ItemStack aManureByprod1 = ItemUtils.getItemStackOfAmountFromOreDict("dustTinyManureByproducts", 1);
+ ItemStack aManureByprod2 = ItemUtils.getItemStackOfAmountFromOreDict("dustSmallManureByproducts", 1);
+ ItemStack aDirtDust = ItemUtils.getSimpleStack(dustDirt, 1);
+
+ // Poop Juice to Basic Slurry
+ GT_Values.RA.addCentrifugeRecipe(CI.getNumberedCircuit(10), null, FluidUtils.getFluidStack(PoopJuice, 1000), // In
+ // Fluid
+ FluidUtils.getFluidStack(ManureSlurry, 250), // Out Fluid
+ aDirtDust, aDirtDust, aManureByprod1, aManureByprod1, aManureByprod1, aManureByprod1,
+ new int[] { 2000, 2000, 500, 500, 250, 250 }, // Chances
+ 10 * 20, // Time
+ 30); // EU
+
+ // More Efficient way to get byproducts, less Slurry
+ GT_Values.RA.addCentrifugeRecipe(CI.getNumberedCircuit(20), null, FluidUtils.getFluidStack(PoopJuice, 1000), // In
+ // Fluid
+ FluidUtils.getFluidStack(ManureSlurry, 50), // Out Fluid
+ aDirtDust, aDirtDust, aManureByprod1, aManureByprod1, aManureByprod2, aManureByprod2,
+ new int[] { 4000, 3000, 1250, 1250, 675, 675 }, // Chances
+ 20 * 20, // Time
+ 60); // EU
+
+ }
+
+ private static void addAdvancedSlurryRecipes() {
+
+ ItemStack aCircuit = CI.getNumberedCircuit(10);
+ ItemStack aBone;
+ ItemStack aMeat;
+ ItemStack aEmptyCells = CI.emptyCells(2);
+ ItemStack aInputCells = ItemUtils.getItemStackOfAmountFromOreDict("cellRawWaste", 2);
+ FluidStack aOutput = FluidUtils.getFluidStack(FertileManureSlurry, 1000);
+
+ for (FluidStack aBloodStack : mBloodFluids) {
+ for (ItemStack aBoneStack : mList_Master_Bones) {
+ aBone = ItemUtils.getSimpleStack(aBoneStack, 2);
+ for (ItemStack aMeatStack : mList_Master_Meats) {
+ aMeat = ItemUtils.getSimpleStack(aMeatStack, 5);
+ // Poop Juice to Fertile Slurry
+ GT_Values.RA.addMixerRecipe(aCircuit, aBone, aMeat, aInputCells, aBloodStack, // Input Fluid
+ aOutput, // Output Fluid
+ aEmptyCells, // Output Item
+ 20 * 8, // Time?
+ 60 // Eu?
+ );
+ }
+ }
+ }
+ }
+
+ private static void addBasicOrganiseFertRecipes() {
+ FluidStack aInputFluid = FluidUtils.getFluidStack(ManureSlurry, 1000);
+ ItemStack aOutputDust = ItemUtils.getSimpleStack(dustOrganicFertilizer, 3);
+ ItemStack aPeat;
+ ItemStack aMeat;
+ for (ItemStack aPeatStack : mPeat) {
+ aPeat = ItemUtils.getSimpleStack(aPeatStack, 3);
+ for (ItemStack aMeatStack : mList_Master_Meats) {
+ aMeat = ItemUtils.getSimpleStack(aMeatStack, 5);
+ CORE.RA.addChemicalRecipe(aPeat, aMeat, aInputFluid, null, aOutputDust, 20 * 20, 120);
+ }
+
+ aPeat = ItemUtils.getSimpleStack(aPeatStack, 2);
+ for (ItemStack aMeatStack : mList_Master_FruitVege) {
+ aMeat = ItemUtils.getSimpleStack(aMeatStack, 9);
+ CORE.RA.addChemicalRecipe(aPeat, aMeat, aInputFluid, null, aOutputDust, 10 * 20, 120);
+ }
+ }
+ }
+
+ private static void addAdvancedOrganiseFertRecipes() {
+ FluidStack aInputFluid = FluidUtils.getFluidStack(FertileManureSlurry, 1000);
+ ItemStack aOutputDust = ItemUtils.getSimpleStack(dustOrganicFertilizer, 7);
+ ItemStack aPeat;
+ ItemStack aMeat;
+ for (ItemStack aPeatStack : mPeat) {
+ aPeat = ItemUtils.getSimpleStack(aPeatStack, 5);
+ for (ItemStack aMeatStack : mList_Master_Meats) {
+ aMeat = ItemUtils.getSimpleStack(aMeatStack, 7);
+ CORE.RA.addChemicalRecipe(aPeat, aMeat, aInputFluid, null, aOutputDust, 10 * 20, 140);
+ }
+ aPeat = ItemUtils.getSimpleStack(aPeatStack, 3);
+ for (ItemStack aMeatStack : mList_Master_FruitVege) {
+ aMeat = ItemUtils.getSimpleStack(aMeatStack, 12);
+ CORE.RA.addChemicalRecipe(aPeat, aMeat, aInputFluid, null, aOutputDust, 5 * 20, 140);
+ }
+ }
+ }
+
+ private static void addMiscRecipes() {
+
+ ItemStack aDustOrganicFert = ItemUtils.getSimpleStack(dustOrganicFertilizer, 1);
+ ItemStack aManureByprod = ItemUtils.getSimpleStack(dustManureByproducts, 1);
+
+ // Dehydrate Organise Fert to Normal Fert.
+
+ /**
+ * Forestry Support
+ */
+ if (LoadedMods.Forestry) {
+
+ Item aForestryFert = PluginCore.items.fertilizerCompound;
+
+ CORE.RA.addDehydratorRecipe(
+ new ItemStack[] { CI.getNumberedCircuit(11), ItemUtils.getSimpleStack(aDustOrganicFert, 4) }, null,
+ null, new ItemStack[] { ItemUtils.getSimpleStack(aForestryFert, 3), aManureByprod, aManureByprod },
+ new int[] { 10000, 2000, 2000 }, 20 * 20, 240);
+ }
+
+ /**
+ * IC2 Support
+ */
+ if (LoadedMods.IndustrialCraft2) {
+ CORE.RA.addDehydratorRecipe(
+ new ItemStack[] { CI.getNumberedCircuit(12), ItemUtils.getSimpleStack(aDustOrganicFert, 4) }, null,
+ null, new ItemStack[] { ItemUtils.getItemStackFromFQRN("IC2:itemFertilizer", 3), aManureByprod,
+ aManureByprod },
+ new int[] { 10000, 2000, 2000 }, 20 * 20, 240);
+ }
+
+ // Dirt Production
+ CORE.RA.addCompressorRecipe(ItemUtils.getSimpleStack(dustDirt, 9), ItemUtils.getSimpleStack(Blocks.dirt),
+ 20 * 2, 8);
+
+ // Centrifuge Byproducts
+
+ // Ammonium Nitrate, Phosphates, Calcium, Copper, Carbon
+ GT_Values.RA.addCentrifugeRecipe(CI.getNumberedCircuit(20), ItemUtils.getSimpleStack(aManureByprod, 4),
+ FluidUtils.getFluidStack("sulfuricacid", 250), // In Fluid
+ FluidUtils.getFluidStack("sulfuricapatite", 50), // Out Fluid
+ Materials.Phosphorus.getDustSmall(2), Materials.Calcium.getDustSmall(2),
+ Materials.Copper.getDustTiny(1), Materials.Carbon.getDust(1), ItemUtils.getSimpleStack(dustDirt, 1),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAmmoniumNitrate", 1),
+ new int[] { 2500, 2500, 750, 1000, 5000, 250 }, // Chances
+ 20 * 20, // Time
+ 60); // EU
+
+ // Add Fuel Usages
+ CORE.RA.addSemifluidFuel(FluidUtils.getFluidStack(PoopJuice, 1000), 12);
+ CORE.RA.addSemifluidFuel(FluidUtils.getFluidStack(ManureSlurry, 1000), 24);
+ CORE.RA.addSemifluidFuel(FluidUtils.getFluidStack(FertileManureSlurry, 1000), 32);
+
+ }
+
+ @Override
+ public String errorMessage() {
+ // TODO Auto-generated method stub
+ return "Failed to generate recipes for AgroChem.";
+ }
+
+ @Override
+ public boolean generateRecipes() {
+ if (mBloodFluids.isEmpty()) {
+ Logger.INFO("Could not find, nor create Blood fluid. Unable to add recipes.");
+ return false;
+ }
+
+ // Organise OreDict
+ processAllOreDict();
+
+ // Slurry Production
+ addBasicSlurryRecipes();
+ addAdvancedSlurryRecipes();
+
+ // Organic Fert. Production
+ addBasicOrganiseFertRecipes();
+ addAdvancedOrganiseFertRecipes();
+
+ addMiscRecipes();
+ return true;
+ }
+}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java b/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java
index eea1aed49f..e060723afd 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/CoalTar.java
@@ -8,7 +8,7 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
-
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.item.base.BaseItemComponent;
import gtPlusPlus.core.lib.CORE;
@@ -21,9 +21,10 @@ import gtPlusPlus.core.util.reflect.AddGregtechRecipe;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
-public class CoalTar {
+public class CoalTar extends ItemPackage {
public static Fluid Coal_Gas;
+ public static Fluid Coal_Oil;
public static Fluid Ethylene;
public static Fluid Benzene;
public static Fluid Ethylbenzene;
@@ -39,116 +40,6 @@ public class CoalTar {
public static Fluid Hydrogen_Peroxide;
public static Fluid Lithium_Peroxide;
- public static void run(){
-
- //Special Compatibility for Coke
- ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemCoalCoke, 1), "fuelCoke");
- //Create Coal Gas
- Coal_Gas = FluidUtils.generateFluidNonMolten("CoalGas", "Coal Gas", 500, new short[]{48, 48, 48, 100}, null, null);
- //Ethanol
- // v - Dehydrate cells to remove water
-
-
- //Create Ethylene
- if (!FluidUtils.doesFluidExist("Ethylene")){
- Ethylene = FluidUtils.generateFluidNonMolten("Ethylene", "Ethylene", -103, new short[]{255, 255, 255, 100}, null, null);
- }
- else {
- Ethylene = FluidUtils.getWildcardFluidStack("Ethylene", 1).getFluid();
- }
-
- //Create Benzene - (Toluene + Hydrogen | 95% Benzene / 5% methane)
- if (!FluidUtils.doesFluidExist("NitrousOxide")){
- Benzene = FluidUtils.generateFluidNonMolten("Benzene", "Benzene", 81, new short[]{150, 75, 0, 100}, null, null);
- }
- else {
- Benzene = FluidUtils.getWildcardFluidStack("Benzene", 1).getFluid();
- }
-
- //Create Ethylbenzene - Ethylbenzene is produced in on a large scale by combining benzene and ethylene in an acid-catalyzed chemical reaction
- //Use Chemical Reactor
- Ethylbenzene = FluidUtils.generateFluidNonMolten("Ethylbenzene", "Ethylbenzene", 136, new short[]{255, 255, 255, 100}, null, null);
- //Create Anthracene
- Anthracene = FluidUtils.generateFluidNonMolten("Anthracene", "Anthracene", 340, new short[]{255, 255, 255, 100}, null, null);
- //Toluene
- if (!FluidUtils.doesFluidExist("Toluene")){
- Toluene = FluidUtils.generateFluidNonMolten("Toluene", "Toluene", -95, new short[]{140, 70, 20, 100}, null, null);
- }
- else {
- Toluene = FluidUtils.getWildcardFluidStack("Toluene", 1).getFluid();
- Item itemCellToluene = new BaseItemComponent("Toluene", "Toluene", new short[]{140, 70, 20, 100});
- MaterialGenerator.addFluidCannerRecipe(ItemUtils.getEmptyCell(), ItemUtils.getSimpleStack(itemCellToluene), FluidUtils.getFluidStack(Toluene, 1000), null);
- }
-
- //Create Coal Tar
- Coal_Tar = FluidUtils.generateFluidNonMolten("CoalTar", "Coal Tar", 450, new short[]{32, 32, 32, 100}, null, null);
- // v - Distill (60% Tar oil/15% Naphtha/20% Ethylbenzene/5% Anthracene)
- //Create Coal Tar Oil
- Coal_Tar_Oil = FluidUtils.generateFluidNonMolten("CoalTarOil", "Coal Tar Oil", 240, new short[]{240, 240, 150, 100}, null, null);
- // v - Wash With Sulfuric Acid
- //Create Sulfuric Coal Tar Oil
- Sulfuric_Coal_Tar_Oil = FluidUtils.generateFluidNonMolten("SulfuricCoalTarOil", "Sulfuric Coal Tar Oil", 240, new short[]{250, 170, 12, 100}, null, null);
- // v - Distill (No loss, just time consuming)
- //Create Naphthalene
- Naphthalene = FluidUtils.generateFluidNonMolten("Naphthalene", "Naphthalene", 115, new short[]{210, 185, 135, 100}, null, null);
- // v - Oxidize with mercury and nitric acid
- //Create Phthalic Acid
- Phthalic_Acid = FluidUtils.generateFluidNonMolten("PhthalicAcid", "Phthalic Acid", 207, new short[]{210, 220, 210, 100}, null, null);
- // v - Dehydrate at 180C+
- //Create Phthalic Anhydride
- ItemUtils.generateSpecialUseDusts("PhthalicAnhydride", "Phthalic Anhydride", "C6H4(CO)2O", Utils.rgbtoHexValue(175, 175, 175));
-
-
-
- //Create 2-Ethylanthraquinone
- //2-Ethylanthraquinone is prepared from the reaction of phthalic anhydride and ethylbenzene
- Ethylanthraquinone2 = FluidUtils.generateFluidNonMolten("2Ethylanthraquinone", "2-Ethylanthraquinone", 415, new short[]{227, 255, 159, 100}, null, null);
- //Create 2-Ethylanthrahydroquinone
- //Palladium plate + Hydrogen(250) + 2-Ethylanthraquinone(500) = 600 Ethylanthrahydroquinone
- Ethylanthrahydroquinone2 = FluidUtils.generateFluidNonMolten("2Ethylanthrahydroquinone", "2-Ethylanthrahydroquinone", 415, new short[]{207, 225, 129, 100}, null, null);
- //Create Hydrogen Peroxide
- //Compressed Air(1500) + Ethylanthrahydroquinone(500) + Anthracene(5) = 450 Ethylanthraquinone && 200 Peroxide
- Hydrogen_Peroxide = FluidUtils.generateFluidNonMolten("HydrogenPeroxide", "Hydrogen Peroxide", 150, new short[]{210, 255, 255, 100}, null, null);
-
-
-
- //Lithium Hydroperoxide - LiOH + H2O2 → LiOOH + 2 H2O
- ItemUtils.generateSpecialUseDusts("LithiumHydroperoxide", "Lithium Hydroperoxide", "HLiO2", Utils.rgbtoHexValue(125, 125, 125));
- // v - Dehydrate
- //Lithium Peroxide - 2 LiOOH → Li2O2 + H2O2 + 2 H2O
- Lithium_Peroxide = FluidUtils.generateFluidNonMolten("LithiumPeroxide", "Lithium Peroxide", 446, new short[]{135, 135, 135, 100}, null, null);
-
- //Burn the coal gas!
- GT_Values.RA.addFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalGas", 1), null, 96, 1);
- GT_Values.RA.addFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricCoalTarOil", 1), null, 32, 3);
- GT_Values.RA.addFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalTarOil", 1), null, 64, 3);
- GT_Values.RA.addFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalTar", 1), null, 128, 3);
- createRecipes();
-
-
- }
-
- private static void createRecipes() {
- recipeCreateEthylene();
- recipeCreateBenzene();
- recipeCreateEthylbenzene();
-
- recipeCoalToCoalTar();
- recipeCoalTarToCoalTarOil();
- recipeCoalTarOilToSulfuricOilToNaphthalene();
- recipeNaphthaleneToPhthalicAcid();
- recipePhthalicAcidToPhthalicAnhydride();
- recipe2Ethylanthraquinone();
- recipe2Ethylanthrahydroquinone();
- recipeHydrogenPeroxide();
- recipeLithiumHydroperoxide();
- recipeLithiumPeroxide();
-
- recipeEthylBenzineFuelsIntoHeavyFuel();
- }
-
-
-
private static void recipeEthylBenzineFuelsIntoHeavyFuel() {
CORE.RA.addChemicalRecipe(
ItemUtils.getItemStackOfAmountFromOreDict("cellFuel", 9),
@@ -228,6 +119,15 @@ public class CoalTar {
public static void recipeCoalToCoalTar(){
+ //Charcoal
+ AddGregtechRecipe.addCokeAndPyrolyseRecipes(
+ GT_OreDictUnificator.get(OrePrefixes.gem, Materials.Charcoal, 32L),
+ 8,
+ GT_Values.NF,
+ ItemUtils.getItemStackOfAmountFromOreDict("dustSmallDirt", 2),
+ FluidUtils.getFluidStack("fluid.coaltar", 800),
+ 15,
+ 120);
//Lignite
AddGregtechRecipe.addCokeAndPyrolyseRecipes(
GT_OreDictUnificator.get(OrePrefixes.gem, Materials.Lignite, 16L),
@@ -235,7 +135,7 @@ public class CoalTar {
GT_Values.NF,
ItemUtils.getItemStackOfAmountFromOreDict("dustSmallDarkAsh", 2),
FluidUtils.getFluidStack("fluid.coaltar", 800),
- 90,
+ 45,
60);
//Coal
@@ -245,7 +145,7 @@ public class CoalTar {
GT_Values.NF,
ItemUtils.getItemStackOfAmountFromOreDict("dustSmallDarkAsh", 2),
FluidUtils.getFluidStack("fluid.coaltar", 2200),
- 60,
+ 30,
120);
//Coke
@@ -255,7 +155,7 @@ public class CoalTar {
GT_Values.NF,
ItemUtils.getItemStackOfAmountFromOreDict("dustSmallAsh", 3),
FluidUtils.getFluidStack("fluid.coaltar", 3400),
- 30,
+ 15,
240);
}
@@ -295,14 +195,24 @@ public class CoalTar {
900, //aDuration
30,//aEUt
false //Hidden?
- );
+ );
+ GT_Values.RA.addDistilleryRecipe(
+ CI.getNumberedCircuit(5), //Circuit
+ FluidUtils.getFluidStack("fluid.coaltar", 1500), //aInput
+ FluidUtils.getFluidStack("fluid.kerosene", 400), //aOutput
+ 300, //aDuration
+ 64,//aEUt
+ false //Hidden?
+ );
+
GT_Values.RA.addDistillationTowerRecipe(
FluidUtils.getFluidStack("fluid.coaltar", 1000),
new FluidStack[]{
- FluidUtils.getFluidStack("fluid.coaltaroil", 600), //aOutput
- FluidUtils.getFluidStack("liquid_naphtha", 150), //aOutput
- FluidUtils.getFluidStack("fluid.ethylbenzene", 200), //aOutput
+ FluidUtils.getFluidStack("fluid.coaltaroil", 500), //aOutput
+ FluidUtils.getFluidStack("liquid_naphtha", 100), //aOutput
+ FluidUtils.getFluidStack("fluid.ethylbenzene", 150), //aOutput
FluidUtils.getFluidStack("fluid.anthracene", 50), //aOutput
+ FluidUtils.getFluidStack("fluid.kerosene", 200), //aOutput
},
null,
900,
@@ -430,4 +340,141 @@ public class CoalTar {
240);
}
+ @Override
+ public String errorMessage() {
+ // TODO Auto-generated method stub
+ return "Bad Coal Science!";
+ }
+
+ @Override
+ public boolean generateRecipes() {
+ recipeCreateEthylene();
+ recipeCreateBenzene();
+ recipeCreateEthylbenzene();
+
+ recipeCoalToCoalTar();
+ recipeCoalTarToCoalTarOil();
+ recipeCoalTarOilToSulfuricOilToNaphthalene();
+ recipeNaphthaleneToPhthalicAcid();
+ recipePhthalicAcidToPhthalicAnhydride();
+ recipe2Ethylanthraquinone();
+ recipe2Ethylanthrahydroquinone();
+ recipeHydrogenPeroxide();
+ recipeLithiumHydroperoxide();
+ recipeLithiumPeroxide();
+
+ recipeEthylBenzineFuelsIntoHeavyFuel();
+
+ //Burn the coal gas!
+ GT_Values.RA.addFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalGas", 1), null, 96, 1);
+ CORE.RA.addSemifluidFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellSulfuricCoalTarOil", 1), 64);
+ CORE.RA.addSemifluidFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalTarOil", 1), 32);
+ CORE.RA.addSemifluidFuel(ItemUtils.getItemStackOfAmountFromOreDict("cellCoalTar", 1), 16);
+
+ return true;
+ }
+
+ @Override
+ public void items() {
+ //Phthalic_Acid = FluidUtils.generateFluidNonMolten("PhthalicAcid", "Phthalic Acid", 207, new short[]{210, 220, 210, 100}, null, null);
+ // v - Dehydrate at 180C+
+ //Create Phthalic Anhydride
+ ItemUtils.generateSpecialUseDusts("PhthalicAnhydride", "Phthalic Anhydride", "C6H4(CO)2O", Utils.rgbtoHexValue(175, 175, 175));
+
+ //Lithium Hydroperoxide - LiOH + H2O2 → LiOOH + 2 H2O
+ ItemUtils.generateSpecialUseDusts("LithiumHydroperoxide", "Lithium Hydroperoxide", "HLiO2", Utils.rgbtoHexValue(125, 125, 125));
+ // v - Dehydrate
+ //Lithium Peroxide - 2 LiOOH → Li2O2 + H2O2 + 2 H2O
+ //Lithium_Peroxide = FluidUtils.generateFluidNonMolten("LithiumPeroxide", "Lithium Peroxide", 446, new short[]{135, 135, 135, 100}, null, null);
+ }
+
+ @Override
+ public void blocks() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void fluids() {
+
+
+ //Special Compatibility for Coke
+ ItemUtils.addItemToOreDictionary(ItemUtils.getSimpleStack(ModItems.itemCoalCoke, 1), "fuelCoke");
+ //Create Coal Gas
+ Coal_Gas = FluidUtils.generateFluidNonMolten("CoalGas", "Coal Gas", 500, new short[]{48, 48, 48, 100}, null, null);
+ //Ethanol
+ // v - Dehydrate cells to remove water
+
+
+ //Create Ethylene
+ if (!FluidUtils.doesFluidExist("Ethylene")){
+ Ethylene = FluidUtils.generateFluidNonMolten("Ethylene", "Ethylene", -103, new short[]{255, 255, 255, 100}, null, null);
+ }
+ else {
+ Ethylene = FluidUtils.getWildcardFluidStack("Ethylene", 1).getFluid();
+ }
+
+ //Create Benzene - (Toluene + Hydrogen | 95% Benzene / 5% methane)
+ if (!FluidUtils.doesFluidExist("NitrousOxide")){
+ Benzene = FluidUtils.generateFluidNonMolten("Benzene", "Benzene", 81, new short[]{150, 75, 0, 100}, null, null);
+ }
+ else {
+ Benzene = FluidUtils.getWildcardFluidStack("Benzene", 1).getFluid();
+ }
+
+ //Create Ethylbenzene - Ethylbenzene is produced in on a large scale by combining benzene and ethylene in an acid-catalyzed chemical reaction
+ //Use Chemical Reactor
+ Ethylbenzene = FluidUtils.generateFluidNonMolten("Ethylbenzene", "Ethylbenzene", 136, new short[]{255, 255, 255, 100}, null, null);
+ //Create Anthracene
+ Anthracene = FluidUtils.generateFluidNonMolten("Anthracene", "Anthracene", 340, new short[]{255, 255, 255, 100}, null, null);
+ //Toluene
+ if (!FluidUtils.doesFluidExist("Toluene")){
+ Toluene = FluidUtils.generateFluidNonMolten("Toluene", "Toluene", -95, new short[]{140, 70, 20, 100}, null, null);
+ }
+ else {
+ Toluene = FluidUtils.getWildcardFluidStack("Toluene", 1).getFluid();
+ Item itemCellToluene = new BaseItemComponent("Toluene", "Toluene", new short[]{140, 70, 20, 100});
+ MaterialGenerator.addFluidCannerRecipe(ItemUtils.getEmptyCell(), ItemUtils.getSimpleStack(itemCellToluene), FluidUtils.getFluidStack(Toluene, 1000), null);
+ }
+
+ //Create Coal Tar
+ Coal_Tar = FluidUtils.generateFluidNonMolten("CoalTar", "Coal Tar", 450, new short[]{32, 32, 32, 100}, null, null);
+ // v - Distill (60% Tar oil/15% Naphtha/20% Ethylbenzene/5% Anthracene)
+ //Create Coal Tar Oil
+ Coal_Tar_Oil = FluidUtils.generateFluidNonMolten("CoalTarOil", "Coal Tar Oil", 240, new short[]{240, 240, 150, 100}, null, null);
+ // v - Wash With Sulfuric Acid
+ //Create Sulfuric Coal Tar Oil
+ Sulfuric_Coal_Tar_Oil = FluidUtils.generateFluidNonMolten("SulfuricCoalTarOil", "Sulfuric Coal Tar Oil", 240, new short[]{250, 170, 12, 100}, null, null);
+ // v - Distill (No loss, just time consuming)
+ //Create Naphthalene
+ Naphthalene = FluidUtils.generateFluidNonMolten("Naphthalene", "Naphthalene", 115, new short[]{210, 185, 135, 100}, null, null);
+ // v - Oxidize with mercury and nitric acid
+ //Create Phthalic Acid
+ Phthalic_Acid = FluidUtils.generateFluidNonMolten("PhthalicAcid", "Phthalic Acid", 207, new short[]{210, 220, 210, 100}, null, null);
+ // v - Dehydrate at 180C+
+ //Create Phthalic Anhydride
+ //ItemUtils.generateSpecialUseDusts("PhthalicAnhydride", "Phthalic Anhydride", "C6H4(CO)2O", Utils.rgbtoHexValue(175, 175, 175));
+
+
+
+ //Create 2-Ethylanthraquinone
+ //2-Ethylanthraquinone is prepared from the reaction of phthalic anhydride and ethylbenzene
+ Ethylanthraquinone2 = FluidUtils.generateFluidNonMolten("2Ethylanthraquinone", "2-Ethylanthraquinone", 415, new short[]{227, 255, 159, 100}, null, null);
+ //Create 2-Ethylanthrahydroquinone
+ //Palladium plate + Hydrogen(250) + 2-Ethylanthraquinone(500) = 600 Ethylanthrahydroquinone
+ Ethylanthrahydroquinone2 = FluidUtils.generateFluidNonMolten("2Ethylanthrahydroquinone", "2-Ethylanthrahydroquinone", 415, new short[]{207, 225, 129, 100}, null, null);
+ //Create Hydrogen Peroxide
+ //Compressed Air(1500) + Ethylanthrahydroquinone(500) + Anthracene(5) = 450 Ethylanthraquinone && 200 Peroxide
+ Hydrogen_Peroxide = FluidUtils.generateFluidNonMolten("HydrogenPeroxide", "Hydrogen Peroxide", 150, new short[]{210, 255, 255, 100}, null, null);
+
+
+
+ //Lithium Hydroperoxide - LiOH + H2O2 → LiOOH + 2 H2O
+ //ItemUtils.generateSpecialUseDusts("LithiumHydroperoxide", "Lithium Hydroperoxide", "HLiO2", Utils.rgbtoHexValue(125, 125, 125));
+ // v - Dehydrate
+ //Lithium Peroxide - 2 LiOOH → Li2O2 + H2O2 + 2 H2O
+ Lithium_Peroxide = FluidUtils.generateFluidNonMolten("LithiumPeroxide", "Lithium Peroxide", 446, new short[]{135, 135, 135, 100}, null, null);
+
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java b/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java
new file mode 100644
index 0000000000..02afada849
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java
@@ -0,0 +1,108 @@
+package gtPlusPlus.core.item.chemistry;
+
+import gregtech.api.enums.TextureSet;
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialGenerator;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.item.Item;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class GenericChem extends ItemPackage {
+
+ /**
+ * Materials
+ */
+
+ public static final Material BAKELITE = new Material("Bakelite", MaterialState.SOLID, TextureSet.SET_DULL, new short[]{90, 140, 140}, 120, 240, 23, 24, true, "", 0);//Not a GT Inherited Material
+ public static final Material NYLON = new Material("Nylon", MaterialState.SOLID, TextureSet.SET_SHINY, new short[]{45, 45, 45}, 300, 600, 44, 48, true, "", 0);//Not a GT Inherited Material
+ public static final Material TEFLON = new Material("Teflon", MaterialState.SOLID, TextureSet.SET_SHINY, new short[]{75, 45, 75}, 300, 600, 44, 48, true, "", 0);//Not a GT Inherited Material
+
+ //public static final Material HYPOGEN = new Material("Hypogen", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{220, 120, 75}, 12255, 19377, 240, 251, true, "Hy⚶", 0);//Not a GT Inherited Material
+ //public static final Material HYPOGEN = new Material("Hypogen", MaterialState.SOLID, TextureSets.NUCLEAR.get(), new short[]{220, 120, 75}, 12255, 19377, 240, 251, true, "Hy⚶", 0);//Not a GT Inherited Material
+ //public static final Material Nylon = new Material();
+
+ /**
+ * Fluids
+ */
+
+ public Fluid Benzene;
+ public Fluid NitroBenzene;
+ public Fluid Aniline;
+ public Fluid Polyurethane;
+ public Fluid Phenol; //https://en.wikipedia.org/wiki/Phenol#Uses
+ public Fluid Cyclohexane; //https://en.wikipedia.org/wiki/Cyclohexane
+ public Fluid Cyclohexanone; //https://en.wikipedia.org/wiki/Cyclohexanone
+
+ public Fluid Cadaverine; //https://en.wikipedia.org/wiki/Cadaverine
+ public Fluid Putrescine; //https://en.wikipedia.org/wiki/Putrescine
+
+
+ /**
+ * Items
+ */
+
+ // Phenol Byproducts
+ public Item PhenolicResins; //https://en.wikipedia.org/wiki/Phenol_formaldehyde_resin
+
+
+
+ @Override
+ public void items() {
+ PhenolicResins = ItemUtils.generateSpecialUseDusts("phenolicresins", "Phenolic Resin", "HOC6H4CH2OH", Utils.rgbtoHexValue(80, 40, 40))[0];
+ MaterialGenerator.generate(BAKELITE, false);
+ MaterialGenerator.generate(NYLON, false);
+ MaterialGenerator.generate(TEFLON, false);
+ }
+
+ @Override
+ public void blocks() {}
+
+ @Override
+ public void fluids() {
+
+ if (!FluidRegistry.isFluidRegistered("benzene")) {
+ Benzene = FluidUtils.generateFluidNoPrefix("benzene", "Benzene", 278, new short[] { 100, 70, 30, 100 }, true);
+ }
+ else {
+ Benzene = FluidRegistry.getFluid("benzene");
+ }
+
+ NitroBenzene = FluidUtils.generateFluidNoPrefix("nitrobenzene", "NitroBenzene", 278, new short[] { 70, 50, 40, 100 }, true);
+
+ Aniline = FluidUtils.generateFluidNoPrefix("aniline", "Aniline", 266, new short[] { 100, 100, 30, 100 }, true);
+
+ Polyurethane = FluidUtils.generateFluidNoPrefix("polyurethane", "Polyurethane", 350, new short[] { 100, 70, 100, 100 }, true);
+
+ if (!FluidRegistry.isFluidRegistered("phenol")) {
+ Phenol = FluidUtils.generateFluidNoPrefix("phenol", "Phenol", 313, new short[] { 100, 70, 30, 100 }, true);
+ }
+ else {
+ Phenol = FluidRegistry.getFluid("phenol");
+ }
+
+ Cyclohexane = FluidUtils.generateFluidNoPrefix("cyclohexane", "Cyclohexane", 32 + 175, new short[] { 100, 70, 30, 100 }, true);
+ Cyclohexanone = FluidUtils.generateFluidNoPrefix("cyclohexanone", "Cyclohexanone", 32 + 175, new short[] { 100, 70, 30, 100 }, true);
+
+ Cadaverine = FluidUtils.generateFluidNoPrefix("cadaverine", "Cadaverine", 32 + 175, new short[] { 100, 70, 30, 100 }, true);
+ Putrescine = FluidUtils.generateFluidNoPrefix("putrescine", "Putrescine", 32 + 175, new short[] { 100, 70, 30, 100 }, true);
+
+ }
+
+ @Override
+ public String errorMessage() {
+ // TODO Auto-generated method stub
+ return "Failed to generate recipes for AgroChem.";
+ }
+
+ @Override
+ public boolean generateRecipes() {
+
+
+ return true;
+ }
+}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
index 517a698e80..e08a509436 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/IonParticles.java
@@ -6,6 +6,7 @@ import java.util.List;
import gregtech.api.enums.Materials;
import gtPlusPlus.core.item.base.misc.BaseItemParticle;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.ELEMENT;
import gtPlusPlus.core.util.Utils;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@@ -22,18 +23,16 @@ public class IonParticles extends BaseItemParticle {
public IonParticles() {
- super("Ion", aElements.length, EnumRarity.rare);
+ super("Ion", ELEMENT.NAMES.length, EnumRarity.rare);
}
- private static final String[] aElements = new String[]{"Hydrogen", "Helium", "Lithium", "Beryllium", "Boron", "Carbon", "Nitrogen", "Oxygen", "Fluorine", "Neon", "Sodium", "Magnesium", "Aluminum", "Silicon", "Phosphorus", "Sulfur", "Chlorine", "Argon", "Potassium", "Calcium", "Scandium", "Titanium", "Vanadium", "Chromium", "Manganese", "Iron", "Cobalt", "Nickel", "Copper", "Zinc", "Gallium", "Germanium", "Arsenic", "Selenium", "Bromine", "Krypton", "Rubidium", "Strontium", "Yttrium", "Zirconium", "Niobium", "Molybdenum", "Technetium", "Ruthenium", "Rhodium", "Palladium", "Silver", "Cadmium", "Indium", "Tin", "Antimony", "Tellurium", "Iodine", "Xenon", "Cesium", "Barium", "Lanthanum", "Cerium", "Praseodymium", "Neodymium", "Promethium", "Samarium", "Europium", "Gadolinium", "Terbium", "Dysprosium", "Holmium", "Erbium", "Thulium", "Ytterbium", "Lutetium", "Hafnium", "Tantalum", "Tungsten", "Rhenium", "Osmium", "Iridium", "Platinum", "Gold", "Mercury", "Thallium", "Lead", "Bismuth", "Polonium", "Astatine", "Radon", "Francium", "Radium", "Actinium", "Thorium", "Protactinium", "Uranium", "Neptunium", "Plutonium", "Americium", "Curium", "Berkelium", "Californium", "Einsteinium", "Fermium", "Mendelevium", "Nobelium", "Lawrencium", "Rutherfordium", "Dubnium", "Seaborgium", "Bohrium", "Hassium", "Meitnerium", "Darmstadtium", "Roentgenium", "Copernicium", "Nihonium", "Flerovium", "Moscovium", "Livermorium", "Tennessine", "Oganesson"};
-
- public static IIcon[] overlays = new IIcon[aElements.length];
+ public static IIcon[] overlays = new IIcon[ELEMENT.NAMES.length];
public static IIcon baseTexture;
static {
//Generate Ions
int key = 0;
- for (String s : aElements) {
+ for (String s : ELEMENT.NAMES) {
//Map names to Meta
NameToMetaMap.put(Utils.sanitizeString(s.toLowerCase()), key);
MetaToNameMap.put(key, Utils.sanitizeString(s.toLowerCase()));
@@ -62,7 +61,7 @@ public class IonParticles extends BaseItemParticle {
@Override
public String getUnlocalizedName(final ItemStack itemStack) {
- return "item.particle.ion" + "." + aElements[itemStack.getItemDamage()];
+ return "item.particle.ion" + "." + ELEMENT.NAMES[itemStack.getItemDamage()];
}
private static boolean createNBT(ItemStack rStack){
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/NuclearChem.java b/src/Java/gtPlusPlus/core/item/chemistry/NuclearChem.java
index 1d45dec183..25beb6d9b5 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/NuclearChem.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/NuclearChem.java
@@ -3,7 +3,7 @@ package gtPlusPlus.core.item.chemistry;
import net.minecraft.init.Items;
import gregtech.api.enums.GT_Values;
-
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.recipe.common.CI;
@@ -11,18 +11,40 @@ import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import net.minecraftforge.fluids.Fluid;
-public class NuclearChem {
+public class NuclearChem extends ItemPackage {
public static Fluid Burnt_LiFBeF2ThF4UF4;
public static Fluid Burnt_LiFBeF2ZrF4UF4;
public static Fluid Burnt_LiFBeF2ZrF4U235;
public static Fluid GeneticMutagen;
- private static boolean generateMutagenRecipe = false;
+ private static boolean generateMutagenRecipe = false;
+
+ @Override
+ public String errorMessage() {
+ return "bad Nuclear Chemistry Recipes.";
+ }
- public static void run(){
+ @Override
+ public boolean generateRecipes() {
+ if (generateMutagenRecipe) {
+ chemReator_CreateMutagen();
+ }
+ chemReactor_MutagenWithEggs();
+ return true;
+ }
+
+ @Override
+ public void items() {
+ }
+
+ @Override
+ public void blocks() {
+ }
- //Create Coal Gas
+ @Override
+ public void fluids() {
+ //Create Used Nuclear Fuels
Burnt_LiFBeF2ThF4UF4 = FluidUtils.generateFluidNonMolten("BurntLiFBeF2ThF4UF4", "Burnt LiFBeF2ThF4UF4 Salt", 545, new short[]{48, 175, 48, 100}, null, null);
Burnt_LiFBeF2ZrF4UF4 = FluidUtils.generateFluidNonMolten("BurntLiFBeF2ZrF4UF4", "Burnt LiFBeF2ZrF4UF4 Salt", 520, new short[]{48, 168, 68, 100}, null, null);
Burnt_LiFBeF2ZrF4U235 = FluidUtils.generateFluidNonMolten("BurntLiFBeF2ZrF4U235", "Burnt LiFBeF2ZrF4U235 Salt", 533, new short[]{68, 185, 48, 100}, null, null);
@@ -34,18 +56,6 @@ public class NuclearChem {
else {
GeneticMutagen = FluidUtils.getFluidStack("fluid.Mutagen", 1).getFluid();
}
-
- createRecipes();
-
-
- }
-
- private static void createRecipes() {
-
- if (generateMutagenRecipe)
- chemReator_CreateMutagen();
-
- chemReactor_MutagenWithEggs();
}
private static void chemReator_CreateMutagen() {
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/OilChem.java b/src/Java/gtPlusPlus/core/item/chemistry/OilChem.java
new file mode 100644
index 0000000000..cb7e32eaf0
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/chemistry/OilChem.java
@@ -0,0 +1,201 @@
+package gtPlusPlus.core.item.chemistry;
+
+import java.util.ArrayList;
+
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class OilChem extends ItemPackage {
+
+ /**
+ * Fluids
+ */
+
+ // Poop Juice
+ public static Fluid PoopJuice;
+ // Manure Slurry
+ public static Fluid ManureSlurry;
+ // Fertile Manure Slurry
+ public static Fluid FertileManureSlurry;
+
+ /**
+ * Items
+ */
+
+ // Manure Byproducts
+ public static Item dustManureByproducts;
+ // Organic Fertilizer
+ public static Item dustOrganicFertilizer;
+ // Dirt
+ public static Item dustDirt;
+
+ // Poop Juice
+ // vv - Centrifuge
+ // Manure Slurry && Manure Byproducts -> (Elements) Centrifuge to several tiny
+ // piles
+ // vv - Chem Reactor - Add Peat, Meat
+ // Organic Fertilizer
+ // vv - Dehydrate
+ // Fertilizer
+
+ // Poop Juice
+ // vv - Mixer - Add Blood, Bone, Meat (1000L Poo, 200L Blood, x2 Bone, x3 Meat)
+ // Fertile Manure Slurry
+ // vv - Chem Reactor - Add Peat x1.5
+ // Organic Fertilizer x3
+ // vv - Dehydrate
+ // Fertilizer
+
+
+ @Override
+ public void items() {
+ // Nitrogen, Ammonium Nitrate, Phosphates, Calcium, Copper, Carbon
+ dustManureByproducts = ItemUtils.generateSpecialUseDusts("ManureByproducts", "Manure Byproduct",
+ "(N2H4O3)N2P2Ca3CuC8", Utils.rgbtoHexValue(110, 75, 25))[0];
+
+ // Basically Guano
+ dustOrganicFertilizer = ItemUtils.generateSpecialUseDusts("OrganicFertilizer", "Organic Fertilizer",
+ "Ca5(PO4)3(OH)", Utils.rgbtoHexValue(240, 240, 240))[0];
+
+ // Dirt Dust :)
+ dustDirt = ItemUtils.generateSpecialUseDusts("Dirt", "Dried Earth", Utils.rgbtoHexValue(65, 50, 15))[0];
+ }
+
+ @Override
+ public void blocks() {
+ // None yet
+ }
+
+ @Override
+ public void fluids() {
+ // Sewage
+ PoopJuice = FluidUtils.generateFluidNonMolten("raw.waste", "Raw Animal Waste", 32 + 175,
+ new short[] { 100, 70, 30, 100 }, null, null, 0, true);
+
+ // Sewage
+ ManureSlurry = FluidUtils.generateFluidNonMolten("manure.slurry", "Manure Slurry", 39 + 175,
+ new short[] { 75, 45, 15, 100 }, null, null, 0, true);
+
+ // Sewage
+ FertileManureSlurry = FluidUtils.generateFluidNonMolten("fertile.manure.slurry", "Fertile Manure Slurry",
+ 45 + 175, new short[] { 65, 50, 15, 100 }, null, null, 0, true);
+ }
+
+ private static AutoMap<ItemStack> mMeats = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mFish = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mFruits = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mVege = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mNuts = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mSeeds = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mPeat = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mBones = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mBoneMeal = new AutoMap<ItemStack>();
+
+ private static AutoMap<ItemStack> mList_Master_Meats = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_FruitVege = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_Bones = new AutoMap<ItemStack>();
+ private static AutoMap<ItemStack> mList_Master_Seeds = new AutoMap<ItemStack>();
+
+ private static void processAllOreDict() {
+ processOreDict("listAllmeatraw", mMeats);
+ processOreDict("listAllfishraw", mFish);
+ processOreDict("listAllfruit", mFruits);
+ processOreDict("listAllVeggie", mVege);
+ processOreDict("listAllnut", mNuts);
+ processOreDict("listAllSeed", mSeeds);
+ processOreDict("brickPeat", mPeat);
+ processOreDict("bone", mBones);
+ processOreDict("dustBone", mBoneMeal);
+ // Just make a mega list, makes life easier.
+ if (!mMeats.isEmpty()) {
+ for (ItemStack g : mMeats) {
+ mList_Master_Meats.put(g);
+ }
+ }
+ if (!mFish.isEmpty()) {
+ for (ItemStack g : mFish) {
+ mList_Master_Meats.put(g);
+ }
+ }
+ if (!mFruits.isEmpty()) {
+ for (ItemStack g : mFruits) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mVege.isEmpty()) {
+ for (ItemStack g : mVege) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mNuts.isEmpty()) {
+ for (ItemStack g : mNuts) {
+ mList_Master_FruitVege.put(g);
+ }
+ }
+ if (!mSeeds.isEmpty()) {
+ for (ItemStack g : mSeeds) {
+ mList_Master_Seeds.put(g);
+ }
+ }
+ if (!mBoneMeal.isEmpty()) {
+ for (ItemStack g : mBoneMeal) {
+ mList_Master_Bones.put(g);
+ }
+ }
+ if (!mBones.isEmpty()) {
+ for (ItemStack g : mBones) {
+ mList_Master_Bones.put(g);
+ }
+ }
+ }
+
+ private static void processOreDict(String aOreName, AutoMap<ItemStack> aMap) {
+ ArrayList<ItemStack> aTemp = OreDictionary.getOres(aOreName);
+ if (!aTemp.isEmpty()) {
+ for (ItemStack stack : aTemp) {
+ aMap.put(stack);
+ }
+ }
+ }
+
+ private static void addBasicSlurryRecipes() {}
+
+ private static void addAdvancedSlurryRecipes() {}
+
+ private static void addBasicOrganiseFertRecipes() {}
+
+ private static void addAdvancedOrganiseFertRecipes() {}
+
+ private static void addMiscRecipes() {}
+
+ @Override
+ public String errorMessage() {
+ // TODO Auto-generated method stub
+ return "Failed to generate recipes for AgroChem.";
+ }
+
+ @Override
+ public boolean generateRecipes() {
+
+ // Organise OreDict
+ processAllOreDict();
+
+ // Slurry Production
+ addBasicSlurryRecipes();
+ addAdvancedSlurryRecipes();
+
+ // Organic Fert. Production
+ addBasicOrganiseFertRecipes();
+ addAdvancedOrganiseFertRecipes();
+
+ addMiscRecipes();
+ return true;
+ }
+}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
index a516cb0639..f2b5d0683c 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
@@ -1,31 +1,37 @@
package gtPlusPlus.core.item.chemistry;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashMap;
+import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_Recipe;
import gregtech.api.util.Recipe_GT;
-import gtPlusPlus.api.objects.data.AutoMap;
-import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.api.objects.minecraft.ItemPackage;
import gtPlusPlus.core.item.base.BaseItemComponent;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
-public class RocketFuels {
+public class RocketFuels extends ItemPackage {
public static HashSet<String> mValidRocketFuelNames = new HashSet<String>();
public static HashMap<Integer, Fluid> mValidRocketFuels = new HashMap<Integer, Fluid>();
- public static Fluid Kerosene;
+ public static Fluid Oil_Heavy;
+ public static Fluid Diesel;
+ public static Fluid Kerosene;
public static Fluid RP1;
public static Fluid Nitrogen_Tetroxide;
public static Fluid Hydrazine;
@@ -45,117 +51,23 @@ public class RocketFuels {
public static Item Ammonium_Nitrate_Dust;
public static Item Formaldehyde_Catalyst;
-
- public static void run(){
-
- //Create Kerosene
- Kerosene = FluidUtils.generateFluidNonMolten("Kerosene", "Kerosene", 500, new short[]{150, 40, 150, 100}, null, null);
-
- //RP! Focket Fuel
- RP1 = FluidUtils.generateFluidNonMolten("RP1Fuel", "RP-1 Rocket Fuel", 500, new short[]{210, 50, 50, 100}, null, null);
-
- //Create Nitrogen Tetroxide
- Nitrogen_Tetroxide = FluidUtils.generateFluidNonMolten("NitrogenTetroxide", "Nitrogen Tetroxide", -11, new short[]{170, 170, 0, 100}, null, null);
-
- //Create Hydrazine
- Hydrazine = FluidUtils.generateFluidNonMolten("Hydrazine", "Hydrazine", 2, new short[]{250, 250, 250, 100}, null, null);
-
- //Create Monomethylhydrazine
- Monomethylhydrazine = FluidUtils.generateFluidNonMolten("Monomethylhydrazine", "Monomethylhydrazine", -52, new short[]{125, 125, 125, 100}, null, null);
-
- //Create Anthracene
- Nitrous_Oxide = FluidUtils.generateFluidNonMolten("NitrousOxide", "Nitrous Oxide", -91, new short[]{255, 255, 255, 100}, null, null);
-
- //Nos
- if (!FluidUtils.doesFluidExist("NitrousOxide")){
- Nitrous_Oxide = FluidUtils.generateFluidNoPrefix("NitrousOxide", "Nitrous Oxide", -91, new short[]{255, 255, 255, 100});
- }
- else {
- Nitrous_Oxide = FluidUtils.getWildcardFluidStack("NitrousOxide", 1).getFluid();
- if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellNitrousOxide", 1) == null){
- new BaseItemComponent("NitrousOxide", "Nitrous Oxide", new short[] {10, 10, 175});
- }
- }
-
- //Unsymmetrical_Dimethylhydrazine
- if (FluidUtils.getFluidStack("1,1dimethylhydrazine", 1) == null){
- Unsymmetrical_Dimethylhydrazine = FluidUtils.generateFluidNonMolten("UnsymmetricalDimethylhydrazine", "Unsymmetrical Dimethylhydrazine", -57, new short[]{70, 210, 20, 100}, null, null);
- }
- else {
- Unsymmetrical_Dimethylhydrazine = FluidUtils.getFluidStack("1,1dimethylhydrazine", 1000).getFluid();
- }
-
- //Create Hydrated_Ammonium_Nitrate_Slurry
- Hydrated_Ammonium_Nitrate_Slurry = FluidUtils.generateFluidNonMolten("AmmoniumNitrateSlurry", "Hydrated Ammonium Nitrate Slurry", 450, new short[]{150, 75, 150, 100}, null, null);
-
- //Lithium Hydroperoxide - LiOH + H2O2 → LiOOH + 2 H2O
- Ammonium_Nitrate_Dust = ItemUtils.generateSpecialUseDusts("AmmoniumNitrate", "Ammonium Nitrate", "N2H4O3", Utils.rgbtoHexValue(150, 75, 150))[0];
-
- //Create Liquid_Oxygen
- if (FluidUtils.getFluidStack("LiquidOxygen", 1) == null && FluidUtils.getFluidStack("liquidoxygen", 1) == null){
- Liquid_Oxygen = FluidUtils.generateFluidNonMolten("LiquidOxygen", "Liquid Oxygen", -240, new short[]{75, 75, 220, 100}, null, null);
- }
- else {
- if (FluidUtils.getFluidStack("LiquidOxygen", 1) != null ) {
- Liquid_Oxygen = FluidUtils.getFluidStack("LiquidOxygen", 1).getFluid();
- }
- else {
- Liquid_Oxygen = FluidUtils.getFluidStack("liquidoxygen", 1).getFluid();
- }
- if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellLiquidOxygen", 1) == null){
- new BaseItemComponent("LiquidOxygen", "Liquid Oxygen", new short[] {10, 10, 175});
- }
- }
-
- Formaldehyde = FluidUtils.generateFluidNonMolten("Formaldehyde", "Formaldehyde", -92, new short[]{150, 75, 150, 100}, null, null);
- Formaldehyde_Catalyst = ItemUtils.generateSpecialUseDusts("FormaldehydeCatalyst", "Formaldehyde Catalyst", "Fe16V1", Utils.rgbtoHexValue(25, 5, 25))[0];
-
-
- Unsymmetrical_Dimethylhydrazine_Plus_Nitrogen_Tetroxide = FluidUtils.generateFluidNonMolten("RocketFuelMixA", "H8N4C2O4 Rocket Fuel", -185, new short[]{50, 220, 50, 100}, null, null);
- RP1_Plus_Liquid_Oxygen = FluidUtils.generateFluidNonMolten("RocketFuelMixB", "Rp-1 Fuel Mixture", -250, new short[]{250, 50, 50, 100}, null, null);
- Monomethylhydrazine_Plus_Nitric_Acid = FluidUtils.generateFluidNonMolten("RocketFuelMixC", "CN3H7O3 Rocket Fuel", -300, new short[]{125, 75, 180, 100}, null, null);
- Dense_Hydrazine_Mix = FluidUtils.generateFluidNonMolten("RocketFuelMixD", "Dense Hydrazine Fuel Mixture", -250, new short[]{175, 80, 120, 100}, null, null);
-
-
-
- createRecipes();
-
-
- }
-
- private static void createRecipes() {
- createKerosene();
- createRP1();
- createNitrogenTetroxide();
- createHydrazine();
- createMonomethylhydrazine();
-
- if (!CORE.GTNH) {
- createLOX();
- }
-
-
- createHydratedAmmoniumNitrateSlurry();
- createAmmoniumNitrateDust();
- createFormaldehyde();
- createFormaldehydeCatalyst();
- createUnsymmetricalDimethylhydrazine();
-
- createRocketFuels();
- addRocketFuelsToMap();
-
- }
-
+
public static void createKerosene(){
- FluidStack fuelA = FluidUtils.getFluidStack("diesel", 400);
- FluidStack fuelB = FluidUtils.getFluidStack("fuel", 400);
+
+
+
+ FluidStack fuelA = FluidUtils.getFluidStack("diesel", 300);
+ FluidStack fuelB = FluidUtils.getFluidStack("fuel", 300);
+
+
+
if (fuelA != null){
//GT_Values.RA.addDistilleryRecipe(23, fuelA, FluidUtils.getFluidStack(Kerosene, 50), 200, 64, false);
- GT_Values.RA.addDistilleryRecipe(CI.getNumberedCircuit(23), fuelA, FluidUtils.getFluidStack(Kerosene, 50), 200, 64, false);
+ GT_Values.RA.addDistilleryRecipe(CI.getNumberedCircuit(23), fuelA, FluidUtils.getFluidStack(Kerosene, 100), 200, 64, false);
}
if (fuelA == null && fuelB != null){
//GT_Values.RA.addDistilleryRecipe(23, fuelB, FluidUtils.getFluidStack(Kerosene, 50), 200, 64, false);
- GT_Values.RA.addDistilleryRecipe(CI.getNumberedCircuit(23), fuelB, FluidUtils.getFluidStack(Kerosene, 50), 200, 64, false);
+ GT_Values.RA.addDistilleryRecipe(CI.getNumberedCircuit(23), fuelB, FluidUtils.getFluidStack(Kerosene, 100), 200, 64, false);
}
}
@@ -288,9 +200,9 @@ public class RocketFuels {
}
- private static void addRocketFuelsToMap() {
- AutoMap<Recipe_GT> mRocketFuels = new AutoMap<Recipe_GT>();
- mRocketFuels.put(new Recipe_GT(
+ private static void addRocketFuelsToMap() {
+ HashMap<Integer, Recipe_GT> mRocketFuels = new LinkedHashMap<Integer, Recipe_GT>();
+ mRocketFuels.put(0, new Recipe_GT(
true,
new ItemStack[] {},
new ItemStack[] {},
@@ -302,7 +214,7 @@ public class RocketFuels {
0,
256)); //Fuel Value
- mRocketFuels.put(new Recipe_GT(
+ mRocketFuels.put(1, new Recipe_GT(
true,
new ItemStack[] {},
new ItemStack[] {},
@@ -314,7 +226,7 @@ public class RocketFuels {
0,
512)); //Fuel Value
- mRocketFuels.put(new Recipe_GT(
+ mRocketFuels.put(2, new Recipe_GT(
true,
new ItemStack[] {},
new ItemStack[] {},
@@ -326,7 +238,7 @@ public class RocketFuels {
0,
768)); //Fuel Value
- mRocketFuels.put(new Recipe_GT(
+ mRocketFuels.put(3, new Recipe_GT(
true,
new ItemStack[] {},
new ItemStack[] {},
@@ -340,15 +252,15 @@ public class RocketFuels {
//Add in default Diesel for the Buggy
- mValidRocketFuelNames.add(Materials.Fuel.getFluid(1).getFluid().getName());
- mValidRocketFuels.put(-1, Materials.Fuel.getFluid(1).getFluid());
-
- int mID = 0;
- for (Recipe_GT r : mRocketFuels) {
- if (r != null) {
- mValidRocketFuelNames.add(r.mFluidInputs[0].getFluid().getName());
- mValidRocketFuels.put(mID++, r.mFluidInputs[0].getFluid());
- Recipe_GT.Gregtech_Recipe_Map.sRocketFuels.add(r);
+ mValidRocketFuels.put(-1, Diesel);
+
+ mValidRocketFuelNames.add(FluidRegistry.getFluidName(Diesel));
+ for (int mID : mRocketFuels.keySet()) {
+ Recipe_GT aFuelRecipe = mRocketFuels.get(mID);
+ if (aFuelRecipe != null) {
+ mValidRocketFuelNames.add(FluidRegistry.getFluidName(aFuelRecipe.mFluidInputs[0].getFluid()));
+ mValidRocketFuels.put(mID, aFuelRecipe.mFluidInputs[0].getFluid());
+ Recipe_GT.Gregtech_Recipe_Map.sRocketFuels.add(aFuelRecipe);
}
}
@@ -500,6 +412,333 @@ public class RocketFuels {
}
+ @Override
+ public String errorMessage() {
+ // TODO Auto-generated method stub
+ return "Bad Rocket Fuel Science!";
+ }
+
+ @Override
+ public boolean generateRecipes() {
+ createKerosene();
+ createRP1();
+ createNitrogenTetroxide();
+ createHydrazine();
+ createMonomethylhydrazine();
+
+ if (!CORE.GTNH) {
+ createLOX();
+ }
+
+
+ createHydratedAmmoniumNitrateSlurry();
+ createAmmoniumNitrateDust();
+ createFormaldehyde();
+ createFormaldehydeCatalyst();
+ createUnsymmetricalDimethylhydrazine();
+
+ createRocketFuels();
+ addRocketFuelsToMap();
+
+ return true;
+ }
+
+ @Override
+ public boolean onLoadComplete(FMLLoadCompleteEvent event) {
+
+
+ if (MathUtils.randInt(1, 2) > 0) {
+ return false;
+ }
+
+
+ Materials aMaterial_Chloramine = MaterialUtils.getMaterial("Chloramine");
+ Materials aMaterial_Dimethylamine = MaterialUtils.getMaterial("Dimethylamine");
+ Materials aMaterial_DilutedHydrochloricAcid = MaterialUtils.getMaterial("DilutedHydrochloricAcid");
+ Materials aMaterial_NitrogenDioxide = MaterialUtils.getMaterial("NitrogenDioxide");
+ Materials aMaterial_DinitrogenTetroxide = MaterialUtils.getMaterial("DinitrogenTetroxide");
+ Materials aMaterial_Dimethylhydrazine = MaterialUtils.getMaterial("Dimethylhydrazine");
+
+ Materials aMaterial_Oxygen = Materials.Oxygen;
+ Materials aMaterial_Water = Materials.Water;
+ Materials aMaterial_HypochlorousAcid = MaterialUtils.getMaterial("HypochlorousAcid");
+ Materials aMaterial_Ammonia = MaterialUtils.getMaterial("Ammonia");
+ Materials aMaterial_Methanol = MaterialUtils.getMaterial("Methanol");
+
+ if (aMaterial_Chloramine == null || aMaterial_Dimethylamine == null || aMaterial_DilutedHydrochloricAcid == null
+ || aMaterial_Dimethylhydrazine == null || aMaterial_NitrogenDioxide == null || aMaterial_DinitrogenTetroxide == null
+ || aMaterial_HypochlorousAcid == null || aMaterial_Ammonia == null || aMaterial_Methanol == null) {
+ return false;
+ }
+
+
+ ItemStack aCellEmpty = CI.emptyCells(1);
+ ItemStack aCellWater = aMaterial_Water.getCells(1);
+ ItemStack aCellOxygen = aMaterial_Oxygen.getCells(1);
+ ItemStack aCellChloramine = aMaterial_Chloramine.getCells(1);
+ ItemStack aCellDimethylamine = aMaterial_Dimethylamine.getCells(1);
+ ItemStack aCellDilutedHydrochloricAcid = aMaterial_DilutedHydrochloricAcid.getCells(1);
+ ItemStack aCellNitrogenDioxide = aMaterial_NitrogenDioxide.getCells(1);
+ ItemStack aCellDinitrogenTetroxide = aMaterial_DinitrogenTetroxide.getCells(1);
+ ItemStack aCellDimethylhydrazine = aMaterial_Dimethylhydrazine.getCells(1);
+
+
+
+
+
+
+ GT_Recipe aChemReactor_1 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+ GT_Recipe aChemReactor_2 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+
+
+
+ GT_Recipe aChemReactor_Basic_1 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+ GT_Recipe aChemReactor_Basic_2 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+ GT_Recipe aChemReactor_Basic_3 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+ GT_Recipe aChemReactor_Basic_4 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GT_Recipe aChemReactor_Adv_1 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+ GT_Recipe aChemReactor_Adv_2 = new Recipe_GT(
+ true, //Optimise
+ new ItemStack[] {}, //I
+ new ItemStack[] {}, //O
+ null, //Special
+ new int[] {}, //Chance
+ new FluidStack[] {}, //I
+ new FluidStack[] {}, //O
+ 0, //Dura
+ 0, //Eu
+ 0); //Special
+
+
+
+
+ //RecipeUtils.removeGtRecipe(aChemReactor_Basic_1, GT_Recipe.GT_Recipe_Map.sChemicalRecipes);
+ //RecipeUtils.removeGtRecipe(aChemReactor_Basic_1, GT_Recipe.GT_Recipe_Map.sChemicalRecipes);
+ //RecipeUtils.removeGtRecipe(aChemReactor_Basic_1, GT_Recipe.GT_Recipe_Map.sChemicalRecipes);
+ //RecipeUtils.removeGtRecipe(aChemReactor_Basic_1, GT_Recipe.GT_Recipe_Map.sChemicalRecipes);
+
+
+
+
+
+
+ /* GT_Values.RA.addChemicalRecipe( Materials.Chloramine.getCells(2), GT_Utility.getIntegratedCircuit(1), Materials.Dimethylamine.getGas(5000), Materials.Dimethylhydrazine.getFluid(6000), Materials.DilutedHydrochloricAcid.getCells(1), Materials.Empty.getCells(1), 960, 480);
+ GT_Values.RA.addChemicalRecipe( Materials.Dimethylamine.getCells(5), GT_Utility.getIntegratedCircuit(1), Materials.Chloramine.getFluid(2000), Materials.Dimethylhydrazine.getFluid(6000), Materials.DilutedHydrochloricAcid.getCells(1), Materials.Empty.getCells(4), 960, 480);
+ GT_Values.RA.addChemicalRecipeForBasicMachineOnly(Materials.Chloramine.getCells(2), Materials.Empty.getCells(4), Materials.Dimethylamine.getGas(5000), Materials.DilutedHydrochloricAcid.getFluid(1000), Materials.Dimethylhydrazine.getCells(6), GT_Values.NI, 960, 480);
+ GT_Values.RA.addChemicalRecipeForBasicMachineOnly(Materials.Dimethylamine.getCells(5), Materials.Empty.getCells(1), Materials.Chloramine.getFluid(2000), Materials.DilutedHydrochloricAcid.getFluid(1000), Materials.Dimethylhydrazine.getCells(6), GT_Values.NI, 960, 480);
+ GT_Values.RA.addChemicalRecipeForBasicMachineOnly(Materials.Dimethylamine.getCells(5), Materials.Chloramine.getCells(2), Materials.Chloramine.getFluid(2000), Materials.DilutedHydrochloricAcid.getFluid(1000), Materials.Dimethylhydrazine.getCells(6), Materials.DilutedHydrochloricAcid.getCells(1), 960, 480);
+ GT_Values.RA.addMultiblockChemicalRecipe(new ItemStack[]{GT_Utility.getIntegratedCircuit(24)}, new FluidStack[]{Materials.HypochlorousAcid.getFluid(3000), Materials.Ammonia.getGas(8000), Materials.Methanol.getFluid(12000)}, new FluidStack[]{Materials.Dimethylhydrazine.getFluid(12000), Materials.DilutedHydrochloricAcid.getFluid(2000), Materials.Water.getFluid(9000)}, null, 1040, 480);
+
+ GT_Values.RA.addChemicalRecipe(GT_Utility.getIntegratedCircuit(2), GT_Values.NI, Materials.NitrogenDioxide.getGas(1000), Materials.DinitrogenTetroxide.getGas(1000), GT_Values.NI, 640);
+ GT_Values.RA.addChemicalRecipe(Materials.NitrogenDioxide.getCells(1), GT_Utility.getIntegratedCircuit(2), GT_Values.NF, Materials.DinitrogenTetroxide.getGas(1000), Materials.Empty.getCells(1), 640);
+ GT_Values.RA.addChemicalRecipe(Materials.NitrogenDioxide.getCells(1), GT_Utility.getIntegratedCircuit(12), GT_Values.NF, GT_Values.NF, Materials.DinitrogenTetroxide.getCells(1), 640);
+ GT_Values.RA.addMultiblockChemicalRecipe(new ItemStack[]{GT_Utility.getIntegratedCircuit(23)}, new FluidStack[]{Materials.Ammonia.getGas(8000), Materials.Oxygen.getGas(7000)}, new FluidStack[]{Materials.DinitrogenTetroxide.getGas(6000), Materials.Water.getFluid(9000)}, null, 480, 30);
+ GT_Values.RA.addMultiblockChemicalRecipe(new ItemStack[]{GT_Utility.getIntegratedCircuit(23)}, new FluidStack[]{Materials.Nitrogen.getGas(2000), Materials.Hydrogen.getGas(6000), Materials.Oxygen.getGas(7000)}, new FluidStack[]{Materials.DinitrogenTetroxide.getGas(6000), Materials.Water.getFluid(9000)}, null, 1100, 480);
+
+ GT_Values.RA.addMixerRecipe(Materials.Dimethylhydrazine.getCells(1), GT_Values.NI, GT_Values.NI, GT_Values.NI, Materials.DinitrogenTetroxide.getGas(1000), new FluidStack(ItemList.sRocketFuel, 2000), Materials.Empty.getCells(1), 60, 16);
+ GT_Values.RA.addMixerRecipe(Materials.DinitrogenTetroxide.getCells(1), GT_Values.NI, GT_Values.NI, GT_Values.NI, Materials.Dimethylhydrazine.getFluid(1000), new FluidStack(ItemList.sRocketFuel, 2000), Materials.Empty.getCells(1), 60, 16);
+ GT_Values.RA.addMixerRecipe(Materials.Dimethylhydrazine.getCells(2), GT_Values.NI, GT_Values.NI, GT_Values.NI, Materials.Oxygen.getGas(1000), new FluidStack(ItemList.sRocketFuel, 3000), Materials.Empty.getCells(2), 60, 16);
+ GT_Values.RA.addMixerRecipe(Materials.Oxygen.getCells(1), GT_Values.NI, GT_Values.NI, GT_Values.NI, Materials.Dimethylhydrazine.getFluid(2000), new FluidStack(ItemList.sRocketFuel, 3000), Materials.Empty.getCells(1), 60, 16);
+
+
+ */
+
+
+
+
+
+
+
+
+
+ //Get Rocket Fuel
+
+ //Find recipes using default values
+
+ //Remove
+
+ //Rebake map
+
+ return true;
+ };
+
+ @Override
+ public void items() {
+ Formaldehyde_Catalyst = ItemUtils.generateSpecialUseDusts("FormaldehydeCatalyst", "Formaldehyde Catalyst", "Fe16V1", Utils.rgbtoHexValue(25, 5, 25))[0];
+ }
+
+ @Override
+ public void blocks() {
+ }
+
+ @Override
+ public void fluids() {
+
+ //Register default fluids
+ Diesel = MaterialUtils.getMaterial("Fuel", "Diesel").getFluid(1).getFluid();
+ Oil_Heavy = MaterialUtils.getMaterial("OilHeavy", "Oil").getFluid(1).getFluid();
+
+
+ //Create Kerosene
+ Kerosene = FluidUtils.generateFluidNonMolten("Kerosene", "Kerosene", 500, new short[]{150, 40, 150, 100}, null, null);
+ CoalTar.Coal_Oil = Kerosene;
+
+ //RP! Focket Fuel
+ RP1 = FluidUtils.generateFluidNonMolten("RP1Fuel", "RP-1 Rocket Fuel", 500, new short[]{210, 50, 50, 100}, null, null);
+
+ //Create Nitrogen Tetroxide
+ Nitrogen_Tetroxide = FluidUtils.generateFluidNonMolten("NitrogenTetroxide", "Nitrogen Tetroxide", -11, new short[]{170, 170, 0, 100}, null, null);
+
+ //Create Hydrazine
+ Hydrazine = FluidUtils.generateFluidNonMolten("Hydrazine", "Hydrazine", 2, new short[]{250, 250, 250, 100}, null, null);
+
+ //Create Monomethylhydrazine
+ Monomethylhydrazine = FluidUtils.generateFluidNonMolten("Monomethylhydrazine", "Monomethylhydrazine", -52, new short[]{125, 125, 125, 100}, null, null);
+
+ //Create Anthracene
+ Nitrous_Oxide = FluidUtils.generateFluidNonMolten("NitrousOxide", "Nitrous Oxide", -91, new short[]{255, 255, 255, 100}, null, null);
+
+ //Nos
+ if (!FluidUtils.doesFluidExist("NitrousOxide")){
+ Nitrous_Oxide = FluidUtils.generateFluidNoPrefix("NitrousOxide", "Nitrous Oxide", -91, new short[]{255, 255, 255, 100});
+ }
+ else {
+ Nitrous_Oxide = FluidUtils.getWildcardFluidStack("NitrousOxide", 1).getFluid();
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellNitrousOxide", 1) == null){
+ new BaseItemComponent("NitrousOxide", "Nitrous Oxide", new short[] {10, 10, 175});
+ }
+ }
+
+ //Unsymmetrical_Dimethylhydrazine
+ if (FluidUtils.getFluidStack("1,1dimethylhydrazine", 1) == null){
+ Unsymmetrical_Dimethylhydrazine = FluidUtils.generateFluidNonMolten("UnsymmetricalDimethylhydrazine", "Unsymmetrical Dimethylhydrazine", -57, new short[]{70, 210, 20, 100}, null, null);
+ }
+ else {
+ Unsymmetrical_Dimethylhydrazine = FluidUtils.getFluidStack("1,1dimethylhydrazine", 1000).getFluid();
+ }
+
+ //Create Hydrated_Ammonium_Nitrate_Slurry
+ Hydrated_Ammonium_Nitrate_Slurry = FluidUtils.generateFluidNonMolten("AmmoniumNitrateSlurry", "Hydrated Ammonium Nitrate Slurry", 450, new short[]{150, 75, 150, 100}, null, null);
+
+ //Lithium Hydroperoxide - LiOH + H2O2 → LiOOH + 2 H2O
+ Ammonium_Nitrate_Dust = ItemUtils.generateSpecialUseDusts("AmmoniumNitrate", "Ammonium Nitrate", "N2H4O3", Utils.rgbtoHexValue(150, 75, 150))[0];
+
+ //Create Liquid_Oxygen
+ if (FluidUtils.getFluidStack("LiquidOxygen", 1) == null && FluidUtils.getFluidStack("liquidoxygen", 1) == null){
+ Liquid_Oxygen = FluidUtils.generateFluidNonMolten("LiquidOxygen", "Liquid Oxygen", -240, new short[]{75, 75, 220, 100}, null, null);
+ }
+ else {
+ if (FluidUtils.getFluidStack("LiquidOxygen", 1) != null ) {
+ Liquid_Oxygen = FluidUtils.getFluidStack("LiquidOxygen", 1).getFluid();
+ }
+ else {
+ Liquid_Oxygen = FluidUtils.getFluidStack("liquidoxygen", 1).getFluid();
+ }
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cellLiquidOxygen", 1) == null){
+ new BaseItemComponent("LiquidOxygen", "Liquid Oxygen", new short[] {10, 10, 175});
+ }
+ }
+
+
+ Formaldehyde = FluidUtils.generateFluidNonMolten("Formaldehyde", "Formaldehyde", -92, new short[]{150, 75, 150, 100}, null, null);
+
+ Unsymmetrical_Dimethylhydrazine_Plus_Nitrogen_Tetroxide = FluidUtils.generateFluidNonMolten("RocketFuelMixA", "H8N4C2O4 Rocket Fuel", -185, new short[]{50, 220, 50, 100}, null, null);
+ RP1_Plus_Liquid_Oxygen = FluidUtils.generateFluidNonMolten("RocketFuelMixB", "Rp-1 Fuel Mixture", -250, new short[]{250, 50, 50, 100}, null, null);
+ Monomethylhydrazine_Plus_Nitric_Acid = FluidUtils.generateFluidNonMolten("RocketFuelMixC", "CN3H7O3 Rocket Fuel", -300, new short[]{125, 75, 180, 100}, null, null);
+ Dense_Hydrazine_Mix = FluidUtils.generateFluidNonMolten("RocketFuelMixD", "Dense Hydrazine Fuel Mixture", -250, new short[]{175, 80, 120, 100}, null, null);
+
+
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/item/crafting/ItemDummyResearch.java b/src/Java/gtPlusPlus/core/item/crafting/ItemDummyResearch.java
new file mode 100644
index 0000000000..1c28f99ff8
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/crafting/ItemDummyResearch.java
@@ -0,0 +1,111 @@
+package gtPlusPlus.core.item.crafting;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.general.ItemGenericToken;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+
+public class ItemDummyResearch extends ItemGenericToken {
+
+ public static enum ASSEMBLY_LINE_RESEARCH {
+
+
+ RESEARCH_1_CONTAINMENT("Containment Fields", "Advanced scientific study"),
+ RESEARCH_2_BASIC_CHEM("Basic Chemistry", "Time to start at the beginning"),
+ RESEARCH_3_ADV_CHEM("Advanced Chemistry", "Best learn more than chemical equations"),
+ RESEARCH_4_BASIC_PHYSICS("Basic Physics", "Fundamental laws of motion"),
+ RESEARCH_5_ADV_PHYSICS("Advanced Physics", "Advanced knowledge!"),
+ RESEARCH_6_BASIC_METALLURGY("Basic Metallurgy", "Information about material smelting"),
+ RESEARCH_7_ADV_METALLURGY("Advanced Metallurgy", "Advanced Material Sciences!");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ private String mName;
+ private String mDesc;
+
+ private ASSEMBLY_LINE_RESEARCH(String aName, String aDesc) {
+ mName = aName;
+ mDesc = aDesc;
+ ModItems.itemDummyResearch.register(mName, mDesc);
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+ private static Map<String, Integer> mInternalNameToIdMap = new LinkedHashMap<String, Integer>();
+
+ public static ItemStack getResearchStack(ASSEMBLY_LINE_RESEARCH aResearchName, int aStacksize) {
+ Integer aMeta = mInternalNameToIdMap.get(Utils.sanitizeString(aResearchName.mName));
+ if (aMeta == null) {
+ aMeta = 0;
+ }
+ return ItemUtils.simpleMetaStack(ModItems.itemDummyResearch, aMeta, aStacksize);
+ }
+
+ private int aID = 0;
+ public ItemDummyResearch() {
+ super("dummyResearch", "Research", new String[] {"This object requires some further study"}, "research");
+
+
+
+ }
+
+ /**
+ *
+ * @param aResearchType - What is the research for?
+ * @param aDescriptThe - tooltip for this research
+ * @return - Did we register a custom research item?
+ */
+ public boolean register(String aResearchType, String aDescript) {
+ int aNewID = aID++;
+ mInternalNameToIdMap.put(Utils.sanitizeString(aResearchType), aNewID);
+ return register(aNewID, "Research on "+aResearchType, 1, aDescript);
+ }
+
+ @Override
+ public boolean register(int id, String aLocalName, int aMaxStack, String aDescript) {
+ return register(id, aLocalName, 1, new String[] {aDescript, EnumChatFormatting.DARK_GRAY+"Used to further your knowledge"}, EnumRarity.common, EnumChatFormatting.LIGHT_PURPLE);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public final void registerIcons(final IIconRegister aIconRegister) {
+ for (int i = 0, j = mLocalNames.size(); i < j; i++) {
+ mIcons.put(i, aIconRegister.registerIcon(CORE.MODID + ":" + "research" + "/" + "note"));
+ }
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
index eb22f8fa07..5ef72b6f17 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemControlCore.java
@@ -17,7 +17,7 @@ import gtPlusPlus.core.lib.CORE;
public class ItemControlCore extends Item {
- public IIcon[] icons = new IIcon[10];
+ public static IIcon[] icons = new IIcon[10];
public ItemControlCore() {
super();
@@ -31,16 +31,16 @@ public class ItemControlCore extends Item {
@Override
public void registerIcons(IIconRegister reg) {
- this.icons[0] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_0");
- this.icons[1] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_1");
- this.icons[2] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_2");
- this.icons[3] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_3");
- this.icons[4] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_4");
- this.icons[5] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_5");
- this.icons[6] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_6");
- this.icons[7] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_7");
- this.icons[8] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_8");
- this.icons[9] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_9");
+ icons[0] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_0");
+ icons[1] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_1");
+ icons[2] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_2");
+ icons[3] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_3");
+ icons[4] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_4");
+ icons[5] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_5");
+ icons[6] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_6");
+ icons[7] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_7");
+ icons[8] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_8");
+ icons[9] = reg.registerIcon(CORE.MODID + ":" + "controlcore/Core_9");
}
@Override
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java b/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
index dfd5eca203..c076bf5c95 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemGenericToken.java
@@ -19,37 +19,38 @@ import net.minecraft.util.IIcon;
public class ItemGenericToken extends CoreItem {
- public final static HashMap<Integer, String> mLocalNames;
- public final static HashMap<Integer, Integer> mMaxStackSizes;
- public final static HashMap<Integer, String[]> mDescriptionArrays;
- public final static HashMap<Integer, EnumRarity> mRarities;
- public final static HashMap<Integer, EnumChatFormatting> mCustomNameColours;
- public final static HashMap<Integer, IIcon> mIcons;
-
- static {
+ public final HashMap<Integer, String> mLocalNames;
+ public final HashMap<Integer, Integer> mMaxStackSizes;
+ public final HashMap<Integer, String[]> mDescriptionArrays;
+ public final HashMap<Integer, EnumRarity> mRarities;
+ public final HashMap<Integer, EnumChatFormatting> mCustomNameColours;
+ public final HashMap<Integer, IIcon> mIcons;
+ private final String mTextureDir;
+
+ public ItemGenericToken() {
+ this("itemGenericToken", "Token", new String[] { "Can be reclaimed in some way, shape or form" }, "token");
+ }
+
+ public ItemGenericToken(String aUnlocalName, String aInternalName, String[] aBaseTooltip, String aTextureDir) {
+ super(aUnlocalName, aInternalName, AddToCreativeTab.tabMisc, 64, 1000, aBaseTooltip, EnumRarity.common, EnumChatFormatting.RESET, false, null);
mLocalNames = new HashMap<Integer, String>();
mMaxStackSizes = new HashMap<Integer, Integer>();
mDescriptionArrays = new HashMap<Integer, String[]>();
mRarities = new HashMap<Integer, EnumRarity>();
mCustomNameColours = new HashMap<Integer, EnumChatFormatting>();
mIcons = new HashMap<Integer, IIcon>();
+ mTextureDir = aTextureDir;
}
- public ItemGenericToken() {
- super("itemGenericToken", "Token", AddToCreativeTab.tabMisc, 64, 1000,
- new String[] { "Can be reclaimed in some way, shape or form" }, EnumRarity.common,
- EnumChatFormatting.RESET, false, null);
- }
-
- public static boolean register(int id, String aLocalName, int aMaxStack, String aDescript) {
+ public boolean register(int id, String aLocalName, int aMaxStack, String aDescript) {
return register(id, aLocalName, aMaxStack, new String[] { aDescript });
}
- public static boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript) {
+ public boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript) {
return register(id, aLocalName, aMaxStack, aDescript, EnumRarity.common, EnumChatFormatting.RESET);
}
- public static boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript, EnumRarity aRarity,
+ public boolean register(int id, String aLocalName, int aMaxStack, String[] aDescript, EnumRarity aRarity,
EnumChatFormatting aCustomNameColour) {
int[][] sizes = new int[2][6];
sizes[0][0] = mLocalNames.size();
@@ -153,9 +154,9 @@ public class ItemGenericToken extends CoreItem {
@Override
@SideOnly(Side.CLIENT)
- public final void registerIcons(final IIconRegister aIconRegister) {
+ public void registerIcons(final IIconRegister aIconRegister) {
for (int i = 0, j = mLocalNames.size(); i < j; i++) {
- mIcons.put(i, aIconRegister.registerIcon(CORE.MODID + ":" + "token" + "/" + i));
+ mIcons.put(i, aIconRegister.registerIcon(CORE.MODID + ":" + mTextureDir + "/" + i));
}
}
diff --git a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
index 7f6a52f135..2f49ac1287 100644
--- a/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
+++ b/src/Java/gtPlusPlus/core/item/general/books/ItemBaseBook.java
@@ -27,6 +27,7 @@ import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.handler.BookHandler;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.NBTUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
public class ItemBaseBook extends ItemWritableBook{
@@ -113,11 +114,11 @@ public class ItemBaseBook extends ItemWritableBook{
if (player.worldObj.isRemote){
try {
- Class<?> clazz = Class.forName("net.minecraft.client.gui.GuiScreenBook");
+ Class<?> clazz = ReflectionUtils.getClass("net.minecraft.client.gui.GuiScreenBook");
Constructor<?> ctor = clazz.getConstructor(EntityPlayer.class, ItemStack.class, boolean.class);
Object object = ctor.newInstance(new Object[] { player, bookstack, false });
Minecraft.getMinecraft().displayGuiScreen((GuiScreen) object);
- } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+ } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
diff --git a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
index 592b68d06a..a95fab4b6c 100644
--- a/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
+++ b/src/Java/gtPlusPlus/core/item/general/capture/ItemEntityCatcher.java
@@ -21,6 +21,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
public class ItemEntityCatcher extends Item implements IEntityCatcher {
@@ -117,14 +118,10 @@ public class ItemEntityCatcher extends Item implements IEntityCatcher {
}
Class<? extends Entity> mEntityClass;
String mClassName;
- mClassName = NBTUtils.getString(aStack,"mClassName");
- try {
- mEntityClass = (Class<? extends Entity>) Class.forName(mClassName);
- if (mEntityClass != null) {
- return mEntityClass;
- }
- }
- catch (ClassNotFoundException e) {
+ mClassName = NBTUtils.getString(aStack, "mClassName");
+ mEntityClass = (Class<? extends Entity>) ReflectionUtils.getClass(mClassName);
+ if (mEntityClass != null) {
+ return mEntityClass;
}
return null;
}
diff --git a/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java
new file mode 100644
index 0000000000..9467c3a58c
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java
@@ -0,0 +1,123 @@
+package gtPlusPlus.core.item.general.throwables;
+
+import java.util.List;
+
+import gregtech.api.enums.ItemList;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.entity.projectile.EntityThrowableBomb;
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.item.base.CoreItem;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.NBTUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemThrowableBomb extends CoreItem {
+
+ private static AutoMap<ItemStack> mLighters = new AutoMap<ItemStack>();
+ public static IIcon[] icons = new IIcon[10];
+
+ public ItemThrowableBomb() {
+ super("gtpp.throwable.bomb", "Bomb", AddToCreativeTab.tabMisc, 16, 0, new String[] {"Just like Bomberman", "Have a fire source in inventory to prime"}, EnumRarity.uncommon, EnumChatFormatting.GRAY, false, null);
+ this.setHasSubtypes(true);
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) {
+
+ if (mLighters.isEmpty()) {
+ mLighters.put(ItemUtils.getSimpleStack(Items.flint_and_steel));
+ mLighters.put(ItemList.Tool_Lighter_Invar_Full.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Invar_Used.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Platinum_Full.get(1));
+ mLighters.put(ItemList.Tool_Lighter_Platinum_Used.get(1));
+ mLighters.put(ItemUtils.getSimpleStack(ModItems.itemBasicFireMaker));
+ }
+
+ //Unlit
+ if (item.getItemDamage() == 0) {
+ boolean hasLighter = false;
+ for (ItemStack aPlaySlot : player.inventory.mainInventory) {
+ if (aPlaySlot != null) {
+ for (ItemStack aLighter : mLighters) {
+ if (GT_Utility.areStacksEqual(aPlaySlot, aLighter)) {
+ hasLighter = true;
+ break;
+ }
+ }
+ }
+ }
+ if (hasLighter) {
+ item.setItemDamage(1);
+ }
+ }
+ //Lit
+ else if (item.getItemDamage() == 1) {
+ if (!player.capabilities.isCreativeMode) {
+ --item.stackSize;
+ }
+ world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
+ if (!world.isRemote) {
+ world.spawnEntityInWorld(new EntityThrowableBomb(world, player));
+ }
+ /*if (item.stackSize <= 0) {
+ item = null;
+ }*/
+ }
+ return item;
+ }
+
+
+
+ @Override
+ public void registerIcons(IIconRegister reg) {
+ icons[0] = reg.registerIcon(CORE.MODID + ":" + "bomb");
+ icons[1] = reg.registerIcon(CORE.MODID + ":" + "bomb_lit");
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int meta) {
+ return this.icons[meta];
+ }
+
+ @SuppressWarnings({ "unchecked" })
+ @Override
+ public void getSubItems(Item item, CreativeTabs tab, List list) {
+ for (int i = 0; i < 2; i ++) {
+ list.add(new ItemStack(item, 1, i));
+ }
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) {
+ String aLitStatus = "unlit";
+ if (stack.getItemDamage() == 0) {
+ aLitStatus = EnumChatFormatting.BLUE+"Unlit";
+ }
+ else if (stack.getItemDamage() == 1) {
+ aLitStatus = EnumChatFormatting.RED+"Lit";
+ }
+ list.add(EnumChatFormatting.GOLD+"Fuse Status: "+aLitStatus);
+ super.addInformation(stack, aPlayer, list, bool);
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack p_77653_1_) {
+ // TODO Auto-generated method stub
+ return super.getItemStackDisplayName(p_77653_1_);
+ }
+
+
+
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java b/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
index 77a06edac2..94ebb3ffcb 100644
--- a/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
+++ b/src/Java/gtPlusPlus/core/item/init/ItemsFoods.java
@@ -21,24 +21,24 @@ public class ItemsFoods {
//Raisin Bread
ModItems.itemIngotRaisinBread = new BaseItemFood("itemIngotRaisinBread", "Raisin Bread", 3, 1.5f, false, new PotionEffect(Potion.weakness.id, 40, 1)).setAlwaysEdible();
- GT_OreDictUnificator.registerOre("foodRaisinBread", ItemUtils.getItemStack(CORE.MODID+":itemIngotRaisinBread", 1));
+ GT_OreDictUnificator.registerOre("foodRaisinBread", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemIngotRaisinBread", 1));
//Hot Raisin Bread
ModItems.itemHotIngotRaisinBread = new BaseItemHotFood("itemHotIngotRaisinBread", 1, 0.5f, "Raisin Bread", 120, ModItems.itemIngotRaisinBread);
- GT_OreDictUnificator.registerOre("foodHotRaisinBread", ItemUtils.getItemStack(CORE.MODID+":itemHotIngotRaisinBread", 1));
+ GT_OreDictUnificator.registerOre("foodHotRaisinBread", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemHotIngotRaisinBread", 1));
//Raisin Bread
ModItems.itemFoodRaisinToast = new BaseItemFood("itemFoodRaisinToast", "Raisin Toast", 1, 0.5f, false).setAlwaysEdible();
- GT_OreDictUnificator.registerOre("foodRaisinToast", ItemUtils.getItemStack(CORE.MODID+":itemFoodRaisinToast", 1));
+ GT_OreDictUnificator.registerOre("foodRaisinToast", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemFoodRaisinToast", 1));
//Hot Raisin Bread
ModItems.itemHotFoodRaisinToast = new BaseItemHotFood("itemHotFoodRaisinToast", 1, 0.5f, "Raisin Toast", 20, ModItems.itemFoodRaisinToast);
- GT_OreDictUnificator.registerOre("foodHotRaisinToast", ItemUtils.getItemStack(CORE.MODID+":itemHotFoodRaisinToast", 1));
+ GT_OreDictUnificator.registerOre("foodHotRaisinToast", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemHotFoodRaisinToast", 1));
//Raisin Bread
ModItems.itemFoodCurriedSausages = new BaseItemFood("itemFoodCurriedSausages", "Curried Sausages", 5, 2f, false);
- GT_OreDictUnificator.registerOre("foodCurriedSausages", ItemUtils.getItemStack(CORE.MODID+":itemFoodCurriedSausages", 1));
+ GT_OreDictUnificator.registerOre("foodCurriedSausages", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemFoodCurriedSausages", 1));
//Hot Raisin Bread
ModItems.itemHotFoodCurriedSausages = new BaseItemHotFood("itemHotFoodCurriedSausages", 1, 0.5f, "Curried Sausages", 240, ModItems.itemFoodCurriedSausages);
- GT_OreDictUnificator.registerOre("foodHotCurriedSausages", ItemUtils.getItemStack(CORE.MODID+":itemHotFoodCurriedSausages", 1));
+ GT_OreDictUnificator.registerOre("foodHotCurriedSausages", ItemUtils.getItemStackFromFQRN(CORE.MODID+":itemHotFoodCurriedSausages", 1));
}
diff --git a/src/Java/gtPlusPlus/core/item/tool/misc/DebugScanner.java b/src/Java/gtPlusPlus/core/item/tool/misc/DebugScanner.java
new file mode 100644
index 0000000000..d0f3005d00
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/tool/misc/DebugScanner.java
@@ -0,0 +1,100 @@
+package gtPlusPlus.core.item.tool.misc;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.item.base.CoreItem;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class DebugScanner extends CoreItem {
+
+ public DebugScanner() {
+ super("gtpp.debug.scanner", AddToCreativeTab.tabTools, 1, 0,
+ new String[] {
+ "Used to obtain information from GT/GT++ content",
+ "Right Click to use",
+ },
+ EnumRarity.epic);
+ setTextureName(CORE.MODID + ":itemStickyRubber");
+ }
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int p_77648_4_,
+ int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
+ // TODO Auto-generated method stub
+ return super.onItemUse(aStack, aPlayer, aWorld, p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_8_,
+ p_77648_9_, p_77648_10_);
+ }
+
+ @Override
+ public boolean isRepairable() {
+ return false;
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) {
+ // TODO Auto-generated method stub
+ return super.onItemRightClick(p_77659_1_, p_77659_2_, p_77659_3_);
+ }
+
+ @Override
+ public float getDigSpeed(ItemStack itemstack, Block block, int metadata) {
+ return 0f;
+ }
+
+ @Override
+ public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) {
+ if (entity != null && player != null) {
+ PlayerUtils.messagePlayer(player, "Entity ID: "+entity.getEntityId());
+ PlayerUtils.messagePlayer(player, "UUID: "+entity.getUniqueID());
+ PlayerUtils.messagePlayer(player, "Invulnerable? "+entity.isEntityInvulnerable());
+ PlayerUtils.messagePlayer(player, "Invisible? "+entity.isInvisible());
+ PlayerUtils.messagePlayer(player, "Age: "+entity.ticksExisted);
+
+ if (entity instanceof EntityLiving) {
+ EntityLiving g = (EntityLiving) entity;
+ PlayerUtils.messagePlayer(player, "Health: "+g.getHealth()+"/"+g.getMaxHealth());
+ PlayerUtils.messagePlayer(player, "On ground? "+g.onGround);
+ PlayerUtils.messagePlayer(player, "Can Loot? "+g.canPickUpLoot());
+ PlayerUtils.messagePlayer(player, "Child? "+g.isChild());
+ if (entity instanceof EntityPlayer) {
+ EntityPlayer y = (EntityPlayer) entity;
+ PlayerUtils.messagePlayer(player, "Experience: "+y.experience);
+ PlayerUtils.messagePlayer(player, "Name: "+y.getCommandSenderName());
+ }
+
+ }
+
+ }
+ return true;
+ }
+
+ @Override
+ public boolean doesSneakBypassUse(World world, int x, int y, int z, EntityPlayer player) {
+ return false;
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack stack) {
+ return true;
+ }
+
+ @Override
+ public int getHarvestLevel(ItemStack stack, String toolClass) {
+ return 0;
+ }
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java b/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
index b42ac41a37..4616ab0aa0 100644
--- a/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
+++ b/src/Java/gtPlusPlus/core/item/tool/misc/GregtechPump.java
@@ -19,6 +19,7 @@ import gregtech.api.interfaces.IItemBehaviour;
import gregtech.api.interfaces.IItemContainer;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.objects.ItemData;
import gregtech.api.util.GT_LanguageManager;
@@ -110,8 +111,8 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
aPumpName, // Name
aEuMax, // Eu Storage
(short) aTier, // Tier
- "Can be used to remove fluids from GT machine input slots.", // Tooltip
- EnumRarity.common, // Rarity
+ "Can be used to remove fluids from GT machine input & output slots.", // Tooltip
+ aTier <= 0 ? EnumRarity.common : aTier == 1 ? EnumRarity.uncommon : aTier == 2 ? EnumRarity.rare : aTier == 3 ? EnumRarity.epic : EnumRarity.common, // Rarity
EnumChatFormatting.GRAY, // Desc colour
false // Effect?
);
@@ -183,7 +184,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return false;
}
- @SuppressWarnings({ "unchecked", "rawtypes" })
+ @SuppressWarnings({ "unchecked" })
@Override
public void addInformation(final ItemStack aStack, final EntityPlayer aPlayer, List aList, final boolean aF3_H) {
// aList.add("Meta: "+(aStack.getItemDamage()-mOffset));
@@ -199,7 +200,9 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
if (aOffsetMeta <= 3) {
FluidStack f = getFluid(aStack);
- aList.add("Can also drain any other standard fluid container block.");
+ aList.add("Can also drain any other standard fluid container block");
+ aList.add("Cannot be emptied via RMB, use inside a tank with GUI");
+ aList.add(EnumChatFormatting.DARK_GRAY+"This is technically just a fancy fluid cell");
aList.add(EnumChatFormatting.BLUE + (f != null ? f.getLocalizedName() : "No Fluids Contained"));
aList.add(EnumChatFormatting.BLUE + (f != null ? ""+f.amount : ""+0) + "L" + " / " + getCapacity(aStack) + "L");
}
@@ -496,7 +499,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return this;
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ @SuppressWarnings({ "unchecked" })
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(final Item var1, final CreativeTabs aCreativeTab, final List aList) {
@@ -968,9 +971,10 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
if ((tTileEntity instanceof IGregTechTileEntity)) {
return this.drainTankGT(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ);
}
- /*else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) {
+ //Try support Standard Fluid Tanks too (May disable if dupes appear again)
+ else if ((tTileEntity instanceof IFluidTank || tTileEntity instanceof IFluidHandler)) {
return this.drainIFluidTank(tTileEntity, aStack, aWorld, aPlayer, aX, aY, aZ);
- }*/
+ }
}
}
}
@@ -1095,7 +1099,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
FluidStack f = aTileEntity.getFluid();
Logger.WARNING("Returning Fluid stack from tile. Found: "
+ (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing"));
- return f.copy();
+ return f;
}
public FluidStack getStoredFluidOfVanillaTank(IFluidHandler aTileEntity) {
@@ -1126,7 +1130,7 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
FluidStack f = ((IFluidTank) aTileEntity).getFluid();
if (aSetFluid == null) {
aSetFluid = f;
- aSetFluid.amount = 0;
+ aSetFluid.amount = f.amount;
}
int toDrain = (f.amount - aSetFluid.amount);
FluidStack newStack;
@@ -1144,44 +1148,48 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
return false;
}
}
- else {
- Logger.WARNING("Tile Was instanceof IFluidHandler.");
- FluidStack containedStack = null;
- if ((IFluidHandler) aTileEntity != null) {
- FluidTankInfo[] a1 = (((IFluidHandler) aTileEntity).getTankInfo(ForgeDirection.UNKNOWN));
- if (a1 != null) {
- if (a1[0] != null) {
- Logger.WARNING("Found Fluid in Tank.");
- containedStack = a1[0].fluid;
- }
- }
+ else {
+
+ //Rewrite Fluid handling for Vanilla type tanks
+ if (!IFluidHandler.class.isInstance(aTileEntity)) {
+ Logger.WARNING("Tile Was not an instance of IFluidHandler.");
+ return false;
}
- if (containedStack != null) {
- if (aSetFluid == null) {
- aSetFluid = containedStack;
- aSetFluid.amount = 0;
- }
- int toDrain = (containedStack.amount - aSetFluid.amount);
- Logger.WARNING("Found "+containedStack.amount+"L of "+containedStack.getLocalizedName()+". Trying to drain "+toDrain+"L.");
- FluidStack newStack;
- if (toDrain <= 0) {
- Logger.WARNING("Draining Nothing");
- newStack = containedStack;
- } else {
- Logger.WARNING("Draining Something");
- newStack = ((IFluidTank) aTileEntity).drain(toDrain, true);
+
+
+ IFluidHandler aTank = (IFluidHandler) aTileEntity;
+ FluidStack aTankContents = null;
+ FluidTankInfo[] a1 = aTank.getTankInfo(ForgeDirection.UNKNOWN);
+ if (a1 != null) {
+ if (a1[0] != null) {
+ aTankContents = a1[0].fluid;
+ Logger.WARNING("Found Fluid in Tank. "+aTankContents.getLocalizedName()+" - "+aTankContents.amount);
}
-
- if (newStack.isFluidEqual(aSetFluid) && newStack.amount == aSetFluid.amount) {
- Logger.WARNING("Removed fluid from vanilla IFluidHandler successfully.");
+ }
+ if (aSetFluid == null) {
+ Logger.WARNING("Setting fluid to tank contents, as we're going to empty it totally.");
+ aSetFluid = aTankContents.copy();
+ }
+ else {
+ Logger.WARNING("Setting fluid to tank contents, as we're going to empty it totally.");
+ }
+ Logger.WARNING("Tile Was instance of IFluidHandler. Trying to Drain "+aSetFluid.getLocalizedName()+" - "+aSetFluid.amount);
+
+ if (a1 == null || aTankContents == null) {
+ Logger.WARNING("Tank is empty.");
+ return false;
+ }
+ //Found some Fluid in the tank
+ else {
+ FluidStack aDrainedStack = aTank.drain(ForgeDirection.UNKNOWN, aSetFluid, true);
+ if (aDrainedStack.isFluidStackIdentical(aSetFluid)) {
+ Logger.WARNING("Drained!");
return true;
- } else {
- Logger.WARNING("Failed trying to remove fluid from vanilla IFluidHandler.");
- return false;
}
- } else {
- Logger.WARNING("Could not drain vanilla tank, IFluidHandler claims there is no fluid.");
- return false;
+ else {
+ Logger.WARNING("Partially Drained! This is probably an error.");
+ return true;
+ }
}
}
} else {
@@ -1214,9 +1222,36 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
public FluidStack getStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity) {
FluidStack f = aTileEntity.mFluid;
+
+ //Let's see if this machine has output fluid too
+ if (f == null) {
+ Logger.WARNING("Could not find any input fluid, checking output if possible.");
+ if (aTileEntity instanceof GT_MetaTileEntity_BasicMachine) {
+ GT_MetaTileEntity_BasicMachine g = (GT_MetaTileEntity_BasicMachine) aTileEntity;
+ Logger.WARNING("Tile is a Basic Machine of some sort - "+g.mNEIName);
+ if (g != null) {
+ f = g.mOutputFluid;
+ if (f != null) {
+ Logger.WARNING("Found output fluid! "+f.getLocalizedName());
+ }
+ else {
+ Logger.WARNING("Did not find anything!");
+ f = g.getFluid();
+ if (f != null) {
+ Logger.WARNING("Found fluid! "+f.getLocalizedName());
+ }
+ else {
+ Logger.WARNING("Did not find anything!");
+ f = g.getFluid();
+ }
+ }
+ }
+ }
+ }
+
Logger.WARNING("Returning Fluid stack from tile. Found: "
+ (f != null ? f.getLocalizedName() + " - " + f.amount + "L" : "Nothing"));
- return f.copy();
+ return f;
}
public boolean setStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity, FluidStack aSetFluid) {
@@ -1238,6 +1273,12 @@ public class GregtechPump extends Item implements ISpecialElectricItem, IElectri
public boolean setStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity, FluidStack aSetFluid) {
try {
+
+ //Try Handle Outputs First
+ if (aTileEntity.setDrainableStack(aSetFluid) != null) {
+ return true;
+ }
+
aTileEntity.mFluid = aSetFluid;
boolean b = aTileEntity.mFluid == aSetFluid;
Logger.WARNING("Trying to set Tile's tank. - Behaviour Class. [3] " + b);