aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod
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/xmod
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/xmod')
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java21
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java109
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java37
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java56
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java69
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java56
-rw-r--r--src/Java/gtPlusPlus/xmod/eio/handler/HandlerTooltip_EIO.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bee_Definition.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/recipe/FR_Gregtech_Recipes.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java42
-rw-r--r--src/Java/gtPlusPlus/xmod/galacticraft/system/core/world/gen/ChunkProviderGalactic.java46
-rw-r--r--src/Java/gtPlusPlus/xmod/galacticraft/util/GalacticUtils.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java84
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java16
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java18
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/BaseCustomTileEntity.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/custom/power/GTPP_MTE_BasicMachine.java20
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GTPP_Recipe.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_ControlCore.java24
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DynamoBuffer.java12
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Naquadah.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Plasma.java13
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Input.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Output.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java153
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/generators/GregtechRocketFuelGeneratorBase.java107
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/objects/MultiblockLayer.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechOreDictUnificator.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java150
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java62
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java9
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java38
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java12
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java11
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java16
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java18
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java44
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java41
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java26
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java46
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java27
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java67
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java17
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java17
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java180
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java75
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechDehydrator.java6
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java22
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialCryogenicFreezer.java8
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMassFabricator.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNitroDieselFix.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/ob/CallbackObject.java20
-rw-r--r--src/Java/gtPlusPlus/xmod/ob/CustomSprinklerInventory.java35
-rw-r--r--src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java39
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java295
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java77
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java25
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java40
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java327
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java19
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java17
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java89
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java21
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java246
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java228
-rw-r--r--src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java351
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/material/BaseTinkersMaterial.java274
-rw-r--r--src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java481
-rw-r--r--src/Java/gtPlusPlus/xmod/witchery/WitchUtils.java21
94 files changed, 3725 insertions, 924 deletions
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java b/src/Java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java
new file mode 100644
index 0000000000..ce7d919431
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java
@@ -0,0 +1,21 @@
+package gtPlusPlus.xmod.bartcrops;
+
+import cpw.mods.fml.common.event.FMLInitializationEvent;
+import cpw.mods.fml.common.event.FMLPostInitializationEvent;
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+
+public class HANDLER_CropsPlusPlus {
+
+ public static void preInit(FMLPreInitializationEvent preinit) {
+ LoaderOfTheCrops.load(preinit);
+ }
+
+ public static void init(FMLInitializationEvent init) {
+ //registerItems();
+ }
+
+ public static void postInit(FMLPostInitializationEvent postinit) {
+ LoaderOfTheCrops.register();
+ LoaderOfTheCrops.registerBaseSeed();
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java b/src/Java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java
new file mode 100644
index 0000000000..48813310d2
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java
@@ -0,0 +1,109 @@
+package gtPlusPlus.xmod.bartcrops;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cpw.mods.fml.common.event.FMLPreInitializationEvent;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.bartcrops.crops.Crop_Hemp;
+import ic2.api.crops.CropCard;
+import ic2.api.crops.Crops;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Mostly borrowed from the Crops++ Crop Loader.
+ * @author Alkalus
+ */
+
+public class LoaderOfTheCrops {
+
+ private static List<Boolean> mHasCropObj = new ArrayList<Boolean>();
+ private CropCard mCropObj;
+ private ItemStack mBaseSeed;
+ private static List<LoaderOfTheCrops> mCropList = cropLoader();
+
+ public LoaderOfTheCrops(CropCard cropObj) {
+ this.mCropObj = cropObj;
+ }
+
+ public LoaderOfTheCrops(CropCard cropObj, ItemStack baseseed) {
+ this.mCropObj = cropObj;
+ this.mBaseSeed = baseseed;
+ }
+
+ public static CropCard cropUnpackerCC(LoaderOfTheCrops inp) {
+ return inp.mCropObj;
+ }
+
+ private static ItemStack cropUnpackerCG(LoaderOfTheCrops inp) {
+ return inp.mBaseSeed;
+ }
+
+ private static LoaderOfTheCrops cropHelper(CropCard cropObj) {
+ return new LoaderOfTheCrops(cropObj, ItemUtils.getItemStackOfAmountFromOreDict("crop" + cropObj.name(), 0));
+ }
+
+ public static final List<LoaderOfTheCrops> cropLoader() {
+ List<LoaderOfTheCrops> p = new ArrayList<LoaderOfTheCrops>();
+
+ p.add(new LoaderOfTheCrops(new Crop_Hemp(), new ItemStack(Item.getItemById(111), 3)));
+
+ return p;
+ }
+
+ private static final List<CropCard> cropObjs() {
+ List<CropCard> p = new ArrayList<CropCard>();
+
+ for (int i = 0; i < mCropList.size(); ++i) {
+ p.add(cropUnpackerCC((LoaderOfTheCrops) mCropList.get(i)));
+ }
+
+ return p;
+ }
+
+ private static final List<ItemStack> setBaseSeed() {
+ List<ItemStack> p = new ArrayList<ItemStack>();
+
+ for (int i = 0; i < mCropList.size(); ++i) {
+ p.add(cropUnpackerCG((LoaderOfTheCrops) mCropList.get(i)));
+ }
+
+ return p;
+ }
+
+ private static final List<String> setnames() {
+ List<String> s = new ArrayList<String>();
+
+ for (int i = 0; i < mCropList.size(); ++i) {
+ s.add(((CropCard) cropObjs().get(i)).name());
+ }
+
+ return s;
+ }
+
+ public static void load(FMLPreInitializationEvent preinit) {
+ for (int i = 0; i < mCropList.size(); ++i) {
+ mHasCropObj.add(true);
+ }
+ }
+
+ public static void register() {
+ for (int i = 0; i < mCropList.size(); ++i) {
+ if ((Boolean) mHasCropObj.get(i) && cropObjs().get(i) != null) {
+ Crops.instance.registerCrop((CropCard) cropObjs().get(i));
+ }
+ }
+ }
+
+ public static void registerBaseSeed() {
+ List<ItemStack> baseseed = new ArrayList<ItemStack>(setBaseSeed());
+
+ for (int i = 0; i < mCropList.size(); ++i) {
+ if (baseseed.get(i) != null && cropObjs().get(i) != null) {
+ Crops.instance.registerBaseSeed((ItemStack) baseseed.get(i), (CropCard) cropObjs().get(i), 1, 1, 1, 1);
+ }
+ }
+
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java
new file mode 100644
index 0000000000..cddce7beb4
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java
@@ -0,0 +1,37 @@
+package gtPlusPlus.xmod.bartcrops.abstracts;
+
+import gtPlusPlus.core.lib.CORE;
+import ic2.api.crops.ICropTile;
+
+public abstract class BaseAestheticCrop extends BaseHarvestableCrop {
+
+ public int tier() {
+ return 1;
+ }
+
+ public int stat(int n) {
+ switch (n) {
+ case 0 :
+ return 0;
+ case 1 :
+ return 0;
+ case 2 :
+ return 0;
+ case 3 :
+ return 4;
+ case 4 :
+ return 0;
+ default :
+ return 0;
+ }
+ }
+
+ public int growthDuration(ICropTile crop) {
+ return CORE.DEBUG ? 1 : 225;
+ }
+
+ public byte getSizeAfterHarvest(ICropTile crop) {
+ return 1;
+ }
+
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java
new file mode 100644
index 0000000000..ca2a044564
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java
@@ -0,0 +1,56 @@
+package gtPlusPlus.xmod.bartcrops.abstracts;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import ic2.api.crops.CropCard;
+import ic2.api.crops.ICropTile;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import speiger.src.crops.api.ICropCardInfo;
+
+public abstract class BaseCrop extends CropCard implements ICropCardInfo {
+ @SideOnly(Side.CLIENT)
+ public void registerSprites(IIconRegister iconRegister) {
+ this.textures = new IIcon[this.maxSize()];
+
+ for (int i = 1; i <= this.textures.length; ++i) {
+ this.textures[i - 1] = iconRegister.registerIcon(CORE.MODID+":crop/blockCrop." + this.name() + "." + i);
+ }
+
+ }
+
+ public float dropGainChance() {
+ return (float) (Math.pow(0.95D, (double) ((float) this.tier())) * (double) 1f);
+ }
+
+ public boolean canCross(ICropTile crop) {
+ return crop.getSize() == this.maxSize();
+ }
+
+ public int getrootslength(ICropTile crop) {
+ return 3;
+ }
+
+ public String discoveredBy() {
+ return "Alkalus";
+ }
+
+ public String owner() {
+ return "Gtplusplus";
+ }
+
+ public List<String> getCropInformation() {
+ List<String> ret = new ArrayList<String>();
+ ret.add(this.attributes().toString());
+ return ret;
+ }
+
+ public ItemStack getDisplayItem(CropCard card) {
+ return ItemUtils.getItemStackOfAmountFromOreDict("crop" + this.name(), 0);
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java
new file mode 100644
index 0000000000..fee6cf654c
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java
@@ -0,0 +1,69 @@
+package gtPlusPlus.xmod.bartcrops.abstracts;
+
+import gtPlusPlus.core.lib.CORE;
+import ic2.api.crops.ICropTile;
+
+public abstract class BaseHarvestableCrop extends BaseCrop {
+
+ public int tier() {
+ return 2;
+ }
+
+ public int stat(int n) {
+ switch (n) {
+ case 0 :
+ return 0;
+ case 1 :
+ return 4;
+ case 2 :
+ return 0;
+ case 3 :
+ return 4;
+ case 4 :
+ return 0;
+ default :
+ return 0;
+ }
+ }
+
+ public boolean canGrow(ICropTile crop) {
+ return crop.getSize() < 3;
+ }
+
+ public int getOptimalHavestSize(ICropTile crop) {
+ return 3;
+ }
+
+ public boolean canBeHarvested(ICropTile crop) {
+ return crop.getSize() == 3;
+ }
+
+ public int weightInfluences(ICropTile crop, float humidity, float nutrients, float air) {
+ return (int) ((double) humidity * 1.2D + (double) nutrients * 0.9D + (double) air * 0.9D);
+ }
+
+ public int growthDuration(ICropTile crop) {
+ short r;
+ if (CORE.DEBUG) {
+ r = 1;
+ } else if (crop.getSize() == 2) {
+ r = 200;
+ } else {
+ r = 700;
+ }
+
+ return r;
+ }
+
+ public byte getSizeAfterHarvest(ICropTile crop) {
+ return 2;
+ }
+
+ public int maxSize() {
+ return 3;
+ }
+
+ public String discoveredBy() {
+ return "Alkalus";
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java b/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java
new file mode 100644
index 0000000000..a921182d66
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java
@@ -0,0 +1,56 @@
+package gtPlusPlus.xmod.bartcrops.crops;
+
+import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.bartcrops.abstracts.BaseAestheticCrop;
+import ic2.api.crops.ICropTile;
+import net.minecraft.item.ItemStack;
+
+public class Crop_Hemp extends BaseAestheticCrop {
+
+ public int tier() {
+ return 2;
+ }
+
+ public String name() {
+ return "Hemp";
+ }
+
+ public String discoveredBy() {
+ return "Alkalus";
+ }
+
+ public int growthDuration(ICropTile crop) {
+ int ret = 550;
+
+ /*if (crop.isBlockBelow(Blocks.dirt) || crop.isBlockBelow(Blocks.flowing_water)) {
+ ret = 225;
+ }*/
+
+ if (CORE.DEBUG) {
+ ret = 1;
+ }
+
+ return ret;
+ }
+
+ public String[] attributes() {
+ return new String[]{"Green", "Soil", "Orange"};
+ }
+
+ public ItemStack getGain(ICropTile crop) {
+
+ ItemStack ret = this.getDisplayItem();
+ if (MathUtils.randInt(0, 10) > 8) {
+ ret = ItemUtils.getSimpleStack(ModItems.itemRope, MathUtils.randInt(1, 3));
+ }
+
+ return ret;
+ }
+
+ public ItemStack getDisplayItem() {
+ return ItemUtils.getSimpleStack(ModItems.itemRope, 0);
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/eio/handler/HandlerTooltip_EIO.java b/src/Java/gtPlusPlus/xmod/eio/handler/HandlerTooltip_EIO.java
index 6d50f64e6d..5b3210d58a 100644
--- a/src/Java/gtPlusPlus/xmod/eio/handler/HandlerTooltip_EIO.java
+++ b/src/Java/gtPlusPlus/xmod/eio/handler/HandlerTooltip_EIO.java
@@ -12,6 +12,7 @@ import gregtech.api.enums.Materials;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.eio.material.MaterialEIO;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@@ -30,11 +31,10 @@ public class HandlerTooltip_EIO {
//If it is, reflect in.
if (mIngot == null){
try {
- oMainClass = Class.forName("crazypants.enderio.EnderIO");
- oIngotClass = Class.forName("crazypants.enderio.material.ItemAlloy");
+ oMainClass = ReflectionUtils.getClass("crazypants.enderio.EnderIO");
+ oIngotClass = ReflectionUtils.getClass("crazypants.enderio.material.ItemAlloy");
if (oMainClass != null && oIngotClass != null){
- Field oAlloyField = oMainClass.getDeclaredField("itemAlloy");
- oAlloyField.setAccessible(true);
+ Field oAlloyField = ReflectionUtils.getField(oMainClass, "itemAlloy");
Object oAlloy = oAlloyField.get(oMainClass);
if (oAlloy != null){
if (oIngotClass.isInstance(oAlloy) || Item.class.isInstance(oAlloy)){
diff --git a/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java b/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java
index 1343bdc8af..05d00b06d9 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java
@@ -45,14 +45,14 @@ public class HANDLER_FR {
if (LoadedMods.Forestry){
Class oClass;
try {
- oClass = Class.forName("forestry.core.proxy.ProxyCommon");
+ oClass = ReflectionUtils.getClass("forestry.core.proxy.ProxyCommon");
Object oProxy = ReflectionUtils.getField(oClass, "common");
- if (oProxy != null && oClass.isInstance(oProxy)){
- Method mParticles = oClass.getDeclaredMethod("addBlockDestroyEffects", World.class, int.class, int.class, int.class, Block.class, int.class);
+ if (oProxy != null && oClass.isInstance(oProxy)){
+ Method mParticles = ReflectionUtils.getMethod(oClass, "addBlockDestroyEffects", World.class, int.class, int.class, int.class, Block.class, int.class);
mParticles.invoke(oProxy, world, x, y, z, block, 0);
}
}
- catch (ClassNotFoundException | NoSuchFieldException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
}
}
}
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bee_Definition.java b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bee_Definition.java
index d842c37fcd..b36508f6aa 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bee_Definition.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bee_Definition.java
@@ -864,7 +864,7 @@ public enum GTPP_Bee_Definition implements IBeeDefinition {
Enum gtBeeEnumObject = Enum.valueOf(gtBeeTypes, name);
Field gtBeesField = FieldUtils.getDeclaredField(gtBeeTypes, "species", true);
gtBeesField.setAccessible(true);
- ReflectionUtils.makeAccessible(gtBeesField);
+ ReflectionUtils.makeFieldAccessible(gtBeesField);
Object beeType = gtBeesField.get(gtBeeEnumObject);
return (IAlleleBeeSpecies) beeType;
}
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java
index 29ece40c3d..bb360d5a87 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/custom/GTPP_Bees.java
@@ -141,7 +141,7 @@ public class GTPP_Bees {
Class gtCombEnumClass = Class.forName("gregtech.common.items.CombType");
Field gtCombs = FieldUtils.getDeclaredField(gtBees, "combs", true);
gtCombs.setAccessible(true);
- ReflectionUtils.makeAccessible(gtCombs);
+ ReflectionUtils.makeFieldAccessible(gtCombs);
Enum gtCombTypeSlag = Enum.valueOf(gtCombEnumClass, "SLAG");
Enum gtCombTypeStone = Enum.valueOf(gtCombEnumClass, "STONE");
Object oCombObject = gtCombs.get(null);
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/recipe/FR_Gregtech_Recipes.java b/src/Java/gtPlusPlus/xmod/forestry/bees/recipe/FR_Gregtech_Recipes.java
index 0bba3d1f84..7e011a808e 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/bees/recipe/FR_Gregtech_Recipes.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/recipe/FR_Gregtech_Recipes.java
@@ -31,7 +31,7 @@ public class FR_Gregtech_Recipes {
private static ItemStack hiveFrameClay = ItemUtils.getSimpleStack(FR_ItemRegistry.hiveFrameClay);
private static ItemStack hiveFrameNova = ItemUtils.getSimpleStack(FR_ItemRegistry.hiveFrameNova);
- private static ItemStack hiveFrameImpregnated = ItemUtils.getItemStack("Forestry:frameImpregnated", 1);
+ private static ItemStack hiveFrameImpregnated = ItemUtils.getItemStackFromFQRN("Forestry:frameImpregnated", 1);
private static ItemStack blockSoulSand = new ItemStack(Blocks.soul_sand, 1);
private static ItemStack blockIronBars = new ItemStack (Blocks.iron_bars, 1);
private static ItemStack itemClayDust = new ItemStack(Items.clay_ball, 1);
diff --git a/src/Java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java b/src/Java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java
index 9075666b8b..64f1cfbe23 100644
--- a/src/Java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java
+++ b/src/Java/gtPlusPlus/xmod/galacticraft/handler/HandlerTooltip_GC.java
@@ -1,6 +1,8 @@
package gtPlusPlus.xmod.galacticraft.handler;
import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
@@ -8,6 +10,7 @@ import net.minecraft.item.Item;
import gtPlusPlus.core.item.chemistry.RocketFuels;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.preloader.asm.AsmConfig;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import net.minecraftforge.fluids.Fluid;
@@ -17,20 +20,19 @@ public class HandlerTooltip_GC {
private static Block mBlock;
private static Class<?> oMainClass;
private static Class<?> oFuelLoaderClass;
- private static String[] mFuelNames;
+ private static HashMap <Integer, String> mFuelNames;
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent event) {
- if (LoadedMods.GalacticraftCore) {
+ if (LoadedMods.GalacticraftCore && AsmConfig.enableGcFuelChanges) {
if (mBlock == null) {
try {
- Class<?> GCBlocks = Class.forName("micdoodle8.mods.galacticraft.core.blocks.GCBlocks");
+ Class<?> GCBlocks = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.blocks.GCBlocks");
if (GCBlocks != null) {
oMainClass = GCBlocks;
- Class<?> GCFuelLoader = Class
- .forName("micdoodle8.mods.galacticraft.core.blocks.BlockFuelLoader");
+ Class<?> GCFuelLoader = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.blocks.BlockFuelLoader");
if (GCFuelLoader != null) {
oFuelLoaderClass = GCFuelLoader;
@@ -48,24 +50,26 @@ public class HandlerTooltip_GC {
} catch (Throwable t) {
}
}
- if (mFuelNames == null || mFuelNames.length == 0) {
- mFuelNames = new String[RocketFuels.mValidRocketFuels.size()];
- int slot = 0;
- for (Fluid f : RocketFuels.mValidRocketFuels.values()) {
- mFuelNames[slot++] = f.getLocalizedName();
+
+ if (mFuelNames == null || mFuelNames.isEmpty()) {
+ mFuelNames = new LinkedHashMap<Integer, String>();
+ for (int aMapKey : RocketFuels.mValidRocketFuels.keySet()) {
+ Fluid aFuel = RocketFuels.mValidRocketFuels.get(aMapKey);
+ if (aFuel != null) {
+ mFuelNames.put(aMapKey, aFuel.getLocalizedName());
+ }
}
- }
- if (mItemBlock != null) {
+ }
+ if (mItemBlock != null && !mFuelNames.isEmpty()) {
Item aTempItem = event.itemStack.getItem();
Block aTempBlock = Block.getBlockFromItem(aTempItem);
- if (aTempItem == mItemBlock || oFuelLoaderClass.isInstance(aTempBlock)
- || event.itemStack.getUnlocalizedName().toLowerCase().contains("fuelloader")) {
- int aTier = 0;
- for (String s : mFuelNames) {
- if (s != null) {
- event.toolTip.add("Tier "+aTier+": "+s);
+ if (aTempItem == mItemBlock || oFuelLoaderClass.isInstance(aTempBlock) || event.itemStack.getUnlocalizedName().toLowerCase().contains("fuelloader")) {
+ for (int aMapKey : mFuelNames.keySet()) {
+ String aFuel = mFuelNames.get(aMapKey);
+ if (aFuel != null) {
+ event.toolTip.add("Tier "+(aMapKey+1)+": "+aFuel);
}
- }
+ }
}
}
}
diff --git a/src/Java/gtPlusPlus/xmod/galacticraft/system/core/world/gen/ChunkProviderGalactic.java b/src/Java/gtPlusPlus/xmod/galacticraft/system/core/world/gen/ChunkProviderGalactic.java
index 3b9633b21d..aafa9ef9a1 100644
--- a/src/Java/gtPlusPlus/xmod/galacticraft/system/core/world/gen/ChunkProviderGalactic.java
+++ b/src/Java/gtPlusPlus/xmod/galacticraft/system/core/world/gen/ChunkProviderGalactic.java
@@ -4,12 +4,11 @@ import java.util.List;
import com.google.common.collect.Lists;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import micdoodle8.mods.galacticraft.api.prefab.core.BlockMetaPair;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.BiomeDecoratorSpace;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.MapGenBaseMeta;
-import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedCreeper;
-import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedSkeleton;
-import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedSpider;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
@@ -46,20 +45,37 @@ public abstract class ChunkProviderGalactic extends ChunkProviderGalaxyLakes {
}
protected SpawnListEntry[] getMonsters() {
- SpawnListEntry skele = new SpawnListEntry(EntityEvolvedSkeleton.class, 100, 4, 4);
- SpawnListEntry creeper = new SpawnListEntry(EntityEvolvedCreeper.class, 100, 4, 4);
- SpawnListEntry spider = new SpawnListEntry(EntityEvolvedSpider.class, 100, 4, 4);
+
+ Class aSkele = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.entities.EntityEvolvedSkeleton");
+ Class aCreeper = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.entities.EntityEvolvedCreeper");
+ Class aSpider = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.entities.EntityEvolvedSpider");
+ Class aEnderman = ReflectionUtils.getClass("galaxyspace.SolarSystem.planets.pluto.entities.EntityEvolvedEnderman");
+
+ SpawnListEntry skele;
+ SpawnListEntry creeper;
+ SpawnListEntry spider;
+ SpawnListEntry enderman;
- Class<?> aEnderman;
- try {
- aEnderman = Class.forName("galaxyspace.SolarSystem.planets.pluto.entities.EntityEvolvedEnderman");
- if (aEnderman != null) {
- SpawnListEntry enderman = new SpawnListEntry(aEnderman, 100, 4, 4);
- return new SpawnListEntry[] { skele, creeper, spider, enderman };
- }
- } catch (ClassNotFoundException e) {}
+ AutoMap<SpawnListEntry> aMobs = new AutoMap<SpawnListEntry>();
- return new SpawnListEntry[] { skele, creeper, spider };
+ if (aSkele != null) {
+ skele = new SpawnListEntry(aSkele, 100, 4, 4);
+ aMobs.put(skele);
+ }
+ if (aCreeper != null) {
+ creeper = new SpawnListEntry(aCreeper, 100, 4, 4);
+ aMobs.put(creeper);
+ }
+ if (aSpider != null) {
+ spider = new SpawnListEntry(aSpider, 100, 4, 4);
+ aMobs.put(spider);
+ }
+ if (aEnderman != null) {
+ enderman = new SpawnListEntry(aEnderman, 100, 4, 4);
+ aMobs.put(enderman);
+ }
+
+ return aMobs.toArray();
}
public void onPopulate(IChunkProvider arg0, int arg1, int arg2) {
diff --git a/src/Java/gtPlusPlus/xmod/galacticraft/util/GalacticUtils.java b/src/Java/gtPlusPlus/xmod/galacticraft/util/GalacticUtils.java
index 94dc2d0cc0..f237aed335 100644
--- a/src/Java/gtPlusPlus/xmod/galacticraft/util/GalacticUtils.java
+++ b/src/Java/gtPlusPlus/xmod/galacticraft/util/GalacticUtils.java
@@ -26,11 +26,11 @@ public class GalacticUtils {
Class<?> a1, a2, a3, a4, a5;
Method m1, m2, m3;
try {
- a1 = Class.forName("micdoodle8.mods.galacticraft.api.prefab.entity.EntityTieredRocket");
- a2 = Class.forName("micdoodle8.mods.galacticraft.core.tile.TileEntityLandingPad");
- a3 = Class.forName("micdoodle8.mods.galacticraft.core.tile.TileEntityBuggyFueler");
- a4 = Class.forName("micdoodle8.mods.galacticraft.api.entity.IDockable");
- a5 = Class.forName("micdoodle8.mods.galacticraft.api.entity.IFuelable");
+ a1 = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.api.prefab.entity.EntityTieredRocket");
+ a2 = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.tile.TileEntityLandingPad");
+ a3 = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.core.tile.TileEntityBuggyFueler");
+ a4 = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.api.entity.IDockable");
+ a5 = ReflectionUtils.getClass("micdoodle8.mods.galacticraft.api.entity.IFuelable");
m1 = ReflectionUtils.getMethod(a1, "getRocketTier");
m2 = ReflectionUtils.getMethod(a2, "getDockedEntity");
m3 = ReflectionUtils.getMethod(a3, "getDockedEntity");
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
index 6903305f9d..6edc47badf 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
@@ -12,18 +12,23 @@ import gregtech.api.interfaces.IToolStats;
import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.util.GT_Config;
import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
+import gregtech.api.util.Recipe_GT;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.australia.gen.gt.WorldGen_GT_Australia;
import gtPlusPlus.core.handler.COMPAT_HANDLER;
import gtPlusPlus.core.handler.OldCircuitHandler;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.CORE.ConfigSwitches;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.MaterialUtils;
import gtPlusPlus.everglades.gen.gt.WorldGen_GT;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
import gtPlusPlus.xmod.gregtech.api.util.GTPP_Config;
import gtPlusPlus.xmod.gregtech.api.world.GTPP_Worldgen;
+import gtPlusPlus.xmod.gregtech.common.StaticFields59;
import gtPlusPlus.xmod.gregtech.common.blocks.fluid.GregtechFluidHandler;
import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
import gtPlusPlus.xmod.gregtech.loaders.*;
@@ -104,6 +109,7 @@ public class HANDLER_GT {
public static void onLoadComplete(FMLLoadCompleteEvent event) {
removeCrudeTurbineRotors();
+ cleanAssemblyLineRecipeMap();
}
private static int removeCrudeTurbineRotors() {
@@ -165,5 +171,83 @@ public class HANDLER_GT {
return aRemoved;
}
+
+ /**
+ * Should clean out any invalid Assembly Line recipes, if the map actually exists.
+ * Prevents NPE's being thrown by GT's AL handler. (Fucking Annoying)
+ * @return - Amount of Recipes removed, which were invalid in some way.
+ */
+ private static int cleanAssemblyLineRecipeMap() {
+ GT_Recipe_Map g = StaticFields59.sAssemblylineVisualRecipes;
+ if (g == null) {
+ return 0;
+ }
+ else {
+ AutoMap<GT_Recipe> aNewMap = new AutoMap<GT_Recipe>();
+ AutoMap<GT_Recipe> aBadRecipeTempMap = new AutoMap<GT_Recipe>();
+ for (GT_Recipe r : g.mRecipeList) {
+ if (r != null) {
+ if (r.mOutputs == null || r.mOutputs.length == 0 || r.mOutputs[0] == null) {
+ aBadRecipeTempMap.put(r.copy());
+ continue;
+ }
+ else {
+ aNewMap.put(r.copy());
+ }
+ }
+ }
+ if (aNewMap.size() > 0) {
+ g.mRecipeList.clear();
+ for (GT_Recipe i : aNewMap) {
+ g.add(i);
+ }
+ }
+ if (aBadRecipeTempMap.size() > 0) {
+ Logger.INFO("Found "+aBadRecipeTempMap.size()+" bad Assembly Line Recipes, attempting to dump all data about them.");
+ Logger.INFO("This data should be given to the mod author for the recipe in question.");
+ for (GT_Recipe i : aBadRecipeTempMap) {
+ if (i == null) {
+ Logger.INFO("Found NULL recipe. Impossible to determine who added this one. Please Report to Alkalus on Github.");
+ }
+ else {
+ if (i.mOutputs == null || i.mOutputs.length == 0 || i.mOutputs[0] == null) {
+ Logger.INFO("Found recipe with NULL output array, this will cause some issues. Attempting to determine other info about recipe.");
+ if (i.mInputs != null && i.mInputs.length > 0) {
+ Logger.INFO("Inputs: "+ItemUtils.getArrayStackNames(i.mInputs));
+ }
+ else {
+ Logger.INFO("Recipe had no valid inputs.");
+ }
+ Logger.INFO("Time: "+i.mDuration);
+ Logger.INFO("EU/T: "+i.mEUt);
+ Logger.INFO("Special: "+i.mSpecialValue);
+ }
+ else {
+ Logger.INFO("Found bad recipe, Attempting to determine other info.");
+ if (i.mInputs != null && i.mInputs.length > 0) {
+ Logger.INFO("Inputs: "+ItemUtils.getArrayStackNames(i.mInputs));
+ }
+ else {
+ Logger.INFO("Recipe had no valid inputs.");
+ }
+ if (i.mOutputs != null && i.mOutputs.length > 0) {
+ Logger.INFO("Outputs: "+ItemUtils.getArrayStackNames(i.mOutputs));
+ }
+ else {
+ Logger.INFO("Recipe had no valid outputs.");
+ }
+ Logger.INFO("Time: "+i.mDuration);
+ Logger.INFO("EU/T: "+i.mEUt);
+ Logger.INFO("Special: "+i.mSpecialValue);
+ }
+ }
+ }
+ }
+ else {
+ Logger.INFO("No bad Assembly Line recipes found, this is great news!");
+ }
+ return aBadRecipeTempMap.size();
+ }
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index c228364149..83abe22568 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -84,8 +84,13 @@ public enum GregtechItemList implements GregtechItemContainer {
//Computer Cube
Gregtech_Computer_Cube,
- //Custom Batteries (Unused)
- Battery_Gem_1, Battery_Gem_2, Battery_Gem_3,
+ //Casings for batteries
+ Battery_Casing_Gem_1, Battery_Casing_Gem_2,
+ Battery_Casing_Gem_3, Battery_Casing_Gem_4,
+
+ //Custom Batteries
+ Battery_Gem_1, Battery_Gem_2,
+ Battery_Gem_3, Battery_Gem_4,
//Compressed Fusion MK3
Compressed_Fusion_Reactor,
@@ -99,6 +104,11 @@ public enum GregtechItemList implements GregtechItemContainer {
//End Game Laser Engraver Lens
Laser_Lens_Special,
+ //Bombs
+ Bomb_Cast, Bomb_Cast_Molten,
+ Bomb_Cast_Set, Bomb_Cast_Broken,
+ Bomb_Cast_Mold,
+
//----------------------------------------------------------------------------
@@ -556,7 +566,7 @@ public enum GregtechItemList implements GregtechItemContainer {
*/
//Fluid Void Covers
- Cover_Overflow_ULV, Cover_Overflow_LV, Cover_Overflow_MV, Cover_Overflow_HV, Cover_Overflow_EV, Cover_Overflow_IV,
+ Cover_Overflow_ULV, Cover_Overflow_LV, Cover_Overflow_MV, Cover_Overflow_HV, Cover_Overflow_EV, Cover_Overflow_IV,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
index d5b484e314..721facd8d0 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java
@@ -141,7 +141,23 @@ public interface IGregtech_RecipeAdder {
public boolean addLFTRRecipe(ItemStack aInput1, FluidStack aInput2, ItemStack aOutput1, FluidStack aOutput2, int aDuration, int aEUt);
public boolean addLFTRRecipe(FluidStack aInput1, FluidStack aInput2, FluidStack aOutput1, int aDuration, int aEUt);
-
+
+ /**
+ * Adds a custom Semifluid fuel for the GT++ SemiFluid Generators.
+ * @param aFuelItem - A Fluidstack to be consumed.
+ * @param aFuelValue - Fuel value in thousands (1 = 1000)
+ * @return - Was the Fuel added?
+ */
+ public boolean addSemifluidFuel(FluidStack aFuelItem, int aFuelValue);
+
+ /**
+ * Adds a custom Semifluid fuel for the GT++ SemiFluid Generators.
+ * @param aFuelItem - A Fluidstack to be consumed.
+ * @param aFuelValue - Fuel value in thousands (1 = 1000)
+ * @return - Was the Fuel added?
+ */
+ public boolean addSemifluidFuel(ItemStack aFuelItem, int aFuelValue);
+
public boolean addFissionFuel(
FluidStack aInput1, FluidStack aInput2, FluidStack aInput3,
FluidStack aInput4, FluidStack aInput5, FluidStack aInput6,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/BaseCustomTileEntity.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/BaseCustomTileEntity.java
index 47e4a7ae53..e637365c1e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/BaseCustomTileEntity.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/BaseCustomTileEntity.java
@@ -12,6 +12,7 @@ import gregtech.api.util.GT_Utility;
import gregtech.common.GT_Pollution;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
import ic2.api.Direction;
import net.minecraft.item.ItemStack;
@@ -88,7 +89,7 @@ public class BaseCustomTileEntity extends BaseMetaTileEntity {
}
}
- GT_Pollution.addPollution(this, 100000);
+ PollutionUtils.addPollution(this, 100000);
this.mMetaTileEntity.doExplosion(aAmount);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/custom/power/GTPP_MTE_BasicMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/custom/power/GTPP_MTE_BasicMachine.java
index b0dc635aee..19ba932a02 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/custom/power/GTPP_MTE_BasicMachine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/custom/power/GTPP_MTE_BasicMachine.java
@@ -361,17 +361,7 @@ public abstract class GTPP_MTE_BasicMachine extends GTPP_MTE_BasicTank {
@Override
public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
if (aBaseMetaTileEntity.isClientSide()) return true;
- if(!GT_Mod.gregtechproxy.mForceFreeFace) {
- aBaseMetaTileEntity.openGUI(aPlayer);
- return true;
- }
- for(byte i=0;i < 6; i++){
- if(aBaseMetaTileEntity.getAirAtSide(i)){
- aBaseMetaTileEntity.openGUI(aPlayer);
- return true;
- }
- }
- GT_Utility.sendChatToPlayer(aPlayer,"No free Side!");
+ aBaseMetaTileEntity.openGUI(aPlayer);
return true;
}
@@ -461,7 +451,8 @@ public abstract class GTPP_MTE_BasicMachine extends GTPP_MTE_BasicTank {
}
if (mProgresstime > 5) mStuttering = false;
XSTR aXSTR = new XSTR();
- if(GT_Mod.gregtechproxy.mAprilFool && aXSTR.nextInt(5000)==0)GT_Utility.sendSoundToPlayers(aBaseMetaTileEntity.getWorld(), GregTech_API.sSoundList.get(5), 10.0F, -1.0F, aBaseMetaTileEntity.getXCoord(), aBaseMetaTileEntity.getYCoord(),aBaseMetaTileEntity.getZCoord());
+ //Dumb April Fools Shit
+ // if(GT_Mod.gregtechproxy.mAprilFool && aXSTR.nextInt(5000)==0)GT_Utility.sendSoundToPlayers(aBaseMetaTileEntity.getWorld(), GregTech_API.sSoundList.get(5), 10.0F, -1.0F, aBaseMetaTileEntity.getXCoord(), aBaseMetaTileEntity.getYCoord(),aBaseMetaTileEntity.getZCoord());
} else {
if (!mStuttering) {
stutterProcess();
@@ -726,7 +717,7 @@ public abstract class GTPP_MTE_BasicMachine extends GTPP_MTE_BasicTank {
public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
if (aSide == getBaseMetaTileEntity().getFrontFacing() || aSide == mMainFacing) {
mAllowInputFromOutputSide = !mAllowInputFromOutputSide;
- GT_Utility.sendChatToPlayer(aPlayer, mAllowInputFromOutputSide ? trans("095","Input from Output Side allowed") : trans("096","Input from Output Side forbidden"));
+ GT_Utility.sendChatToPlayer(aPlayer, mAllowInputFromOutputSide ? "Input from Output Side allowed" : "Input from Output Side forbidden");
}
}
@@ -790,9 +781,6 @@ public abstract class GTPP_MTE_BasicMachine extends GTPP_MTE_BasicTank {
GT_Recipe tRecipe = tMap.findRecipe(getBaseMetaTileEntity(), mLastRecipe, false, V[mTier], new FluidStack[]{getFillableStack()}, getSpecialSlot(), getAllInputs());
if (tRecipe == null) return DID_NOT_FIND_RECIPE;
- if (GT_Mod.gregtechproxy.mLowGravProcessing && tRecipe.mSpecialValue == -100 &&
- !isValidForLowGravity(tRecipe,getBaseMetaTileEntity().getWorld().provider.dimensionId))
- return FOUND_RECIPE_BUT_DID_NOT_MEET_REQUIREMENTS;
if (tRecipe.mCanBeBuffered) mLastRecipe = tRecipe;
if (!canOutput(tRecipe)) {
mOutputBlocked++;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GTPP_Recipe.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GTPP_Recipe.java
index d5180ef4e1..18665538d0 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GTPP_Recipe.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GTPP_Recipe.java
@@ -27,7 +27,7 @@ public class GT_MetaTileEntity_BasicMachine_GTPP_Recipe extends GT_MetaTileEntit
GT_Recipe_Map aRecipes, int aInputSlots, int aOutputSlots, int aTankCapacity, int aAmperage,
int aGUIParameterA, int aGUIParameterB, ITexture[][][] aTextures, String aGUIName, String aNEIName,
String aSound, boolean aSharedTank, boolean aRequiresFluidForFiltering, int aSpecialEffect) {
- super(aName, aTier, aDescription, aRecipes, aInputSlots, aOutputSlots, aTankCapacity, aAmperage, aGUIParameterA,
+ super(aName, aTier, aDescription[0], aRecipes, aInputSlots, aOutputSlots, aTankCapacity, aAmperage, aGUIParameterA,
aGUIParameterB, aTextures, aGUIName, aNEIName, aSound, aSharedTank, aRequiresFluidForFiltering, aSpecialEffect);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_ControlCore.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_ControlCore.java
index fe0ffd5dc8..7a532807c8 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_ControlCore.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_ControlCore.java
@@ -8,16 +8,20 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.item.general.ItemControlCore;
import gtPlusPlus.xmod.gregtech.common.StaticFields59;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
public class GT_MetaTileEntity_Hatch_ControlCore extends GT_MetaTileEntity_Hatch {
public GT_Recipe_Map mRecipeMap = null;
+
+ public BlockPos mControllerLocation;
public GT_MetaTileEntity_Hatch_ControlCore(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, getSlots(aTier), "Core determines maximum tier machine will operate at");
@@ -113,4 +117,24 @@ public class GT_MetaTileEntity_Hatch_ControlCore extends GT_MetaTileEntity_Hatch
public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
return aSide == getBaseMetaTileEntity().getFrontFacing() && (aStack != null && aStack.getItem() instanceof ItemControlCore);
}
+
+ public boolean setOwner(TileEntity aTileEntity) {
+ if (mControllerLocation != null) {
+ return false;
+ }
+ else {
+ mControllerLocation = new BlockPos(aTileEntity);
+ return true;
+ }
+ }
+
+ public boolean setOwner(IGregTechTileEntity aTileEntity) {
+ if (mControllerLocation != null) {
+ return false;
+ }
+ else {
+ mControllerLocation = new BlockPos(aTileEntity);
+ return true;
+ }
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DynamoBuffer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DynamoBuffer.java
index e427587be0..9b730c84a3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DynamoBuffer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_DynamoBuffer.java
@@ -2,7 +2,8 @@ package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo;
-
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -47,7 +48,14 @@ public class GT_MetaTileEntity_Hatch_DynamoBuffer extends GT_MetaTileEntity_Hatc
@Override
public String[] getDescription() {
- String[] g = new String[]{"Generating electric Energy from Multiblocks", "Stores "+maxEUStore()+"EU", "Puts out up to 4 Amps", "Does not accept more than "+this.maxEUOutput()+"EU/t as input", "Large Turbines only supply 1A to this, other Multiblocks can inject more amps"};
+ String[] g;
+ if (CORE.GTNH || (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && Utils.getGregtechVersionAsInt() >= 50932)) {
+ g = new String[]{"Dynamo with internal storage and additional Amp capacity", "Capacity: "+maxEUStore()+"EU", "Voltage: "+this.maxEUOutput(), "Amperage In: 4", "Amperage Out: 4"};
+
+ }
+ else {
+ g = new String[]{"Dynamo with internal storage and additional Amp capacity", "Stores "+maxEUStore()+"EU", "Amperage In: 4", "Amperage Out: 4", "Does not accept more than "+this.maxEUOutput()+"EU/t as input", "Large Turbines only supply 1A to this, other Multiblocks can inject more amps"};
+ }
return g;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Naquadah.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Naquadah.java
index 2b7f44be59..0d4d8b6cdd 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Naquadah.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Naquadah.java
@@ -184,7 +184,7 @@ public class GT_MetaTileEntity_Hatch_Naquadah extends GT_MetaTileEntity_Hatch_In
a2 = F2.getByte(this);
}
}
- catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException n) {}
+ catch (IllegalArgumentException | IllegalAccessException n) {}
int textureIndex = a1 | a2 << 7;
byte texturePointer = (byte) (a1 & 127);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Plasma.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Plasma.java
index aeae474fb7..bed80d8d13 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Plasma.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Plasma.java
@@ -9,6 +9,7 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
@@ -19,7 +20,7 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
-public class GT_MetaTileEntity_Hatch_Plasma extends GT_MetaTileEntity_Hatch_Input {
+public class GT_MetaTileEntity_Hatch_Plasma extends GT_MetaTileEntity_Hatch_Output {
public final AutoMap<Fluid> mFluidsToUse = new AutoMap<Fluid>();
public final int mFluidCapacity;
@@ -49,11 +50,9 @@ public class GT_MetaTileEntity_Hatch_Plasma extends GT_MetaTileEntity_Hatch_Inpu
//Get all Plasmas, but the easiest way to do this is to just ask the Fluid Registry what exists and filter through them lazily.
Field fluidNameCache;
- try {
- fluidNameCache = ReflectionUtils.getField(FluidRegistry.class, "fluidNames");
- } catch (NoSuchFieldException e) {
- fluidNameCache = null;
- }
+
+ fluidNameCache = ReflectionUtils.getField(FluidRegistry.class, "fluidNames");
+
AutoMap<String> mValidPlasmaNameCache = new AutoMap<String>();
if (fluidNameCache != null) {
try {
@@ -198,7 +197,7 @@ public class GT_MetaTileEntity_Hatch_Plasma extends GT_MetaTileEntity_Hatch_Inpu
a2 = F2.getByte(this);
}
}
- catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException n) {}
+ catch (IllegalArgumentException | IllegalAccessException n) {}
int textureIndex = a1 | a2 << 7;
byte texturePointer = (byte) (a1 & 127);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Input.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Input.java
index 96df4dbfd0..5e41af86af 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Input.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Input.java
@@ -28,7 +28,7 @@ public class GT_MetaTileEntity_SuperBus_Input extends GT_MetaTileEntity_Hatch_In
}
public GT_MetaTileEntity_SuperBus_Input(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
- super(aName, aTier, aDescription, aTextures);
+ super(aName, aTier, aDescription[0], aTextures);
}
/**
@@ -65,7 +65,7 @@ public class GT_MetaTileEntity_SuperBus_Input extends GT_MetaTileEntity_Hatch_In
}
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
- return new GT_MetaTileEntity_SuperBus_Input(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
+ return new GT_MetaTileEntity_SuperBus_Input(this.mName, this.mTier, this.mDescription, this.mTextures);
}
public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Output.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Output.java
index d09b71ee35..4fac3d36d8 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Output.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_SuperBus_Output.java
@@ -26,7 +26,7 @@ public class GT_MetaTileEntity_SuperBus_Output extends GT_MetaTileEntity_Hatch_O
}
public GT_MetaTileEntity_SuperBus_Output(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
- super(aName, aTier, aDescription, aTextures);
+ super(aName, aTier, aDescription[0], aTextures);
}
/**
@@ -43,7 +43,7 @@ public class GT_MetaTileEntity_SuperBus_Output extends GT_MetaTileEntity_Hatch_O
}
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
- return new GT_MetaTileEntity_SuperBus_Output(this.mName, this.mTier, this.mDescriptionArray, this.mTextures);
+ return new GT_MetaTileEntity_SuperBus_Output(this.mName, this.mTier, this.mDescription, this.mTextures);
}
public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index 04c1cf34cc..9393ca08be 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -16,6 +16,7 @@ import org.apache.commons.lang3.ArrayUtils;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.TAE;
import gregtech.api.gui.GT_Container_MultiMachine;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -38,7 +39,10 @@ import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
+import gtPlusPlus.GTplusplus;
+import gtPlusPlus.GTplusplus.INIT_PHASE;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
@@ -68,6 +72,7 @@ extends
GT_MetaTileEntity_MultiBlockBase {
+ public static final boolean DEBUG_DISABLE_CORES_TEMPORARILY = true;
static {
@@ -199,7 +204,7 @@ GT_MetaTileEntity_MultiBlockBase {
}
}
- int tTier = requireControlCores ? this.getControlCoreTier() : -1;
+ int tTier = this.getControlCoreTier();
mInfo.add(getMachineTooltip());
@@ -265,6 +270,10 @@ GT_MetaTileEntity_MultiBlockBase {
private final String aRequiresCoreModule = "1x Core Module";
private final String aRequiresMaint = "1x Maintanence Hatch";*/
+ public final static String TAG_HIDE_HATCHES = "TAG_HIDE_HATCHES";
+ public final static String TAG_HIDE_POLLUTION = "TAG_HIDE_POLLUTION";
+ public final static String TAG_HIDE_MACHINE_TYPE = "TAG_HIDE_MACHINE_TYPE";
+
@Override
public final String[] getDescription() {
/*if (aCachedToolTip != null) {
@@ -287,22 +296,62 @@ GT_MetaTileEntity_MultiBlockBase {
String aRequiresCoreModule = "1x Core Module";
String aRequiresMaint = "1x Maintanence Hatch";
- String[] x = getTooltip();
- //Add Stock Tooltip to bottom of list
- String[] z;
- if (getPollutionPerTick(null) > 0) {
- z = new String[] {
- aRequiresMaint,
- aRequiresCoreModule,
- aRequiresMuffler,
- getPollutionTooltip(),
- getMachineTooltip()};
+ String[] x = getTooltip();
+
+ //Filter List, toggle switches, rebuild map without flags
+ boolean showHatches = true;
+ boolean showMachineType = true;
+ boolean showPollution = getPollutionPerTick(null) > 0;
+ AutoMap<String> aTempMap = new AutoMap<String>();
+ for (int ee = 0; ee < x.length; ee++) {
+ String hh = x[ee];
+ if (hh.equals(TAG_HIDE_HATCHES)) {
+ showHatches = false;
+ }
+ else if (hh.equals(TAG_HIDE_POLLUTION)) {
+ showPollution = false;
+ }
+ else if (hh.equals(TAG_HIDE_MACHINE_TYPE)) {
+ showMachineType = false;
+ }
+ else {
+ aTempMap.put(x[ee]);
+ }
}
- else {
- z = new String[] {
- aRequiresMaint,
- aRequiresCoreModule,
- getMachineTooltip(),};
+ //Rebuild
+ x = new String[aTempMap.size()];
+ for (int ee = 0; ee < x.length; ee++) {
+ x[ee] = aTempMap.get(ee);
+ }
+
+
+ //Assemble ordered map for misc tooltips
+ AutoMap<String> aOrderedMap = new AutoMap<String>();
+ if (showHatches) {
+ aOrderedMap.put(aRequiresMaint);
+ aOrderedMap.put(aRequiresCoreModule);
+ if (showPollution) {
+ aOrderedMap.put(aRequiresMuffler);
+ }
+ }
+
+ if (showMachineType) {
+ aOrderedMap.put(getMachineTooltip());
+ }
+
+ if (showPollution) {
+ aOrderedMap.put(getPollutionTooltip());
+ }
+
+
+
+
+
+ //Add Stock Tooltip to bottom of list
+ String[] z;
+ z = new String[aOrderedMap.size()];
+ for (int ee = 0; ee < z.length; ee++) {
+ z[ee] = aOrderedMap.get(ee);
}
int a2, a3;
@@ -435,7 +484,12 @@ GT_MetaTileEntity_MultiBlockBase {
public void log(String s) {
boolean isDebugLogging = CORE.DEBUG;
- boolean reset = false;
+ boolean reset = true;
+
+ if (!isDebugLogging) {
+ return;
+ }
+
if (aLogger == null || reset) {
if (isDebugLogging) {
try {
@@ -501,8 +555,8 @@ GT_MetaTileEntity_MultiBlockBase {
//Control Core to control the Multiblocks behaviour.
int aControlCoreTier = getControlCoreTier();
-
- //If no core, return false;
+
+ //If no core, return false;
if (aControlCoreTier == 0 && requireControlCores) {
log("No control core found.");
return false;
@@ -587,7 +641,7 @@ GT_MetaTileEntity_MultiBlockBase {
//Only Overclock as high as the control circuit.
byte tTierOld = tTier;
- tTier = requireControlCores ? (byte) aControlCoreTier : tTierOld;
+ tTier = getControlCoreTier() > 0 ? (byte) aControlCoreTier : tTierOld;
// Overclock
if (this.mEUt <= 16) {
@@ -859,10 +913,15 @@ GT_MetaTileEntity_MultiBlockBase {
public <E> boolean addToMachineListInternal(ArrayList<E> aList, final IMetaTileEntity aTileEntity,
- final int aBaseCasingIndex) {
+ final int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ }
if (aList.isEmpty()) {
if (aTileEntity instanceof GT_MetaTileEntity_Hatch) {
- log("Adding " + aTileEntity.getInventoryName() + " at " + new BlockPos(aTileEntity.getBaseMetaTileEntity()).getLocationString());
+ if (GTplusplus.CURRENT_LOAD_PHASE == INIT_PHASE.STARTED) {
+ log("Adding " + aTileEntity.getInventoryName() + " at " + new BlockPos(aTileEntity.getBaseMetaTileEntity()).getLocationString());
+ }
updateTexture(aTileEntity, aBaseCasingIndex);
return aList.add((E) aTileEntity);
}
@@ -875,13 +934,17 @@ GT_MetaTileEntity_MultiBlockBase {
BlockPos aPos = new BlockPos(b);
if (b != null && aPos != null) {
if (aCurPos.equals(aPos)) {
- log("Found Duplicate "+b.getInventoryName()+" at " + aPos.getLocationString());
+ if (GTplusplus.CURRENT_LOAD_PHASE == INIT_PHASE.STARTED) {
+ log("Found Duplicate "+b.getInventoryName()+" at " + aPos.getLocationString());
+ }
return false;
}
}
}
if (aTileEntity instanceof GT_MetaTileEntity_Hatch) {
- log("Adding " + aCur.getInventoryName() + " at " + aCurPos.getLocationString());
+ if (GTplusplus.CURRENT_LOAD_PHASE == INIT_PHASE.STARTED) {
+ log("Adding " + aCur.getInventoryName() + " at " + aCurPos.getLocationString());
+ }
updateTexture(aTileEntity, aBaseCasingIndex);
return aList.add((E) aTileEntity);
}
@@ -892,10 +955,10 @@ GT_MetaTileEntity_MultiBlockBase {
public int getControlCoreTier() {
//Always return best tier if config is off.
- boolean aCoresConfig = gtPlusPlus.core.lib.CORE.ConfigSwitches.requireControlCores;
+ /*boolean aCoresConfig = gtPlusPlus.core.lib.CORE.ConfigSwitches.requireControlCores;
if (!aCoresConfig) {
return 10;
- }
+ }*/
if (mControlCoreBus.isEmpty()) {
log("No Control Core Modules Found.");
@@ -936,9 +999,16 @@ GT_MetaTileEntity_MultiBlockBase {
log("Tried to add a secondary control core module.");
return false;
}
-
- log("Adding control core module.");
- return addToMachineListInternal(mControlCoreBus, aMetaTileEntity, aBaseCasingIndex);
+
+ GT_MetaTileEntity_Hatch_ControlCore Module = (GT_MetaTileEntity_Hatch_ControlCore) aMetaTileEntity;
+
+ if (Module != null) {
+ if (Module.setOwner(aTileEntity)) {
+ log("Adding control core module.");
+ return addToMachineListInternal(mControlCoreBus, aMetaTileEntity, aBaseCasingIndex);
+ }
+ }
+ return false;
}
@Override
@@ -1085,7 +1155,8 @@ GT_MetaTileEntity_MultiBlockBase {
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input || aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input){
((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = null;
- ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = aMap;
+ ((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = aMap;
+ log("Remapped Input Hatch to "+aMap.mNEIName);
}
else {
((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mRecipeMap = null;
@@ -1117,7 +1188,6 @@ GT_MetaTileEntity_MultiBlockBase {
* Enable Texture Casing Support if found in GT 5.09
*/
- @SuppressWarnings("deprecation")
public boolean updateTexture(final IGregTechTileEntity aTileEntity, int aCasingID){
final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) {
@@ -1138,7 +1208,7 @@ GT_MetaTileEntity_MultiBlockBase {
if (aMetaTileEntity == null) {
return false;
}
- Method mProper = Class.forName("gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch").getDeclaredMethod("updateTexture", int.class);
+ Method mProper = ReflectionUtils.getMethod(GT_MetaTileEntity_Hatch.class, "updateTexture", int.class);
if (mProper != null){
if (GT_MetaTileEntity_Hatch.class.isInstance(aMetaTileEntity)){
mProper.setAccessible(true);
@@ -1146,7 +1216,6 @@ GT_MetaTileEntity_MultiBlockBase {
log("Good Method Call for updateTexture.");
return true;
}
-
}
else {
log("Bad Method Call for updateTexture.");
@@ -1167,7 +1236,7 @@ GT_MetaTileEntity_MultiBlockBase {
log("updateTexture returning false. 1");
return false;
}
- catch (NoSuchMethodException | SecurityException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
log("updateTexture returning false.");
log("updateTexture returning false. 2");
e.printStackTrace();
@@ -1221,15 +1290,12 @@ GT_MetaTileEntity_MultiBlockBase {
@SuppressWarnings("rawtypes")
public boolean isThisHatchMultiDynamo(Object aMetaTileEntity){
Class mDynamoClass;
- try {
- mDynamoClass = Class.forName("com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti");
+ mDynamoClass = ReflectionUtils.getClass("com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_DynamoMulti");
if (mDynamoClass != null){
if (mDynamoClass.isInstance(aMetaTileEntity)){
return true;
}
}
- }
- catch (ClassNotFoundException e) {}
return false;
}
@@ -1510,7 +1576,7 @@ GT_MetaTileEntity_MultiBlockBase {
public final boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
boolean aStructureCheck = checkMultiblock(aBaseMetaTileEntity, aStack);
- boolean aHasCore = (requireControlCores ? (this.getControlCoreBus() != null) : true);
+ boolean aHasCore = DEBUG_DISABLE_CORES_TEMPORARILY; //(requireControlCores ? (this.getControlCoreBus() != null) : true);
return aStructureCheck && aHasCore;
}
@@ -1521,6 +1587,11 @@ GT_MetaTileEntity_MultiBlockBase {
Block aFoundBlock, int aFoundMeta, Block aExpectedBlock, int aExpectedMeta) {
boolean isHatch = false;
if (aBaseMetaTileEntity != null) {
+
+ if (aCasingID < 64) {
+ aCasingID = TAE.GTPP_INDEX(aCasingID);
+ }
+
isHatch = this.addToMachineList(aBaseMetaTileEntity, aCasingID);
if (isHatch) {
return true;
@@ -1562,7 +1633,9 @@ GT_MetaTileEntity_MultiBlockBase {
}
else if (aFoundBlock != aExpectedBlock) {
log("A1 - Found: "+aFoundBlock.getLocalizedName()+":"+aFoundMeta+", Expected: "+aExpectedBlock.getLocalizedName()+":"+aExpectedMeta);
- log("Loc: "+(new BlockPos(aBaseMetaTileEntity).getLocationString()));
+ if (GTplusplus.CURRENT_LOAD_PHASE == INIT_PHASE.STARTED) {
+ log("Loc: "+(new BlockPos(aBaseMetaTileEntity).getLocationString()));
+ }
return false;
}
else if (aFoundMeta != aExpectedMeta) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/generators/GregtechRocketFuelGeneratorBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/generators/GregtechRocketFuelGeneratorBase.java
index a88d6a4832..b6e7b35d68 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/generators/GregtechRocketFuelGeneratorBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/generators/GregtechRocketFuelGeneratorBase.java
@@ -4,10 +4,6 @@ import static gregtech.api.enums.GT_Values.V;
import java.util.Collection;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.item.ItemStack;
-
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
@@ -15,9 +11,12 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
-
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_BasicTank {
@@ -144,7 +143,7 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
@Override
public boolean isOutputFacing(final byte aSide) {
- return true;
+ return this.getBaseMetaTileEntity().getFrontFacing() == aSide;
}
@Override
@@ -154,7 +153,7 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
@Override
public long maxEUOutput() {
- return this.getBaseMetaTileEntity().isAllowedToWork() ? V[this.mTier] : 0;
+ return V[this.mTier];
}
@Override
@@ -164,22 +163,22 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
@Override
public boolean doesFillContainers() {
- return this.getBaseMetaTileEntity().isAllowedToWork();
+ return false;
}
@Override
public boolean doesEmptyContainers() {
- return this.getBaseMetaTileEntity().isAllowedToWork();
+ return true;
}
@Override
public boolean canTankBeFilled() {
- return this.getBaseMetaTileEntity().isAllowedToWork();
+ return true;
}
@Override
public boolean canTankBeEmptied() {
- return this.getBaseMetaTileEntity().isAllowedToWork();
+ return false;
}
@Override
@@ -199,6 +198,61 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
@Override
public void onPostTick(final IGregTechTileEntity aBaseMetaTileEntity, final long aTick) {
+
+
+ //super.onPostTick(aBaseMetaTileEntity, aTick);
+
+ /*if (aBaseMetaTileEntity.isServerSide() && aBaseMetaTileEntity.isAllowedToWork() && aTick % 10L == 0L) {
+ int tFuelValue;
+ if (this.mFluid == null) {
+ if (aBaseMetaTileEntity.getUniversalEnergyStored() < this.maxEUOutput() + this.getMinimumStoredEU()) {
+ this.mInventory[this.getStackDisplaySlot()] = null;
+ } else {
+ if (this.mInventory[this.getStackDisplaySlot()] == null) {
+ this.mInventory[this.getStackDisplaySlot()] = new ItemStack(Blocks.fire, 1);
+ }
+
+ this.mInventory[this.getStackDisplaySlot()].setStackDisplayName("Generating: "
+ + (aBaseMetaTileEntity.getUniversalEnergyStored() - this.getMinimumStoredEU()) + " EU");
+ }
+ } else {
+ tFuelValue = this.getFuelValue(this.mFluid);
+ int tConsumed = this.consumedFluidPerOperation(this.mFluid);
+ if (tFuelValue > 0 && tConsumed > 0 && this.mFluid.amount > tConsumed) {
+ long tFluidAmountToUse = Math.min((long) (this.mFluid.amount / tConsumed),
+ (this.maxEUStore() - aBaseMetaTileEntity.getUniversalEnergyStored()) / (long) tFuelValue);
+ if (tFluidAmountToUse > 0L && aBaseMetaTileEntity
+ .increaseStoredEnergyUnits(tFluidAmountToUse * (long) tFuelValue, true)) {
+ PollutionUtils.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollution());
+ this.mFluid.amount = (int) ((long) this.mFluid.amount - tFluidAmountToUse * (long) tConsumed);
+ }
+ }
+ }
+
+ if (this.mInventory[this.getInputSlot()] != null
+ && aBaseMetaTileEntity.getUniversalEnergyStored() < this.maxEUOutput() * 20L
+ + this.getMinimumStoredEU()
+ && GT_Utility.getFluidForFilledItem(this.mInventory[this.getInputSlot()], true) == null) {
+ tFuelValue = this.getFuelValue(this.mInventory[this.getInputSlot()]);
+ if (tFuelValue > 0) {
+ ItemStack tEmptyContainer = this.getEmptyContainer(this.mInventory[this.getInputSlot()]);
+ if (aBaseMetaTileEntity.addStackToSlot(this.getOutputSlot(), tEmptyContainer)) {
+ aBaseMetaTileEntity.increaseStoredEnergyUnits((long) tFuelValue, true);
+ aBaseMetaTileEntity.decrStackSize(this.getInputSlot(), 1);
+ PollutionUtils.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollution());
+ }
+ }
+ }
+ }
+
+ if (aBaseMetaTileEntity.isServerSide()) {
+ aBaseMetaTileEntity.setActive(aBaseMetaTileEntity.isAllowedToWork() && aBaseMetaTileEntity
+ .getUniversalEnergyStored() >= this.maxEUOutput() + this.getMinimumStoredEU());
+ }*/
+
+
+
+
if (aBaseMetaTileEntity.isServerSide() && aBaseMetaTileEntity.isAllowedToWork() && ((aTick % 10) == 0)) {
if (this.mFluid == null) {
if (aBaseMetaTileEntity.getUniversalEnergyStored() < (this.maxEUOutput() + this.getMinimumStoredEU())) {
@@ -211,16 +265,14 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
}
} else {
final int tFuelValue = this.getFuelValue(this.mFluid), tConsumed = this.consumedFluidPerOperation(this.mFluid);
- if ((tFuelValue > 0) && (tConsumed > 0) && (this.mFluid.amount > tConsumed)) {
+ if ((tFuelValue > 0) && (tConsumed > 0) && (this.mFluid.amount >= tConsumed)) {
final long tFluidAmountToUse = Math.min(this.mFluid.amount / tConsumed, (((this.maxEUOutput() * 20) + this.getMinimumStoredEU()) - aBaseMetaTileEntity.getUniversalEnergyStored()) / tFuelValue);
- if ((tFluidAmountToUse > 0) && aBaseMetaTileEntity.increaseStoredEnergyUnits(tFluidAmountToUse * tFuelValue, true)){
- if (this.useFuel){
- this.mFluid.amount -= tFluidAmountToUse * tConsumed;
- this.useFuel = false;
- }
- else {
- this.useFuel = true;
- }
+ if ((tFluidAmountToUse > 0) && aBaseMetaTileEntity.increaseStoredEnergyUnits(tFluidAmountToUse * tFuelValue, true)){
+ useFuel = Utils.invertBoolean(useFuel);
+ int aSafeFloor= (int) Math.max(((tFluidAmountToUse * tConsumed)/3), 1);
+ int toConsumeTrue = (int) (useFuel ? aSafeFloor : 0);
+ //Logger.INFO("True consumption: "+toConsumeTrue+" | Consuming this tick? "+useFuel);
+ this.mFluid.amount -= toConsumeTrue;
PollutionUtils.addPollution(getBaseMetaTileEntity(), 10 * getPollution());
}
}
@@ -260,14 +312,25 @@ public abstract class GregtechRocketFuelGeneratorBase extends GT_MetaTileEntity_
FluidStack tLiquid;
final Collection<GT_Recipe> tRecipeList = this.getRecipes().mRecipeList;
if (tRecipeList != null) {
+ //Logger.INFO("Step A");
for (final GT_Recipe tFuel : tRecipeList) {
- if ((tLiquid = GT_Utility.getFluidForFilledItem(tFuel.getRepresentativeInput(0), true)) != null) {
+ //Logger.INFO("Step B");
+ if ((tLiquid = tFuel.mFluidInputs[0]) != null) {
+ //Logger.INFO("Step C");
if (aLiquid.isFluidEqual(tLiquid)) {
- return (int) (((long) tFuel.mSpecialValue * this.getEfficiency() * this.consumedFluidPerOperation(tLiquid)) / 100);
+ //Logger.INFO("Found some fuel?");
+ int aperOp = this.consumedFluidPerOperation(tLiquid);
+ int aConsume = (int) (((long) tFuel.mSpecialValue * this.getEfficiency() * aperOp) / 100);
+ //Logger.INFO("Fuel Value: "+tFuel.mSpecialValue);
+ //Logger.INFO("Efficiency: "+getEfficiency());
+ //Logger.INFO("Consumed per op: "+aperOp);
+ //Logger.INFO("Consuming "+aConsume);
+ return aConsume;
}
}
}
}
+ //Logger.INFO("No Fuel Value | Valid? "+(aLiquid != null));
return 0;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/objects/MultiblockLayer.java b/src/Java/gtPlusPlus/xmod/gregtech/api/objects/MultiblockLayer.java
index 88b4c7bc99..c5554a6679 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/objects/MultiblockLayer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/objects/MultiblockLayer.java
@@ -17,6 +17,7 @@ import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
import net.minecraft.init.Blocks;
@@ -124,10 +125,11 @@ public class MultiblockLayer {
GT_MetaTileEntity_Hatch.class
};
}
- else {
- try {
+ else {
+ Class aDataHatch = ReflectionUtils.getClass("gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess");
+ if (aDataHatch != null) {
aHatchTypeClass = new Class[] {
- Class.forName("gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess"),
+ aDataHatch,
GT_MetaTileEntity_Hatch_Dynamo.class,
GT_MetaTileEntity_Hatch_Energy.class,
GT_MetaTileEntity_Hatch_Input.class,
@@ -138,7 +140,7 @@ public class MultiblockLayer {
GT_MetaTileEntity_Hatch_OutputBus.class,
GT_MetaTileEntity_Hatch.class
};
- } catch (ClassNotFoundException e) {
+ } else {
aHatchTypeClass = new Class[] {
GT_MetaTileEntity_Hatch_Dynamo.class,
GT_MetaTileEntity_Hatch_Energy.class,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechOreDictUnificator.java b/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechOreDictUnificator.java
index d5327a6a99..3e0084139e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechOreDictUnificator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/util/GregtechOreDictUnificator.java
@@ -38,12 +38,9 @@ public class GregtechOreDictUnificator {
private static boolean mRunThroughTheList = true;
static {
- try {
if (ReflectionUtils.getField(GT_OreDictUnificator.class, "sUnificationTable") == null) {
GregTech_API.sItemStackMappings.add(sUnificationTable);
}
- }
- catch (NoSuchFieldException e) {}
}
/**
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java b/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
index 0556a7f4fe..6b4bab9e26 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
@@ -5,6 +5,7 @@ import static gtPlusPlus.xmod.gregtech.common.covers.GTPP_Cover_Overflow.mOverfl
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -15,37 +16,42 @@ import java.util.TimerTask;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.block.Block;
-import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.fluids.FluidStack;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
-import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.enums.Materials;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaTileEntity;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
+import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.Recipe_GT;
+import gregtech.api.util.Recipe_GT.Gregtech_Recipe_Map;
import gregtech.common.GT_Proxy;
-import gregtech.common.blocks.GT_Block_Machines;
-import gregtech.common.render.GT_Renderer_Block;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.ObjMap;
import gtPlusPlus.api.objects.minecraft.FormattedTooltipString;
+import gtPlusPlus.core.handler.AchievementHandler;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
import gtPlusPlus.core.util.reflect.ProxyFinder;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.BaseCustomTileEntity;
import gtPlusPlus.xmod.gregtech.api.metatileentity.custom.power.BaseCustomPower_MTE;
-import gtPlusPlus.xmod.gregtech.common.blocks.GTPP_Block_Machines;
-import gtPlusPlus.xmod.gregtech.common.render.GTPP_Render_MachineBlock;
+import gtPlusPlus.xmod.gregtech.loaders.misc.AssLineAchievements;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.fluids.FluidStack;
public class Meta_GT_Proxy {
@@ -64,6 +70,8 @@ public class Meta_GT_Proxy {
private static Class sBaseMetaTileEntityClass;
private static Class sBaseMetaTileEntityClass2;
+ public static AchievementHandler mAssemblyAchievements;
+
public static final Map<String, FormattedTooltipString> mCustomGregtechMetaTooltips = new LinkedHashMap<String, FormattedTooltipString>();
@@ -102,7 +110,121 @@ public class Meta_GT_Proxy {
}
public void postInit() {
+ mAssemblyAchievements = new AchievementHandler();
+ }
+
+ public static boolean generatePlasmaRecipesForAdvVacFreezer() {
+
+ AutoMap<Recipe_GT> aFreezerMapRebaked = new AutoMap<Recipe_GT>();
+ AutoMap<Recipe_GT> aRemovedRecipes = new AutoMap<Recipe_GT>();
+
+ //Find recipes containing Plasma and map them
+ for (Recipe_GT y : Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.mRecipeList) {
+ if (y.mFluidInputs.length > 0) {
+ for (FluidStack r : y.mFluidInputs) {
+ if (r.getUnlocalizedName().toLowerCase().contains("plasma")) {
+ aRemovedRecipes.put(y);
+ continue;
+ }
+ }
+ aFreezerMapRebaked.put(y);
+ }
+ }
+
+ AutoMap<Recipe_GT> aNewRecipes = new AutoMap<Recipe_GT>();
+ int aAtomicMass = 0;
+ int aAtomicTier = 0;
+
+ final FluidStack NULL_PLASMA = Materials._NULL.getPlasma(1);
+
+ for (String s : ELEMENT.NAMES) {
+
+ aAtomicMass++;
+ aAtomicTier = (aAtomicMass/30)+1;
+ FluidStack aMoltenFluid = null;
+ FluidStack aPlasma = null;
+
+ //Try Get Material via Gregtech
+ Materials aGregMaterial = MaterialUtils.getMaterial(s);
+ if (aGregMaterial != null) {
+ aMoltenFluid = aGregMaterial.getMolten(1);
+ if (aMoltenFluid == null) {
+ aMoltenFluid = aGregMaterial.getFluid(1);
+ if (aMoltenFluid == null) {
+ aMoltenFluid = aGregMaterial.getGas(1);
+ if (aMoltenFluid == null) {
+ aMoltenFluid = aGregMaterial.getSolid(1);
+ }
+ }
+ }
+ aPlasma = aGregMaterial.getPlasma(100);
+ }
+
+ //Just wildcard values
+ if (aMoltenFluid == null || aPlasma == null) {
+ if (aMoltenFluid == null) {
+ aMoltenFluid = FluidUtils.getWildcardFluidStack(s, 1);
+ }
+ if (aPlasma == null) {
+ aPlasma = FluidUtils.getFluidStack("plasma."+s.toLowerCase(), 1);
+ }
+ }
+
+ //Skip this material
+ if (aMoltenFluid == null || aPlasma == null || aPlasma.isFluidEqual(NULL_PLASMA)) {
+ Logger.INFO("Could not generate Advanced Vacuum Freezer recipe. Cooling "+s+" plasma. Molten Form Exists? "+(aMoltenFluid != null)+" | Plasma Exists? "+(aPlasma != null));
+ continue;
+ }
+ else {
+ //Build a new plasma recipe
+ int aTotalTickTime = (20 * 1 + (aAtomicMass));
+ Recipe_GT aTempRecipe = new Recipe_GT(true,
+ new ItemStack[] {},
+ new ItemStack[] {},
+ null,
+ new int[] {10000},
+ new FluidStack[] {
+ aPlasma,
+ FluidUtils.getFluidStack("cryotheum", aTotalTickTime)
+ },
+ new FluidStack[] {
+ aMoltenFluid
+ },
+ aTotalTickTime,
+ (int) GT_Values.V[4+aAtomicTier],
+ aAtomicMass);
+
+ //Add it to the map if it's valid
+ if (aTempRecipe != null) {
+ aNewRecipes.put(aTempRecipe);
+ }
+ }
+
+ }
+
+
+ //Add the new recipes to the map we will rebake over the original
+ for (Recipe_GT w : aNewRecipes) {
+ aFreezerMapRebaked.put(w);
+ }
+
+ //Best not touch the original map if we don't have a valid map to override it with.
+ if (aFreezerMapRebaked.size() > 0) {
+
+ int aOriginalCount = Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.mRecipeList.size();
+
+ //Empty the original map
+ Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.mRecipeList.clear();
+
+ //Rebake the real map
+ for (Recipe_GT w : aFreezerMapRebaked) {
+ Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.mRecipeList.add(w);
+ }
+
+ return Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes.mRecipeList.size() >= aOriginalCount;
+ }
+ return false;
}
public static TileEntity constructCustomGregtechMetaTileEntityByMeta(int aMeta) {
@@ -280,7 +402,7 @@ public class Meta_GT_Proxy {
if (proxyGT != null && proxyGT instanceof GT_Proxy) {
try {
return ReflectionUtils.getField(proxyGT.getClass(), fieldName).get(proxyGT);
- } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
}
return null;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java b/src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java
index c1db39b132..1604cc5acd 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/StaticFields59.java
@@ -5,7 +5,6 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -33,6 +32,8 @@ public class StaticFields59 {
public static final Field mMultiblockChemicalRecipes;
public static final Field mDescriptionArray;
public static final Field mCasingTexturePages;
+ public static final Field mAssLineVisualMapNEI;
+ public static final GT_Recipe_Map sAssemblylineVisualRecipes;
public static final Method mCalculatePollutionReduction;
public static final Method mAddFurnaceRecipe;
@@ -43,28 +44,51 @@ public class StaticFields59 {
//OrePrefixes
static {
+ Logger.INFO("[SH] Creating Static Helper for various fields which require reflective access.");
mGtBlockCasings5 = getField(GregTech_API.class, "sBlockCasings5");
+ Logger.INFO("[SH] Got Field: sBlockCasings5");
mPreventableComponents = getField(OrePrefixes.class, "mPreventableComponents");
+ Logger.INFO("[SH] Got Field: mPreventableComponents");
mDisabledItems = getField(OrePrefixes.class, "mDisabledItems");
- mMultiblockChemicalRecipes = getField(GT_Recipe_Map.class, "sMultiblockChemicalRecipes");
+ Logger.INFO("[SH] Got Field: mDisabledItems");
mDescriptionArray = getField(GT_MetaTileEntity_TieredMachineBlock.class, "mDescriptionArray");
+ Logger.INFO("[SH] Got Field: mDescriptionArray");
mCasingTexturePages = getField(BlockIcons.class, "casingTexturePages");
-
- mCalculatePollutionReduction = getMethod(GT_MetaTileEntity_Hatch_Muffler.class, "calculatePollutionReduction", int.class);
-
- Logger.INFO("Initializing a recipe handler for different versions of Gregtech 5.");
- //Yep...
- if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
- Logger.INFO("Selecting GT 5.7/5.8 Recipe Set");
- mAddFurnaceRecipe = getMethod(GT_ModHandler.class, "addSmeltingAndAlloySmeltingRecipe", ItemStack.class, ItemStack.class);
+ Logger.INFO("[SH] Got Field: casingTexturePages");
+
+ mAssLineVisualMapNEI = getField(GT_Recipe_Map.class, "sAssemblylineVisualRecipes");
+ Logger.INFO("[SH] Got Field: mAssLineVisualMapNEI");
+ GT_Recipe_Map aTemp;
+ if (mAssLineVisualMapNEI != null) {
+ try {
+ aTemp = (GT_Recipe_Map) mAssLineVisualMapNEI.get(null);
+ Logger.INFO("[SH] Got Field: sAssemblylineVisualRecipes");
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ aTemp = null;
+ }
+ } else {
+ aTemp = null;
}
- else {
- Logger.INFO("Selecting GT 5.9 Recipe Set");
- mAddFurnaceRecipe = getMethod(GT_ModHandler.class, "addSmeltingAndAlloySmeltingRecipe", ItemStack.class, ItemStack.class, boolean.class);
+
+ sAssemblylineVisualRecipes = aTemp;
+ mMultiblockChemicalRecipes = getField(GT_Recipe_Map.class, "sMultiblockChemicalRecipes");
+ Logger.INFO("[SH] Got Field: sMultiblockChemicalRecipes");
+
+ mCalculatePollutionReduction = getMethod(GT_MetaTileEntity_Hatch_Muffler.class, "calculatePollutionReduction",
+ int.class);
+ Logger.INFO("[SH] Got Method: calculatePollutionReduction");
+
+ // Yep...
+ if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
+ mAddFurnaceRecipe = getMethod(GT_ModHandler.class, "addSmeltingAndAlloySmeltingRecipe", ItemStack.class,
+ ItemStack.class);
+ Logger.INFO("[SH] Got Method: addSmeltingAndAlloySmeltingRecipe");
+ } else {
+ mAddFurnaceRecipe = getMethod(GT_ModHandler.class, "addSmeltingAndAlloySmeltingRecipe", ItemStack.class,
+ ItemStack.class, boolean.class);
+ Logger.INFO("[SH] Got Method: addSmeltingAndAlloySmeltingRecipe");
}
-
-
-
+
}
public static synchronized final Block getBlockCasings5() {
@@ -84,11 +108,7 @@ public class StaticFields59 {
}
public static Field getField(Class a, String b) {
- try {
- return ReflectionUtils.getField(a, b);
- } catch (NoSuchFieldException e) {
- return null;
- }
+ return ReflectionUtils.getField(a, b);
}
public static Method getMethod(Class a, String b, Class... params) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
index b3366df96b..54323d8c2e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java
@@ -86,8 +86,8 @@ extends GregtechMetaCasingBlocksAbstract {
case 2:
return TexturesGtBlock.TEXTURE_ORGANIC_PANEL_A_GLOWING.getIcon();
//Coke Oven Casing Tier 2
- case 3:
- return TexturesGtBlock.Casing_Material_MaragingSteel.getIcon();
+ case 3:
+ return TexturesGtBlock.TEXTURE_METAL_PANEL_A.getIcon();
//Material Press Casings
case 4:
return TexturesGtBlock.Casing_Material_MaragingSteel.getIcon();
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
index 0178bac4da..bda75be793 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
@@ -23,6 +23,7 @@ import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaWirelessCharger;
import ic2.api.info.Info;
import ic2.api.item.ElectricItem;
@@ -291,12 +292,11 @@ public class ChargingHelper {
}
//Try get charge direct from NBT for GT and IC2 stacks
- try {
Logger.WARNING("3");
if (mTemp.getItem() instanceof GT_MetaGenerated_Tool_01
|| mTemp.getItem() instanceof GT_MetaGenerated_Item_01
|| mTemp.getItem() instanceof GT_MetaGenerated_Item_02
- || Class.forName("gregtech.common.items.GT_MetaGenerated_Item_03").isInstance(mTemp.getItem())
+ || ReflectionUtils.getClass("gregtech.common.items.GT_MetaGenerated_Item_03").isInstance(mTemp.getItem())
|| mTemp.getItem().getClass().getName().toLowerCase().equals(("gregtech.common.items.GT_MetaGenerated_Tool_01").toLowerCase())){
if (!NBTUtils.hasKey(mTemp, "GT.ItemCharge")){
if (!mTemp.getDisplayName().toLowerCase().contains("battery")){
@@ -314,10 +314,7 @@ public class ChargingHelper {
}
else if (mTemp.getItem() instanceof IElectricItem){
mitemCurrentCharge = NBTUtils.getLong(mTemp, "charge");
- }
- } catch (ClassNotFoundException e) {
-
- }
+ }
double mVoltageIncrease;
if (mItemEuTLimit >= mVoltage){
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java
index 2bfb07ff4a..3c60ae664e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/TreeFarmHelper.java
@@ -321,14 +321,12 @@ public class TreeFarmHelper {
return blockHumus;
}
else if (ReflectionUtils.doesClassExist("forestry.core.blocks.BlockSoil")){
- try {
- final Class<?> humusClass = Class.forName("forestry.core.blocks.BlockSoil");
+ final Class<?> humusClass = ReflectionUtils.getClass("forestry.core.blocks.BlockSoil");
final ItemStack humusStack = ItemUtils.getCorrectStacktype("Forestry:soil", 1);
if (humusClass != null){
blockHumus = Block.getBlockFromItem(humusStack.getItem());
return Block.getBlockFromItem(humusStack.getItem());
}
- } catch (final ClassNotFoundException e) {}
}
return null;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
index 7f426f8abb..f42fc49e53 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java
@@ -169,12 +169,12 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 {
* Power Gems
*/
- GregtechItemList.Battery_Gem_1.set(this.addItem(tLastID = 66, "Fission Power Cell", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 8L), getTcAspectStack(TC_Aspects.METALLUM, 24L), getTcAspectStack(TC_Aspects.POTENTIA, 16L)}));
- this.setElectricStats(32000 + tLastID, 32000000L, GT_Values.V[5], 5L, -3L, false);
- GregtechItemList.Battery_Gem_2.set(this.addItem(tLastID = 68, "Fusion Power Cell", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 16L), getTcAspectStack(TC_Aspects.METALLUM, 32L), getTcAspectStack(TC_Aspects.POTENTIA, 32L)}));
- this.setElectricStats(32000 + tLastID, 750000000L, GT_Values.V[6], 6L, -3L, false);
- GregtechItemList.Battery_Gem_3.set(this.addItem(tLastID = 70, "Portable Neutron Star", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 32L), getTcAspectStack(TC_Aspects.METALLUM, 48L), getTcAspectStack(TC_Aspects.POTENTIA, 64L)}));
- this.setElectricStats(32000 + tLastID, 64000000000L, GT_Values.V[7], 7L, -3L, false);
+ GregtechItemList.Battery_Gem_1.set(this.addItem(tLastID = 66, "Proton Cell", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 8L), getTcAspectStack(TC_Aspects.METALLUM, 24L), getTcAspectStack(TC_Aspects.POTENTIA, 16L)}));
+ this.setElectricStats(32000 + tLastID, GT_Values.V[6] * 20 * 300 / 4, GT_Values.V[6], 6L, -3L, false);
+ GregtechItemList.Battery_Gem_2.set(this.addItem(tLastID = 68, "Electron Cell", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 16L), getTcAspectStack(TC_Aspects.METALLUM, 32L), getTcAspectStack(TC_Aspects.POTENTIA, 32L)}));
+ this.setElectricStats(32000 + tLastID, GT_Values.V[7] * 20 * 300 / 4, GT_Values.V[7], 7L, -3L, false);
+ GregtechItemList.Battery_Gem_3.set(this.addItem(tLastID = 70, "Quark Entanglement", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 32L), getTcAspectStack(TC_Aspects.METALLUM, 48L), getTcAspectStack(TC_Aspects.POTENTIA, 64L)}));
+ this.setElectricStats(32000 + tLastID, GT_Values.V[8] * 20 * 300 / 4, GT_Values.V[8], 8L, -3L, false);
//ItemUtils.addItemToOreDictionary(GregtechItemList.Battery_Gem_1.get(1), "batteryFutureBasic");
//ItemUtils.addItemToOreDictionary(GregtechItemList.Battery_Gem_2.get(1), "batteryFutureGood");
//ItemUtils.addItemToOreDictionary(GregtechItemList.Battery_Gem_3.get(1), "batteryFutureAdvanced");
@@ -285,7 +285,7 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 {
//Fusion Reactor MK4 Singularity
GregtechItemList.Compressed_Fusion_Reactor.set(this.addItem(100, "Hypervisor Matrix (Fusion)", "A memory unit containing an RI (Restricted Intelligence)", new Object[0]));
- CORE.RA.addCompressorRecipe(ItemList.FusionComputer_UV.get(9), GregtechItemList.Compressed_Fusion_Reactor.get(1), (int) GT_Values.V[7], (int) GT_Values.V[8]);
+
//NanoTubes
GregtechItemList.NanoTube_Base_Substrate.set(this.addItem(101, "Silicon Base Substrate", "Used in the production of Carbon Nanotubes", new Object[0]));
@@ -294,6 +294,30 @@ public class MetaGeneratedGregtechItems extends Gregtech_MetaItem_X32 {
GregtechItemList.Carbyne_Sheet_Finished.set(this.addItem(104, "Carbyne Composite Panel", "Nanotubes which contain LAC, arranged side by side and compressed further", new Object[0]));
GregtechItemList.Laser_Lens_Special.set(this.addItem(105, "Quantum Anomaly", "Probably should shoot it with lasers", new Object[0]));
+ GregtechItemList.Battery_Casing_Gem_1.set(this.addItem(106, "Containment Unit I", "Used in crafting", new Object[0]));
+ GregtechItemList.Battery_Casing_Gem_2.set(this.addItem(107, "Containment Unit II", "Used in crafting", new Object[0]));
+ GregtechItemList.Battery_Casing_Gem_3.set(this.addItem(108, "Advanced Containment Unit", "Used in crafting", new Object[0]));
+ GregtechItemList.Battery_Casing_Gem_4.set(this.addItem(109, "Exotic Containment Unit", "Used in crafting", new Object[0]));
+
+ GregtechItemList.Battery_Gem_4.set(this.addItem(tLastID = 110, "Graviton Anomaly", "Reusable", new Object[]{getTcAspectStack(TC_Aspects.ELECTRUM, 64L), getTcAspectStack(TC_Aspects.METALLUM, 64L), getTcAspectStack(TC_Aspects.POTENTIA, 64L)}));
+ this.setElectricStats(32000 + tLastID, (64000000000L*16), GT_Values.V[9], 9L, -3L, false);
+
+
+
+ /*
+ * Bombs
+ */
+ GregtechItemList.Bomb_Cast.set(this.addItem(111, "Bomb Cast", "Used in the production of Bombs", new Object[0]));
+ GregtechItemList.Bomb_Cast_Molten.set(this.addItem(112, "Bomb Cast (Hot)", "Consider cooling this off", new Object[0]));
+ GregtechItemList.Bomb_Cast_Set.set(this.addItem(113, "Bomb Cast (Set)", "Break it open for the goodies inside!", new Object[0]));
+ GregtechItemList.Bomb_Cast_Broken.set(this.addItem(114, "Bomb Cast (Broken)", "This is probably just junk", new Object[0]));
+ GregtechItemList.Bomb_Cast_Mold.set(this.addItem(115, "Mold (Bomb Cast)", "Used in the production of Bombs", new Object[0]));
+
+
+
+
+
+
}
private boolean registerComponents_ULV(){
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
index 22ce41282f..7dd376759a 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java
@@ -82,14 +82,14 @@ public class GTPP_CapeRenderer extends RenderPlayer {
AbstractClientPlayer aPlayer = (AbstractClientPlayer) aEvent.entityPlayer;
if (!ConfigSwitches.enableCustomCapes) {
aEvent.setCanceled(true);
- Logger.INFO("A1");
+ Logger.WARNING("A1");
return;
}
if (hasResourceChecked) {
if (!hasCape && !CORE.DEVENV) {
aEvent.setCanceled(true);
- Logger.INFO("A2");
+ Logger.WARNING("A2");
return;
}
}
@@ -141,7 +141,7 @@ public class GTPP_CapeRenderer extends RenderPlayer {
if (GT_Utility.getFullInvisibility(aPlayer) || aPlayer.isInvisible()
|| GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) {
aEvent.setCanceled(true);
- Logger.INFO("A3");
+ Logger.WARNING("A3");
return;
}
@@ -209,7 +209,7 @@ public class GTPP_CapeRenderer extends RenderPlayer {
Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152652_a(g);
if (profile != null) {
- Logger.INFO("[Capes++] Found for UUID check: " + profile.getName() + ".");
+ Logger.WARNING("[Capes++] Found for UUID check: " + profile.getName() + ".");
return profile.getName();
}
} else {
@@ -218,7 +218,7 @@ public class GTPP_CapeRenderer extends RenderPlayer {
Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152652_a(g);
if (profile != null) {
- Logger.INFO("[Capes++] Found for UUID check 2: " + profile.getName() + ".");
+ Logger.WARNING("[Capes++] Found for UUID check 2: " + profile.getName() + ".");
return profile.getName();
}
}
@@ -230,7 +230,7 @@ public class GTPP_CapeRenderer extends RenderPlayer {
Logger.WORLD("[Capes++] Mojang/Cache checking for " + name + ".");
GameProfile profile = MinecraftServer.getServer().func_152358_ax().func_152655_a(name);
if (profile != null) {
- Logger.INFO("[Capes++] Found for name check: " + profile.getName() + ".");
+ Logger.WARNING("[Capes++] Found for name check: " + profile.getName() + ".");
return profile.getName();
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java
index 288501086b..6a42232e40 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java
@@ -1,9 +1,6 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.generators;
import cpw.mods.fml.common.registry.GameRegistry;
-
-import net.minecraft.item.ItemStack;
-
import gregtech.api.GregTech_API;
import gregtech.api.enums.ConfigCategories;
import gregtech.api.enums.ItemList;
@@ -18,6 +15,7 @@ import gregtech.api.util.Recipe_GT;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.generators.GregtechRocketFuelGeneratorBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import net.minecraft.item.ItemStack;
public class GregtechMetaTileEntityRocketFuelGenerator
extends GregtechRocketFuelGeneratorBase {
@@ -25,7 +23,7 @@ extends GregtechRocketFuelGeneratorBase {
public int mEfficiency;
public GregtechMetaTileEntityRocketFuelGenerator(final int aID, final String aName, final String aNameRegional, final int aTier) {
- super(aID, aName, aNameRegional, aTier, "Requires Rocket Fuels.", new ITexture[0]);
+ super(aID, aName, aNameRegional, aTier, "Requires GT++ Rocket Fuels", new ITexture[0]);
this.onConfigLoad();
}
@@ -41,6 +39,7 @@ extends GregtechRocketFuelGeneratorBase {
@Override
public MetaTileEntity newMetaEntity(final IGregTechTileEntity aTileEntity) {
+ //Logger.INFO("Valid Fuels: "+Recipe_GT.Gregtech_Recipe_Map.sRocketFuels.mRecipeList.size());
return new GregtechMetaTileEntityRocketFuelGenerator(this.mName, this.mTier, this.mDescription, this.mTextures);
}
@@ -60,7 +59,9 @@ extends GregtechRocketFuelGeneratorBase {
@Override
public int getEfficiency() {
- return ((40+((this.mTier) * 16))/4)+(this.mTier);
+ int eff = ((40+((this.mTier) * 16))/4)+(this.mTier);
+ return eff;
+
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
index eb6a9bfcd3..c364fe5e9e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaAtmosphericReconditioner.java
@@ -229,7 +229,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
//I stole this code
reduction = (MathUtils.safeInt((long)reduction*this.mBaseEff)/100000)*mAirSides*Math.max((tTier-2), 1);
Logger.WARNING("reduction[2]:"+reduction);
- reduction = GT_Utility.safeInt(((long)reduction/100)*this.mOptimalAirFlow);
+ reduction = MathUtils.safeInt(((long)reduction/100)*this.mOptimalAirFlow);
Logger.WARNING("reduction[3]:"+reduction);
mPollutionReduction = reduction;
@@ -683,7 +683,7 @@ public class GregtechMetaAtmosphericReconditioner extends GT_MetaTileEntity_Basi
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
reduction += (((Math.max((tTier-2), 1)*2)*50)*mAirSides);
reduction = (MathUtils.safeInt((long)reduction*this.mBaseEff)/100000)*mAirSides*Math.max((tTier-2), 1);
- reduction = GT_Utility.safeInt(((long)reduction/100)*this.mOptimalAirFlow);
+ reduction = MathUtils.safeInt(((long)reduction/100)*this.mOptimalAirFlow);
aTooltipSuper.put("Maximum pollution removed per second: "+reduction);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java
index 25c14a68e7..f2e3b3c3c0 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java
@@ -17,7 +17,6 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility;
-
import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.EntityUtils;
@@ -457,7 +456,7 @@ public class GregtechMetaWirelessCharger extends GregtechMetaTileEntity {
}
}
- public BlockPos getTileEntityPosition(){
+ public BlockPos getTileEntityPosition(){
return new BlockPos(this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord(), this.getBaseMetaTileEntity().getWorld());
}
@@ -533,10 +532,7 @@ public class GregtechMetaWirelessCharger extends GregtechMetaTileEntity {
@Override
public void onServerStart() {
mWirelessChargingMap.clear();
- mLocalChargingMap.clear();
- if (!mHasBeenMapped && ChargingHelper.addEntry(getTileEntityPosition(), this)){
- mHasBeenMapped = true;
- }
+ mLocalChargingMap.clear();
super.onServerStart();
}
@@ -552,4 +548,12 @@ public class GregtechMetaWirelessCharger extends GregtechMetaTileEntity {
super.doExplosion(aExplosionPower);
}
+ @Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (!mHasBeenMapped && ChargingHelper.addEntry(getTileEntityPosition(), this)){
+ mHasBeenMapped = true;
+ }
+ super.onPreTick(aBaseMetaTileEntity, aTick);
+ }
+
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
index 6515589905..eca02d290e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java
@@ -70,13 +70,11 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase {
"Only uses 75% of the eu/t normally required",
"Processes five items per voltage tier",
"Size: 3x3x3 (Hollow)",
+ "Supply Depot. Casings (10 at least!)",
"Controller (front centered)",
- "1x Input Bus (anywhere)",
- "1x Output Bus (anywhere)",
- "1x Energy Hatch (anywhere)",
- "1x Maintenance Hatch (anywhere)",
- "1x Muffler (anywhere)",
- "Supply Depot. Casings for the rest (10 at least!)"
+ "1x Input Bus",
+ "1x Output Bus",
+ "1x Energy Hatch",
};
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
index d90b88e4d8..c549cf9216 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialArcFurnace.java
@@ -65,15 +65,13 @@ extends GregtechMeta_MultiBlockBase {
"Size: nx3xn [WxHxL] (Hollow)",
"n can be 3, 5 or 7",
"Max Size required to process Plasma recipes",
+ mCasingName+"s (10 at least!)",
"Controller (top centered)",
- "1x Input Bus (anywhere)",
- "1x Output Bus (anywhere)",
- "1x Input Hatch (anywhere)",
- "1x Output Hatch (anywhere)",
- "1x Energy Hatch (anywhere)",
- "1x Muffler Hatch (anywhere)",
- "1x Maintenance Hatch (Back Center)",
- mCasingName+"s for the rest",
+ "1x Input Bus",
+ "1x Output Bus",
+ "1x Input Hatch",
+ "1x Output Hatch",
+ "1x Energy Hatch",
};
}
@@ -85,10 +83,10 @@ extends GregtechMeta_MultiBlockBase {
@Override
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing, final byte aColorIndex, final boolean aActive, final boolean aRedstone) {
if (aSide == 0 || aSide == 1) {
- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[TAE.getIndexFromPage(2, 1)],
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[mCasingTextureID],
new GT_RenderedTexture(aActive ? TexturesGtBlock.Overlay_Machine_Controller_Default_Active : TexturesGtBlock.Overlay_Machine_Controller_Default)};
}
- return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[TAE.getIndexFromPage(2, 1)]};
+ return new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[mCasingTextureID]};
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
index e627e99aa7..5e852b5f76 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialCuttingMachine.java
@@ -51,7 +51,6 @@ extends GregtechMeta_MultiBlockBase {
"1x Output Bus",
"1x Input Hatch",
"1x Energy Hatch",
- "Maintenance Hatch must be at the back, centered",
};
}
@@ -114,6 +113,24 @@ extends GregtechMeta_MultiBlockBase {
final int tX = this.getBaseMetaTileEntity().getXCoord();
final int tY = this.getBaseMetaTileEntity().getYCoord();
final int tZ = this.getBaseMetaTileEntity().getZCoord();
+
+
+ //Check Rear Middle
+ {
+ Block aBlock = this.getBaseMetaTileEntity()
+ .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ int aMeta = this.getBaseMetaTileEntity()
+ .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
+ .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
+ getCasingMeta())) {
+ log("Bad Casing on Cutting Machine.");
+ return false;
+ }
+ }
+
+
for (byte i = -1; i < 2; i = (byte) (i + 1)) {
for (byte j = -1; j < 2; j = (byte) (j + 1)) {
if ((i != 0) || (j != 0)) {
@@ -122,41 +139,26 @@ extends GregtechMeta_MultiBlockBase {
int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- Logger.INFO("Bad Casing on Cutting Machine.");
+ log("Bad Casing on Cutting Machine.");
return false;
}
}
}
}
}
- if ((this.mOutputHatches.size() != 0) || (this.mInputHatches.size() != 0)) {
- Logger.INFO("Use Busses, Not Hatches for Input/Output.");
- return false;
- }
if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- Logger.INFO("Incorrect amount of Input & Output busses.");
+ log("Incorrect amount of Input & Output busses.");
return false;
}
- this.mMaintenanceHatches.clear();
- final IGregTechTileEntity tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
- if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Maintenance)) {
- this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) tTileEntity.getMetaTileEntity());
- ((GT_MetaTileEntity_Hatch) tTileEntity.getMetaTileEntity()).mMachineBlock = this.getCasingTextureIndex();
- } else {
- Logger.INFO("Maintenance hatch must be in the middle block on the back.");
- return false;
- }
- }
if ((this.mMaintenanceHatches.size() != 1)) {
- Logger.INFO("Incorrect amount of Maintenance or Energy hatches.");
+ log("Incorrect amount of Maintenance or Energy hatches.");
return false;
}
} else {
- Logger.INFO("False 5");
+ log("False 5");
return false;
}
- Logger.INFO("True");
+ log("True");
return true;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
index 0b1691358c..f4f8a5fe78 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialExtruder.java
@@ -113,9 +113,9 @@ extends GregtechMeta_MultiBlockBase {
}
if (inputs.length > 0) {
int para = (4* GT_Utility.getTier(this.getMaxInputVoltage()));
- Logger.WARNING("Recipe. ["+inputs.length+"]["+para+"]");
+ log("Recipe. ["+inputs.length+"]["+para+"]");
if (checkRecipeGeneric(inputs, new FluidStack[]{}, para, 100, 250, 10000)) {
- Logger.WARNING("Recipe 2.");
+ log("Recipe 2.");
return true;
}
}
@@ -152,6 +152,22 @@ extends GregtechMeta_MultiBlockBase {
return false;
}
}
+
+ //Check Rear Middle
+ {
+ Block aBlock = this.getBaseMetaTileEntity()
+ .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ int aMeta = this.getBaseMetaTileEntity()
+ .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
+ .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
+ getCasingMeta())) {
+ log("Bad Casing on Extruder.");
+ return false;
+ }
+ }
+
final int tX = this.getBaseMetaTileEntity().getXCoord();
final int tY = this.getBaseMetaTileEntity().getYCoord();
final int tZ = this.getBaseMetaTileEntity().getZCoord();
@@ -164,7 +180,7 @@ extends GregtechMeta_MultiBlockBase {
int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- Logger.INFO("Bad Casing on Extruder.");
+ log("Bad Casing on Extruder.");
return false;
}
@@ -173,29 +189,18 @@ extends GregtechMeta_MultiBlockBase {
}
}
if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- Logger.WARNING("Incorrect amount of Input || Output busses.");
+ log("Incorrect amount of Input || Output busses.");
return false;
}
- this.mMaintenanceHatches.clear();
- final IGregTechTileEntity tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
- if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Maintenance)) {
- this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) tTileEntity.getMetaTileEntity());
- ((GT_MetaTileEntity_Hatch) tTileEntity.getMetaTileEntity()).mMachineBlock = this.getCasingTextureIndex();
- } else {
- Logger.WARNING("Maintenance hatch must be in the middle block on the back.");
- return false;
- }
- }
if ((this.mMaintenanceHatches.size() != 1)) {
- Logger.WARNING("Incorrect amount of Maintenance hatches.");
+ log("Incorrect amount of Maintenance hatches.");
return false;
}
} else {
- Logger.WARNING("False 5");
+ log("False 5");
return false;
}
- Logger.WARNING("True");
+ log("True");
return true;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
index 7472b71a95..064dc8372b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialVacuumFreezer.java
@@ -3,6 +3,7 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
import static gregtech.api.util.Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes;
import static gregtech.api.util.Recipe_GT.Gregtech_Recipe_Map.sAdvFreezerRecipes_GT;
+import gregtech.api.GregTech_API;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
@@ -28,6 +29,7 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
public static int CASING_TEXTURE_ID;
public static String mCryoFuelName = "Gelid Cryotheum";
public static String mCasingName = "Advanced Cryogenic Casing";
+ public static String mHatchName = "Cryotheum Hatch";
public static FluidStack mFuelStack;
public GregtechMetaTileEntity_IndustrialVacuumFreezer(final int aID, final String aName, final String aNameRegional) {
@@ -36,6 +38,7 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
CASING_TEXTURE_ID = TAE.getIndexFromPage(2, 10);
mCryoFuelName = mFuelStack.getLocalizedName();
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings3Misc, 10);
+ mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 967);
}
public GregtechMetaTileEntity_IndustrialVacuumFreezer(final String aName) {
@@ -44,6 +47,7 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
CASING_TEXTURE_ID = TAE.getIndexFromPage(2, 10);
mCryoFuelName = mFuelStack.getLocalizedName();
mCasingName = ItemUtils.getLocalizedNameOfBlock(ModBlocks.blockCasings3Misc, 10);
+ mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 967);
}
public IMetaTileEntity newMetaEntity(final IGregTechTileEntity aTileEntity) {
@@ -63,21 +67,19 @@ public class GregtechMetaTileEntity_IndustrialVacuumFreezer extends GregtechMeta
if (mCryoFuelName.toLowerCase().contains(".")) {
mCryoFuelName = FluidUtils.getFluidStack("cryotheum", 1).getLocalizedName();
}
+ if (mHatchName.toLowerCase().contains(".name")) {
+ mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 967);
+ }
return new String[]{
- "Controller Block for the Advanced Cryogenic Freezer",
- "Super cools hot ingots and cells",
- "Processes four Vacuum Freezer Recipes at 200% speed",
+ "Factory Grade Advanced Vacuum Freezer",
+ "Speed: 200% | Eu Usage: 100% | Parallel: 4",
"Consumes 1L of "+mCryoFuelName+"/t during operation",
- "Size(WxHxD): 3x3x3 (Hollow)",
- mCasingName+"s for the rest (10 at least!)",
- "Controller (Front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Input Hatch",
- "1x Output Hatch (optional)",
- "1x Energy Hatch",
- };
+ "Constructed exactly the same as a normal Vacuum Freezer",
+ "Use "+mCasingName+"s (10 at least!)",
+ "1x " + mHatchName + " (Required)",
+ "TAG_HIDE_HATCHES"
+ };
}
public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final byte aSide, final byte aFacing,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
index bf33892420..d798691d04 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialWireMill.java
@@ -118,6 +118,21 @@ extends GregtechMeta_MultiBlockBase {
return false;
}
}
+
+ //Check Rear Middle
+ {
+ Block aBlock = this.getBaseMetaTileEntity()
+ .getBlockAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ int aMeta = this.getBaseMetaTileEntity()
+ .getMetaIDAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ IGregTechTileEntity aTile = this.getBaseMetaTileEntity()
+ .getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
+ if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(),
+ getCasingMeta())) {
+ log("Bad Casing on Wiremill.");
+ return false;
+ }
+ }
final int tX = this.getBaseMetaTileEntity().getXCoord();
final int tY = this.getBaseMetaTileEntity().getYCoord();
final int tZ = this.getBaseMetaTileEntity().getZCoord();
@@ -129,7 +144,7 @@ extends GregtechMeta_MultiBlockBase {
int aMeta = this.getBaseMetaTileEntity().getMetaID(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
IGregTechTileEntity aTile = this.getBaseMetaTileEntity().getIGregTechTileEntity(tX + (tSide == 5 ? k : tSide == 4 ? -k : i), tY + j, tZ + (tSide == 2 ? -k : tSide == 3 ? k : i));
if (!isValidBlockForStructure(aTile, getCasingTextureIndex(), true, aBlock, aMeta, getCasingBlock(), getCasingMeta())) {
- Logger.INFO("Bad Casing on Wiremill.");
+ log("Bad Casing on Wiremill.");
return false;
}
}
@@ -137,33 +152,22 @@ extends GregtechMeta_MultiBlockBase {
}
}
if ((this.mOutputHatches.size() != 0) || (this.mInputHatches.size() != 0)) {
- Logger.INFO("Use Busses, Not Hatches for Input/Output.");
+ log("Use Busses, Not Hatches for Input/Output.");
return false;
}
if ((this.mInputBusses.size() == 0) || (this.mOutputBusses.size() == 0)) {
- Logger.INFO("Incorrect amount of Input & Output busses.");
+ log("Incorrect amount of Input & Output busses.");
return false;
}
- this.mMaintenanceHatches.clear();
- final IGregTechTileEntity tTileEntity = this.getBaseMetaTileEntity().getIGregTechTileEntityAtSideAndDistance(this.getBaseMetaTileEntity().getBackFacing(), 4);
- if ((tTileEntity != null) && (tTileEntity.getMetaTileEntity() != null)) {
- if ((tTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Maintenance)) {
- this.mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) tTileEntity.getMetaTileEntity());
- ((GT_MetaTileEntity_Hatch) tTileEntity.getMetaTileEntity()).mMachineBlock = this.getCasingTextureIndex();
- } else {
- Logger.INFO("Maintenance hatch must be in the middle block on the back.");
- return false;
- }
- }
if ((this.mMaintenanceHatches.size() != 1)) {
- Logger.INFO("Incorrect amount of Maintenance or Energy hatches.");
+ log("Incorrect amount of Maintenance or Energy hatches.");
return false;
}
} else {
- Logger.INFO("False 5");
+ log("False 5");
return false;
}
- Logger.INFO("True");
+ log("True");
return true;
}
@@ -200,12 +204,4 @@ extends GregtechMeta_MultiBlockBase {
public byte getCasingTextureIndex() {
return (byte) TAE.GTPP_INDEX(6);
}
-
- private boolean addToMachineList(final IGregTechTileEntity tTileEntity) {
- return ((this.addMaintenanceToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addInputToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addOutputToMachineList(tTileEntity, this.getCasingTextureIndex())) || (this.addMufflerToMachineList(tTileEntity, this.getCasingTextureIndex())));
- }
-
- private boolean addEnergyInputToMachineList(final IGregTechTileEntity tTileEntity) {
- return ((this.addEnergyInputToMachineList(tTileEntity, this.getCasingTextureIndex())));
- }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
index e4f984ee18..ac362e2c40 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
@@ -103,21 +103,14 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
mHatchName = ItemUtils.getLocalizedNameOfBlock(GregTech_API.sBlockMachines, 968);
}
- return new String[] { "Controller Block for the Advanced Electric Blast Furnace",
- "120% faster than using an equal tier EBF", "Only uses 90% of the eu/t normally required",
- "Processes upto 8 recipes at once",
- "Consumes 10L of " + mHotFuelName + "/s during operation",
- "Each 900K over the min. Heat Capacity grants 5% speedup (multiplicatively)",
- "Each 1800K over the min. Heat Capacity allows for one upgraded overclock",
- "Upgraded overclocks reduce recipe time to 25% and increase EU/t to 400%",
- "Size(WxHxD): 3x4x3 (Hollow), Controller (Front middle bottom)",
- "16x Heating Coils (Two middle Layers, hollow)",
- "1x " + mHatchName,
- "1x Input Hatch/Bus",
- "1x Output Hatch/Bus (Bottom Layer)",
- "1x Output Hatch to recover CO2/CO/SO2 (optional, any top layer casing),",
- " Recovery scales with Muffler Hatch tier", mCasingName + "s for the rest",
- "1x Energy Hatch",
+ return new String[] {
+ "Factory Grade Advanced Blast Furnace",
+ "Speed: 120% | Eu Usage: 90% | Parallel: 8",
+ "Consumes 10L of " + mHotFuelName + " per second during operation",
+ "Constructed exactly the same as a normal EBF",
+ "Use "+mCasingName+"s (10 at least!)",
+ "1x " + mHatchName + " (Required)",
+ "TAG_HIDE_HATCHES"
};
}
@@ -230,10 +223,10 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase
this.mHeatingCapacity = 9001;
break;
case 7:
- this.mHeatingCapacity = 12001;
+ this.mHeatingCapacity = 9901;
break;
case 8:
- this.mHeatingCapacity = 15001;
+ this.mHeatingCapacity = 10801;
break;
default:
Logger.INFO("Heating Coils are bad.");
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
index 8abf506e55..7dfdbf75d6 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_Implosion.java
@@ -47,15 +47,12 @@ extends GregtechMeta_MultiBlockBase {
if (mCasingName.contains("gt.blockcasings")) {
mCasingName = ItemList.Casing_RobustTungstenSteel.get(1).getDisplayName();
}
- return new String[]{
- "Controller Block for the Advanced Implosion Compressor",
- "Processes upto ((Tier/2)+1) recipes at once",
- "Size(WxHxD): 3x3x3 (Hollow)",
- mCasingName+"s (10 at least!)",
- "Controller (Front centered)",
- "1x Input Bus",
- "1x Output Bus",
- "1x Energy Hatch",
+ return new String[]{
+ "Factory Grade Advanced Implosion Compressor",
+ "Speed: 100% | Eu Usage: 100% | Parallel: ((Tier/2)+1)",
+ "Constructed exactly the same as a normal Implosion Compressor",
+ "Use "+mCasingName+"s (10 at least!)",
+ "TAG_HIDE_HATCHES"
};
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
index 759378013c..c31a7c0758 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GT4Entity_AutoCrafter.java
@@ -221,7 +221,7 @@ public class GT4Entity_AutoCrafter extends GregtechMeta_MultiBlockBase {
return r;
}
}
- } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
}
return GT_Recipe.GT_Recipe_Map.sAssemblerRecipes;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
index 6ec95ff16b..8925caf480 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_MiniFusionPlant.java
@@ -130,19 +130,18 @@ public class GregtechMTE_MiniFusionPlant extends GregtechMeta_MultiBlockBase {
//"Input voltage can be changed within the GUI",
"Place Input/Output Hatches on sides and bottom",
"Power can only be inserted into the back",
- "Power can only be extracted from the top",
+ //e"Power can only be extracted from the top",
+ TAG_HIDE_HATCHES
};
}
@Override
public int getMaxParallelRecipes() {
- // TODO Auto-generated method stub
return 1;
}
@Override
public int getEuDiscountForParallelism() {
- // TODO Auto-generated method stub
return 0;
}
@@ -317,7 +316,7 @@ public class GregtechMTE_MiniFusionPlant extends GregtechMeta_MultiBlockBase {
@Override
public boolean isEnetOutput() {
- return true;
+ return false;
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
index 8446737017..23ca94e54d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntityGeneratorArray.java
@@ -22,6 +22,7 @@ import gregtech.api.util.Recipe_GT.Gregtech_Recipe_Map;
import gregtech.common.GT_Pollution;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import net.minecraft.block.Block;
@@ -401,7 +402,7 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
if (this.addOutput(tEmptyContainer1)) {
aBaseMetaTileEntity.increaseStoredEnergyUnits((long) tFuelValue, true);
this.depleteInput(a);
- GT_Pollution.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollutionPerTick(null));
+ PollutionUtils.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollutionPerTick(null));
}
}
}
@@ -418,7 +419,7 @@ public class GregtechMetaTileEntityGeneratorArray extends GregtechMeta_MultiBloc
(this.maxEUStore() - aBaseMetaTileEntity.getUniversalEnergyStored()) / (long) tFuelValue);
if (tFluidAmountToUse > 0L && aBaseMetaTileEntity
.increaseStoredEnergyUnits(tFluidAmountToUse * (long) tFuelValue, true)) {
- GT_Pollution.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollutionPerTick(null));
+ PollutionUtils.addPollution(this.getBaseMetaTileEntity(), 10 * this.getPollutionPerTick(null));
mFluid.amount = (int) ((long) mFluid.amount
- tFluidAmountToUse * (long) tEmptyContainer);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
index 1623e7cb54..de5d731dd5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Cyclotron.java
@@ -410,9 +410,13 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
//Time Counter
this.mTotalRunTime++;
- onRunningTick(null);
+ onRunningTick(null);
- if (mRunningOnLoad && checkMultiblock(aBaseMetaTileEntity, mInventory[1])) {
+ boolean aFormCheck = (aTick % 100 == 0 ? checkMultiblock(aBaseMetaTileEntity, mInventory[1]) : true);
+
+
+
+ if (mRunningOnLoad && aFormCheck) {
this.mEUStore = (int) aBaseMetaTileEntity.getStoredEU();
checkRecipe(mInventory[1]);
}
@@ -429,7 +433,7 @@ public class GregtechMetaTileEntity_Cyclotron extends GregtechMeta_MultiBlockBas
mDischargeHatches.clear();
mControlCoreBus.clear();
mMultiDynamoHatches.clear();
- mMachine = checkMultiblock(aBaseMetaTileEntity, mInventory[1]);
+ mMachine = aFormCheck;
}
if (mStartUpCheck < 0) {
if (mMachine) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
index b1e433e276..fc0cb85bac 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
@@ -459,7 +459,7 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends GregtechMeta_M
ItemStack k = ItemUtils.getSimpleStack(t, 1);
reflectiveFishMap.put(y, k);
return t;
- } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
return null;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
index f052d64a34..e531103a37 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
@@ -134,13 +134,13 @@ public class GregtechMetaTileEntity_MassFabricator extends GregtechMeta_MultiBlo
public static ItemStack getScrapPile() {
if (mScrap[0] == null) {
- mScrap[0] = ItemUtils.getSimpleStack(ItemUtils.getItem("IC2:itemScrap"));
+ mScrap[0] = ItemUtils.getSimpleStack(ItemUtils.getItemFromFQRN("IC2:itemScrap"));
}
return mScrap[0];
}
public static ItemStack getScrapBox() {
if (mScrap[1] == null) {
- mScrap[1] = ItemUtils.getSimpleStack(ItemUtils.getItem("IC2:itemScrapbox"));
+ mScrap[1] = ItemUtils.getSimpleStack(ItemUtils.getItemFromFQRN("IC2:itemScrapbox"));
}
return mScrap[1];
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
index 1a19bc7b96..07c8a4a7ac 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_Refinery.java
@@ -1,23 +1,25 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production;
-import java.util.ArrayList;
+import static gregtech.api.enums.GT_Values.E;
+import static gregtech.api.enums.GT_Values.RES_PATH_GUI;
+
+import java.util.HashSet;
-import gregtech.api.enums.GT_Values;
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.CustomRecipeMap;
import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
-import net.minecraftforge.fluids.FluidStack;
public class GregtechMetaTileEntity_Refinery extends GregtechMeta_MultiBlockBase {
@@ -69,42 +71,30 @@ public class GregtechMetaTileEntity_Refinery extends GregtechMeta_MultiBlockBase
@Override
public String getCustomGUIResourceName() {
- return "LFTR";
+ return "MatterFabricator";
}
+ private static final GT_Recipe_Map mGregTypeRecipeMap = new GT_Recipe_Map(new HashSet<GT_Recipe>(), "internal.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/FissionFuel", 0, 0, 0, 4, 1, E, 1, E, true, true);
+
@Override
- public boolean checkRecipe(ItemStack aStack) {
- ArrayList<FluidStack> tFluidList = getStoredFluids();
- int tFluidList_sS=tFluidList.size();
- for (int i = 0; i < tFluidList_sS - 1; i++) {
- for (int j = i + 1; j < tFluidList_sS; j++) {
- if (GT_Utility.areFluidsEqual(tFluidList.get(i), tFluidList.get(j))) {
- if (tFluidList.get(i).amount >= tFluidList.get(j).amount) {
- tFluidList.remove(j--); tFluidList_sS=tFluidList.size();
- } else {
- tFluidList.remove(i--); tFluidList_sS=tFluidList.size();
- break;
- }
- }
- }
- }
- if (tFluidList.size() > 1) {
- FluidStack[] tFluids = tFluidList.toArray(new FluidStack[tFluidList.size()]);
- GT_Recipe tRecipe = CustomRecipeMap.sFissionFuelProcessing.findRecipe(this.getBaseMetaTileEntity(), this.mLastRecipe, false, GT_Values.V[4], tFluids, new ItemStack[]{});
- if (tRecipe == null) {
- this.mLastRecipe = null;
- return false;
- }
- if (tRecipe.isRecipeInputEqual(true, tFluids, new ItemStack[]{})) {
- this.mLastRecipe = tRecipe;
- this.mEUt = this.mLastRecipe.mEUt;
- this.mMaxProgresstime = this.mLastRecipe.mDuration;
- this.mEfficiencyIncrease = 10000;
- this.mOutputFluids = this.mLastRecipe.mFluidOutputs;
- return true;
- }
- }
- return false;
+ public GT_Recipe_Map getRecipeMap() {
+ if (mGregTypeRecipeMap.mRecipeList.size() <= 0) {
+ for (GT_Recipe g : CustomRecipeMap.sFissionFuelProcessing.mRecipeList) {
+ mGregTypeRecipeMap.mRecipeList.add(g);
+ }
+ }
+ return mGregTypeRecipeMap;
+ }
+
+ @Override
+ public boolean checkRecipe(ItemStack aStack) {
+ //this.resetRecipeMapForAllInputHatches();
+ for (GT_MetaTileEntity_Hatch_Input g : this.mInputHatches) {
+ g.mRecipeMap = null;
+ }
+ boolean ab = super.checkRecipeGeneric();
+ //Logger.INFO("Did Recipe? "+ab);
+ return ab;
}
@Override
@@ -261,7 +251,8 @@ public class GregtechMetaTileEntity_Refinery extends GregtechMeta_MultiBlockBase
Logger.INFO("Your Muffler must be AT LEAST ZPM tier or higher.");
}
}
- Logger.INFO("Fission Fuel Production Plant Formed.");
+ Logger.INFO("Fission Fuel Production Plant Formed. "+mGregTypeRecipeMap.mRecipeList.size());
+ this.resetRecipeMapForAllInputHatches(this.getRecipeMap());
return true;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java
index 1d2fad941b..b77529220f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GregtechMetaEnergyBuffer.java
@@ -294,7 +294,6 @@ public class GregtechMetaEnergyBuffer extends GregtechMetaTileEntity {
cur = String.format(fmt, cur);
return new String[] {
- this.getLocalName(),
cur+" EU stored",
max+" EU capacity"};
}
@@ -345,7 +344,7 @@ public class GregtechMetaEnergyBuffer extends GregtechMetaTileEntity {
@Override
public String getInventoryName() {
- return null;
+ return super.getInventoryName();
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java
index 68f78503e8..4c8707e5e8 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java
@@ -38,8 +38,7 @@ public class GT_Material_Loader {
instance = this;
//Try Reflectively add ourselves to the GT loader.
- try {
- Class mInterface = Class.forName("gregtech.api.interfaces.IMaterialHandler");
+ Class mInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && mInterface != null){
//Make this class Dynamically implement IMaterialHandler
@@ -49,7 +48,7 @@ public class GT_Material_Loader {
new MaterialHandler(getInstance()));
}
- if (ReflectionUtils.invoke(Materials.class, "add", new Class[]{Class.forName("gregtech.api.interfaces.IMaterialHandler")}, new Object[]{mProxyObject})){
+ if (ReflectionUtils.invoke(Materials.class, "add", new Class[]{ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler")}, new Object[]{mProxyObject})){
Logger.REFLECTION("Successfully invoked add, on the proxied object implementing IMaterialHandler.");
@@ -65,9 +64,7 @@ public class GT_Material_Loader {
else {
Logger.REFLECTION("Failed to invoke add, on the proxied object implementing IMaterialHandler.");
}
- }
- }
- catch (ClassNotFoundException e) {}
+ }
//Materials.add(this);
//Stupid shit running twice, I don't think so.
@@ -139,12 +136,12 @@ public class GT_Material_Loader {
return false;
}
try {
- Method enableComponent = Class.forName("gregtech.api.enums.OrePrefixes").getDeclaredMethod("enableComponent", Materials.class);
+ Method enableComponent = ReflectionUtils.getClass("gregtech.api.enums.OrePrefixes").getDeclaredMethod("enableComponent", Materials.class);
enableComponent.invoke(prefix, mMaterial);
Logger.DEBUG_MATERIALS("Enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+".");
return true;
}
- catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | ClassNotFoundException error) {
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException error) {
Logger.DEBUG_MATERIALS("Failed to enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+". Caught "+error.getCause().toString()+".");
error.printStackTrace();
}
@@ -228,7 +225,7 @@ public class GT_Material_Loader {
//Loading the class at runtime
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
- Class<?> someInterface = Class.forName("gregtech.api.interfaces.IMaterialHandler");
+ Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
Object instance = Proxy.newProxyInstance(someInterface.getClassLoader(), new Class<?>[]{someInterface}, new InvocationHandler() {
@Override
@@ -274,7 +271,7 @@ public class GT_Material_Loader {
public static void init(){
- Class<?> someInterface = Class.forName("gregtech.api.interfaces.IMaterialHandler");
+ Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
GT_Material_Loader original = GT_Material_Loader.instance;
MaterialHandler handler = new MaterialHandler(original);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java
index 1932f30969..ecdc3af1db 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java
@@ -221,14 +221,14 @@ public class RecipeGen_DustGeneration extends RecipeGen_Base {
}
//Add Shapeless recipe for low tier alloys.
- if (tVoltageMultiplier <= 30){
+ /*if (tVoltageMultiplier <= 30){
if (RecipeUtils.addShapedGregtechRecipe(inputStacks, outputStacks)){
Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Success");
}
else {
Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Failed");
}
- }
+ }*/
}
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
index ddba6b5bf0..15627a827f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
@@ -164,6 +164,15 @@ public class RecipeGen_Ore extends RecipeGen_Base {
ItemStack matDustB = getDust(bonusB);
/**
+ * Package
+ */
+ //Allow ore dusts to be packaged
+ if (ItemUtils.checkForInvalidItems(material.getSmallDust(1)) && ItemUtils.checkForInvalidItems(material.getTinyDust(1))) {
+ RecipeGen_DustGeneration.generatePackagerRecipes(material);
+ }
+
+
+ /**
* Macerate
*/
//Macerate ore to Crushed
@@ -255,8 +264,8 @@ public class RecipeGen_Ore extends RecipeGen_Base {
matDust, tinyDustA,null,
null, null,null,
new int[]{10000, 10000}, //Chances
- 5*20, //Eu
- tVoltageMultiplier/2)){ //Time
+ 5*20, //Time
+ tVoltageMultiplier/2)){ //Eu
Logger.MATERIALS("[Centrifuge] Added Recipe: Purified Dust to Clean Dust");
}
@@ -268,8 +277,8 @@ public class RecipeGen_Ore extends RecipeGen_Base {
matDust, tinyDustB,null,
null, null,null,
new int[]{10000, 10000}, //Chances
- 5*20, //Eu
- tVoltageMultiplier/2)){ //Time
+ 5*20, //Time
+ tVoltageMultiplier/2)){ //Eu
Logger.MATERIALS("[Centrifuge] Added Recipe: Inpure Dust to Clean Dust");
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java
index 79615d8457..3249e0101d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java
@@ -3,18 +3,15 @@ package gtPlusPlus.xmod.gregtech.loaders;
import java.util.HashSet;
import java.util.Set;
-import net.minecraft.item.ItemStack;
-
import gregtech.api.util.GT_ModHandler;
-
import gtPlusPlus.api.interfaces.RunnableWithInfo;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.MaterialGenerator;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.RecipeUtils;
+import net.minecraft.item.ItemStack;
public class RecipeGen_ShapedCrafting extends RecipeGen_Base {
@@ -35,7 +32,7 @@ public class RecipeGen_ShapedCrafting extends RecipeGen_Base {
private void generateRecipes(final Material material){
Logger.WARNING("Generating Shaped Crafting recipes for "+material.getLocalizedName()); //TODO
-
+
if (!CORE.GTNH) {
//Nuggets
if (ItemUtils.checkForInvalidItems(material.getNugget(1)) && ItemUtils.checkForInvalidItems(material.getIngot(1)))
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java
new file mode 100644
index 0000000000..351a4cc546
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java
@@ -0,0 +1,180 @@
+package gtPlusPlus.xmod.gregtech.loaders.misc;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import gregtech.GT_Mod;
+import gregtech.api.util.GT_Log;
+import gregtech.api.util.GT_Recipe;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.common.StaticFields59;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.stats.Achievement;
+import net.minecraft.stats.AchievementList;
+import net.minecraft.stats.StatBase;
+import net.minecraftforge.common.AchievementPage;
+import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
+
+public class AssLineAchievements {
+
+ public static int assReg = -1;
+ public static ConcurrentHashMap<String, Achievement> mAchievementMap;
+ public static ConcurrentHashMap<String, Boolean> mIssuedAchievementMap;
+ public static int adjX = 5;
+ public static int adjY = 9;
+ private static boolean active = true;
+
+ public AssLineAchievements() {
+ Logger.INFO(active ? "Loading custom achievement page for Assembly Line recipes."
+ : "Achievements are disabled.");
+ Utils.registerEvent(this);
+ }
+
+ private static boolean ready = false;
+ private static int recipeTotal = 0;
+ private static int recipeCount = 0;
+ private static void init() {
+ if (!ready) {
+ active = GT_Mod.gregtechproxy.mAchievements;
+ try {
+ recipeTotal = ((GT_Recipe.GT_Recipe_Map) StaticFields59.mAssLineVisualMapNEI.get(null)).mRecipeList.size();
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ recipeTotal = 0;
+ }
+ mAchievementMap = new ConcurrentHashMap<String, Achievement>();
+ mIssuedAchievementMap = new ConcurrentHashMap<String, Boolean>();
+ ready = true;
+ }
+
+ }
+
+ public static void registerAchievements() {
+ if (active && mAchievementMap.size() > 0) {
+ AchievementPage.registerAchievementPage(new AchievementPage("GT Assembly Line",
+ (Achievement[]) mAchievementMap.values().toArray(new Achievement[mAchievementMap.size()])));
+ }
+ else if (active) {
+ Logger.INFO("Unable to register custom achievement page for Assembly Line recipes.");
+ }
+ }
+
+ public static Achievement registerAssAchievement(GT_Recipe recipe) {
+ init();
+ String aSafeUnlocalName;
+ // Debugging
+ if (recipe == null) {
+ Logger.INFO(
+ "Someone tried to register an achievement for an invalid recipe. Please report this to Alkalus.");
+ return null;
+ }
+ if (recipe.getOutput(0) == null) {
+ Logger.INFO(
+ "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
+ return null;
+ }
+ ItemStack aStack = recipe.getOutput(0);
+ try {
+ aSafeUnlocalName = aStack.getUnlocalizedName();
+ } catch (Throwable t) {
+ aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack);
+ }
+
+ Achievement aYouDidSomethingInGT;
+ if (mAchievementMap.get(aSafeUnlocalName) == null) {
+ assReg++;
+ recipeCount++;
+ aYouDidSomethingInGT = registerAchievement(aSafeUnlocalName, -(11 + assReg % 5), ((assReg) / 5) - 8,
+ recipe.getOutput(0), AchievementList.openInventory, false);
+ }
+ else {
+ aYouDidSomethingInGT = null;
+ }
+ if (recipeCount >= recipeTotal) {
+ Logger.INFO("Critical mass achieved. ["+recipeCount+"]");
+ registerAchievements();
+ }
+
+ return aYouDidSomethingInGT;
+ }
+
+ public static Achievement registerAchievement(String textId, int x, int y, ItemStack icon,
+ Achievement requirement, boolean special) {
+ if (!GT_Mod.gregtechproxy.mAchievements) {
+ return null;
+ }
+ Achievement achievement = new Achievement(textId, textId, adjX + x, adjY + y, icon, requirement);
+ if (special) {
+ achievement.setSpecial();
+ }
+ achievement.registerStat();
+ if (CORE.DEVENV) {
+ GT_Log.out.println("achievement." + textId + "=");
+ GT_Log.out.println("achievement." + textId + ".desc=");
+ }
+ mAchievementMap.put(textId, achievement);
+ return achievement;
+ }
+
+ public static void issueAchievement(EntityPlayer entityplayer, String textId) {
+ if (entityplayer == null || !GT_Mod.gregtechproxy.mAchievements) {
+ return;
+ }
+
+ entityplayer.triggerAchievement((StatBase) getAchievement(textId));
+ }
+
+ public static Achievement getAchievement(String textId) {
+ if (mAchievementMap.containsKey(textId)) {
+ Logger.INFO("Found Achivement: "+textId);
+ return (Achievement) mAchievementMap.get(textId);
+ }
+ return null;
+ }
+
+ @SubscribeEvent
+ public void onItemPickup(EntityItemPickupEvent event) {
+ EntityPlayer player = event.entityPlayer;
+ ItemStack stack = event.item.getEntityItem();
+ String aPickupUnlocalSafe = ItemUtils.getUnlocalizedItemName(stack);
+ if (player == null || stack == null) {
+ return;
+ }
+
+ if (StaticFields59.sAssemblylineVisualRecipes == null) {
+ return;
+ }
+
+ Logger.INFO("Trying to check for achievements");
+ // Debug scanner unlocks all AL recipes in creative
+ if (player.capabilities.isCreativeMode && aPickupUnlocalSafe.equals("gt.metaitem.01.32761")) {
+ for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) {
+ issueAchievement(player, recipe.getOutput(0).getUnlocalizedName());
+ recipe.mHidden = false;
+ }
+ }
+ for (GT_Recipe recipe : StaticFields59.sAssemblylineVisualRecipes.mRecipeList) {
+
+ String aSafeUnlocalName;
+ if (recipe.getOutput(0) == null) {
+ Logger.INFO(
+ "Someone tried to register an achievement for a recipe with null output. Please report this to Alkalus.");
+ continue;
+ }
+ ItemStack aStack = recipe.getOutput(0);
+ aSafeUnlocalName = ItemUtils.getUnlocalizedItemName(aStack);
+ if (aSafeUnlocalName.equals(aPickupUnlocalSafe)) {
+ issueAchievement(player, aSafeUnlocalName);
+ recipe.mHidden = false;
+ Logger.INFO("FOUND: " + aSafeUnlocalName + " | " + aPickupUnlocalSafe);
+ }
+ else {
+ //Logger.INFO(aSafeUnlocalName + " | " + aPickupUnlocalSafe);
+ }
+ }
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
index ace4876639..d16bffef86 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
@@ -12,9 +12,12 @@ import gregtech.api.enums.Materials;
import gregtech.api.interfaces.internal.IGT_RecipeAdder;
import gregtech.api.util.CustomRecipeMap;
import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Recipe.GT_Recipe_AssemblyLine;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.Recipe_GT;
+import gregtech.api.util.SemiFluidFuelHandler;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.MaterialGenerator;
@@ -694,8 +697,7 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
Method T = null;
if (LoadedMods.TecTech) {
- try {
- Class TTRecipeAdder = Class.forName("com.github.technus.tectech.recipe.TT_recipeAdder");
+ Class TTRecipeAdder = ReflectionUtils.getClass("com.github.technus.tectech.recipe.TT_recipeAdder");
if (TTRecipeAdder != null) {
Method ttTest = ReflectionUtils.getMethod(TTRecipeAdder, "addResearchableAssemblylineRecipe",
ItemStack.class, int.class, int.class, int.class, int.class, Object[].class,
@@ -704,8 +706,6 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
T = ttTest;
}
}
- } catch (ClassNotFoundException e) {
- }
}
else {
T = null;
@@ -750,11 +750,27 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
return CORE.RA.addComponentMakerRecipe(aInputs, aInputFluid, aOutput1, aDuration, aEUt);
}
- public boolean addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, ItemStack[] aInputs, FluidStack[] aFluidInputs, ItemStack aOutput, int aDuration, int aEUt) {
+ public boolean addAssemblylineRecipe(ItemStack aResearchItem, int aResearchTime, ItemStack[] aInputs, FluidStack[] aFluidInputs_OLD, ItemStack aOutput, int aDuration, int aEUt) {
+
+ FluidStack[] aFluidInputs = new FluidStack[4];
+ AutoMap<FluidStack> aNewFluidMap = new AutoMap<FluidStack>();
+ if (aFluidInputs_OLD.length > 4) {
+ for (FluidStack s : aFluidInputs_OLD) {
+ aNewFluidMap.put(s);
+ }
+ for (int i = 0; i < 4; i++) {
+ aFluidInputs[i] = aNewFluidMap.get(i);
+ }
+ }
+ else {
+ aFluidInputs = aFluidInputs_OLD;
+ }
+
+
if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
if (aInputs.length < 6 && aFluidInputs.length < 2) {
ItemStack[] aInputStack = new ItemStack[] {aResearchItem, aInputs[0], aInputs[1], aInputs[2], aInputs[3], aInputs[4]};
- return CORE.RA.addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration, aEUt);
+ return addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration, aEUt);
}
return false;
}
@@ -766,7 +782,12 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
if (mAssemblyLine != null) {
try {
if (!tryAddTecTechScannerRecipe(aResearchItem, aInputs, aFluidInputs, aOutput, aDuration, aEUt)) {
- Logger.INFO("Failed to generate TecTech recipe for "+aResearchItem.getDisplayName()+", please report this to Alkalus.");
+ try {
+ Logger.INFO("Failed to generate TecTech recipe for "+ItemUtils.getItemName(aResearchItem)+", please report this to Alkalus.");
+ }
+ catch (Throwable t) {
+
+ }
}
return (boolean) mAssemblyLine.invoke(GT_Values.RA, aResearchItem, aResearchTime, aInputs,
aFluidInputs, aOutput, aDuration, aEUt);
@@ -774,7 +795,7 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
if (aInputs.length < 6 && aFluidInputs.length < 2) {
ItemStack[] aInputStack = new ItemStack[] { aResearchItem, aInputs[0], aInputs[1],
aInputs[2], aInputs[3], aInputs[4] };
- return CORE.RA.addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration,
+ return addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration,
aEUt);
}
return false;
@@ -783,7 +804,7 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
if (aInputs.length < 6 && aFluidInputs.length < 2) {
ItemStack[] aInputStack = new ItemStack[] { aResearchItem, aInputs[0], aInputs[1], aInputs[2],
aInputs[3], aInputs[4] };
- return CORE.RA.addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration,
+ return addSixSlotAssemblingRecipe(aInputStack, aFluidInputs[0], aOutput, aDuration,
aEUt);
}
return false;
@@ -803,10 +824,13 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
if (mScannerTT != null) {
try {
- return (boolean) mScannerTT.invoke(null, aResearchItem, compMax, compSec,
- (assEUt/2), 16, aInputs, aFluidInputs, aOutput, assDuration, assEUt);
+ boolean aResult = (boolean) mScannerTT.invoke(null, aResearchItem, compMax, compSec,
+ (assEUt/2), 16, aInputs, aFluidInputs, aOutput, assDuration, assEUt);
+ Logger.INFO("Added TecTech Scanner Recipe for "+ItemUtils.getItemName(aResearchItem)+"? "+aResult);
+ return aResult;
+
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- Logger.INFO("Failed to generate TecTech recipe for "+aResearchItem.getDisplayName()+", please report this to Alkalus. [Severe]");
+ Logger.INFO("Failed to generate TecTech recipe for "+ItemUtils.getItemName(aResearchItem)+", please report this to Alkalus. [Severe]");
e.printStackTrace();
}
}
@@ -851,7 +875,7 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
@Override
public boolean addMultiblockChemicalRecipe(ItemStack[] itemStacks, FluidStack[] fluidStacks, FluidStack[] fluidStacks2, ItemStack[] outputs, int time, int eu) {
- if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK) {
+ if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK || mLargeChemReactor == null) {
return false;
}
try {
@@ -1042,10 +1066,29 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
}
+ @Override
+ public boolean addSemifluidFuel(ItemStack aFuelItem, int aFuelValue) {
+ return SemiFluidFuelHandler.addSemiFluidFuel(aFuelItem, aFuelValue);
+ }
-
-
-
+ @Override
+ public boolean addSemifluidFuel(FluidStack aFuelItem, int aFuelValue) {
+ return SemiFluidFuelHandler.addSemiFluidFuel(aFuelItem, aFuelValue);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechDehydrator.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechDehydrator.java
index a3a04a44da..54ab6d45bb 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechDehydrator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechDehydrator.java
@@ -105,7 +105,7 @@ public class GregtechDehydrator {
| GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
new Object[] { "ECE", "WMW", "GPG", Character.valueOf('M'), ItemList.Hull_MV, Character.valueOf('P'),
ItemList.Robot_Arm_MV, Character.valueOf('E'), OrePrefixes.wireFine.get(Materials.RedAlloy), Character.valueOf('C'),
- OrePrefixes.circuit.get(Materials.Basic), Character.valueOf('W'),
+ OrePrefixes.circuit.get(Materials.Good), Character.valueOf('W'),
OrePrefixes.cableGt04.get(Materials.Copper), Character.valueOf('G'),
OrePrefixes.gearGt.get(Materials.Steel) });
GT_ModHandler.addCraftingRecipe(GregtechItemList.GT_Dehydrator_HV.get(1L, new Object[0]),
@@ -113,7 +113,7 @@ public class GregtechDehydrator {
| GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
new Object[] { "ECE", "WMW", "GPG", Character.valueOf('M'), ItemList.Hull_HV, Character.valueOf('P'),
ItemList.Robot_Arm_HV, Character.valueOf('E'), OrePrefixes.wireFine.get(Materials.Electrum), Character.valueOf('C'),
- OrePrefixes.circuit.get(Materials.Good), Character.valueOf('W'),
+ OrePrefixes.circuit.get(Materials.Advanced), Character.valueOf('W'),
OrePrefixes.cableGt04.get(Materials.Silver), Character.valueOf('G'),
ALLOY.POTIN.getGear(1) });
@@ -123,7 +123,7 @@ public class GregtechDehydrator {
| GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
new Object[] { "ECE", "WMW", "GPG", Character.valueOf('M'), ItemList.Hull_EV, Character.valueOf('P'),
ItemList.Robot_Arm_EV, Character.valueOf('E'), coilT1, Character.valueOf('C'),
- OrePrefixes.circuit.get(Materials.Advanced), Character.valueOf('W'),
+ OrePrefixes.circuit.get(Materials.Data), Character.valueOf('W'),
OrePrefixes.cableGt04.get(Materials.Aluminium), Character.valueOf('G'),
ALLOY.TUMBAGA.getGear(1) });
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java
index 7b87cd0f24..e07837c2ba 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechEnergyBuffer.java
@@ -41,20 +41,20 @@ public class GregtechEnergyBuffer
//Energy Buffers
- GregtechItemList.Energy_Buffer_1by1_ULV.set(new GregtechMetaEnergyBuffer(770, "energybuffer.01.tier.00", "Ultra Low Voltage Energy Buffer", 0, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_LV.set(new GregtechMetaEnergyBuffer(771, "energybuffer.01.tier.01", "Low Voltage Energy Buffer", 1, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_MV.set(new GregtechMetaEnergyBuffer(772, "energybuffer.01.tier.02", "Medium Voltage Energy Buffer", 2, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_HV.set(new GregtechMetaEnergyBuffer(773, "energybuffer.01.tier.03", "High Voltage Energy Buffer", 3, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_EV.set(new GregtechMetaEnergyBuffer(774, "energybuffer.01.tier.04", "Extreme Voltage Energy Buffer", 4, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_IV.set(new GregtechMetaEnergyBuffer(775, "energybuffer.01.tier.05", "Insane Voltage Energy Buffer", 5, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_LuV.set(new GregtechMetaEnergyBuffer(776, "energybuffer.01.tier.06", "Ludicrous Voltage Energy Buffer", 6, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_ZPM.set(new GregtechMetaEnergyBuffer(777, "energybuffer.01.tier.07", "ZPM Voltage Energy Buffer", 7, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_UV.set(new GregtechMetaEnergyBuffer(778, "energybuffer.01.tier.08", "Ultimate Voltage Energy Buffer", 8, "", 1).getStackForm(1L));
- GregtechItemList.Energy_Buffer_1by1_MAX.set(new GregtechMetaEnergyBuffer(779, "energybuffer.01.tier.09", "MAX Voltage Energy Buffer", 9, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_ULV.set(new GregtechMetaEnergyBuffer(770, "energybuffer.tier.00", "Ultra Low Voltage Energy Buffer", 0, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_LV.set(new GregtechMetaEnergyBuffer(771, "energybuffer.tier.01", "Low Voltage Energy Buffer", 1, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_MV.set(new GregtechMetaEnergyBuffer(772, "energybuffer.tier.02", "Medium Voltage Energy Buffer", 2, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_HV.set(new GregtechMetaEnergyBuffer(773, "energybuffer.tier.03", "High Voltage Energy Buffer", 3, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_EV.set(new GregtechMetaEnergyBuffer(774, "energybuffer.tier.04", "Extreme Voltage Energy Buffer", 4, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_IV.set(new GregtechMetaEnergyBuffer(775, "energybuffer.tier.05", "Insane Voltage Energy Buffer", 5, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_LuV.set(new GregtechMetaEnergyBuffer(776, "energybuffer.tier.06", "Ludicrous Voltage Energy Buffer", 6, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_ZPM.set(new GregtechMetaEnergyBuffer(777, "energybuffer.tier.07", "ZPM Voltage Energy Buffer", 7, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_UV.set(new GregtechMetaEnergyBuffer(778, "energybuffer.tier.08", "Ultimate Voltage Energy Buffer", 8, "", 1).getStackForm(1L));
+ GregtechItemList.Energy_Buffer_1by1_MAX.set(new GregtechMetaEnergyBuffer(779, "energybuffer.tier.09", "MAX Voltage Energy Buffer", 9, "", 1).getStackForm(1L));
// Creative Buffer Has Special ID
GregtechItemList.Energy_Buffer_CREATIVE
.set(new GregtechMetaCreativeEnergyBuffer(750,
- "energybuffer.01.tier.xx",
+ "energybuffer.tier.xx",
"512V Creative Energy Buffer", 3, "", 0)
.getStackForm(1L));
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialCryogenicFreezer.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialCryogenicFreezer.java
index 213b6f0ccb..65f3e41911 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialCryogenicFreezer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialCryogenicFreezer.java
@@ -17,10 +17,10 @@ public class GregtechIndustrialCryogenicFreezer {
private static void run1() {
Logger.INFO("Gregtech 5 Content | Registering Advanced GT Multiblock replacements.");
- GregtechItemList.Machine_Adv_BlastFurnace.set(new GregtechMetaTileEntity_Adv_EBF(963, "multimachine.adv.blastfurnace", "[Factory Grade] Adv. EBF").getStackForm(1L));
- GregtechItemList.Machine_Adv_ImplosionCompressor.set(new GregtechMetaTileEntity_Adv_Implosion(964, "multimachine.adv.implosioncompressor", "[Factory Grade] Adv. Implosion Compressor").getStackForm(1L));
- GregtechItemList.Industrial_Cryogenic_Freezer.set(new GregtechMetaTileEntity_IndustrialVacuumFreezer(910, "multimachine.adv.industrialfreezer", "[Factory Grade] Cryogenic Freezer").getStackForm(1L));
- GregtechItemList.FusionComputer_UV2.set(new GregtechMetaTileEntity_Adv_Fusion_MK4(965, "fusioncomputer.tier.09", "FusionTek MK IV").getStackForm(1L));
+ GregtechItemList.Machine_Adv_BlastFurnace.set(new GregtechMetaTileEntity_Adv_EBF(963, "multimachine.adv.blastfurnace", "Volcanus").getStackForm(1L));
+ GregtechItemList.Machine_Adv_ImplosionCompressor.set(new GregtechMetaTileEntity_Adv_Implosion(964, "multimachine.adv.implosioncompressor", "Density^2").getStackForm(1L));
+ GregtechItemList.Industrial_Cryogenic_Freezer.set(new GregtechMetaTileEntity_IndustrialVacuumFreezer(910, "multimachine.adv.industrialfreezer", "Cryogenic Freezer").getStackForm(1L));
+ GregtechItemList.FusionComputer_UV2.set(new GregtechMetaTileEntity_Adv_Fusion_MK4(965, "fusioncomputer.tier.09", "FusionTech MK IV").getStackForm(1L));
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMassFabricator.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMassFabricator.java
index 8064c68559..6362b07b93 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMassFabricator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIndustrialMassFabricator.java
@@ -221,10 +221,10 @@ public class GregtechIndustrialMassFabricator {
public static ItemStack getScrapPile() {
- return ItemUtils.getSimpleStack(ItemUtils.getItem("IC2:itemScrap"));
+ return ItemUtils.getSimpleStack(ItemUtils.getItemFromFQRN("IC2:itemScrap"));
}
public static ItemStack getScrapBox() {
- return ItemUtils.getSimpleStack(ItemUtils.getItem("IC2:itemScrapbox"));
+ return ItemUtils.getSimpleStack(ItemUtils.getItemFromFQRN("IC2:itemScrapbox"));
}
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNitroDieselFix.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNitroDieselFix.java
index f924e5233d..6095413150 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNitroDieselFix.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechNitroDieselFix.java
@@ -22,6 +22,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraftforge.fluids.FluidStack;
public class GregtechNitroDieselFix {
@@ -34,7 +35,7 @@ public class GregtechNitroDieselFix {
int mSub = Utils.getGregtechSubVersion();
if (mSub != 0){
if (mSub >= 30){
- Class mb = Class.forName("gregtech.api.enums.MaterialBuilder");
+ Class mb = ReflectionUtils.getClass("gregtech.api.enums.MaterialBuilder");
Object df = mb.getConstructor(int.class, TextureSet.class, String.class).newInstance(975, TextureSet.SET_FLUID, "Nitro-Diesel [Old]");
if (mb.isInstance(df)){
@@ -158,7 +159,7 @@ public class GregtechNitroDieselFix {
}
}
}
- catch (ClassNotFoundException | IllegalArgumentException | IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+ catch (IllegalArgumentException | IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
Logger.INFO("[Nitro] ================ Error ================");
e.printStackTrace();
Logger.INFO("[Nitro] ================ Error ================");
diff --git a/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java b/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
index 5410b0f619..5a9dc748ca 100644
--- a/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
+++ b/src/Java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
@@ -11,6 +11,7 @@ import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.MaterialGenerator;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import net.minecraft.item.ItemStack;
public class FishTrapHandler {
@@ -31,14 +32,14 @@ public class FishTrapHandler {
private final static Object setFishTrapRegistry(){
Class mFishingRegistryClass;
try {
- mFishingRegistryClass = Class.forName("growthcraft.api.fishtrap.FishTrapRegistry");
+ mFishingRegistryClass = ReflectionUtils.getClass("growthcraft.api.fishtrap.FishTrapRegistry");
final Method mFishingRegistryMethod = mFishingRegistryClass.getDeclaredMethod("getInstance");
mFishingRegistry = mFishingRegistryMethod.invoke(null);
if (mFishingRegistry != null){
return mFishingRegistry;
}
}
- catch (ClassNotFoundException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
}
return null;
}
diff --git a/src/Java/gtPlusPlus/xmod/ob/CallbackObject.java b/src/Java/gtPlusPlus/xmod/ob/CallbackObject.java
deleted file mode 100644
index 89c2952a54..0000000000
--- a/src/Java/gtPlusPlus/xmod/ob/CallbackObject.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package gtPlusPlus.xmod.ob;
-
-import net.minecraft.inventory.IInventory;
-import openblocks.common.tileentity.TileEntitySprinkler;
-import openmods.api.IInventoryCallback;
-
-public class CallbackObject implements IInventoryCallback {
-
- private TileEntitySprinkler mTile;
-
- CallbackObject(TileEntitySprinkler aTile){
- mTile = aTile;
- }
-
- @Override
- public void onInventoryChanged(IInventory inventory, int slotNumber) {
- mTile.updateEntity();
- }
-
-}
diff --git a/src/Java/gtPlusPlus/xmod/ob/CustomSprinklerInventory.java b/src/Java/gtPlusPlus/xmod/ob/CustomSprinklerInventory.java
deleted file mode 100644
index 60c340592b..0000000000
--- a/src/Java/gtPlusPlus/xmod/ob/CustomSprinklerInventory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package gtPlusPlus.xmod.ob;
-
-import java.util.HashMap;
-
-import gtPlusPlus.api.objects.Logger;
-import net.minecraft.item.ItemStack;
-import openblocks.common.tileentity.TileEntitySprinkler;
-import openmods.inventory.TileEntityInventory;
-
-public class CustomSprinklerInventory extends TileEntityInventory {
- private final TileEntitySprinkler owner;
-
- public CustomSprinklerInventory(TileEntitySprinkler owner, String name, boolean isInvNameLocalized, int size) {
- super(owner, name, isInvNameLocalized, size);
- this.owner = owner;
- this.addCallback(new CallbackObject(this.owner));
- }
-
- ItemStack[] mFerts;
-
- @Override
- public boolean isItemValidForSlot(int i, ItemStack itemstack) {
- Logger.INFO("Inserting: "+itemstack != null ? itemstack.getDisplayName() : "Nothing");
- HashMap<Integer, ItemStack> mFerts = SprinklerHandler.getValidFerts();
- if (itemstack != null && mFerts != null && mFerts.size() > 0) {
- for (ItemStack u : mFerts.values()) {
- if (itemstack.isItemEqual(u)) {
- return true;
- }
- }
- }
- return false;
- }
-
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java b/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
index 617c4ddd8a..dfaec8b703 100644
--- a/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
+++ b/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
@@ -87,11 +87,11 @@ public class ModuleExoticSeeds extends ModuleAddon implements ICropModule {
else {
if (mForestryHumusBlockClass == null || mForestryHumusBlock == null) {
try {
- mForestryHumusBlockClass = Class.forName("forestry.plugins.PluginCore");
+ mForestryHumusBlockClass = ReflectionUtils.getClass("forestry.plugins.PluginCore");
Field blocks = ReflectionUtils.getField(mForestryHumusBlockClass, "blocks");
if (blocks != null) {
Object blockRegistryCoreObject = blocks.get(null);
- mForestryBlockRegistryCoreClass = Class.forName("forestry.core.blocks.BlockRegistryCore");
+ mForestryBlockRegistryCoreClass = ReflectionUtils.getClass("forestry.core.blocks.BlockRegistryCore");
if (mForestryBlockRegistryCoreClass != null && blockRegistryCoreObject != null) {
Field soil = ReflectionUtils.getField(mForestryBlockRegistryCoreClass, "soil");
if (soil != null) {
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
index 558b134ea9..35e608b0ca 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/HANDLER_Thaumcraft.java
@@ -3,31 +3,23 @@ package gtPlusPlus.xmod.thaumcraft;
import java.util.Arrays;
import java.util.List;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-
-import gregtech.api.enums.GT_Values;
-import gregtech.api.interfaces.internal.IThaumcraftCompat;
-import gregtech.api.util.GT_Utility;
-
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex;
+import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat;
+import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectStack;
import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
+import net.minecraft.init.Items;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
public class HANDLER_Thaumcraft {
- public static IThaumcraftCompat sThaumcraftCompat;
+ public static GTPP_AspectCompat sThaumcraftCompat;
public static Item mResearchNotes;
- public static final AutoMap<Pair<ItemStack, TC_AspectStack_Ex[]>> sItemsToGetAspects = new AutoMap<Pair<ItemStack, TC_AspectStack_Ex[]>>();
-
- static {
- sThaumcraftCompat = (IThaumcraftCompat) GT_Utility.callConstructor("gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat", 0, null, GT_Values.D1, new Object[0]);
- }
+ public static final AutoMap<Pair<ItemStack, GTPP_AspectStack[]>> sItemsToGetAspects = new AutoMap<Pair<ItemStack, GTPP_AspectStack[]>>();
public static void preInit(){
if (LoadedMods.Thaumcraft){
@@ -37,10 +29,9 @@ public class HANDLER_Thaumcraft {
public static void init(){
if (LoadedMods.Thaumcraft){
try {
- mResearchNotes = (Item) ReflectionUtils.getField(Class.forName("thaumcraft.common.config.ConfigItems"), "itemResearchNotes").get(null);
+ mResearchNotes = (Item) ReflectionUtils.getField(ReflectionUtils.getClass("thaumcraft.common.config.ConfigItems"), "itemResearchNotes").get(null);
}
- catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException
- | ClassNotFoundException e) {
+ catch (IllegalArgumentException | IllegalAccessException e) {
mResearchNotes = Items.paper;
}
}
@@ -48,10 +39,16 @@ public class HANDLER_Thaumcraft {
public static void postInit(){
if (LoadedMods.Thaumcraft){
- if (!sItemsToGetAspects.isEmpty()) {
- for (Pair<ItemStack, TC_AspectStack_Ex[]> j : sItemsToGetAspects) {
+ //Add Custom Aspects
+
+
+ //sThaumcraftCompat = (IThaumcraftCompat) GT_Utility.callConstructor("gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat", 0, null, GT_Values.D1, new Object[0]);
+ sThaumcraftCompat = new GTPP_AspectCompat();
+
+ if (!sItemsToGetAspects.isEmpty() && false) {
+ for (Pair<ItemStack, GTPP_AspectStack[]> j : sItemsToGetAspects) {
if (j .getKey() != null && (j.getValue() != null && j.getValue().length > 0)) {
- List<TC_AspectStack_Ex> list = Arrays.asList(j.getValue());
+ List<GTPP_AspectStack> list = Arrays.asList(j.getValue());
if (ThaumcraftUtils.registerThaumcraftAspectsToItem(j.getKey(), list, true)) {
Logger.WARNING("[Aspect] Successfully added Aspects to "+j.getKey().getDisplayName()+".");
}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
index e3aeed75bd..6cd5af02b6 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectCompat.java
@@ -1,114 +1,191 @@
package gtPlusPlus.xmod.thaumcraft.aspect;
-import gregtech.common.GT_ThaumcraftCompat;
-
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex;
-import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
-
-import gregtech.api.enums.TC_Aspects;
-import gregtech.api.enums.TC_Aspects.TC_AspectStack;
-import gregtech.api.interfaces.internal.IThaumcraftCompat;
-import gregtech.api.util.GT_LanguageManager;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
-import net.minecraft.block.Block;
-import net.minecraft.item.ItemStack;
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.common.GT_ThaumcraftCompat;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
import net.minecraft.util.ResourceLocation;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-public class GTPP_AspectCompat implements IThaumcraftCompat {
+public class GTPP_AspectCompat {
public static volatile Method m = null;
+ private static HashMap<String, TC_Aspect_Wrapper> mAspectCache = new LinkedHashMap<String, TC_Aspect_Wrapper>();
+
+
+ public static TC_Aspect_Wrapper ASPECT_BALANCE;
+ public static TC_Aspect_Wrapper ASPECT_LUST;
+ public static TC_Aspect_Wrapper ASPECT_STARBOUND;
+ public static TC_Aspect_Wrapper ASPECT_TOXIC;
+ public static TC_Aspect_Wrapper ASPECT_HEAVEN;
+
+
+/* TC_Aspects.AER.mAspect = Aspect.AIR;
+ TC_Aspects.ALIENIS.mAspect = Aspect.ELDRITCH;
+ TC_Aspects.AQUA.mAspect = Aspect.WATER;
+ TC_Aspects.ARBOR.mAspect = Aspect.TREE;
+ TC_Aspects.AURAM.mAspect = Aspect.AURA;
+ TC_Aspects.BESTIA.mAspect = Aspect.BEAST;
+ TC_Aspects.COGNITIO.mAspect = Aspect.MIND;
+ TC_Aspects.CORPUS.mAspect = Aspect.FLESH;
+ TC_Aspects.EXANIMIS.mAspect = Aspect.UNDEAD;
+ TC_Aspects.FABRICO.mAspect = Aspect.CRAFT;
+ TC_Aspects.FAMES.mAspect = Aspect.HUNGER;
+ TC_Aspects.GELUM.mAspect = Aspect.COLD;
+ TC_Aspects.GRANUM.mAspect = Aspect.PLANT;
+ TC_Aspects.HERBA.mAspect = Aspect.PLANT;
+ TC_Aspects.HUMANUS.mAspect = Aspect.MAN;
+ TC_Aspects.IGNIS.mAspect = Aspect.FIRE;
+ TC_Aspects.INSTRUMENTUM.mAspect = Aspect.TOOL;
+ TC_Aspects.ITER.mAspect = Aspect.TRAVEL;
+ TC_Aspects.LIMUS.mAspect = Aspect.SLIME;
+ TC_Aspects.LUCRUM.mAspect = Aspect.GREED;
+ TC_Aspects.LUX.mAspect = Aspect.LIGHT;
+ TC_Aspects.MACHINA.mAspect = Aspect.MECHANISM;
+ TC_Aspects.MESSIS.mAspect = Aspect.CROP;
+ TC_Aspects.METALLUM.mAspect = Aspect.METAL;
+ TC_Aspects.METO.mAspect = Aspect.HARVEST;
+ TC_Aspects.MORTUUS.mAspect = Aspect.DEATH;
+ TC_Aspects.MOTUS.mAspect = Aspect.MOTION;
+ TC_Aspects.ORDO.mAspect = Aspect.ORDER;
+ TC_Aspects.PANNUS.mAspect = Aspect.CLOTH;
+ TC_Aspects.PERDITIO.mAspect = Aspect.ENTROPY;
+ TC_Aspects.PERFODIO.mAspect = Aspect.MINE;
+ TC_Aspects.PERMUTATIO.mAspect = Aspect.EXCHANGE;
+ TC_Aspects.POTENTIA.mAspect = Aspect.ENERGY;
+ TC_Aspects.PRAECANTATIO.mAspect = Aspect.MAGIC;
+ TC_Aspects.SANO.mAspect = Aspect.HEAL;
+ TC_Aspects.SENSUS.mAspect = Aspect.SENSES;
+ TC_Aspects.SPIRITUS.mAspect = Aspect.SOUL;
+ TC_Aspects.TELUM.mAspect = Aspect.WEAPON;
+ TC_Aspects.TERRA.mAspect = Aspect.EARTH;
+ TC_Aspects.TEMPESTAS.mAspect = Aspect.WEATHER;
+ TC_Aspects.TENEBRAE.mAspect = Aspect.DARKNESS;
+ TC_Aspects.TUTAMEN.mAspect = Aspect.ARMOR;
+ TC_Aspects.VACUOS.mAspect = Aspect.VOID;
+ TC_Aspects.VENENUM.mAspect = Aspect.POISON;
+ TC_Aspects.VICTUS.mAspect = Aspect.LIFE;
+ TC_Aspects.VINCULUM.mAspect = Aspect.TRAP;
+ TC_Aspects.VITIUM.mAspect = Aspect.TAINT;
+ TC_Aspects.VITREUS.mAspect = Aspect.CRYSTAL;
+ TC_Aspects.VOLATUS.mAspect = Aspect.FLIGHT;*/
+
+
public GTPP_AspectCompat() {
- // Standard Aspects
- GTPP_Aspects.AER.mAspect = Aspect.AIR;
- GTPP_Aspects.ALIENIS.mAspect = Aspect.ELDRITCH;
- GTPP_Aspects.AQUA.mAspect = Aspect.WATER;
- GTPP_Aspects.ARBOR.mAspect = Aspect.TREE;
- GTPP_Aspects.AURAM.mAspect = Aspect.AURA;
- GTPP_Aspects.BESTIA.mAspect = Aspect.BEAST;
- GTPP_Aspects.COGNITIO.mAspect = Aspect.MIND;
- GTPP_Aspects.CORPUS.mAspect = Aspect.FLESH;
- GTPP_Aspects.EXANIMIS.mAspect = Aspect.UNDEAD;
- GTPP_Aspects.FABRICO.mAspect = Aspect.CRAFT;
- GTPP_Aspects.FAMES.mAspect = Aspect.HUNGER;
- GTPP_Aspects.GELUM.mAspect = Aspect.COLD;
- GTPP_Aspects.GRANUM.mAspect = Aspect.PLANT;
- GTPP_Aspects.HERBA.mAspect = Aspect.PLANT;
- GTPP_Aspects.HUMANUS.mAspect = Aspect.MAN;
- GTPP_Aspects.IGNIS.mAspect = Aspect.FIRE;
- GTPP_Aspects.INSTRUMENTUM.mAspect = Aspect.TOOL;
- GTPP_Aspects.ITER.mAspect = Aspect.TRAVEL;
- GTPP_Aspects.LIMUS.mAspect = Aspect.SLIME;
- GTPP_Aspects.LUCRUM.mAspect = Aspect.GREED;
- GTPP_Aspects.LUX.mAspect = Aspect.LIGHT;
- GTPP_Aspects.MACHINA.mAspect = Aspect.MECHANISM;
- GTPP_Aspects.MESSIS.mAspect = Aspect.CROP;
- GTPP_Aspects.METALLUM.mAspect = Aspect.METAL;
- GTPP_Aspects.METO.mAspect = Aspect.HARVEST;
- GTPP_Aspects.MORTUUS.mAspect = Aspect.DEATH;
- GTPP_Aspects.MOTUS.mAspect = Aspect.MOTION;
- GTPP_Aspects.ORDO.mAspect = Aspect.ORDER;
- GTPP_Aspects.PANNUS.mAspect = Aspect.CLOTH;
- GTPP_Aspects.PERDITIO.mAspect = Aspect.ENTROPY;
- GTPP_Aspects.PERFODIO.mAspect = Aspect.MINE;
- GTPP_Aspects.PERMUTATIO.mAspect = Aspect.EXCHANGE;
- GTPP_Aspects.POTENTIA.mAspect = Aspect.ENERGY;
- GTPP_Aspects.PRAECANTATIO.mAspect = Aspect.MAGIC;
- GTPP_Aspects.SANO.mAspect = Aspect.HEAL;
- GTPP_Aspects.SENSUS.mAspect = Aspect.SENSES;
- GTPP_Aspects.SPIRITUS.mAspect = Aspect.SOUL;
- GTPP_Aspects.TELUM.mAspect = Aspect.WEAPON;
- GTPP_Aspects.TERRA.mAspect = Aspect.EARTH;
- GTPP_Aspects.TEMPESTAS.mAspect = Aspect.WEATHER;
- GTPP_Aspects.TENEBRAE.mAspect = Aspect.DARKNESS;
- GTPP_Aspects.TUTAMEN.mAspect = Aspect.ARMOR;
- GTPP_Aspects.VACUOS.mAspect = Aspect.VOID;
- GTPP_Aspects.VENENUM.mAspect = Aspect.POISON;
- GTPP_Aspects.VICTUS.mAspect = Aspect.LIFE;
- GTPP_Aspects.VINCULUM.mAspect = Aspect.TRAP;
- GTPP_Aspects.VITIUM.mAspect = Aspect.TAINT;
- GTPP_Aspects.VITREUS.mAspect = Aspect.CRYSTAL;
- GTPP_Aspects.VOLATUS.mAspect = Aspect.FLIGHT;
- GTPP_Aspects.STRONTIO.mAspect = (Aspect) TC_Aspects.STRONTIO.mAspect;
- GTPP_Aspects.NEBRISUM.mAspect = (Aspect) TC_Aspects.NEBRISUM.mAspect;
- GTPP_Aspects.ELECTRUM.mAspect = (Aspect) TC_Aspects.ELECTRUM.mAspect;
- GTPP_Aspects.MAGNETO.mAspect = (Aspect) TC_Aspects.MAGNETO.mAspect;
- GTPP_Aspects.RADIO.mAspect = (Aspect) TC_Aspects.RADIO.mAspect;
+
+
+ // Generate all existing Aspects as TC_Aspects
+ LinkedHashMap<String, Object> h = TC_Aspect_Wrapper.getVanillaAspectList();
+ for (String g : h.keySet()) {
+ Object aBaseAspect = h.get(g);
+ if (aBaseAspect != null && TC_Aspect_Wrapper.isObjectAnAspect(aBaseAspect)) {
+ TC_Aspect_Wrapper aS = TC_Aspect_Wrapper.getAspect(g);
+ if (aS != null) {
+ mAspectCache.put(g, aS);
+ continue;
+ }
+ }
+ }
+
+
+
// Custom Aspects
- GTPP_Aspects.CUSTOM_1.mAspect = new Aspect("custom1", 15647411, new Aspect[]{Aspect.COLD, Aspect.FIRE},
- new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1);
- GTPP_Aspects.CUSTOM_2.mAspect = new Aspect("custom2", 15658622, new Aspect[]{Aspect.MAGIC, Aspect.SLIME},
- new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1);
- GTPP_Aspects.CUSTOM_3.mAspect = new Aspect("custom3", 12644078, new Aspect[]{Aspect.ENERGY, Aspect.ARMOR},
- new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1);
- GTPP_Aspects.CUSTOM_4.mAspect = new Aspect("custom4", 12632256, new Aspect[]{Aspect.METAL, Aspect.POISON},
- new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1);
- GTPP_Aspects.CUSTOM_5.mAspect = new Aspect("custom4", 12648384, new Aspect[]{Aspect.LIGHT, Aspect.SOUL},
- new ResourceLocation("gregtech:textures/aspects/" + TC_Aspects.RADIO.name() + ".png"), 1);
- GT_LanguageManager.addStringLocalization("tc.aspect.custom1", "Balance");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom2", "Lust");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom3", "Starbound");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom4", "Toxic");
- GT_LanguageManager.addStringLocalization("tc.aspect.custom5", "Heaven");
+ ASPECT_BALANCE =
+ new TC_Aspect_Wrapper(
+ "Sagrausten",
+ Utils.rgbtoHexValue(125, 125, 125),
+ new TC_Aspect_Wrapper[]{
+ ASPECT_STARBOUND,
+ get(TC_Aspects.RADIO)
+ },
+ new ResourceLocation(CORE.MODID+":textures/aspects/" + "Sagrausten.png"),
+ false,
+ 1,
+ "Ancient Knowledge");
+
+ ASPECT_LUST =
+ new TC_Aspect_Wrapper(
+ "Slusium",
+ Utils.rgbtoHexValue(175, 125, 25),
+ new TC_Aspect_Wrapper[]{
+ ASPECT_BALANCE,
+ get(TC_Aspects.NEBRISUM)
+ },
+ new ResourceLocation(CORE.MODID+":textures/aspects/" + "Slusium.png"),
+ false,
+ 1,
+ "Warped Thoughts");
+
+ ASPECT_STARBOUND =
+ new TC_Aspect_Wrapper(
+ "Xenil",
+ Utils.rgbtoHexValue(25, 25, 25),
+ new TC_Aspect_Wrapper[]{
+ get(TC_Aspects.MAGNETO),
+ get(TC_Aspects.RADIO)},
+ new ResourceLocation(CORE.MODID+":textures/aspects/" + "Xenil.png"),
+ false,
+ 1,
+ "A beginning to something new");
+
+ ASPECT_TOXIC =
+ new TC_Aspect_Wrapper(
+ "Xablum",
+ Utils.rgbtoHexValue(25, 185, 25),
+ new TC_Aspect_Wrapper[]{
+ ASPECT_STARBOUND,
+ ASPECT_LUST
+ },
+ new ResourceLocation(CORE.MODID+":textures/aspects/" + "Xablum.png"),
+ false,
+ 1,
+ "Insanity");
+
+ ASPECT_HEAVEN =
+ new TC_Aspect_Wrapper(
+ "Zetralt",
+ Utils.rgbtoHexValue(225, 225, 225),
+ new TC_Aspect_Wrapper[]{
+ get(TC_Aspects.AURAM),
+ ASPECT_TOXIC
+ },
+ new ResourceLocation(CORE.MODID+":textures/aspects/" + "Zetralt.png"),
+ false,
+ 1,
+ "Control, Respect, Glory");
+
+
+ }
+
+ private TC_Aspect_Wrapper get(TC_Aspects aGtObjects) {
+ try {
+ return TC_Aspect_Wrapper.generate(aGtObjects.mAspect);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ return null;
+ }
}
- public static synchronized final AspectList getAspectList(final List<TC_AspectStack_Ex> aAspects) {
- AspectList o = null;
+ public static synchronized final TC_AspectList_Wrapper getTC_AspectList_Wrapper(final List<GTPP_AspectStack> aAspects) {
+ TC_AspectList_Wrapper o = null;
try {
if (m == null || (m != null && !m.isAccessible())) {
- m = GT_ThaumcraftCompat.class.getDeclaredMethod("getAspectList", List.class);
+ m = GT_ThaumcraftCompat.class.getDeclaredMethod("getTC_AspectList_Wrapper", List.class);
m.setAccessible(true);
}
if (m != null) {
- o = (AspectList) m.invoke(null, aAspects);
+ o = (TC_AspectList_Wrapper) m.invoke(null, aAspects);
}
}
catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
@@ -119,44 +196,6 @@ public class GTPP_AspectCompat implements IThaumcraftCompat {
}
return o;
}
-
- public static synchronized final AspectList getAspectList_Ex(final List<TC_AspectStack_Ex> aAspects) {
- final AspectList rAspects = new AspectList();
- for (final TC_AspectStack_Ex tAspect : aAspects) {
- rAspects.add((Aspect) tAspect.mAspect.mAspect, (int) tAspect.mAmount);
- }
- return rAspects;
- }
-
- @Override
- public boolean registerPortholeBlacklistedBlock(Block p0) {
- return ThaumcraftUtils.registerPortholeBlacklistedBlock(p0);
- }
-
- @Override
- public boolean registerThaumcraftAspectsToItem(ItemStack p0, List<TC_AspectStack> p1, boolean p2) {
- return ThaumcraftUtils.registerThaumcraftAspectsToItem(p0, ThaumcraftUtils.convertAspectStack(p1), p2);
- }
-
- @Override
- public boolean registerThaumcraftAspectsToItem(ItemStack p0, List<TC_AspectStack> p1, String p2) {
- return ThaumcraftUtils.registerThaumcraftAspectsToItem(p0, ThaumcraftUtils.convertAspectStack(p1), p2);
- }
-
- @Override
- public Object addCrucibleRecipe(String p0, Object p1, ItemStack p2, List<TC_AspectStack> p3) {
- return ThaumcraftUtils.addCrucibleRecipe(p0, p1, p2, ThaumcraftUtils.convertAspectStack(p3));
- }
- @Override
- public Object addInfusionRecipe(String p0, ItemStack p1, ItemStack[] p2, ItemStack p3, int p4, List<TC_AspectStack> p5) {
- return ThaumcraftUtils.addInfusionRecipe(p0, p1, p2, p3, p4, ThaumcraftUtils.convertAspectStack(p5));
- }
-
- @Override
- public Object addResearch(String p0, String p1, String p2, String[] p3, String p4, ItemStack p5, int p6, int p7,
- int p8, int p9, List<TC_AspectStack> p10, ItemStack[] p11, Object[] p12) {
- return ThaumcraftUtils.addResearch(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, ThaumcraftUtils.convertAspectStack(p10), p11, p12);
- }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
new file mode 100644
index 0000000000..23e9035f40
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_AspectStack.java
@@ -0,0 +1,15 @@
+package gtPlusPlus.xmod.thaumcraft.aspect;
+
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
+
+public class GTPP_AspectStack {
+
+ public final TC_Aspect_Wrapper mAspect;
+ public final int mAmount;
+
+ public GTPP_AspectStack(TC_Aspect_Wrapper aAspect, int aAmount) {
+ mAspect = aAspect;
+ mAmount= aAmount;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java b/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java
deleted file mode 100644
index e1df0dabf5..0000000000
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/aspect/GTPP_Aspects.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package gtPlusPlus.xmod.thaumcraft.aspect;
-
-import java.util.List;
-
-import thaumcraft.api.aspects.Aspect;
-
-public enum GTPP_Aspects {
-
- //Standard TC and GT Aspects
- AER(1), ALIENIS(20), AQUA(3), ARBOR(1), AURAM(16), BESTIA(6),
- COGNITIO(2), CORPUS(2), ELECTRUM(24), EXANIMIS(32), FABRICO(2),
- FAMES(2), GELUM(1), GRANUM(4), HERBA(2), HUMANUS(8), IGNIS(4),
- INSTRUMENTUM(4), ITER(6), LIMUS(3), LUCRUM(32), LUX(4), MACHINA(16),
- MAGNETO(24), MESSIS(3), METALLUM(8), METO(2), MORTUUS(16), MOTUS(4),
- NEBRISUM(48), ORDO(8), PANNUS(6), PERDITIO(2), PERFODIO(4),
- PERMUTATIO(12), POTENTIA(16), PRAECANTATIO(16), RADIO(48),
- SANO(24), SENSUS(4), SPIRITUS(24), STRONTIO(64), TELUM(6),
- TERRA(1), TEMPESTAS(64), TENEBRAE(24), TUTAMEN(12), VACUOS(6),
- VENENUM(16), VICTUS(4), VINCULUM(16), VITIUM(48), VITREUS(3), VOLATUS(12),
-
- //Custom Aspects
- CUSTOM_3(24), CUSTOM_4(24), CUSTOM_2(48), CUSTOM_5(48), CUSTOM_1(64);
-
- public Aspect mAspect;
- public int mValue;
-
- private GTPP_Aspects(final int aValue) {
- this.mValue = aValue;
- }
-
- public static class TC_AspectStack_Ex {
- public GTPP_Aspects mAspect;
- public long mAmount;
-
- public TC_AspectStack_Ex(final GTPP_Aspects aAspect, final long aAmount) {
- this.mAspect = aAspect;
- this.mAmount = aAmount;
- }
-
- public TC_AspectStack_Ex copy() {
- return new TC_AspectStack_Ex(this.mAspect, this.mAmount);
- }
-
- public TC_AspectStack_Ex copy(final long aAmount) {
- return new TC_AspectStack_Ex(this.mAspect, aAmount);
- }
-
- public List<TC_AspectStack_Ex> addToAspectList(final List<TC_AspectStack_Ex> aList) {
- if (this.mAmount == 0L) {
- return aList;
- }
- for (final TC_AspectStack_Ex tAspect : aList) {
- if (tAspect.mAspect == this.mAspect) {
- final TC_AspectStack_Ex tc_AspectStack = tAspect;
- tc_AspectStack.mAmount += this.mAmount;
- return aList;
- }
- }
- aList.add(this.copy());
- return aList;
- }
-
- public boolean removeFromAspectList(final List<TC_AspectStack_Ex> aList) {
- for (final TC_AspectStack_Ex tAspect : aList) {
- if (tAspect.mAspect == this.mAspect && tAspect.mAmount >= this.mAmount) {
- final TC_AspectStack_Ex tc_AspectStack = tAspect;
- tc_AspectStack.mAmount -= this.mAmount;
- if (tAspect.mAmount == 0L) {
- aList.remove(tAspect);
- }
- return true;
- }
- }
- return false;
- }
- }
-} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java
deleted file mode 100644
index 7ca5c117f0..0000000000
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/ResearchNoteDataWrapper.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package gtPlusPlus.xmod.thaumcraft.objects;
-
-import thaumcraft.common.lib.research.ResearchNoteData;
-
-public class ResearchNoteDataWrapper extends ResearchNoteData {
-
- public ResearchNoteDataWrapper() {
- super();
- }
-
- public ResearchNoteDataWrapper(ResearchNoteData data) {
- key = data.key;
- color = data.color;
- hexEntries = data.hexEntries;
- hexes = data.hexes;
- complete = data.complete;
- copies = data.copies;
- }
-
- public void completeResearch() {
- this.complete = true;
- }
-
-
-}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java
new file mode 100644
index 0000000000..9df38ca384
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_AspectList_Wrapper.java
@@ -0,0 +1,40 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect;
+
+import net.minecraft.item.ItemStack;
+
+public class TC_AspectList_Wrapper {
+
+
+ //thaumcraft.api.aspects.Aspect;
+ //thaumcraft.api.aspects.AspectList;
+
+ public TC_AspectList_Wrapper() {
+
+ }
+
+ public TC_AspectList_Wrapper(ItemStack stack) {
+
+ }
+
+ public TC_AspectList_Wrapper(Object invoke) {
+ // TODO Auto-generated constructor stub
+ }
+
+ public int size() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Object getVanillaAspectList() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void add(TC_Aspect_Wrapper mAspect, int mAmount) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java
new file mode 100644
index 0000000000..fda0fd27c5
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/aspect/TC_Aspect_Wrapper.java
@@ -0,0 +1,327 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
+import net.minecraft.util.ResourceLocation;
+
+/**
+ * Wrapper class for Thaumcraft Aspects.
+ * Used to avoid compile time dependencies.
+ * @author Alkalus
+ *
+ */
+public class TC_Aspect_Wrapper {
+
+ private static Class mClass_Aspect;
+ private static Field mField_Aspects;
+
+ private final String tag;
+ private final TC_Aspect_Wrapper[] components;
+ private final int color;
+ private String chatcolor;
+ private final ResourceLocation image;
+ private final int blend;
+
+ public final Object mAspect;
+
+ /**
+ * May be null, but links back to the TC_Aspects class from GT for convinience.
+ */
+ public final TC_Aspects mGtEnumField;
+
+
+
+
+ /**
+ * Statically set the Class objects
+ */
+ static {
+ mClass_Aspect = ReflectionUtils.getClass("thaumcraft.api.aspects.Aspect");
+ }
+
+ /**
+ * Gets the total aspect list from Thaumcraft, which should contain all other registered aspects.
+ * @return - A LinkedHashMap(String, Aspect);
+ */
+ public static LinkedHashMap<String, Object> getVanillaAspectList() {
+ try {
+ if (mField_Aspects == null) {
+ mField_Aspects = ReflectionUtils.getField(mClass_Aspect, "aspects");
+ }
+ return (LinkedHashMap<String, Object>) mField_Aspects.get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ Logger.REFLECTION("Failed configuring TC Aspect compatibility.");
+ return new LinkedHashMap<String, Object>();
+ }
+ }
+
+ public static Object getVanillaAspectObject(String aAspectName) {
+ return getVanillaAspectList().get(aAspectName);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /**
+ * Vanilla Aspect Constructor
+ * @param tag - Aspect Name
+ * @param color
+ * @param chatcolor
+ * @param blend
+ */
+ public TC_Aspect_Wrapper(String tag, int color, String chatcolor, int blend, String aTooltip) {
+ this(tag, color, (TC_Aspect_Wrapper[]) null, blend, aTooltip);
+ this.chatcolor = chatcolor;
+ }
+
+ /**
+ *
+ * Vanilla Aspect Constructor
+ * @param tag - Aspect Name
+ * @param color
+ * @param components
+ */
+ public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, String aTooltip) {
+ this(tag, color, components, false, 1, aTooltip);
+ }
+
+ /**
+ *
+ * Vanilla Aspect Constructor
+ * @param tag - Aspect Name
+ * @param color
+ * @param components
+ * @param blend
+ */
+ public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, int blend, String aTooltip) {
+ this(tag, color, components, false, blend, aTooltip);
+ }
+
+
+ /**
+ *
+ * Vanilla Aspect Constructor
+ * @param tag - Aspect Name
+ * @param color
+ * @param components
+ * @param image
+ * @param blend
+ */
+ public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, boolean vanilla, int blend, String aTooltip) {
+ this(tag, color, components, vanilla ? new ResourceLocation("thaumcraft", "textures/aspects/" + tag.toLowerCase() + ".png") : new ResourceLocation(CORE.MODID, "textures/aspects/" + tag.toLowerCase() + ".png"), vanilla, blend, aTooltip);
+ }
+
+ private static int aInternalAspectIDAllocation = 1;
+
+ public TC_Aspect_Wrapper(String tag, int color, TC_Aspect_Wrapper[] components, ResourceLocation image, boolean vanilla, int blend, String aTooltip) {
+ if (components == null) {
+ components = new TC_Aspect_Wrapper[] {};
+ }
+ //String aTag = vanilla ? tag.toLowerCase() : "custom"+(aInternalAspectIDAllocation++);
+ String aTag = tag.toLowerCase();
+ if (getAspectList().containsKey(tag.toLowerCase())) {
+ this.tag = aTag;
+ this.components = components;
+ this.color = color;
+ this.image = image;
+ this.blend = blend;
+ this.mAspect = null;
+ this.mGtEnumField = null;
+ } else {
+ this.tag = aTag;
+ this.components = components;
+ this.color = color;
+ this.image = image;
+ this.blend = blend;
+ this.mAspect = vanilla ? getVanillaAspectObject(this.tag) : this.generateTcAspect();
+
+ // Set GT Type if exists
+ TC_Aspects y = null;
+ for (TC_Aspects e : TC_Aspects.values()) {
+ try {
+ String gtTag = ThaumcraftUtils.getTagFromAspectObject(e.mAspect);
+ if (gtTag != null) {
+ if (gtTag.equals(this.tag)) {
+ y = e;
+ break;
+ }
+ }
+ } catch (IllegalArgumentException e1) {
+ e1.printStackTrace();
+ }
+ }
+ this.mGtEnumField = y;
+ mInternalAspectCache.put(this.tag, this);
+ // Double link custom Aspects, but internalise names using custom# instead
+ if (!vanilla) {
+ mInternalAspectCache.put("custom"+(aInternalAspectIDAllocation++), this);
+ GT_LanguageManager.addStringLocalization("tc.aspect."+aTag, aTooltip);
+ }
+ Logger.INFO("[Thaumcraft++] Adding support for Aspect: "+tag);
+ }
+ }
+
+
+
+ /**
+ * Generates a TC_Aspect from an object, presummed to be a TC Aspect.
+ * @param aBaseAspect - The TC Aspect to generate from.
+ * @return
+ * @throws IllegalArgumentException
+ * @throws IllegalAccessException
+ */
+ @SuppressWarnings("unused")
+ public static TC_Aspect_Wrapper generate(Object aBaseAspect) {
+ try {
+ Field aTagF = ReflectionUtils.getField(mClass_Aspect, "tag");
+ if (aTagF == null) {
+ return null;
+ }
+ String aTafB = (String) aTagF.get(aBaseAspect);
+ if (aTafB == null) {
+ return null;
+ }
+ String aTag = aTafB.toLowerCase();
+ if (aTag != null && getAspectList().containsKey(aTag.toLowerCase())) {
+ return getAspect(aTag);
+ } else {
+ TC_Aspect_Wrapper aTemp = new TC_Aspect_Wrapper(
+ aTag,
+ (int) ReflectionUtils.getField(mClass_Aspect, "color").get(aBaseAspect),
+ generateAspectArrayInternal(ReflectionUtils.getField(mClass_Aspect, "components"), (aBaseAspect)),
+ (ResourceLocation) ReflectionUtils.getField(mClass_Aspect, "image").get(aBaseAspect),
+ true,
+ (int) ReflectionUtils.getField(mClass_Aspect, "blend").get(aBaseAspect),
+ ""
+ );
+ if (aTemp != null) {
+ aTemp.chatcolor = (String) ReflectionUtils.getField(mClass_Aspect, "chatcolor").get(aBaseAspect);
+ return aTemp;
+ }
+ else {
+ return null;
+ }
+ }
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * Internal Map containing all the TC_Aspects.
+ */
+ private static Map<String, TC_Aspect_Wrapper> mInternalAspectCache = new LinkedHashMap<String, TC_Aspect_Wrapper>();
+
+ /**
+ * Public getter for all TC_Aspects
+ * @param aAspectName - Aspect Name
+ * @return - A GT++ Aspect wrapper or null. (TC_Aspect)
+ */
+ public static TC_Aspect_Wrapper getAspect(String aAspectName) {
+ String aName = aAspectName.toLowerCase();
+ TC_Aspect_Wrapper g = mInternalAspectCache.get(aName);
+ if (g != null) {
+ return g;
+ }
+ else {
+ try {
+ TC_Aspect_Wrapper aTemp = generate(getVanillaAspectList().get(aName));
+ if (aTemp != null) {
+ mInternalAspectCache.put(aName, aTemp);
+ return aTemp;
+ }
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ public static Map<String, TC_Aspect_Wrapper> getAspectList(){
+ return mInternalAspectCache;
+ }
+
+
+ private static TC_Aspect_Wrapper[] generateAspectArrayInternal(Field aField, Object aInstance) {
+ //thaumcraft.api.aspects.Aspect.Aspect()
+ Object[] components;
+ TC_Aspect_Wrapper[] aAspectArray;
+ try {
+ components = (Object[]) aField.get(aInstance);
+ aAspectArray = new TC_Aspect_Wrapper[components == null ? 0 : components.length];
+ if (aAspectArray.length > 0) {
+ int i = 0;
+ for (Object g : components) {
+ aAspectArray[i] = getAspect((String) ReflectionUtils.getField(mClass_Aspect, "tag").get(g));
+ i++;
+ }
+ }
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ aAspectArray = new TC_Aspect_Wrapper[0];
+ }
+ return aAspectArray;
+ }
+
+ /**
+ * Tasty code to generate TC Aspects reflectively.
+ * @return
+ */
+ public Object generateTcAspect() {
+ try {
+ //thaumcraft.api.aspects.Aspect.Aspect()
+ Object aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, 0);
+ if (components.length > 0) {
+ aAspectArray = (Object[]) Array.newInstance(mClass_Aspect, components.length);
+ int i = 0;
+ for (TC_Aspect_Wrapper g : components) {
+ if (g != null && g.mAspect != null)
+ ((Object[]) aAspectArray)[i++] = g.mAspect;
+ }
+ }
+ Constructor constructor = mClass_Aspect.getConstructor(String.class, int.class, aAspectArray.getClass(), ResourceLocation.class, int.class);
+ Object myObject = constructor.newInstance(tag, color, aAspectArray, image, blend);
+
+ //Set chat colour
+ if (chatcolor != null && chatcolor.length() > 0) {
+ Method setChatColour = ReflectionUtils.getMethod(mClass_Aspect, "setChatcolor", String.class);
+ if (setChatColour != null) {
+ setChatColour.invoke(myObject, chatcolor);
+ }
+ }
+ return myObject;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ return null;
+ }
+ }
+
+ public static boolean isObjectAnAspect(Object aAspect) {
+ return mClass_Aspect.isInstance(aAspect);
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java
new file mode 100644
index 0000000000..914144445c
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/Base_Recipe_Wrapper.java
@@ -0,0 +1,10 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe;
+
+import net.minecraft.item.ItemStack;
+
+public interface Base_Recipe_Wrapper {
+
+ public abstract ItemStack getRecipeOutput();
+
+ public abstract ItemStack getRecipeInput();
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java
new file mode 100644
index 0000000000..8ee4e7011d
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_CrucibleRecipe_Wrapper.java
@@ -0,0 +1,19 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe;
+
+import net.minecraft.item.ItemStack;
+
+public class TC_CrucibleRecipe_Wrapper implements Base_Recipe_Wrapper {
+
+ @Override
+ public ItemStack getRecipeInput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java
new file mode 100644
index 0000000000..fede079f7b
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_IArcaneRecipe_Wrapper.java
@@ -0,0 +1,19 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe;
+
+import net.minecraft.item.ItemStack;
+
+public class TC_IArcaneRecipe_Wrapper implements Base_Recipe_Wrapper {
+
+ @Override
+ public ItemStack getRecipeInput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java
new file mode 100644
index 0000000000..b52fa0e6a7
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionEnchantmentRecipe_Wrapper.java
@@ -0,0 +1,19 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe;
+
+import net.minecraft.item.ItemStack;
+
+public class TC_InfusionEnchantmentRecipe_Wrapper implements Base_Recipe_Wrapper {
+
+ @Override
+ public ItemStack getRecipeInput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java
new file mode 100644
index 0000000000..a0c539f937
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/recipe/TC_InfusionRecipe_Wrapper.java
@@ -0,0 +1,19 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe;
+
+import net.minecraft.item.ItemStack;
+
+public class TC_InfusionRecipe_Wrapper implements Base_Recipe_Wrapper {
+
+ @Override
+ public ItemStack getRecipeInput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ItemStack getRecipeOutput() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java
new file mode 100644
index 0000000000..d6c7f66988
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_PageType_Wrapper.java
@@ -0,0 +1,17 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+public class TC_PageType_Wrapper {
+
+ public static final TC_PageType_Wrapper TEXT = null;
+ public static final TC_PageType_Wrapper TEXT_CONCEALED = null;
+ public static final TC_PageType_Wrapper NORMAL_CRAFTING = null;
+ public static final TC_PageType_Wrapper ARCANE_CRAFTING = null;
+ public static final TC_PageType_Wrapper CRUCIBLE_CRAFTING = null;
+ public static final TC_PageType_Wrapper INFUSION_CRAFTING = null;
+ public static final TC_PageType_Wrapper COMPOUND_CRAFTING = null;
+ public static final TC_PageType_Wrapper SMELTING = null;
+ public static final TC_PageType_Wrapper INFUSION_ENCHANTMENT = null;
+ public static final TC_PageType_Wrapper IMAGE = null;
+ public static final TC_PageType_Wrapper ASPECTS = null;
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java
new file mode 100644
index 0000000000..93869cb8d8
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategories_Wrapper.java
@@ -0,0 +1,89 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+import cpw.mods.fml.common.FMLLog;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+
+import org.apache.logging.log4j.Level;
+
+public class TC_ResearchCategories_Wrapper {
+
+ public static LinkedHashMap<String, TC_ResearchCategoryList_Wrapper> researchCategories = new LinkedHashMap<String, TC_ResearchCategoryList_Wrapper>();
+
+ public static TC_ResearchCategoryList_Wrapper getResearchList(String key) {
+ return (TC_ResearchCategoryList_Wrapper) researchCategories.get(key);
+ }
+
+ public static String getCategoryName(String key) {
+ return StatCollector.translateToLocal("tc.research_category." + key);
+ }
+
+ public static TC_ResearchItem_Wrapper getResearch(String key) {
+ Collection rc = researchCategories.values();
+ Iterator i$ = rc.iterator();
+
+ while (i$.hasNext()) {
+ Object cat = i$.next();
+ Collection rl = ((TC_ResearchCategoryList_Wrapper) cat).research.values();
+ Iterator i$1 = rl.iterator();
+
+ while (i$1.hasNext()) {
+ Object ri = i$1.next();
+ if (((TC_ResearchItem_Wrapper) ri).key.equals(key)) {
+ return (TC_ResearchItem_Wrapper) ri;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static void registerCategory(String key, ResourceLocation icon, ResourceLocation background) {
+ if (getResearchList(key) == null) {
+ TC_ResearchCategoryList_Wrapper rl = new TC_ResearchCategoryList_Wrapper(icon, background);
+ researchCategories.put(key, rl);
+ }
+
+ }
+
+ public static void addResearch(TC_ResearchItem_Wrapper ri) {
+ TC_ResearchCategoryList_Wrapper rl = getResearchList(ri.category);
+ if (rl != null && !rl.research.containsKey(ri.key)) {
+ if (!ri.isVirtual()) {
+ Iterator i$ = rl.research.values().iterator();
+
+ while (i$.hasNext()) {
+ TC_ResearchItem_Wrapper rr = (TC_ResearchItem_Wrapper) i$.next();
+ if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) {
+ FMLLog.log(Level.FATAL,
+ "[Thaumcraft] Research [" + ri.getName()
+ + "] not added as it overlaps with existing research [" + rr.getName() + "]",
+ new Object[0]);
+ return;
+ }
+ }
+ }
+
+ rl.research.put(ri.key, ri);
+ if (ri.displayColumn < rl.minDisplayColumn) {
+ rl.minDisplayColumn = ri.displayColumn;
+ }
+
+ if (ri.displayRow < rl.minDisplayRow) {
+ rl.minDisplayRow = ri.displayRow;
+ }
+
+ if (ri.displayColumn > rl.maxDisplayColumn) {
+ rl.maxDisplayColumn = ri.displayColumn;
+ }
+
+ if (ri.displayRow > rl.maxDisplayRow) {
+ rl.maxDisplayRow = ri.displayRow;
+ }
+ }
+
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java
new file mode 100644
index 0000000000..3e6f5b78f2
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchCategoryList_Wrapper.java
@@ -0,0 +1,21 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import net.minecraft.util.ResourceLocation;
+
+public class TC_ResearchCategoryList_Wrapper {
+ public int minDisplayColumn;
+ public int minDisplayRow;
+ public int maxDisplayColumn;
+ public int maxDisplayRow;
+ public ResourceLocation icon;
+ public ResourceLocation background;
+ public Map<String, TC_ResearchItem_Wrapper> research = new HashMap<String, TC_ResearchItem_Wrapper>();
+
+ public TC_ResearchCategoryList_Wrapper(ResourceLocation icon, ResourceLocation background) {
+ this.icon = icon;
+ this.background = background;
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java
new file mode 100644
index 0000000000..6372cc0371
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchItem_Wrapper.java
@@ -0,0 +1,246 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.util.ThaumcraftUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+
+public class TC_ResearchItem_Wrapper {
+
+ public final String key;
+ public final String category;
+ public final TC_AspectList_Wrapper tags;
+ public String[] parents = null;
+ public String[] parentsHidden = null;
+ public String[] siblings = null;
+ public final int displayColumn;
+ public final int displayRow;
+ public final ItemStack icon_item;
+ public final ResourceLocation icon_resource;
+ private int complexity;
+ private boolean isSpecial;
+ private boolean isSecondary;
+ private boolean isRound;
+ private boolean isStub;
+ private boolean isVirtual;
+ private boolean isConcealed;
+ private boolean isHidden;
+ private boolean isLost;
+ private boolean isAutoUnlock;
+ private ItemStack[] itemTriggers;
+ private String[] entityTriggers;
+ private TC_Aspect_Wrapper[] aspectTriggers;
+ private Object[] pages = null;
+
+ public TC_ResearchItem_Wrapper(String key, String category) {
+ this.key = key;
+ this.category = category;
+ this.tags = new TC_AspectList_Wrapper();
+ this.icon_resource = null;
+ this.icon_item = null;
+ this.displayColumn = 0;
+ this.displayRow = 0;
+ this.setVirtual();
+ }
+
+ public TC_ResearchItem_Wrapper(String key, String category, TC_AspectList_Wrapper tags, int col, int row, int complex,
+ ResourceLocation icon) {
+ this.key = key;
+ this.category = category;
+ this.tags = tags;
+ this.icon_resource = icon;
+ this.icon_item = null;
+ this.displayColumn = col;
+ this.displayRow = row;
+ this.complexity = complex;
+ if (this.complexity < 1) {
+ this.complexity = 1;
+ }
+
+ if (this.complexity > 3) {
+ this.complexity = 3;
+ }
+
+ }
+
+ public TC_ResearchItem_Wrapper(String key, String category, TC_AspectList_Wrapper tags, int col, int row, int complex, ItemStack icon) {
+ this.key = key;
+ this.category = category;
+ this.tags = tags;
+ this.icon_item = icon;
+ this.icon_resource = null;
+ this.displayColumn = col;
+ this.displayRow = row;
+ this.complexity = complex;
+ if (this.complexity < 1) {
+ this.complexity = 1;
+ }
+
+ if (this.complexity > 3) {
+ this.complexity = 3;
+ }
+
+ }
+
+ public TC_ResearchItem_Wrapper setSpecial() {
+ this.isSpecial = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setStub() {
+ this.isStub = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setLost() {
+ this.isLost = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setConcealed() {
+ this.isConcealed = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setHidden() {
+ this.isHidden = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setVirtual() {
+ this.isVirtual = true;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setParents(String... par) {
+ this.parents = par;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setParentsHidden(String... par) {
+ this.parentsHidden = par;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setSiblings(String... sib) {
+ this.siblings = sib;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setPages(Object... par) {
+ this.pages = par;
+ return this;
+ }
+
+ public Object[] getPages() {
+ return this.pages;
+ }
+
+ public TC_ResearchItem_Wrapper setItemTriggers(ItemStack... par) {
+ this.itemTriggers = par;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setEntityTriggers(String... par) {
+ this.entityTriggers = par;
+ return this;
+ }
+
+ public TC_ResearchItem_Wrapper setAspectTriggers(TC_Aspect_Wrapper... par) {
+ this.aspectTriggers = par;
+ return this;
+ }
+
+ public ItemStack[] getItemTriggers() {
+ return this.itemTriggers;
+ }
+
+ public String[] getEntityTriggers() {
+ return this.entityTriggers;
+ }
+
+ public TC_Aspect_Wrapper[] getAspectTriggers() {
+ return this.aspectTriggers;
+ }
+
+ public TC_ResearchItem_Wrapper registerResearchItem() {
+ ThaumcraftUtils.addResearch(this);
+ return this;
+ }
+
+ public String getName() {
+ return StatCollector.translateToLocal("tc.research_name." + this.key);
+ }
+
+ public String getText() {
+ return StatCollector.translateToLocal("tc.research_text." + this.key);
+ }
+
+ public boolean isSpecial() {
+ return this.isSpecial;
+ }
+
+ public boolean isStub() {
+ return this.isStub;
+ }
+
+ public boolean isLost() {
+ return this.isLost;
+ }
+
+ public boolean isConcealed() {
+ return this.isConcealed;
+ }
+
+ public boolean isHidden() {
+ return this.isHidden;
+ }
+
+ public boolean isVirtual() {
+ return this.isVirtual;
+ }
+
+ public boolean isAutoUnlock() {
+ return this.isAutoUnlock;
+ }
+
+ public TC_ResearchItem_Wrapper setAutoUnlock() {
+ this.isAutoUnlock = true;
+ return this;
+ }
+
+ public boolean isRound() {
+ return this.isRound;
+ }
+
+ public TC_ResearchItem_Wrapper setRound() {
+ this.isRound = true;
+ return this;
+ }
+
+ public boolean isSecondary() {
+ return this.isSecondary;
+ }
+
+ public TC_ResearchItem_Wrapper setSecondary() {
+ this.isSecondary = true;
+ return this;
+ }
+
+ public int getComplexity() {
+ return this.complexity;
+ }
+
+ public TC_ResearchItem_Wrapper setComplexity(int complexity) {
+ this.complexity = complexity;
+ return this;
+ }
+
+ public TC_Aspect_Wrapper getResearchPrimaryTag() {
+ //TODO
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java
new file mode 100644
index 0000000000..5adf0150d9
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchNoteData_Wrapper.java
@@ -0,0 +1,14 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+public class TC_ResearchNoteData_Wrapper {
+
+ public TC_ResearchNoteData_Wrapper(Object researchNoteData) {
+ // TODO Auto-generated constructor stub
+ }
+
+ public Object getResearchNoteData() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java
new file mode 100644
index 0000000000..998f37bf8c
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/objects/wrapper/research/TC_ResearchPage_Wrapper.java
@@ -0,0 +1,228 @@
+package gtPlusPlus.xmod.thaumcraft.objects.wrapper.research;
+
+import java.util.List;
+
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_CrucibleRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_IArcaneRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionEnchantmentRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionRecipe_Wrapper;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.FurnaceRecipes;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.StatCollector;
+
+public class TC_ResearchPage_Wrapper {
+ public TC_PageType_Wrapper type;
+ public String text;
+ public String research;
+ public ResourceLocation image;
+ public TC_AspectList_Wrapper aspects;
+ public Object recipe;
+ public ItemStack recipeOutput;
+
+ public TC_ResearchPage_Wrapper(String text) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = text;
+ }
+
+ public TC_ResearchPage_Wrapper(String research, String text) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.TEXT_CONCEALED;
+ this.research = research;
+ this.text = text;
+ }
+
+ public TC_ResearchPage_Wrapper(IRecipe recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.NORMAL_CRAFTING;
+ this.recipe = recipe;
+ this.recipeOutput = recipe.getRecipeOutput();
+ }
+
+ public TC_ResearchPage_Wrapper(IRecipe[] recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.NORMAL_CRAFTING;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper[] recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.ARCANE_CRAFTING;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper[] recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper[] recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.INFUSION_CRAFTING;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(List recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.COMPOUND_CRAFTING;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(TC_IArcaneRecipe_Wrapper recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.ARCANE_CRAFTING;
+ this.recipe = recipe;
+ this.recipeOutput = recipe.getRecipeOutput();
+ }
+
+ public TC_ResearchPage_Wrapper(TC_CrucibleRecipe_Wrapper recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.CRUCIBLE_CRAFTING;
+ this.recipe = recipe;
+ this.recipeOutput = recipe.getRecipeOutput();
+ }
+
+ public TC_ResearchPage_Wrapper(ItemStack input) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.SMELTING;
+ this.recipe = input;
+ this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input);
+ }
+
+ public TC_ResearchPage_Wrapper(TC_InfusionRecipe_Wrapper recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.INFUSION_CRAFTING;
+ this.recipe = recipe;
+ if (recipe.getRecipeOutput() instanceof ItemStack) {
+ this.recipeOutput = (ItemStack) recipe.getRecipeOutput();
+ } else {
+ this.recipeOutput = recipe.getRecipeInput();
+ }
+
+ }
+
+ public TC_ResearchPage_Wrapper(TC_InfusionEnchantmentRecipe_Wrapper recipe) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.INFUSION_ENCHANTMENT;
+ this.recipe = recipe;
+ }
+
+ public TC_ResearchPage_Wrapper(ResourceLocation image, String caption) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.IMAGE;
+ this.image = image;
+ this.text = caption;
+ }
+
+ public TC_ResearchPage_Wrapper(TC_AspectList_Wrapper as) {
+ this.type = TC_PageType_Wrapper.TEXT;
+ this.text = null;
+ this.research = null;
+ this.image = null;
+ this.aspects = null;
+ this.recipe = null;
+ this.recipeOutput = null;
+ this.type = TC_PageType_Wrapper.ASPECTS;
+ this.aspects = as;
+ }
+
+ public String getTranslatedText() {
+ String ret = "";
+ if (this.text != null) {
+ ret = StatCollector.translateToLocal(this.text);
+ if (ret.isEmpty()) {
+ ret = this.text;
+ }
+ }
+
+ return ret;
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
index 2f5400e5f2..8beaa8df5e 100644
--- a/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
+++ b/src/Java/gtPlusPlus/xmod/thaumcraft/util/ThaumcraftUtils.java
@@ -1,63 +1,59 @@
package gtPlusPlus.xmod.thaumcraft.util;
import static gtPlusPlus.xmod.thaumcraft.HANDLER_Thaumcraft.sItemsToGetAspects;
-import static gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectCompat.getAspectList_Ex;
-import java.util.*;
-
-import net.minecraft.block.Block;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.crafting.IRecipe;
-import net.minecraft.world.World;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import gregtech.api.GregTech_API;
import gregtech.api.enums.ConfigCategories;
-import gregtech.api.enums.TC_Aspects.TC_AspectStack;
+import gregtech.api.enums.TC_Aspects;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Utility;
-
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.Pair;
-import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.thaumcraft.HANDLER_Thaumcraft;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects;
-import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_Aspects.TC_AspectStack_Ex;
-import gtPlusPlus.xmod.thaumcraft.objects.ResearchNoteDataWrapper;
-import thaumcraft.api.ThaumcraftApi;
-import thaumcraft.api.ThaumcraftApiHelper;
-import thaumcraft.api.aspects.Aspect;
-import thaumcraft.api.aspects.AspectList;
-import thaumcraft.api.crafting.*;
-import thaumcraft.api.research.*;
-import thaumcraft.common.lib.research.ResearchManager;
-import thaumcraft.common.lib.research.ResearchNoteData;
-import thaumcraft.common.lib.utils.HexUtils;
+import gtPlusPlus.xmod.thaumcraft.aspect.GTPP_AspectStack;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_AspectList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.aspect.TC_Aspect_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_CrucibleRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_IArcaneRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionEnchantmentRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.recipe.TC_InfusionRecipe_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchCategories_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchCategoryList_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchItem_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchNoteData_Wrapper;
+import gtPlusPlus.xmod.thaumcraft.objects.wrapper.research.TC_ResearchPage_Wrapper;
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.IRecipe;
+import net.minecraft.world.World;
public class ThaumcraftUtils {
- public static boolean addAspectToItem(ItemStack item, Aspect aspect, int amount) {
- return addAspectToItem(item, getEnumAspect(aspect.getName()), amount);
- }
- /*public static boolean addAspectToItem(ItemStack item, Aspect[] aspects, int amount) {
- return addAspectToItem(item, getEnumAspect(aspect.getName()), amount);
- }*/
+ private static Class mClass_Aspect;
+ private static Field mField_Aspects;
- public static boolean addAspectToItem(ItemStack item, GTPP_Aspects aspect, int amount) {
- return addAspectToItem(item, new GTPP_Aspects[] {aspect}, new Integer[] {amount});
+ public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper aspect, int amount) {
+ return addAspectToItem(item, new TC_Aspect_Wrapper[] {aspect}, new Integer[] {amount});
}
- public static boolean addAspectToItem(ItemStack item, GTPP_Aspects[] aspect, Integer[] amounts) {
- TC_AspectStack_Ex[] aspects = new TC_AspectStack_Ex[aspect.length];
+ public static boolean addAspectToItem(ItemStack item, TC_Aspect_Wrapper[] aspect, Integer[] amounts) {
+ GTPP_AspectStack[] aspects = new GTPP_AspectStack[aspect.length];
for (int g=0;g<aspect.length;g++) {
if (amounts[g] != null && amounts[g] > 0) {
- aspects[g] = new TC_AspectStack_Ex(aspect[g], amounts[g]);
+ //aspects[g] = new GTPP_AspectStack(aspect[g], amounts[g]);
}
}
- Pair<ItemStack, TC_AspectStack_Ex[]> k = new Pair<ItemStack, TC_AspectStack_Ex[]>(item, aspects);
+ Pair<ItemStack, GTPP_AspectStack[]> k = new Pair<ItemStack, GTPP_AspectStack[]>(item, aspects);
int mSizeA = sItemsToGetAspects.size();
sItemsToGetAspects.put(k);
if (sItemsToGetAspects.size() > mSizeA) {
@@ -70,58 +66,50 @@ public class ThaumcraftUtils {
}
- public static Aspect getAspect(String name) {
- GTPP_Aspects r = getAspectEnum(name);
- return (r == null ? null : r.mAspect);
- }
-
- public static GTPP_Aspects getEnumAspect(String name) {
- GTPP_Aspects r = getAspectEnum(name);
- return (r == null ? null : r);
+ public static TC_Aspect_Wrapper getAspect(String name) {
+ return TC_Aspect_Wrapper.getAspect(name);
}
- private static GTPP_Aspects getAspectEnum(String name) {
- GTPP_Aspects h = null;
- for (GTPP_Aspects f : GTPP_Aspects.values()) {
- if (f.mAspect.getName().toLowerCase().contains(name.toLowerCase())) {
- h = f;
- }
- }
- return h;
+ public static TC_Aspects getEnumAspect(String name) {
+ TC_Aspect_Wrapper r = getAspect(name);
+ return r.mGtEnumField;
}
+
+
- public static Object addResearch(String aResearch, String aName, String aText, String[] aParentResearches, String aCategory, ItemStack aIcon, int aComplexity, int aType, int aX, int aY, List<TC_AspectStack_Ex> aAspects, ItemStack[] aResearchTriggers, Object[] aPages) {
+ public static Object addResearch(String aResearch, String aName, String aText, String[] aParentResearches, String aCategory, ItemStack aIcon, int aComplexity, int aType, int aX, int aY, List<GTPP_AspectStack> aAspects, ItemStack[] aResearchTriggers, Object[] aPages) {
if (!GregTech_API.sRecipeFile.get(ConfigCategories.Recipes.researches, aResearch, true)) {
return null;
}
- ResearchCategoryList tCategory = ResearchCategories.getResearchList(aCategory);
+ TC_ResearchCategoryList_Wrapper tCategory = TC_ResearchCategories_Wrapper.getResearchList(aCategory);
if (tCategory == null) {
return null;
}
- for (Iterator<ResearchItem> i$ = tCategory.research.values().iterator(); i$.hasNext(); ) {
- ResearchItem tResearch = (ResearchItem) i$.next();
+ for (Iterator<TC_ResearchItem_Wrapper> i$ = tCategory.research.values().iterator(); i$.hasNext(); ) {
+ TC_ResearchItem_Wrapper tResearch = (TC_ResearchItem_Wrapper) i$.next();
if ((tResearch.displayColumn == aX) && (tResearch.displayRow == aY)) {
aX += (aX > 0 ? 5 : -5);
aY += (aY > 0 ? 5 : -5);
}
}
- ResearchItem rResearch = new ResearchItem(aResearch, aCategory, getAspectList_Ex(aAspects), aX, aY, aComplexity, aIcon);
- ArrayList<ResearchPage> tPages = new ArrayList<ResearchPage>(aPages.length);
+ TC_ResearchItem_Wrapper rResearch = new TC_ResearchItem_Wrapper(aResearch, aCategory, getAspectList_Ex(aAspects), aX, aY, aComplexity, aIcon);
+ ArrayList<Object> tPages = new ArrayList<Object>(aPages.length);
GT_LanguageManager.addStringLocalization("tc.research_name." + aResearch, aName);
GT_LanguageManager.addStringLocalization("tc.research_text." + aResearch, "[GT++] " + aText);
for (Object tPage : aPages) {
if ((tPage instanceof String)) {
- tPages.add(new ResearchPage((String) tPage));
+ tPages.add(new TC_ResearchPage_Wrapper((String) tPage));
} else if ((tPage instanceof IRecipe)) {
- tPages.add(new ResearchPage((IRecipe) tPage));
- } else if ((tPage instanceof IArcaneRecipe)) {
- tPages.add(new ResearchPage((IArcaneRecipe) tPage));
- } else if ((tPage instanceof CrucibleRecipe)) {
- tPages.add(new ResearchPage((CrucibleRecipe) tPage));
- } else if ((tPage instanceof InfusionRecipe)) {
- tPages.add(new ResearchPage((InfusionRecipe) tPage));
- } else if ((tPage instanceof InfusionEnchantmentRecipe)) {
- tPages.add(new ResearchPage((InfusionEnchantmentRecipe) tPage));
+ tPages.add(new TC_ResearchPage_Wrapper((IRecipe) tPage));
+ }
+ else if ((tPage instanceof TC_IArcaneRecipe_Wrapper)) {
+ tPages.add(new TC_ResearchPage_Wrapper((TC_IArcaneRecipe_Wrapper) tPage));
+ } else if ((tPage instanceof TC_CrucibleRecipe_Wrapper)) {
+ tPages.add(new TC_ResearchPage_Wrapper((TC_CrucibleRecipe_Wrapper) tPage));
+ } else if ((tPage instanceof TC_InfusionRecipe_Wrapper)) {
+ tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionRecipe_Wrapper) tPage));
+ } else if ((tPage instanceof TC_InfusionEnchantmentRecipe_Wrapper)) {
+ tPages.add(new TC_ResearchPage_Wrapper((TC_InfusionEnchantmentRecipe_Wrapper) tPage));
}
}
if ((aType & 0x40) != 0) {
@@ -161,58 +149,58 @@ public class ThaumcraftUtils {
rResearch.setItemTriggers(aResearchTriggers);
rResearch.setHidden();
}
- rResearch.setPages((ResearchPage[]) tPages.toArray(new ResearchPage[tPages.size()]));
+ rResearch.setPages((TC_ResearchPage_Wrapper[]) tPages.toArray(new TC_ResearchPage_Wrapper[tPages.size()]));
return rResearch.registerResearchItem();
}
public static Object addCrucibleRecipe(final String aResearch, final Object aInput, final ItemStack aOutput,
- final List<TC_AspectStack_Ex> aAspects) {
+ final List<GTPP_AspectStack> aAspects) {
if (GT_Utility.isStringInvalid((Object) aResearch) || aInput == null || aOutput == null || aAspects == null
|| aAspects.isEmpty()) {
return null;
}
- return ThaumcraftApi.addCrucibleRecipe(aResearch, GT_Utility.copy(new Object[]{aOutput}),
+ return addCrucibleRecipe(aResearch, GT_Utility.copy(new Object[]{aOutput}),
(aInput instanceof ItemStack || aInput instanceof ArrayList) ? aInput : aInput.toString(),
getAspectList_Ex(aAspects));
}
public static Object addInfusionRecipe(final String aResearch, final ItemStack aMainInput, final ItemStack[] aSideInputs,
- final ItemStack aOutput, final int aInstability, final List<TC_AspectStack_Ex> aAspects) {
+ final ItemStack aOutput, final int aInstability, final List<GTPP_AspectStack> aAspects) {
if (GT_Utility.isStringInvalid((Object) aResearch) || aMainInput == null || aSideInputs == null
|| aOutput == null || aAspects == null || aAspects.isEmpty()) {
return null;
}
- return ThaumcraftApi.addInfusionCraftingRecipe(aResearch, (Object) GT_Utility.copy(new Object[]{aOutput}),
+ return addInfusionCraftingRecipe(aResearch, (Object) GT_Utility.copy(new Object[]{aOutput}),
aInstability, getAspectList_Ex(aAspects), aMainInput, aSideInputs);
}
public static boolean registerThaumcraftAspectsToItem(final ItemStack aExampleStack,
- final List<TC_AspectStack_Ex> aAspects, final String aOreDict) {
+ final List<GTPP_AspectStack> aAspects, final String aOreDict) {
if (aAspects.isEmpty()) {
return false;
}
- ThaumcraftApi.registerObjectTag(aOreDict, getAspectList_Ex(aAspects));
+ registerObjectTag(aOreDict, getAspectList_Ex(aAspects));
return true;
}
public static boolean registerThaumcraftAspectsToItem(final ItemStack aStack,
- final List<TC_AspectStack_Ex> aAspects, final boolean aAdditive) {
+ final List<GTPP_AspectStack> aAspects, final boolean aAdditive) {
try {
if (aAspects.isEmpty()) {
return false;
}
- AspectList h = getAspectList_Ex(aAspects);
+ TC_AspectList_Wrapper h = getAspectList_Ex(aAspects);
if (aAdditive && (h != null && h.size() > 0)) {
- ThaumcraftApi.registerComplexObjectTag(aStack, getAspectList_Ex(aAspects));
+ registerComplexObjectTag(aStack, getAspectList_Ex(aAspects));
return true;
}
else {
Logger.MATERIALS("[Aspect] Failed adding aspects to "+aStack.getDisplayName()+".");
}
- final AspectList tAlreadyRegisteredAspects = ThaumcraftApiHelper.getObjectAspects(aStack);
+ final TC_AspectList_Wrapper tAlreadyRegisteredAspects = getObjectAspects(aStack);
if (tAlreadyRegisteredAspects == null || tAlreadyRegisteredAspects.size() <= 0) {
- ThaumcraftApi.registerObjectTag(aStack, getAspectList_Ex(aAspects));
+ registerObjectTag(aStack, getAspectList_Ex(aAspects));
}
return true;
}
@@ -222,44 +210,168 @@ public class ThaumcraftUtils {
return false;
}
}
+
- public static boolean registerPortholeBlacklistedBlock(final Block aBlock) {
- ThaumcraftApi.portableHoleBlackList.add(aBlock);
- return true;
+ private static final Class mClass_ThaumcraftApi;
+ private static final Class mClass_ThaumcraftApiHelper;
+ private static final Class mClass_AspectList;
+ private static final Class mClass_ResearchManager;
+ private static final Method mMethod_registerObjectTag1;
+ private static final Method mMethod_registerObjectTag2;
+ private static final Method mMethod_registerComplexObjectTag;
+ private static final Method mMethod_addInfusionCraftingRecipe;
+ private static final Method mMethod_addCrucibleRecipe;
+ private static final Method mMethod_getObjectAspects;
+ private static final Method mMethod_updateData;
+ private static final Method mMethod_getData;
+
+ private static final Field mField_PortholeBlacklist;
+ static {
+ /*
+ * Classes
+ */
+ mClass_ThaumcraftApi = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApi");
+ mClass_ThaumcraftApiHelper = ReflectionUtils.getClass("thaumcraft.api.ThaumcraftApiHelper");
+ mClass_AspectList = ReflectionUtils.getClass("thaumcraft.api.aspects.AspectList");
+ mClass_ResearchManager = ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchManager");
+
+ /*
+ * Methods
+ */
+ mMethod_registerObjectTag1 = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerObjectTag",
+ ItemStack.class, mClass_AspectList);
+
+ mMethod_registerObjectTag2 = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerObjectTag", String.class,
+ mClass_AspectList);
+
+ mMethod_registerComplexObjectTag = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "registerComplexObjectTag",
+ ItemStack.class, mClass_AspectList);
+
+ mMethod_addInfusionCraftingRecipe = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "addInfusionCraftingRecipe",
+ String.class, Object.class, int.class, mClass_AspectList, ItemStack.class, ItemStack[].class);
+
+ mMethod_addCrucibleRecipe = ReflectionUtils.getMethod(mClass_ThaumcraftApi, "addCrucibleRecipe", String.class,
+ ItemStack.class, Object.class, mClass_AspectList);
+
+
+ mMethod_getObjectAspects = ReflectionUtils.getMethod(mClass_ThaumcraftApiHelper, "getObjectAspects", ItemStack.class);
+
+
+ mMethod_updateData = ReflectionUtils.getMethod(mClass_ResearchManager, "updateData", ItemStack.class, ReflectionUtils.getClass("thaumcraft.common.lib.research.ResearchNoteData"));
+ mMethod_getData = ReflectionUtils.getMethod(mClass_ResearchManager, "getData", ItemStack.class);
+
+ /*
+ * Fields
+ */
+ mField_PortholeBlacklist = ReflectionUtils.getField(mClass_ThaumcraftApi, "portableHoleBlackList");
+
+ }
+
+ public static void registerObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) {
+ try {
+ mMethod_registerObjectTag1.invoke(null, aStack, aAspectList.getVanillaAspectList());
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
}
- public static TC_AspectStack_Ex convertAspectStack(TC_AspectStack gtType) {
- TC_AspectStack_Ex g = null;
- if (gtType == null) {
- return null;
+ public static void registerObjectTag(String aOreDict, TC_AspectList_Wrapper aAspectList) {
+ try {
+ mMethod_registerObjectTag2.invoke(null, aOreDict, aAspectList.getVanillaAspectList());
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
}
- else {
- String oldName = gtType.mAspect.name().toLowerCase();
- long oldAmount = gtType.mAmount;
- for (GTPP_Aspects r : GTPP_Aspects.values()) {
- if (r.mAspect.getName().toLowerCase().contains(oldName)) {
- g = new TC_AspectStack_Ex(r, oldAmount);
- break;
- }
- }
- }
- return g;
}
+
+ public static void registerComplexObjectTag(ItemStack aStack, TC_AspectList_Wrapper aAspectList) {
+ try {
+ mMethod_registerComplexObjectTag.invoke(null, aStack, aAspectList.getVanillaAspectList());
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public static TC_AspectList_Wrapper getObjectAspects(ItemStack aStack) {
+ try {
+ return new TC_AspectList_Wrapper(mMethod_getObjectAspects.invoke(null, aStack));
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
- public static List<TC_AspectStack_Ex> convertAspectStack(List<TC_AspectStack> p5) {
- List<TC_AspectStack_Ex> list = new ArrayList<TC_AspectStack_Ex>();
- for (TC_AspectStack h : p5) {
- list.add(convertAspectStack(h));
+ public static Object addCrucibleRecipe(String aResearch, ItemStack copy, Object aOutput,
+ TC_AspectList_Wrapper aAspectList) {
+ try {
+ return mMethod_addCrucibleRecipe.invoke(null, aResearch, copy, aOutput, aAspectList);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static Object addInfusionCraftingRecipe(String aResearch, Object copy, int aInstability,
+ TC_AspectList_Wrapper aAspectList, ItemStack aMainInput, ItemStack[] aSideInputs) {
+ try {
+ return mMethod_addInfusionCraftingRecipe.invoke(null, aResearch, copy, aInstability, aAspectList, aMainInput, aSideInputs);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ public static boolean registerPortholeBlacklistedBlock(final Block aBlock) {
+ try {
+ ((ArrayList<Block>) mField_PortholeBlacklist.get(null)).add(aBlock);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ return false;
}
- return list;
+ return true;
}
+
- public static void updateResearchNote(ItemStack a, ResearchNoteData b) {
- updateResearchNote(a, new ResearchNoteDataWrapper(b));
+ public static String getTagFromAspectObject(Object aAspect) {
+ try {
+ Field aTagF = ReflectionUtils.getField(mClass_Aspect, "tag");
+ if (aTagF == null) {
+ return null;
+ }
+ String aTafB = (String) aTagF.get(aAspect);
+ if (aTafB == null) {
+ return null;
+ }
+ String aTag = aTafB.toLowerCase();
+ return aTag;
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return "error";
+ }
}
+
- public static void updateResearchNote(ItemStack a, ResearchNoteDataWrapper b) {
- ResearchManager.updateData(a, b);
+ public static void updateResearchNote(ItemStack a, TC_ResearchNoteData_Wrapper b) {
+ //updateData(a, b.getResearchNoteData());
+ try {
+ mMethod_updateData.invoke(a, b.getResearchNoteData());
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static Object getResearchNoteData(ItemStack a) {
+ //getData(a);
+ try {
+ return mMethod_getData.invoke(a);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
}
public static boolean isItemResearchNotes(ItemStack aStack) {
@@ -276,16 +388,16 @@ public class ThaumcraftUtils {
return false;
}
- public static ResearchNoteDataWrapper gatherResults(ItemStack note) {
- ResearchNoteDataWrapper research = null;
+ public static TC_ResearchNoteData_Wrapper gatherResults(ItemStack note) {
+ TC_ResearchNoteData_Wrapper research = null;
if (isItemResearchNotes(note)) {
- research = new ResearchNoteDataWrapper(ResearchManager.getData(note));
+ research = new TC_ResearchNoteData_Wrapper(getResearchNoteData(note));
}
return research;
}
- public static void placeAspectIntoResearchNote(ItemStack note, World aWorld, final int q, final int r, final Aspect aspect) {
- ResearchNoteDataWrapper data = gatherResults(note);
+ public static void placeAspectIntoResearchNote(ItemStack note, World aWorld, final int q, final int r, final TC_Aspect_Wrapper aspect) {
+ /*TC_ResearchNoteData_Wrapper data = gatherResults(note);
String mGTPP = CORE.gameProfile.getName();
EntityPlayer player = CORE.getFakePlayer(aWorld);
@@ -315,7 +427,7 @@ public class ThaumcraftUtils {
if (!aWorld.isRemote && ResearchManager.checkResearchCompletion(note, data, player.getCommandSenderName())) {
note.setItemDamage(64);
}
- }
+ }*/
}
public static void completeResearchNote(World aWorld, ItemStack aStack) {
@@ -325,4 +437,17 @@ public class ThaumcraftUtils {
}
}
}
+
+ public static synchronized final TC_AspectList_Wrapper getAspectList_Ex(final List<GTPP_AspectStack> aAspects) {
+ final TC_AspectList_Wrapper rAspects = new TC_AspectList_Wrapper();
+ for (final GTPP_AspectStack tAspect : aAspects) {
+ rAspects.add(tAspect.mAspect, tAspect.mAmount);
+ }
+ return rAspects;
+ }
+
+ public static void addResearch(TC_ResearchItem_Wrapper tc_ResearchItem_Wrapper) {
+ // TODO Auto-generated method stub
+
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
index 501fe6579a..3b2bcba5dd 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/HANDLER_Tinkers.java
@@ -6,6 +6,7 @@ import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.xmod.tinkers.material.BaseTinkersMaterial;
import gtPlusPlus.xmod.tinkers.util.TinkersUtils;
import net.minecraft.block.Block;
import net.minecraftforge.fluids.Fluid;
@@ -13,6 +14,8 @@ import net.minecraftforge.fluids.FluidRegistry;
public class HANDLER_Tinkers {
+ public static AutoMap<BaseTinkersMaterial> mTinkerMaterials = new AutoMap<BaseTinkersMaterial>();
+
public static final void preInit() {
if (LoadedMods.TiCon) {
@@ -31,9 +34,14 @@ public class HANDLER_Tinkers {
}
}
- public static final void postInit() {
+ public static final void postInit() {
if (LoadedMods.TiCon) {
- Class aTinkersSmeltery = ReflectionUtils.getClassByName("tconstruct.smeltery.TinkerSmeltery");
+
+ for (BaseTinkersMaterial y : mTinkerMaterials) {
+ //y.generate();
+ }
+
+ Class aTinkersSmeltery = ReflectionUtils.getClass("tconstruct.smeltery.TinkerSmeltery");
AutoMap<Fluid> aTweakedFluids = new AutoMap<Fluid>();
if (aTinkersSmeltery != null) {
try {
@@ -84,7 +92,7 @@ public class HANDLER_Tinkers {
}
}
}
- } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
}
}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/material/BaseTinkersMaterial.java b/src/Java/gtPlusPlus/xmod/tinkers/material/BaseTinkersMaterial.java
new file mode 100644
index 0000000000..6f47909a01
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/tinkers/material/BaseTinkersMaterial.java
@@ -0,0 +1,274 @@
+package gtPlusPlus.xmod.tinkers.material;
+
+import static gtPlusPlus.core.util.math.MathUtils.safeCast_LongToInt;
+
+import java.util.HashMap;
+
+import cpw.mods.fml.common.event.FMLInterModComms;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.xmod.tinkers.HANDLER_Tinkers;
+import gtPlusPlus.xmod.tinkers.util.TinkersUtils;
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraftforge.fluids.Fluid;
+
+public class BaseTinkersMaterial {
+
+
+
+ private static HashMap<String, Integer> aInternalMaterialIdMap = new HashMap<String, Integer>();
+ private static int aNextFreeID;
+
+ public final String mLocalName;
+
+ private final String mUnlocalName;
+ private final int mID;
+ private final Material mMaterial;
+
+ static {
+ aNextFreeID = (Short.MAX_VALUE/2)+420;
+ }
+
+ public BaseTinkersMaterial(Material aMaterial) {
+ mLocalName = aMaterial.getLocalizedName();
+ mUnlocalName = "material.gtpp."+Utils.sanitizeString(mLocalName);
+ mMaterial = aMaterial;
+ mID = aNextFreeID++;
+ Logger.INFO("[TiCon] Assigning ID "+mID+" to "+mLocalName+".");
+ aInternalMaterialIdMap.put(mUnlocalName, mID);
+ HANDLER_Tinkers.mTinkerMaterials.put(this);
+ }
+
+ public String getUnlocalName() {
+ return mUnlocalName;
+ }
+
+ private static int calcDurability(Material aMaterial) {
+ return safeCast_LongToInt(aMaterial.vDurability);
+ }
+
+ private static int calcMiningSpeed(Material aMaterial) {
+ return (aMaterial.vHarvestLevel * 2)+aMaterial.vTier;
+ }
+
+ private static int calcHarvestLevel(Material aMaterial) {
+ return aMaterial.vHarvestLevel;
+ }
+
+ private static int calcAttack(Material aMaterial) {
+ return aMaterial.vHarvestLevel+aMaterial.vTier+aMaterial.vRadiationLevel;
+ }
+
+ private static float calcHandleModifier(Material aMaterial) {
+ return 1f;
+ }
+
+ private static int calcReinforced(Material aMaterial) {
+ return aMaterial.getMeltingPointC()/3600;
+ }
+
+ private static int calcBowProjectileSpeed(Material aMaterial) {
+ return aMaterial.vHarvestLevel+2;
+ }
+
+ private static int calcBowDrawSpeed(Material aMaterial) {
+ return aMaterial.vHarvestLevel+8;
+ }
+
+ private static float calcProjectileMass(Material aMaterial) {
+ return (aMaterial.getMeltingPointC()/1800)*0.1f;
+ }
+
+ private static float calcProjectileFragility(Material aMaterial) {
+ return 0f;
+ }
+
+ private static String calcStyle(Material aMaterial) {
+ String aReturn = "" + EnumChatFormatting.WHITE;
+ int aTemp = aMaterial.getMeltingPointC();
+ if (aTemp < 3600) {
+ aReturn = "" + EnumChatFormatting.WHITE;
+ }
+ else if (aTemp >= 3600) {
+ aReturn = "" + EnumChatFormatting.YELLOW;
+ }
+ else if (aTemp >= (3600*2)) {
+ aReturn = "" + EnumChatFormatting.GREEN;
+ }
+ else if (aTemp >= (3600*3)) {
+ aReturn = "" + EnumChatFormatting.RED;
+ }
+ else if (aTemp >= (3600*4)) {
+ aReturn = "" + EnumChatFormatting.DARK_RED;
+ }
+ else {
+ aReturn = "" + EnumChatFormatting.GOLD;
+ }
+ return aReturn;
+ }
+
+ private static int calcColour(Material aMaterial) {
+ return aMaterial.getRgbAsHex();
+ }
+
+ public Object generateToolMaterial(Material aMaterial) {
+ int level, dura, speed, dmg, reinf, primColour;
+ float handle, stonebound;
+ level = calcHarvestLevel(aMaterial);
+ dura = calcDurability(aMaterial);
+ speed = calcMiningSpeed(aMaterial);
+ dmg = calcAttack(aMaterial);
+ reinf = calcReinforced(aMaterial);
+ primColour = calcColour(aMaterial);
+ handle = calcHandleModifier(aMaterial);
+ //stonebound = calcHarvestLevel(aMaterial);
+ stonebound = 0;
+ return TinkersUtils.generateToolMaterial(aMaterial.getLocalizedName(), aMaterial.getUnlocalizedName(), level, dura, speed, dmg, handle, reinf, stonebound, calcStyle(aMaterial), primColour);
+ }
+
+ public void generate() {
+
+ Logger.INFO("[TiCon] Trying to generate Material: "+mLocalName);
+ int id = mID;
+ if (id > 0) {
+
+ //Object aTinkersCustomMaterial = generateToolMaterial(mMaterial);
+ //Logger.INFO("[TiCon] Created Material: "+mLocalName);
+
+ //TinkersUtils.addToolMaterial(id, aTinkersCustomMaterial);
+ //TinkersUtils.addDefaultToolPartMaterial(id);
+ //TinkersUtils.addBowMaterial(id, calcBowDrawSpeed(mMaterial), 1.0F);
+ //TinkersUtils.addArrowMaterial(id, calcProjectileMass(mMaterial), calcProjectileFragility(mMaterial));
+
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setInteger("Id", id);
+ tag.setString("Name", mUnlocalName);
+ tag.setString("localizationString", mLocalName);
+ tag.setInteger("Durability", calcDurability(mMaterial)); // 97
+ tag.setInteger("MiningSpeed", calcMiningSpeed(mMaterial)); // 150
+ tag.setInteger("HarvestLevel", calcHarvestLevel(mMaterial)); // 1
+ tag.setInteger("Attack", calcAttack(mMaterial)); // 0
+ tag.setFloat("HandleModifier", calcHandleModifier(mMaterial)); // 1.0f
+ tag.setInteger("Reinforced", calcReinforced(mMaterial)); // 0
+ tag.setFloat("Bow_ProjectileSpeed", calcBowProjectileSpeed(mMaterial)); // 3.0f
+ tag.setInteger("Bow_DrawSpeed", calcBowDrawSpeed(mMaterial)); // 18
+ tag.setFloat("Projectile_Mass", calcProjectileMass(mMaterial)); // 0.69f
+ tag.setFloat("Projectile_Fragility", calcProjectileFragility(mMaterial)); // 0.2f
+ tag.setString("Style", calcStyle(mMaterial));
+ tag.setInteger("Color", calcColour(mMaterial));
+
+
+ boolean generate = generateRecipes(mMaterial, id);
+
+ if (generate) {
+ Logger.INFO("[TiCon] Sending IMC: addMaterial - "+mLocalName+".");
+ FMLInterModComms.sendMessage("TConstruct", "addMaterial", tag);
+
+ ItemStack itemstack = mMaterial.getIngot(1);
+ tag = new NBTTagCompound();
+ tag.setInteger("MaterialId", id);
+ NBTTagCompound item = new NBTTagCompound();
+ itemstack.writeToNBT(item);
+ tag.setTag("Item", item);
+ tag.setInteger("Value", 2); // What is value for?
+
+ Logger.INFO("[TiCon] Sending IMC: addPartBuilderMaterial - "+mLocalName+".");
+ FMLInterModComms.sendMessage("TConstruct", "addPartBuilderMaterial", tag);
+
+ tag = new NBTTagCompound();
+ tag.setInteger("MaterialId", id);
+ tag.setInteger("Value", 2); // What is value for?
+ item = new NBTTagCompound();
+ itemstack.writeToNBT(item);
+ tag.setTag("Item", item);
+
+ Logger.INFO("[TiCon] Sending IMC: addMaterialItem - "+mLocalName+".");
+ FMLInterModComms.sendMessage("TConstruct", "addMaterialItem", tag);
+ }
+
+
+ }
+
+ }
+
+ private boolean generateRecipes(Material aMaterial, int aID) {
+
+ Block aMatBlock;
+ Integer aMelt;
+ Fluid aFluid;
+
+ try {
+ aMatBlock = aMaterial.getBlock();
+ aMelt = aMaterial.getMeltingPointC();
+ aFluid = aMaterial.getFluid(0).getFluid();
+ }
+ catch (Throwable t) {
+ return false;
+ }
+
+ if (aMatBlock == null || aMelt == null || aFluid == null) {
+ return false;
+ }
+
+
+ //Smeltery.addMelting(new ItemStack(ExtraUtils.unstableIngot, 1, 0), ExtraUtils.decorative1, 5, 850, aMaterial.getFluid(72));
+ TinkersUtils.registerFluidType(mLocalName, aMatBlock, 0, aMelt, aFluid, true);
+ TinkersUtils.addMelting(aMaterial.getBlock(1), aMatBlock, 0, aMelt, aMaterial.getFluid(144*9));
+ TinkersUtils.addMelting(aMaterial.getIngot(1), aMatBlock, 0, aMelt, aMaterial.getFluid(144));
+ if (aMelt <= 3600) {
+ ItemStack ingotcast = TinkersUtils.getPattern(1);
+ TinkersUtils.addBasinRecipe(aMaterial.getBlock(1),
+ aMaterial.getFluid(144*9), (ItemStack) null, true, 100);
+ TinkersUtils.addCastingTableRecipe(aMaterial.getIngot(1),
+ aMaterial.getFluid(144), ingotcast, false, 50);
+ }
+
+ boolean extended = TinkersUtils.generateCastingRecipes(aMaterial, aID);
+
+
+
+
+
+
+ //TConstructRegistry.getBasinCasting().addCastingRecipe(new ItemStack(ExtraUtils.decorative1, 1, 5), new FluidStack(unstable, 1296), (ItemStack)null, true, 100);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ return true;
+ }
+
+
+
+
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
index aed5b46e0a..f0c6d76b7c 100644
--- a/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
+++ b/src/Java/gtPlusPlus/xmod/tinkers/util/TinkersUtils.java
@@ -1,48 +1,99 @@
package gtPlusPlus.xmod.tinkers.util;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+import gregtech.api.enums.Materials;
import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.block.Block;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
public class TinkersUtils {
- private static Object mSmelteryInstance;
- private static Class mSmelteryClassInstance;
+ private static final Class mClass_Smeltery;
+ private static final Class mClass_TConstructRegistry;
+ private static final Class mClass_ToolMaterial;
+ private static final Class mClass_IPattern;
+ private static final Class mClass_DynamicToolPart;
+ private static final Class mClass_FluidType;
+ private static final Class mClass_CastingRecipe;
+ private static final Class mClass_TinkerSmeltery;
+
+ private static final Field mField_MoltenIronFluid;
+
+ private static final Method mMethod_getFluidType;
+ private static final Method mMethod_getCastingRecipes;
- public static Object getSmelteryInstance() {
+ private static Object mSmelteryInstance;
+ private static Object mTinkersRegistryInstance;
+
+ private static final HashMap<String, Method> mMethodCache = new LinkedHashMap<String, Method>();
+
+
+ static {
+ mClass_Smeltery = ReflectionUtils.getClass("tconstruct.library.crafting.Smeltery");
+ mClass_TConstructRegistry = ReflectionUtils.getClass("tconstruct.library.TConstructRegistry");
+
+ mClass_ToolMaterial = ReflectionUtils.getClass("tconstruct.library.tools.ToolMaterial");
+ mClass_IPattern = ReflectionUtils.getClass("tconstruct.library.util.IPattern");
+ mClass_DynamicToolPart = ReflectionUtils.getClass("tconstruct.library.tools.DynamicToolPart");
+ mClass_FluidType = ReflectionUtils.getClass("tconstruct.library.crafting.FluidType");
+ mClass_CastingRecipe = ReflectionUtils.getClass("tconstruct.library.crafting.CastingRecipe");
+ mClass_TinkerSmeltery = ReflectionUtils.getClass("tconstruct.smeltery.TinkerSmeltery");
+
+ mField_MoltenIronFluid = ReflectionUtils.getField(mClass_TinkerSmeltery, "moltenIronFluid");
+
+ mMethod_getFluidType = ReflectionUtils.getMethod(mClass_FluidType, "getFluidType", String.class);
+ mMethod_getCastingRecipes = ReflectionUtils.getMethod(getCastingInstance(0), "getCastingRecipes", new Class[] {});
+ }
+
+
+ /**
+ *
+ * @param aSwitch - The Registry to return
+ */
+ private static void setTiConDataInstance() {
if (!LoadedMods.TiCon) {
- return null;
- }
- else {
- if (mSmelteryInstance == null || mSmelteryClassInstance == null) {
- if (mSmelteryClassInstance == null) {
+ return;
+ } else {
+ if (mSmelteryInstance == null) {
+ if (mClass_Smeltery != null) {
try {
- mSmelteryClassInstance = Class.forName("tconstruct.library.crafting.Smeltery");
+ mSmelteryInstance = ReflectionUtils.getField(mClass_Smeltery, "instance").get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
- catch (ClassNotFoundException e) {}
}
- if (mSmelteryClassInstance != null) {
+ }
+ if (mTinkersRegistryInstance == null) {
+ if (mClass_TConstructRegistry != null) {
try {
- mSmelteryInstance = ReflectionUtils.getField(mSmelteryClassInstance, "instance").get(null);
- }
- catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
+ mTinkersRegistryInstance = ReflectionUtils.getField(mClass_TConstructRegistry, "instance").get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
}
- }
- }
- if (mSmelteryInstance != null) {
- return mSmelteryInstance;
- }
- return null;
+ }
+ }
}
public static final boolean isTiConFirstInOD() {
if (LoadedMods.TiCon) {
try {
- return (boolean) ReflectionUtils.getField(Class.forName("PHConstruct"), "tconComesFirst").get(null);
- }
- catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | ClassNotFoundException e) {
+ return (boolean) ReflectionUtils.getField(ReflectionUtils.getClass("PHConstruct"), "tconComesFirst").get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
}
}
return false;
@@ -51,8 +102,8 @@ public class TinkersUtils {
public static final boolean stopTiconLoadingFirst() {
if (isTiConFirstInOD()) {
try {
- ReflectionUtils.setFieldValue(Class.forName("PHConstruct"), "tconComesFirst", false);
- if ((boolean) ReflectionUtils.getField(Class.forName("PHConstruct"), "tconComesFirst").get(null) == false) {
+ ReflectionUtils.setFinalFieldValue(ReflectionUtils.getClass("PHConstruct"), "tconComesFirst", false);
+ if ((boolean) ReflectionUtils.getField(ReflectionUtils.getClass("PHConstruct"), "tconComesFirst").get(null) == false) {
return true;
}
//Did not work, let's see where TiCon uses this and prevent it.
@@ -72,28 +123,400 @@ public class TinkersUtils {
* @param duration How long one "portion" of liquid fuels the smeltery. Lava is 10.
*/
public static void addSmelteryFuel (Fluid fluid, int power, int duration){
- ReflectionUtils.invokeVoid(getSmelteryInstance(), "addSmelteryFuel", new Class[] {Fluid.class, int.class, int.class}, new Object[] {fluid, power, duration});
+ setTiConDataInstance();
+ ReflectionUtils.invokeVoid(mSmelteryInstance, "addSmelteryFuel", new Class[] {Fluid.class, int.class, int.class}, new Object[] {fluid, power, duration});
}
/**
* Returns true if the liquid is a valid smeltery fuel.
*/
public static boolean isSmelteryFuel (Fluid fluid){
- return ReflectionUtils.invoke(getSmelteryInstance(), "isSmelteryFuel", new Class[] {Fluid.class}, new Object[] {fluid});
+ setTiConDataInstance();
+ return ReflectionUtils.invoke(mSmelteryInstance, "isSmelteryFuel", new Class[] {Fluid.class}, new Object[] {fluid});
}
/**
* Returns the power of a smeltery fuel or 0 if it's not a fuel.
*/
public static int getFuelPower (Fluid fluid){
- return (int) ReflectionUtils.invokeNonBool(getSmelteryInstance(), "getFuelPower", new Class[] {Fluid.class}, new Object[] {fluid});
+ setTiConDataInstance();
+ return (int) ReflectionUtils.invokeNonBool(mSmelteryInstance, "getFuelPower", new Class[] {Fluid.class}, new Object[] {fluid});
}
/**
* Returns the duration of a smeltery fuel or 0 if it's not a fuel.
*/
public static int getFuelDuration (Fluid fluid){
- return (int) ReflectionUtils.invokeNonBool(getSmelteryInstance(), "getFuelDuration", new Class[] {Fluid.class}, new Object[] {fluid});
+ setTiConDataInstance();
+ return (int) ReflectionUtils.invokeNonBool(mSmelteryInstance, "getFuelDuration", new Class[] {Fluid.class}, new Object[] {fluid});
+ }
+
+
+
+
+
+
+
+ public static boolean registerFluidType(String name, Block block, int meta, int baseTemperature, Fluid fluid, boolean isToolpart) {
+ if (mMethodCache.get("registerFluidType") == null) {
+ Method m = ReflectionUtils.getMethod(ReflectionUtils.getClass("tconstruct.library.crafting.FluidType"), "registerFluidType", String.class, Block.class, int.class, int.class, Fluid.class, boolean.class);
+ mMethodCache.put("registerFluidType", m);
+ }
+ try {
+ mMethodCache.get("registerFluidType").invoke(null, name, block, meta, baseTemperature, fluid, isToolpart);
+ return true;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ return false;
+ }
+ }
+
+
+
+
+
+
+
+
+ public static boolean addBaseMeltingRecipes(Material aMaterial) {
+ return addMelting(aMaterial.getBlock(1), aMaterial.getBlock(), 0, aMaterial.getMeltingPointC(), aMaterial.getFluid(144*9)) &&
+ addMelting(aMaterial.getIngot(1), aMaterial.getBlock(), 0, aMaterial.getMeltingPointC(), aMaterial.getFluid(144));
+ }
+
+ public static boolean addMelting(ItemStack input, Block block, int metadata, int temperature, FluidStack liquid) {
+ if (mMethodCache.get("addMelting") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_Smeltery, "addMelting", ItemStack.class, Block.class, int.class, int.class, FluidStack.class);
+ mMethodCache.put("addMelting", m);
+ }
+ try {
+ mMethodCache.get("addMelting").invoke(null, input, block, metadata, temperature, liquid);
+ return true;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ return false;
+ }
+ }
+
+ public static boolean addMelting(Object type, ItemStack input, int temperatureDifference, int fluidAmount) {
+ if (mMethodCache.get("addMelting") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_Smeltery, "addMelting", mClass_FluidType, ItemStack.class, int.class, int.class);
+ mMethodCache.put("addMelting", m);
+ }
+ try {
+ mMethodCache.get("addMelting").invoke(null, type, input, temperatureDifference, fluidAmount);
+ return true;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ return false;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+ public static boolean addBaseBasinRecipes(Material aMaterial) {
+ return addBasinRecipe(aMaterial.getBlock(1), aMaterial.getFluid(144*9), (ItemStack) null, true, 100);
+ }
+
+ public static boolean addBasinRecipe(ItemStack output, FluidStack metal, ItemStack cast, boolean consume, int delay) {
+ if (mMethodCache.get("addBasinRecipe") == null) {
+ Method m = ReflectionUtils.getMethod(ReflectionUtils.getClass("tconstruct.library.crafting.LiquidCasting"), "addCastingRecipe", ItemStack.class, FluidStack.class, ItemStack.class, boolean.class, int.class);
+ mMethodCache.put("addBasinRecipe", m);
+ }
+ try {
+ mMethodCache.get("addBasinRecipe").invoke(getCastingInstance(0), output, metal, cast, consume, delay);
+ return true;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ return false;
+ }
+ }
+
+
+
+
+
+
+
+ public static boolean addBaseCastingRecipes(Material aMaterial) {
+ ItemStack ingotcast = getPattern(1);
+ return addCastingTableRecipe(aMaterial.getIngot(1), aMaterial.getFluid(144), ingotcast, false, 50);
+ }
+
+ public static boolean addCastingTableRecipe(ItemStack output, FluidStack metal, ItemStack cast, boolean consume, int delay) {
+ if (mMethodCache.get("addCastingTableRecipe") == null) {
+ Method m = ReflectionUtils.getMethod(ReflectionUtils.getClass("tconstruct.library.crafting.LiquidCasting"), "addCastingRecipe", ItemStack.class, FluidStack.class, ItemStack.class, boolean.class, int.class);
+ mMethodCache.put("addCastingTableRecipe", m);
+ }
+ try {
+ mMethodCache.get("addCastingTableRecipe").invoke(getCastingInstance(1), output, metal, cast, consume, delay);
+ return true;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ return false;
+ }
+ }
+
+
+
+
+
+
+
+ /**
+ * 0 For Table, 1 For Basin.
+ * @param aType - Casting Type
+ * @return - The casting instance.
+ */
+ public static Object getCastingInstance(int aType) {
+
+ setTiConDataInstance();
+
+ Method m = null;
+ if (aType == 0) {
+ m = ReflectionUtils.getMethod(mTinkersRegistryInstance, "getTableCasting", new Class[] {});
+ //return ReflectionUtils.invokeVoid(getTiConDataInstance(1), "getTableCasting", new Class[] {}, new Object[] {});
+ }
+ else if (aType == 1) {
+ m = ReflectionUtils.getMethod(mTinkersRegistryInstance, "getBasinCasting", new Class[] {});
+ //return ReflectionUtils.invokeVoid(getTiConDataInstance(1), "getBasinCasting", new Class[] {}, new Object[] {});
+ }
+ else {
+ //return null;
+ }
+
+ if (m != null) {
+ try {
+ return m.invoke(mTinkersRegistryInstance, new Object[] {});
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+
+ private static Item mTinkerMetalPattern;
+ public static ItemStack getPattern(int aType) {
+ if (mTinkerMetalPattern == null) {
+ Field m = ReflectionUtils.getField(mClass_TinkerSmeltery, "metalPattern");
+ if (m != null) {
+ try {
+ mTinkerMetalPattern = (Item) m.get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ }
+ }
+ }
+ if (mTinkerMetalPattern != null) {
+ ItemStack ingotCast = new ItemStack(mTinkerMetalPattern, aType, 0);
+ return ingotCast;
+ }
+ return ItemUtils.getErrorStack(1, "Bad Tinkers Pattern");
+
+
+
+
+
+
+
+ }
+
+ /**
+ * Generates Tinkers {@link ToolMaterial}'s reflectively.
+ * @param name
+ * @param localizationString
+ * @param level
+ * @param durability
+ * @param speed
+ * @param damage
+ * @param handle
+ * @param reinforced
+ * @param stonebound
+ * @param style
+ * @param primaryColor
+ * @return
+ */
+ public static Object generateToolMaterial(String name, String localizationString, int level, int durability, int speed, int damage, float handle, int reinforced, float stonebound, String style, int primaryColor) {
+ try {
+ Constructor constructor = mClass_ToolMaterial.getConstructor(String.class, String.class, int.class, int.class, int.class, int.class, float.class, int.class, float.class, String.class, int.class);
+ Object myObject = constructor.newInstance(name, localizationString, level, durability, speed, damage, handle, reinforced, stonebound, style, primaryColor);
+ return myObject;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ return null;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+ public static void addToolMaterial(int id, Object aToolMaterial) {
+ if (mMethodCache.get("addToolMaterial") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_TConstructRegistry, "addtoolMaterial", int.class, mClass_ToolMaterial);
+ mMethodCache.put("addToolMaterial", m);
+ }
+ try {
+ mMethodCache.get("addToolMaterial").invoke(mClass_TConstructRegistry, id, aToolMaterial);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+
+ }
+ }
+
+ public static void addDefaultToolPartMaterial(int id) {
+ if (mMethodCache.get("addDefaultToolPartMaterial") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_TConstructRegistry, "addDefaultToolPartMaterial", int.class);
+ mMethodCache.put("addDefaultToolPartMaterial", m);
+ }
+ try {
+ mMethodCache.get("addDefaultToolPartMaterial").invoke(mClass_TConstructRegistry, id);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ }
+ }
+
+ public static void addBowMaterial(int id, int drawspeed, float maxSpeed) {
+ if (mMethodCache.get("addBowMaterial") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_TConstructRegistry, "addBowMaterial", int.class, int.class, float.class);
+ mMethodCache.put("addBowMaterial", m);
+ }
+ try {
+ mMethodCache.get("addBowMaterial").invoke(mClass_TConstructRegistry, id, drawspeed, maxSpeed);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ }
+ }
+
+ public static void addArrowMaterial(int id, float mass, float fragility) {
+ if (mMethodCache.get("addArrowMaterial") == null) {
+ Method m = ReflectionUtils.getMethod(mClass_TConstructRegistry, "addArrowMaterial", int.class, float.class, float.class);
+ mMethodCache.put("addArrowMaterial", m);
+ }
+ try {
+ mMethodCache.get("addArrowMaterial").invoke(mClass_TConstructRegistry, id, mass, fragility);
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ }
+ }
+
+ public static List getTableCastingRecipes(){
+ Object aCastingTableHandlerInstance = getCastingInstance(0);
+ List aTemp;
+ try {
+ aTemp = (List) mMethod_getCastingRecipes.invoke(aCastingTableHandlerInstance, new Object[] {});
+ return aTemp;
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return new ArrayList();
+ }
+
+ public static boolean generateCastingRecipes(Material aMaterial, int aID) {
+
+ List newRecipies = new LinkedList();
+
+
+ Iterator iterator1 = getTableCastingRecipes().iterator();
+ Fluid aMoltenIron = null;
+ if (aMoltenIron == null) {
+ try {
+ aMoltenIron = (Fluid) mField_MoltenIronFluid.get(null);
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ e.printStackTrace();
+ aMoltenIron = Materials.Iron.getMolten(0).getFluid();
+ }
+ }
+ while (iterator1.hasNext()) {
+ CastingRecipeHandler recipe = new CastingRecipeHandler(iterator1.next());
+ if (recipe == null || !recipe.valid) {
+ continue;
+ }
+ try {
+ if (recipe.castingMetal.getFluid() == aMoltenIron && recipe.cast != null
+ && mClass_IPattern.isInstance(recipe.cast.getItem()) && mClass_DynamicToolPart.isInstance(recipe.getResult().getItem())) {
+ newRecipies.add(recipe);
+ }
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+
+ Object ft;
+ try {
+ ft = mMethod_getFluidType.invoke(null, aMaterial.getLocalizedName());
+ Iterator iterator2 = newRecipies.iterator();
+ while (iterator2.hasNext()) {
+ CastingRecipeHandler recipe = new CastingRecipeHandler(iterator2.next());
+ if (!recipe.valid){
+ continue;
+ }
+ //CastingRecipe recipe = (CastingRecipe) i$.next();
+ ItemStack output = recipe.getResult().copy();
+ output.setItemDamage(aID);
+ FluidStack liquid2 = new FluidStack(aMaterial.getFluid(0).getFluid(), recipe.castingMetal.amount);
+ addCastingTableRecipe(output, liquid2, recipe.cast, recipe.consumeCast, recipe.coolTime);
+ addMelting(ft, output, 0, liquid2.amount / 2);
+ }
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+
+ private static class CastingRecipeHandler {
+
+ public ItemStack output;
+ public FluidStack castingMetal;
+ public ItemStack cast;
+ public boolean consumeCast;
+ public int coolTime;
+
+ public boolean valid;
+
+ public CastingRecipeHandler(Object aCastingRecipe) {
+ if (mClass_CastingRecipe.isInstance(aCastingRecipe)) {
+ try {
+ Field aF_output = ReflectionUtils.getField(mClass_CastingRecipe, "output");
+ Field aF_castingMetal = ReflectionUtils.getField(mClass_CastingRecipe, "castingMetal");
+ Field aF_cast = ReflectionUtils.getField(mClass_CastingRecipe, "cast");
+ Field aF_consumeCast = ReflectionUtils.getField(mClass_CastingRecipe, "consumeCast");
+ Field aF_coolTime = ReflectionUtils.getField(mClass_CastingRecipe, "coolTime");
+
+ output = (ItemStack) aF_output.get(aCastingRecipe);
+ castingMetal = (FluidStack) aF_castingMetal.get(aCastingRecipe);
+ cast = (ItemStack) aF_cast.get(aCastingRecipe);
+ consumeCast = (boolean) aF_consumeCast.get(aCastingRecipe);
+ coolTime = (int) aF_coolTime.get(aCastingRecipe);
+ valid = true;
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ valid = false;
+ }
+ }
+ else {
+ valid = false;
+ }
+ }
+
+ public boolean matches(FluidStack metal, ItemStack inputCast) {
+ return this.castingMetal.isFluidEqual(metal) && (this.cast != null && this.cast.getItemDamage() == 32767
+ && inputCast.getItem() == this.cast.getItem() || ItemStack.areItemStacksEqual(this.cast, inputCast));
+ }
+
+ public ItemStack getResult() {
+ return this.output.copy();
+ }
+
}
}
diff --git a/src/Java/gtPlusPlus/xmod/witchery/WitchUtils.java b/src/Java/gtPlusPlus/xmod/witchery/WitchUtils.java
index b28ccdaa9b..9e5efb452c 100644
--- a/src/Java/gtPlusPlus/xmod/witchery/WitchUtils.java
+++ b/src/Java/gtPlusPlus/xmod/witchery/WitchUtils.java
@@ -67,20 +67,17 @@ public class WitchUtils {
}
}
- public static Field getField(String aClassName, String aFieldName) {
- Class c;
- try {
- c = Class.forName(aClassName);
- if (c != null) {
- Field f = ReflectionUtils.getField(c, aFieldName);
- if (f != null) {
- return f;
- }
- }
- } catch (ClassNotFoundException | NoSuchFieldException e) {
+ public static Field getField(String aClassName, String aFieldName) {
+ Class c;
+ c = ReflectionUtils.getClass(aClassName);
+ if (c != null) {
+ Field f = ReflectionUtils.getField(c, aFieldName);
+ if (f != null) {
+ return f;
+ }
}
return null;
- }
+ }
public static boolean isEqual(final GameProfile a, final GameProfile b) {
return a != null && b != null && a.getId() != null && b.getId() != null && a.getId().equals(b.getId());