aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core
diff options
context:
space:
mode:
authorAlkalus <draknyte1@hotmail.com>2020-04-13 23:50:26 +0000
committerAlkalus <draknyte1@hotmail.com>2020-04-13 23:50:26 +0000
commite724a728061ec4a78cff73a4a2dd46eea4af4521 (patch)
treefee3354917be32870ec349b605990a091ace9e62 /src/Java/gtPlusPlus/core
parent24b1356471191a10fde6e4f1baf58ae74e87cfba (diff)
parent87ab3c0ab5f1b682295e2a010cc88cf4ae7db51c (diff)
downloadGT5-Unofficial-e724a728061ec4a78cff73a4a2dd46eea4af4521.tar.gz
GT5-Unofficial-e724a728061ec4a78cff73a4a2dd46eea4af4521.tar.bz2
GT5-Unofficial-e724a728061ec4a78cff73a4a2dd46eea4af4521.zip
Merged in MillingRecipes (pull request #7)
Milling Recipes & many other misc fixes
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r--src/Java/gtPlusPlus/core/commands/CommandEnableDebugWhileRunning.java94
-rw-r--r--src/Java/gtPlusPlus/core/common/CommonProxy.java26
-rw-r--r--src/Java/gtPlusPlus/core/handler/EnumHelperHandler.java21
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java18
-rw-r--r--src/Java/gtPlusPlus/core/handler/events/EntityDeathHandler.java65
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java7
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java285
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java735
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java6
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java197
-rw-r--r--src/Java/gtPlusPlus/core/item/circuit/ItemAdvancedChip.java138
-rw-r--r--src/Java/gtPlusPlus/core/item/wearable/hazmat/ItemArmorHazmatEx.java31
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java23
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java8
-rw-r--r--src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java25
-rw-r--r--src/Java/gtPlusPlus/core/recipe/common/CI.java4
-rw-r--r--src/Java/gtPlusPlus/core/slots/SlotIntegratedCircuit.java18
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/general/TileEntityCircuitProgrammer.java3
-rw-r--r--src/Java/gtPlusPlus/core/util/data/AES.java1
-rw-r--r--src/Java/gtPlusPlus/core/util/data/EnumUtils.java7
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java7
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java71
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java236
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java59
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java118
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/PlayerUtils.java60
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java47
-rw-r--r--src/Java/gtPlusPlus/core/util/sys/NetworkUtils.java94
28 files changed, 1987 insertions, 417 deletions
diff --git a/src/Java/gtPlusPlus/core/commands/CommandEnableDebugWhileRunning.java b/src/Java/gtPlusPlus/core/commands/CommandEnableDebugWhileRunning.java
index 903730f767..c9cdc41424 100644
--- a/src/Java/gtPlusPlus/core/commands/CommandEnableDebugWhileRunning.java
+++ b/src/Java/gtPlusPlus/core/commands/CommandEnableDebugWhileRunning.java
@@ -7,6 +7,7 @@ import java.util.Map;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.NBTUtils;
import gtPlusPlus.core.util.minecraft.PlayerUtils;
@@ -19,6 +20,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidContainerRegistry;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.oredict.OreDictionary;
public class CommandEnableDebugWhileRunning implements ICommand
@@ -33,14 +38,14 @@ public class CommandEnableDebugWhileRunning implements ICommand
@Override
public int compareTo(final Object o){
if (o instanceof Comparable<?>) {
- @SuppressWarnings("unchecked")
- Comparable<ICommand> a = (Comparable<ICommand>) o;
- if (a.equals(this)) {
- return 0;
- }
- else {
- return -1;
- }
+ @SuppressWarnings("unchecked")
+ Comparable<ICommand> a = (Comparable<ICommand>) o;
+ if (a.equals(this)) {
+ return 0;
+ }
+ else {
+ return -1;
+ }
}
return -1;
}
@@ -66,7 +71,7 @@ public class CommandEnableDebugWhileRunning implements ICommand
@Override
public void processCommand(final ICommandSender S, final String[] argString){
- int aMaxArgumentsAllowed = 1;
+ int aMaxArgumentsAllowed = 2;
if ((argString == null || argString.length == 0 || argString.length > aMaxArgumentsAllowed) || argString[0].toLowerCase().equals("?")) {
Logger.INFO("Listing commands and their uses.");
@@ -75,6 +80,8 @@ public class CommandEnableDebugWhileRunning implements ICommand
PlayerUtils.messagePlayer(P, "The following are valid args for the '/gtpp' command:");
PlayerUtils.messagePlayer(P, "? - This help command.");
PlayerUtils.messagePlayer(P, "logging - Toggles ALL GT++ logging for current session.");
+ PlayerUtils.messagePlayer(P, "hand - Lists information about held item.");
+ PlayerUtils.messagePlayer(P, "fuid xxx - Tries to find the fluid in the FluidRegistry.");
PlayerUtils.messagePlayer(P, "debug - Toggles GT++ Debug Mode. Only use when advised, may break everything. (OP)");
}
else if (argString[0].toLowerCase().equals("debug")) {
@@ -106,13 +113,72 @@ public class CommandEnableDebugWhileRunning implements ICommand
String aItemDisplayName = ItemUtils.getItemName(aHeldItem);
String aItemUnlocalName = ItemUtils.getUnlocalizedItemName(aHeldItem);
String aNbtString = tryIterateNBTData(aHeldItem);
- PlayerUtils.messagePlayer(P, "["+aItemUnlocalName+"]"+"["+aItemDisplayName+"] "+aNbtString);
+ AutoMap<String> aOreDictNames = new AutoMap<String>();
+
+ int[] aOreIDs = OreDictionary.getOreIDs(aHeldItem);
+ for (int id : aOreIDs) {
+ String aOreNameFromID = OreDictionary.getOreName(id);
+ if (aOreNameFromID != null && aOreNameFromID.length() > 0 && !aOreNameFromID.equals("Unknown")) {
+ aOreDictNames.add(aOreNameFromID);
+ }
+ }
+
+ String aOreDictData = "";
+ if (!aOreDictNames.isEmpty()) {
+ for (String tag : aOreDictNames) {
+ aOreDictData += (tag+", ");
+ }
+ if (aOreDictData.endsWith(", ")) {
+ aOreDictData = aOreDictData.substring(0, aOreDictData.length()-2);
+ }
+ }
+
+ String aFluidContainerData = "";
+ FluidStack aHeldItemFluid = FluidContainerRegistry.getFluidForFilledItem(aHeldItem);
+ if (aHeldItemFluid != null) {
+ aFluidContainerData = "["+aHeldItemFluid.getUnlocalizedName()+"]["+aHeldItemFluid.getLocalizedName()+"]";
+ }
+
+ PlayerUtils.messagePlayer(P, "["+aItemUnlocalName+"]"+"["+aItemDisplayName+"] ");
+ if (aFluidContainerData.length() > 0) {
+ PlayerUtils.messagePlayer(P, ""+aFluidContainerData);
+ }
+ if (!aOreDictNames.isEmpty()) {
+ PlayerUtils.messagePlayer(P, ""+aOreDictData);
+ }
+ if (aNbtString.length() > 0) {
+ PlayerUtils.messagePlayer(P, ""+aNbtString);
+ }
}
else {
PlayerUtils.messagePlayer(P, "No item held.");
}
}
}
+ else if (argString[0].toLowerCase().equals("fluid")) {
+ if (argString.length > 1 && argString[1] != null && argString[1].length() > 0) {
+ final EntityPlayer P = CommandUtils.getPlayer(S);
+ FluidStack aFluid = FluidUtils.getWildcardFluidStack(argString[1], 1);
+ if (P != null && aFluid != null) {
+ PlayerUtils.messagePlayer(P, "Found fluid stack: "+FluidRegistry.getFluidName(aFluid));
+ }
+ else if (P != null && aFluid == null) {
+ PlayerUtils.messagePlayer(P, "Could not find any fluids.");
+ }
+ }
+ }
+ else if (argString[0].toLowerCase().equals("item")) {
+ if (argString.length > 1 && argString[1] != null && argString[1].length() > 0) {
+ final EntityPlayer P = CommandUtils.getPlayer(S);
+ ItemStack aTest = ItemUtils.getItemStackFromFQRN(argString[1], 1);
+ if (P != null && aTest != null) {
+ PlayerUtils.messagePlayer(P, "Found fluid stack: "+ItemUtils.getItemName(aTest));
+ }
+ else if (P != null && aTest == null) {
+ PlayerUtils.messagePlayer(P, "Could not find valid item.");
+ }
+ }
+ }
else {
final EntityPlayer P = CommandUtils.getPlayer(S);
PlayerUtils.messagePlayer(P, "Invalid command, use '?' as an argument for help.'");
@@ -134,6 +200,8 @@ public class CommandEnableDebugWhileRunning implements ICommand
aTabCompletes.add("?");
aTabCompletes.add("logging");
aTabCompletes.add("debug");
+ aTabCompletes.add("hand");
+ aTabCompletes.add("fluid");
return aTabCompletes;
}
@@ -146,7 +214,7 @@ public class CommandEnableDebugWhileRunning implements ICommand
public boolean playerUsesCommand(final World W, final EntityPlayer P, final int cost){
return true;
}
-
+
public static String tryIterateNBTData(ItemStack aStack) {
try {
AutoMap<String> aItemDataTags = new AutoMap<String>();
@@ -161,9 +229,9 @@ public class CommandEnableDebugWhileRunning implements ICommand
int a = 0;
String data = "";
for (String tag : aItemDataTags) {
- data += (tag+",");
+ data += (tag+", ");
}
- if (data.endsWith(",")) {
+ if (data.endsWith(", ")) {
data = data.substring(0, data.length()-2);
}
return data;
diff --git a/src/Java/gtPlusPlus/core/common/CommonProxy.java b/src/Java/gtPlusPlus/core/common/CommonProxy.java
index 0aeff5ae16..4dad732e25 100644
--- a/src/Java/gtPlusPlus/core/common/CommonProxy.java
+++ b/src/Java/gtPlusPlus/core/common/CommonProxy.java
@@ -1,10 +1,6 @@
package gtPlusPlus.core.common;
-import cpw.mods.fml.common.event.FMLInitializationEvent;
-import cpw.mods.fml.common.event.FMLLoadCompleteEvent;
-import cpw.mods.fml.common.event.FMLPostInitializationEvent;
-import cpw.mods.fml.common.event.FMLPreInitializationEvent;
-import cpw.mods.fml.common.event.FMLServerStartingEvent;
+import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.OrePrefixes;
@@ -19,18 +15,8 @@ import gtPlusPlus.core.entity.monster.EntityGiantChickenBase;
import gtPlusPlus.core.entity.monster.EntitySickBlaze;
import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct;
import gtPlusPlus.core.fluids.FluidFactory;
-import gtPlusPlus.core.handler.BookHandler;
-import gtPlusPlus.core.handler.BurnableFuelHandler;
-import gtPlusPlus.core.handler.COMPAT_HANDLER;
-import gtPlusPlus.core.handler.COMPAT_IntermodStaging;
-import gtPlusPlus.core.handler.GuiHandler;
-import gtPlusPlus.core.handler.StopAnnoyingFuckingAchievements;
-import gtPlusPlus.core.handler.events.BlockEventHandler;
-import gtPlusPlus.core.handler.events.EnderDragonDeathHandler;
-import gtPlusPlus.core.handler.events.EntityDeathHandler;
-import gtPlusPlus.core.handler.events.GeneralTooltipEventHandler;
-import gtPlusPlus.core.handler.events.PickaxeBlockBreakEventHandler;
-import gtPlusPlus.core.handler.events.ZombieBackupSpawnEventHandler;
+import gtPlusPlus.core.handler.*;
+import gtPlusPlus.core.handler.events.*;
import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.item.chemistry.GenericChem;
import gtPlusPlus.core.lib.CORE;
@@ -50,7 +36,6 @@ import gtPlusPlus.plugin.villagers.block.BlockGenericSpawner;
import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.xmod.eio.handler.HandlerTooltip_EIO;
import gtPlusPlus.xmod.galacticraft.handler.HandlerTooltip_GC;
-import gtPlusPlus.xmod.gregtech.HANDLER_GT;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import gtPlusPlus.xmod.gregtech.api.util.SpecialBehaviourTooltipHandler;
import net.minecraft.enchantment.Enchantment;
@@ -89,10 +74,7 @@ public class CommonProxy {
}
AddToCreativeTab.initialiseTabs();
-
- if (LoadedMods.Gregtech) {
- HANDLER_GT.addNewOrePrefixes();
- }
+ EnumHelperHandler.init();
// Moved from Init after Debug Loading.
// 29/01/18 - Alkalus
diff --git a/src/Java/gtPlusPlus/core/handler/EnumHelperHandler.java b/src/Java/gtPlusPlus/core/handler/EnumHelperHandler.java
new file mode 100644
index 0000000000..d164efa3d7
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/handler/EnumHelperHandler.java
@@ -0,0 +1,21 @@
+package gtPlusPlus.core.handler;
+
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.xmod.gregtech.HANDLER_GT;
+import gtPlusPlus.xmod.ic2.CustomInternalName;
+
+public class EnumHelperHandler {
+
+ public static void init() {
+
+ if (LoadedMods.IndustrialCraft2) {
+ CustomInternalName.init();
+ }
+
+ if (LoadedMods.Gregtech) {
+ HANDLER_GT.addNewOrePrefixes();
+ }
+
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java
index b3738e6ea2..6da2dac38b 100644
--- a/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java
+++ b/src/Java/gtPlusPlus/core/handler/events/BlockEventHandler.java
@@ -19,6 +19,7 @@ import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
@@ -87,7 +88,6 @@ public class BlockEventHandler {
}
- public static final Map<String, EntityPlayer> mCachedFakePlayers = new WeakHashMap<String, EntityPlayer>();
// Used to handle Thaumcraft Shards when TC is not installed.
@SubscribeEvent
@@ -97,21 +97,9 @@ public class BlockEventHandler {
if (event != null && event.harvester != null && event.harvester.worldObj != null) {
if (!event.harvester.worldObj.isRemote) {
- EntityPlayer p = event.harvester;
- ChunkCoordinates aChunkLocation = p.getPlayerCoordinates();
-
- // Cache Fake Player
- if (p instanceof FakePlayer || p instanceof FakeThaumcraftPlayer
- || (event.harvester.getCommandSenderName() == null
- || event.harvester.getCommandSenderName().length() <= 0)
- || (p.isEntityInvulnerable() && !p.canCommandSenderUseCommand(0, "")
- && (aChunkLocation.posX == 0 && aChunkLocation.posY == 0
- && aChunkLocation.posZ == 0))) {
- mCachedFakePlayers.put(p.getUniqueID().toString(), p);
- }
+ EntityPlayer p = event.harvester;
- if (!mCachedFakePlayers.containsKey(event.harvester.getUniqueID().toString())) {
-
+ if (PlayerUtils.isRealPlayer(p)) {
// Spawns Fluorite from Lime Stone
if (chanceToDropFluoriteOre != 0) {
if (!oreLimestone.isEmpty() || !blockLimestone.isEmpty()) {
diff --git a/src/Java/gtPlusPlus/core/handler/events/EntityDeathHandler.java b/src/Java/gtPlusPlus/core/handler/events/EntityDeathHandler.java
index c4ab6edaa6..3492ee4788 100644
--- a/src/Java/gtPlusPlus/core/handler/events/EntityDeathHandler.java
+++ b/src/Java/gtPlusPlus/core/handler/events/EntityDeathHandler.java
@@ -7,18 +7,25 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.api.objects.data.Triplet;
+import gtPlusPlus.core.item.ModItems;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
+import thaumcraft.common.lib.FakeThaumcraftPlayer;
public class EntityDeathHandler {
-
-
+
+
private static final HashMap<Class, AutoMap<Triplet<ItemStack, Integer, Integer>>> mMobDropMap = new HashMap<Class, AutoMap<Triplet<ItemStack, Integer, Integer>>>();
private static final HashSet<Class> mInternalClassKeyCache = new HashSet<Class>();
-
+
/**
* Provides the ability to provide custom drops upon the death of EntityLivingBase objects.
* @param aMobClass - The Base Class you want to drop this item.
@@ -34,15 +41,15 @@ public class EntityDeathHandler {
}
aDataMap.put(aData);
mMobDropMap.put(aMobClass, aDataMap);
-
+
Logger.INFO("[Loot] Registered "+aStack.getDisplayName()+" (1-"+aMaxAmount+") as a valid drop for "+aMobClass.getCanonicalName());
-
+
if (!mInternalClassKeyCache.contains(aMobClass)) {
mInternalClassKeyCache.add(aMobClass);
}
-
+
}
-
+
private static ItemStack processItemDropTriplet(Triplet<ItemStack, Integer, Integer> aData) {
ItemStack aLoot = aData.getValue_1();
int aMaxDrop = aData.getValue_2();
@@ -55,7 +62,7 @@ public class EntityDeathHandler {
}
return null;
}
-
+
private static boolean processDropsForMob(EntityLivingBase entityLiving) {
AutoMap<Triplet<ItemStack, Integer, Integer>> aMobData = mMobDropMap.get(entityLiving.getClass());
boolean aDidDrop = false;
@@ -74,10 +81,30 @@ public class EntityDeathHandler {
}
return aDidDrop;
}
-
-
-
-
+
+
+
+ private static void dropMeatFromPlayer(EntityPlayer aPlayer) {
+
+ // always drop some meat.
+ int aBigMeatStackSize1 = MathUtils.randInt(4, 8);
+ aPlayer.entityDropItem(ItemUtils.simpleMetaStack(ModItems.itemMetaFood, 0, aBigMeatStackSize1), MathUtils.randInt(0, 1));
+
+ // additional chances for more meat.
+ if (MathUtils.randInt(0, 10) < 7) {
+ int aBigMeatStackSize2 = MathUtils.randInt(4, 8);
+ aPlayer.entityDropItem(ItemUtils.simpleMetaStack(ModItems.itemMetaFood, 0, aBigMeatStackSize2), MathUtils.randInt(0, 1));
+ }
+ if (MathUtils.randInt(0, 10) < 4) {
+ int aBigMeatStackSize3 = MathUtils.randInt(4, 8);
+ aPlayer.entityDropItem(ItemUtils.simpleMetaStack(ModItems.itemMetaFood, 0, aBigMeatStackSize3), MathUtils.randInt(0, 1));
+ }
+ if (MathUtils.randInt(0, 10) < 2) {
+ int aBigMeatStackSize4 = MathUtils.randInt(4, 8);
+ aPlayer.entityDropItem(ItemUtils.simpleMetaStack(ModItems.itemMetaFood, 0, aBigMeatStackSize4), MathUtils.randInt(0, 1));
+ }
+
+ }
@SubscribeEvent
public void onEntityDrop(LivingDropsEvent event) {
@@ -85,10 +112,16 @@ public class EntityDeathHandler {
if (event == null || event.entityLiving == null) {
return;
}
- for (Class c : mInternalClassKeyCache) {
- if (c.isInstance(event.entityLiving)) {
- aDidDrop = processDropsForMob(event.entityLiving);
- }
+ if (PlayerUtils.isRealPlayer(event.entityLiving)) {
+ EntityPlayer aPlayer = (EntityPlayer) event.entityLiving;
+ dropMeatFromPlayer(aPlayer);
+ }
+ else {
+ for (Class c : mInternalClassKeyCache) {
+ if (c.isInstance(event.entityLiving)) {
+ aDidDrop = processDropsForMob(event.entityLiving);
+ }
+ }
}
}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java b/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java
index 3f02ca898d..e11b163753 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/AgriculturalChem.java
@@ -110,6 +110,7 @@ public class AgriculturalChem extends ItemPackage {
* 21 - Lithium Chloride
* 22 - Pellet Mold
* 23 - Clean Aluminium Mix
+ * 24 - Pinecone
*/
public static ItemStack mAlgaeBiosmass;
@@ -136,6 +137,8 @@ public class AgriculturalChem extends ItemPackage {
public static ItemStack mLithiumChloride;
public static ItemStack mPelletMold;
public static ItemStack mCleanAluminiumMix;
+ public static ItemStack mPinecone;
+ public static ItemStack mCrushedPine;
@Override
@@ -205,6 +208,8 @@ public class AgriculturalChem extends ItemPackage {
mLithiumChloride = ItemUtils.simpleMetaStack(mAgrichemItem1, 21, 1);
mPelletMold = ItemUtils.simpleMetaStack(mAgrichemItem1, 22, 1);
mCleanAluminiumMix = ItemUtils.simpleMetaStack(mAgrichemItem1, 23, 1);
+ mPinecone = ItemUtils.simpleMetaStack(mAgrichemItem1, 24, 1);
+ mCrushedPine = ItemUtils.simpleMetaStack(mAgrichemItem1, 25, 1);
ItemUtils.addItemToOreDictionary(mGreenAlgaeBiosmass, "biomassGreenAlgae");
ItemUtils.addItemToOreDictionary(mBrownAlgaeBiosmass, "biomassBrownAlgae");
@@ -231,6 +236,8 @@ public class AgriculturalChem extends ItemPackage {
ItemUtils.addItemToOreDictionary(mSodiumHydroxide, "dustSodiumHydroxide");
ItemUtils.addItemToOreDictionary(mSodiumCarbonate, "dustSodiumCarbonate");
ItemUtils.addItemToOreDictionary(mLithiumChloride, "dustLithiumChloride");
+ ItemUtils.addItemToOreDictionary(mPinecone, "pinecone");
+ ItemUtils.addItemToOreDictionary(mCrushedPine, "crushedPineMaterial");
//Handle GT NaOH dusts
List<ItemStack> NaOHSmall = OreDictionary.getOres("dustSmallSodiumHydroxide_GT5U", false);
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java b/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java
index ff55326031..80a51d80cc 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/GenericChem.java
@@ -1,33 +1,26 @@
package gtPlusPlus.core.item.chemistry;
-import static gtPlusPlus.core.lib.CORE.GTNH;
-
-import gregtech.api.enums.GT_Values;
-import gregtech.api.enums.TextureSet;
+import gregtech.api.enums.*;
+import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.minecraft.ItemPackage;
import gtPlusPlus.core.item.chemistry.general.ItemGenericChemBase;
+import gtPlusPlus.core.item.circuit.ItemAdvancedChip;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.material.ELEMENT;
-import gtPlusPlus.core.material.MISC_MATERIALS;
-import gtPlusPlus.core.material.Material;
-import gtPlusPlus.core.material.MaterialGenerator;
-import gtPlusPlus.core.material.MaterialStack;
-import gtPlusPlus.core.material.NONMATERIAL;
+import gtPlusPlus.core.material.*;
import gtPlusPlus.core.material.state.MaterialState;
import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
import gtPlusPlus.plugin.agrichem.BioRecipes;
import gtPlusPlus.plugin.agrichem.block.AgrichemFluids;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidRegistry;
-import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.*;
public class GenericChem extends ItemPackage {
@@ -37,6 +30,7 @@ public class GenericChem extends ItemPackage {
private static boolean usingGregtechNitricOxide = false;
private static boolean usingGregtechNitrogenDioxide = false;
+ private static boolean usingGregtechHydricSulfur = false;
/**
* Materials
@@ -94,6 +88,8 @@ public class GenericChem extends ItemPackage {
public static Fluid Lithium_Peroxide;
public static Fluid Nitric_Oxide;
public static Fluid Nitrogen_Dioxide;
+ public static Fluid Carbon_Disulfide;
+ public static Fluid Hydrogen_Sulfide;
/**
* Items
@@ -102,6 +98,7 @@ public class GenericChem extends ItemPackage {
// Phenol Byproducts
public Item PhenolicResins; //https://en.wikipedia.org/wiki/Phenol_formaldehyde_resin
public static ItemGenericChemBase mGenericChemItem1;
+ public static Item mAdvancedCircuit;
private ItemStack mCatalystCarrier;
@@ -115,6 +112,11 @@ public class GenericChem extends ItemPackage {
public static ItemStack mMillingBallAlumina;
public static ItemStack mMillingBallSoapstone;
+
+ public static ItemStack mSodiumEthoxide;
+ public static ItemStack mSodiumEthylXanthate;
+ public static ItemStack mPotassiumEthylXanthate;
+ public static ItemStack mPotassiumHydroxide;
@@ -125,7 +127,9 @@ public class GenericChem extends ItemPackage {
MaterialGenerator.generate(NYLON, false);
MaterialGenerator.generate(TEFLON, false);
- mGenericChemItem1 = new ItemGenericChemBase();
+ mGenericChemItem1 = new ItemGenericChemBase();
+ mAdvancedCircuit = new ItemAdvancedChip();
+ GregtechItemList.Circuit_T3RecipeSelector.set(mAdvancedCircuit);
registerItemStacks();
registerOreDict();
@@ -149,6 +153,10 @@ public class GenericChem extends ItemPackage {
mPinkCatalyst = ItemUtils.simpleMetaStack(mGenericChemItem1, 6, 1);
mMillingBallAlumina = ItemUtils.simpleMetaStack(mGenericChemItem1, 7, 1);
mMillingBallSoapstone = ItemUtils.simpleMetaStack(mGenericChemItem1, 8, 1);
+ mSodiumEthoxide = ItemUtils.simpleMetaStack(mGenericChemItem1, 9, 1);
+ mSodiumEthylXanthate = ItemUtils.simpleMetaStack(mGenericChemItem1, 10, 1);
+ mPotassiumEthylXanthate = ItemUtils.simpleMetaStack(mGenericChemItem1, 11, 1);
+ mPotassiumHydroxide = ItemUtils.simpleMetaStack(mGenericChemItem1, 12, 1);
}
@@ -163,6 +171,10 @@ public class GenericChem extends ItemPackage {
ItemUtils.addItemToOreDictionary(mPinkCatalyst, "catalystPlatinumRhodium");
ItemUtils.addItemToOreDictionary(mMillingBallAlumina, "millingballAlumina");
ItemUtils.addItemToOreDictionary(mMillingBallSoapstone, "millingballSoapstone");
+ ItemUtils.addItemToOreDictionary(mSodiumEthoxide, "dustSodiumEthoxide");
+ ItemUtils.addItemToOreDictionary(mSodiumEthylXanthate, "dustSodiumEthylXanthate");
+ ItemUtils.addItemToOreDictionary(mPotassiumEthylXanthate, "dustPotassiumEthylXanthate");
+ ItemUtils.addItemToOreDictionary(mPotassiumHydroxide, "dustPotassiumHydroxide");
}
@@ -241,8 +253,30 @@ public class GenericChem extends ItemPackage {
//Lithium Peroxide - 2 LiOOH → Li2O2 + H2O2 + 2 H2O
Lithium_Peroxide = FluidUtils.generateFluidNonMolten("LithiumPeroxide", "Lithium Peroxide", 446, new short[]{135, 135, 135, 100}, null, null);
-
-
+ Carbon_Disulfide = FluidUtils.generateFluidNoPrefix("CarbonDisulfide", "Carbon Disulfide", 350, new short[]{175, 175, 175, 100});
+
+ if (FluidRegistry.isFluidRegistered("fluid.liquid_hydricsulfur") || MaterialUtils.doesMaterialExist("HydricSulfide")) {
+ usingGregtechHydricSulfur = true;
+ Fluid aFluid = null;
+ if (ItemUtils.doesItemListEntryExist("sHydricSulfur")) {
+ ItemStack aListItem = ItemUtils.getValueOfItemList("sHydricSulfur", 1, (ItemList) null);
+ if (aListItem != null) {
+ FluidStack aFluidStack = FluidContainerRegistry.getFluidForFilledItem(aListItem);
+ if (aFluidStack != null) {
+ aFluid = aFluidStack.getFluid();
+ }
+
+ }
+ }
+ if (aFluid == null) {
+ aFluid = FluidUtils.getWildcardFluidStack("liquid_hydricsulfur", 1000).getFluid();
+ }
+ Hydrogen_Sulfide = aFluid;
+ }
+ else {
+ Hydrogen_Sulfide = FluidUtils.generateFluidNoPrefix("HydrogenSulfide", "Hydrogen Sulfide", 446, new short[]{240, 130, 30, 100});
+ }
+
}
@Override
@@ -253,6 +287,7 @@ public class GenericChem extends ItemPackage {
@Override
public boolean generateRecipes() {
+ recipeAdvancedChip();
recipeCatalystRed();
recipeCatalystYellow();
recipeCatalystBlue();
@@ -281,17 +316,173 @@ public class GenericChem extends ItemPackage {
if (!usingGregtechNitrogenDioxide) {
recipeNitrogenDioxide();
}
+ if (!usingGregtechHydricSulfur) {
+ recipeHydricSulfur();
+ }
// Add recipes if we are not using GT's fluid.
if (!FluidRegistry.isFluidRegistered("hydrochloricacid_gt5u")) {
recipeHydrochloricAcid();
}
+
+ recipeSodiumEthoxide();
+ recipeCarbonDisulfide();
+ recipeEthylXanthates();
+ recipePotassiumHydroxide();
+
registerFuels();
return true;
}
+ private void recipeSodiumEthoxide() {
+ //2 C2H5OH + 2 Na → 2 C2H5ONa + H2
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(16),
+ ELEMENT.getInstance().SODIUM.getDust(2)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(BioRecipes.mEthanol, 1000),
+ },
+ new ItemStack[] {
+ ItemUtils.getSimpleStack(mSodiumEthoxide, 2)
+
+ },
+ new FluidStack[] {
+ ELEMENT.getInstance().HYDROGEN.getFluid(2000)
+ },
+ 20 *20,
+ 120,
+ 2);
+ }
+
+
+ private void recipePotassiumHydroxide() {
+ //Ca(OH)2 + K2CO3 → CaCO3 + 2 KOH
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(18),
+ ELEMENT.getInstance().POTASSIUM.getDust(4),
+ ELEMENT.getInstance().CARBON.getDust(2),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 2),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack("oxygen", 6000),
+ },
+ new ItemStack[] {
+ ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumCarbonate", 2),
+ ItemUtils.getSimpleStack(mPotassiumHydroxide, 4)
+
+ },
+ new FluidStack[] {
+
+ },
+ 20 *30,
+ 120,
+ 2);
+
+ }
+
+
+ private void recipeEthylXanthates() {
+
+ //Potassium ethyl xanthate - CH3CH2OH + CS2 + KOH → CH3CH2OCS2K + H2O
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(17),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustCalciumHydroxide", 2),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(BioRecipes.mEthanol, 1000),
+ FluidUtils.getFluidStack(Carbon_Disulfide, 1000),
+ },
+ new ItemStack[] {
+ ItemUtils.getSimpleStack(mPotassiumEthylXanthate, 1)
+ },
+ new FluidStack[] {
+ FluidUtils.getWater(1000)
+ },
+ 20 *60,
+ 120,
+ 2);
+
+ //Sodium ethyl xanthate - CH3CH2ONa + CS2 → CH3CH2OCS2Na
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(17),
+ ItemUtils.getSimpleStack(mSodiumEthoxide, 1)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(Carbon_Disulfide, 1000),
+ },
+ new ItemStack[] {
+ ItemUtils.getSimpleStack(mSodiumEthylXanthate, 1)
+ },
+ new FluidStack[] {
+
+ },
+ 20 *60,
+ 120,
+ 2);
+
+ }
+
+
+ private void recipeHydricSulfur() {
+
+ ItemStack aCellHydricSulfide = ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogenSulfide", 1);
+ GT_Values.RA.addChemicalRecipe( ELEMENT.getInstance().SULFUR.getDust(1), GT_Utility.getIntegratedCircuit(1), ELEMENT.getInstance().HYDROGEN.getFluid(2000), FluidUtils.getFluidStack(Hydrogen_Sulfide, 3000), GT_Values.NI, 60, 8);
+ GT_Values.RA.addChemicalRecipeForBasicMachineOnly(ELEMENT.getInstance().SULFUR.getDust(1), CI.emptyCells(3), ELEMENT.getInstance().HYDROGEN.getFluid(2000), GT_Values.NF, ItemUtils.getSimpleStack(aCellHydricSulfide, 3), GT_Values.NI, 60, 8);
+
+ }
+
+
+ private void recipeCarbonDisulfide() {
+
+ CORE.RA.addBlastRecipe(
+ new ItemStack[] {
+ ItemUtils.getItemStackOfAmountFromOreDict("fuelCoke", 8),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustSulfur", 16)
+ },
+ new FluidStack[] {
+
+ },
+ new ItemStack[] {
+ ItemUtils.getItemStackOfAmountFromOreDict("dustDarkAsh", 1)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(Carbon_Disulfide, 4000)
+ },
+ 20 *60 * 10,
+ 30,
+ 1500);
+
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(20),
+ ItemUtils.getSimpleStack(mBrownCatalyst, 0),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustSulfur", 4)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(CoalTar.Coal_Gas, 1000),
+ },
+ new ItemStack[] {
+
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(Carbon_Disulfide, 2000),
+ FluidUtils.getFluidStack(Hydrogen_Sulfide, 4000)
+ },
+ 20 *60 * 5,
+ 30,
+ 2);
+
+
+ }
+
+
private static void registerFuels() {
// Burnables
@@ -859,18 +1050,72 @@ public class GenericChem extends ItemPackage {
private static final ItemStack getTierOneChip() {
- return CI.getNumberedBioCircuit(4);
+ return CI.getNumberedAdvancedCircuit(4);
}
private static final ItemStack getTierTwoChip() {
- return CI.getNumberedBioCircuit(8);
+ return CI.getNumberedAdvancedCircuit(8);
}
private static final ItemStack getTierThreeChip() {
- return CI.getNumberedBioCircuit(12);
+ return CI.getNumberedAdvancedCircuit(12);
}
private static final ItemStack getTierFourChip() {
- return CI.getNumberedBioCircuit(16);
+ return CI.getNumberedAdvancedCircuit(16);
}
+ private static void recipeAdvancedChip() {
+ GT_ModHandler.addShapelessCraftingRecipe(
+ GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 0L), 0, new Object[]{OrePrefixes.circuit.get(Materials.Advanced)});
+
+ long bits = 0;
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 1L, new Object[0]), bits,
+ new Object[]{"d ", " P ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 2L, new Object[0]), bits,
+ new Object[]{" d ", " P ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 3L, new Object[0]), bits,
+ new Object[]{" d", " P ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 4L, new Object[0]), bits,
+ new Object[]{" ", " Pd", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 5L, new Object[0]), bits,
+ new Object[]{" ", " P ", " d", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 6L, new Object[0]), bits,
+ new Object[]{" ", " P ", " d ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 7L, new Object[0]), bits,
+ new Object[]{" ", " P ", "d ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 8L, new Object[0]), bits,
+ new Object[]{" ", "dP ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 9L, new Object[0]), bits,
+ new Object[]{"P d", " ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 10L, new Object[0]), bits,
+ new Object[]{"P ", " d", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 11L, new Object[0]), bits,
+ new Object[]{"P ", " ", " d", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 12L, new Object[0]), bits,
+ new Object[]{"P ", " ", " d ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 13L, new Object[0]), bits,
+ new Object[]{" P", " ", " d", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 14L, new Object[0]), bits,
+ new Object[]{" P", " ", " d ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 15L, new Object[0]), bits,
+ new Object[]{" P", " ", "d ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 16L, new Object[0]), bits,
+ new Object[]{" P", "d ", " ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 17L, new Object[0]), bits,
+ new Object[]{" ", " ", "d P", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 18L, new Object[0]), bits,
+ new Object[]{" ", "d ", " P", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 19L, new Object[0]), bits,
+ new Object[]{"d ", " ", " P", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 20L, new Object[0]), bits,
+ new Object[]{" d ", " ", " P", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 21L, new Object[0]), bits,
+ new Object[]{"d ", " ", "P ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 22L, new Object[0]), bits,
+ new Object[]{" d ", " ", "P ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 23L, new Object[0]), bits,
+ new Object[]{" d", " ", "P ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ BioRecipes.addCraftingRecipe(GregtechItemList.Circuit_T3RecipeSelector.getWithDamage(1L, 24L, new Object[0]), bits,
+ new Object[]{" ", " d", "P ", 'P', GregtechItemList.Circuit_T3RecipeSelector.getWildcard(1L, new Object[0])});
+ }
}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java b/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
index 426f48ecf9..71bf2f3e6f 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
@@ -1,56 +1,104 @@
package gtPlusPlus.core.item.chemistry;
+import java.util.HashMap;
+
import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_OreDictUnificator;
+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.api.objects.data.Quad;
import gtPlusPlus.api.objects.minecraft.ItemPackage;
import gtPlusPlus.core.item.base.ore.BaseItemMilledOre;
-import gtPlusPlus.core.util.minecraft.FluidUtils;
-import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.NONMATERIAL;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.*;
+import gtPlusPlus.xmod.bop.HANDLER_BiomesOPlenty;
+import gtPlusPlus.xmod.bop.blocks.BOP_Block_Registrator;
import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
public class MilledOreProcessing extends ItemPackage {
/**
* Fluids
*/
-
- public static Fluid ZincFlotationFroth;
- public static Fluid CopperFlotationFroth;
+
+ public static Fluid SphaleriteFlotationFroth;
+ public static Fluid ChalcopyriteFlotationFroth;
public static Fluid NickelFlotationFroth;
public static Fluid PlatinumFlotationFroth;
public static Fluid PentlanditeFlotationFroth;
-
-
+
+ public static Fluid RedstoneFlotationFroth;
+ public static Fluid SpessartineFlotationFroth;
+ public static Fluid GrossularFlotationFroth;
+ public static Fluid AlmandineFlotationFroth;
+ public static Fluid PyropeFlotationFroth;
+
+ public static Fluid PineOil;
+
+
/**
* Items
*/
// Zinc, Iron, Indium, Germanium
public static Item milledSphalerite;
-
+
// Copper, Iron, Cadmium, Indium
public static Item milledChalcopyrite;
-
+
// Nickel, Cobalt, Rhodium, Ruthenium
public static Item milledNickel;
-
+
// Platinum, Rhodium, Selenium, Tellurium
public static Item milledPlatinum;
// Iron, Nickel, Promethium, Hafnium
public static Item milledPentlandite;
-
+
+
+
+
+ // Redstone, Chrome, Firestone, Dysprosium
+ public static Item milledRedstone;
+
+ // Manganese, Aluminium, Osmium, Strontium
+ public static Item milledSpessartine;
+
+ // Calcium, Aluminium, Tungsten, Thallium
+ public static Item milledGrossular;
+
+ // Aluminium, Magnesium, Yttrium, Ytterbium
+ public static Item milledAlmandine;
+
+ // Magnesium, Manganese, Borax, Rhenium
+ public static Item milledPyrope;
+
@Override
public void items() {
- milledSphalerite = BaseItemMilledOre.generate(Materials.Sphalerite, MaterialUtils.getVoltageForTier(5));
- milledChalcopyrite = BaseItemMilledOre.generate(Materials.Chalcopyrite, MaterialUtils.getVoltageForTier(4));
- milledNickel = BaseItemMilledOre.generate(Materials.Nickel, MaterialUtils.getVoltageForTier(4));
- milledPlatinum = BaseItemMilledOre.generate(Materials.Platinum, MaterialUtils.getVoltageForTier(5));
- milledPentlandite = BaseItemMilledOre.generate(Materials.Pentlandite, MaterialUtils.getVoltageForTier(5));
-
+ milledSphalerite = BaseItemMilledOre.generate(Materials.Sphalerite, MaterialUtils.getVoltageForTier(6));
+ milledChalcopyrite = BaseItemMilledOre.generate(Materials.Chalcopyrite, MaterialUtils.getVoltageForTier(5));
+ milledNickel = BaseItemMilledOre.generate(Materials.Nickel, MaterialUtils.getVoltageForTier(5));
+ milledPlatinum = BaseItemMilledOre.generate(Materials.Platinum, MaterialUtils.getVoltageForTier(6));
+ milledPentlandite = BaseItemMilledOre.generate(Materials.Pentlandite, MaterialUtils.getVoltageForTier(6));
+
+ milledRedstone = BaseItemMilledOre.generate(Materials.Redstone, MaterialUtils.getVoltageForTier(5));
+ milledSpessartine = BaseItemMilledOre.generate(Materials.Spessartine, MaterialUtils.getVoltageForTier(6));
+ milledGrossular = BaseItemMilledOre.generate(Materials.Grossular, MaterialUtils.getVoltageForTier(6));
+ milledAlmandine = BaseItemMilledOre.generate(Materials.Almandine, MaterialUtils.getVoltageForTier(6));
+ milledPyrope = BaseItemMilledOre.generate(Materials.Pyrope, MaterialUtils.getVoltageForTier(4));
+
}
@Override
@@ -60,11 +108,11 @@ public class MilledOreProcessing extends ItemPackage {
@Override
public void fluids() {
-
+
short[] aZincFrothRGB = Materials.Sphalerite.mRGBa;
- ZincFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.zincflotation", "Zinc Froth", 32 + 175, new short[] { aZincFrothRGB[0], aZincFrothRGB[1], aZincFrothRGB[2], 100 }, true);
+ SphaleriteFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.zincflotation", "Sphalerite Froth", 32 + 175, new short[] { aZincFrothRGB[0], aZincFrothRGB[1], aZincFrothRGB[2], 100 }, true);
short[] aCopperFrothRGB = Materials.Chalcopyrite.mRGBa;
- CopperFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.copperflotation", "Copper Froth", 32 + 175, new short[] { aCopperFrothRGB[0], aCopperFrothRGB[1], aCopperFrothRGB[2], 100 }, true);
+ ChalcopyriteFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.copperflotation", "Chalcopyrite Froth", 32 + 175, new short[] { aCopperFrothRGB[0], aCopperFrothRGB[1], aCopperFrothRGB[2], 100 }, true);
short[] aNickelFrothRGB = Materials.Nickel.mRGBa;
NickelFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.nickelflotation", "Nickel Froth", 32 + 175, new short[] { aNickelFrothRGB[0], aNickelFrothRGB[1], aNickelFrothRGB[2], 100 }, true);
short[] aPlatinumFrothRGB = Materials.Platinum.mRGBa;
@@ -72,9 +120,23 @@ public class MilledOreProcessing extends ItemPackage {
short[] aPentlanditeFrothRGB = Materials.Pentlandite.mRGBa;
PentlanditeFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.pentlanditeflotation", "Pentlandite Froth", 32 + 175, new short[] { aPentlanditeFrothRGB[0], aPentlanditeFrothRGB[1], aPentlanditeFrothRGB[2], 100 }, true);
+ short[] aRedstoneFrothRGB = Materials.Redstone.mRGBa;
+ RedstoneFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.redstoneflotation", "Redstone Froth", 32 + 175, new short[] { aRedstoneFrothRGB[0], aRedstoneFrothRGB[1], aRedstoneFrothRGB[2], 100 }, true);
+ short[] aSpessartineFrothRGB = Materials.Spessartine.mRGBa;
+ SpessartineFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.spessartineflotation", "Spessartine Froth", 32 + 175, new short[] { aSpessartineFrothRGB[0], aSpessartineFrothRGB[1], aSpessartineFrothRGB[2], 100 }, true);
+ short[] aGrossularFrothRGB = Materials.Grossular.mRGBa;
+ GrossularFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.grossularflotation", "Grossular Froth", 32 + 175, new short[] { aGrossularFrothRGB[0], aGrossularFrothRGB[1], aGrossularFrothRGB[2], 100 }, true);
+ short[] aAlmandineFrothRGB = Materials.Almandine.mRGBa;
+ AlmandineFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.almandineflotation", "Almandine Froth", 32 + 175, new short[] { aAlmandineFrothRGB[0], aAlmandineFrothRGB[1], aAlmandineFrothRGB[2], 100 }, true);
+ short[] aPyropeFrothRGB = Materials.Pyrope.mRGBa;
+ PyropeFlotationFroth = FluidUtils.generateFluidNoPrefix("froth.pyropeflotation", "Pyrope Froth", 32 + 175, new short[] { aPyropeFrothRGB[0], aPyropeFrothRGB[1], aPyropeFrothRGB[2], 100 }, true);
+
+
+ PineOil = FluidUtils.generateFluidNoPrefix("pineoil", "Pine Oil", 32 + 175, new short[] { 250, 200, 60, 100 }, true);
+
}
-
-
+
+
public MilledOreProcessing() {
super();
@@ -83,20 +145,95 @@ public class MilledOreProcessing extends ItemPackage {
private static void addMiscRecipes() {
- /*GT_Values.RA.addCentrifugeRecipe(
- CI.getNumberedBioCircuit(10),
- GT_Values.NI,
- FluidUtils.getFluidStack(MilledOreProcessing.ZincFlotationFroth, 1000),
- FluidUtils.getWater(500),
- ELEMENT.getInstance().IRON.getSmallDust(1),
- ELEMENT.getInstance().COPPER.getSmallDust(1),
- ELEMENT.getInstance().TIN.getSmallDust(1),
- ELEMENT.getInstance().SULFUR.getSmallDust(1),
- ELEMENT.getInstance().NICKEL.getTinyDust(1),
- ELEMENT.getInstance().LEAD.getTinyDust(1),
- new int[] { 3000, 3000, 2000, 2000, 1000, 1000 },
- 30 * 20,
- 30);*/
+ /*
+ * First 5
+ */
+
+ //milledSphalerite
+ registerOreDataForMilledType(
+ SphaleriteFlotationFroth,
+ ELEMENT.getInstance().ZINC, 180,
+ ELEMENT.getInstance().IRON, 120,
+ ELEMENT.getInstance().INDIUM, 40,
+ ELEMENT.getInstance().GERMANIUM, 15
+ );
+ //milledChalcopyrite
+ registerOreDataForMilledType(
+ ChalcopyriteFlotationFroth,
+ ELEMENT.getInstance().COPPER, 180,
+ ELEMENT.getInstance().IRON, 120,
+ ELEMENT.getInstance().CADMIUM, 50,
+ ELEMENT.getInstance().INDIUM, 10
+ );
+ //milledNickel
+ registerOreDataForMilledType(
+ NickelFlotationFroth,
+ ELEMENT.getInstance().NICKEL, 150,
+ ELEMENT.getInstance().COBALT, 120,
+ ELEMENT.getInstance().RHODIUM, 32,
+ ELEMENT.getInstance().RUTHENIUM, 16
+ );
+ //milledPlatinum
+ registerOreDataForMilledType(
+ PlatinumFlotationFroth,
+ ELEMENT.getInstance().PLATINUM, 120,
+ ELEMENT.getInstance().RHODIUM, 60,
+ ELEMENT.getInstance().SELENIUM, 40,
+ ELEMENT.getInstance().TELLURIUM, 10
+ );
+ //milledPentlandite
+ registerOreDataForMilledType(
+ PentlanditeFlotationFroth,
+ ELEMENT.getInstance().IRON, 150,
+ ELEMENT.getInstance().NICKEL, 100,
+ ELEMENT.getInstance().PROMETHIUM, 20,
+ ELEMENT.getInstance().HAFNIUM, 10
+ );
+
+ /*
+ * Second 5
+ */
+ //milledRedstone
+ registerOreDataForMilledType(
+ RedstoneFlotationFroth,
+ NONMATERIAL.REDSTONE, 300,
+ ELEMENT.getInstance().CHROMIUM, 60,
+ MaterialUtils.generateMaterialFromGtENUM(Materials.Firestone), 45,
+ ELEMENT.getInstance().DYSPROSIUM, 16
+ );
+ //milledSpessartine
+ registerOreDataForMilledType(
+ SpessartineFlotationFroth,
+ ELEMENT.getInstance().MANGANESE, 150,
+ ELEMENT.getInstance().ALUMINIUM, 90,
+ ELEMENT.getInstance().OSMIUM, 30,
+ ELEMENT.getInstance().STRONTIUM, 20
+ );
+ //milledGrossular
+ registerOreDataForMilledType(
+ GrossularFlotationFroth,
+ ELEMENT.getInstance().CALCIUM, 180,
+ ELEMENT.getInstance().ALUMINIUM, 110,
+ ELEMENT.getInstance().TUNGSTEN, 60,
+ ELEMENT.getInstance().THALLIUM, 15
+ );
+ //milledAlmandine
+ registerOreDataForMilledType(
+ AlmandineFlotationFroth,
+ ELEMENT.getInstance().ALUMINIUM, 150,
+ ELEMENT.getInstance().MAGNESIUM, 75,
+ ELEMENT.getInstance().YTTRIUM, 25,
+ ELEMENT.getInstance().YTTERBIUM, 15
+ );
+ //milledPyrope
+ registerOreDataForMilledType(
+ PyropeFlotationFroth,
+ ELEMENT.getInstance().MAGNESIUM, 110,
+ ELEMENT.getInstance().MANGANESE, 70,
+ MaterialUtils.generateMaterialFromGtENUM(Materials.Borax), 60,
+ ELEMENT.getInstance().RHENIUM, 20
+ );
+
}
@@ -108,6 +245,532 @@ public class MilledOreProcessing extends ItemPackage {
@Override
public boolean generateRecipes() {
addMiscRecipes();
+ addPineOilExtraction();
+ addFlotationRecipes1();
+ addFlotationRecipes2();
+ addVacuumFurnaceRecipes();
return true;
}
+
+ private void addVacuumFurnaceRecipes() {
+ int aCircuitID = 1;
+
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(SphaleriteFlotationFroth, 4000)
+ },
+ getOutputsFromMap(SphaleriteFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(ChalcopyriteFlotationFroth, 4000)
+ },
+ getOutputsFromMap(ChalcopyriteFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(5),
+ 4500);
+
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(NickelFlotationFroth, 4000)
+ },
+ getOutputsFromMap(NickelFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(5),
+ 4500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PlatinumFlotationFroth, 4000)
+ },
+ getOutputsFromMap(PlatinumFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PentlanditeFlotationFroth, 4000)
+ },
+ getOutputsFromMap(PentlanditeFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+
+
+
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(RedstoneFlotationFroth, 4000)
+ },
+ getOutputsFromMap(RedstoneFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(5),
+ 4500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(SpessartineFlotationFroth, 4000)
+ },
+ getOutputsFromMap(SpessartineFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(GrossularFlotationFroth, 4000)
+ },
+ getOutputsFromMap(GrossularFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AlmandineFlotationFroth, 4000)
+ },
+ getOutputsFromMap(AlmandineFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(6),
+ 5500);
+ CORE.RA.addVacuumFurnaceRecipe(
+ new ItemStack[] {
+ CI.getNumberedCircuit(aCircuitID++)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PyropeFlotationFroth, 4000)
+ },
+ getOutputsFromMap(PyropeFlotationFroth),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AgriculturalChem.RedMud, 2000),
+ FluidUtils.getWater(2000)
+ },
+ 20 * 120,
+ MaterialUtils.getVoltageForTier(4),
+ 3500);
+
+ }
+
+ private void addFlotationRecipes1() {
+
+ // Sphalerite
+ CORE.RA.addFlotationRecipe(
+ Materials.Sphalerite,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 14000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(SphaleriteFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(6)
+ );
+
+ // Chalcopyrite
+ CORE.RA.addFlotationRecipe(
+ Materials.Chalcopyrite,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 12000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(ChalcopyriteFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(5)
+ );
+
+ // Nickel
+ CORE.RA.addFlotationRecipe(
+ Materials.Nickel,
+ ItemUtils.getSimpleStack(GenericChem.mPotassiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 25000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(NickelFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(5)
+ );
+
+ // Platinum
+ CORE.RA.addFlotationRecipe(
+ Materials.Platinum,
+ ItemUtils.getSimpleStack(GenericChem.mPotassiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 35000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PlatinumFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(6)
+ );
+
+
+ // Pentlandite
+ CORE.RA.addFlotationRecipe(
+ Materials.Pentlandite,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 14000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PentlanditeFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(6)
+ );
+
+ }
+
+ private void addFlotationRecipes2() {
+
+ // Redstone
+ CORE.RA.addFlotationRecipe(
+ Materials.Redstone,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 13000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(RedstoneFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(5)
+ );
+
+ // Spessartine
+ CORE.RA.addFlotationRecipe(
+ Materials.Spessartine,
+ ItemUtils.getSimpleStack(GenericChem.mPotassiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 35000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(SpessartineFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(6)
+ );
+
+ // Grossular
+ CORE.RA.addFlotationRecipe(
+ Materials.Grossular,
+ ItemUtils.getSimpleStack(GenericChem.mPotassiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 28000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(GrossularFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(6)
+ );
+
+ // Almandine
+ CORE.RA.addFlotationRecipe(
+ Materials.Almandine,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 18000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(AlmandineFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(5)
+ );
+
+ // Pyrope
+ CORE.RA.addFlotationRecipe(
+ Materials.Pyrope,
+ ItemUtils.getSimpleStack(GenericChem.mSodiumEthylXanthate, 1),
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 8000),
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PyropeFlotationFroth, 1000)
+ },
+ 20 * 1200,
+ MaterialUtils.getVoltageForTier(4)
+ );
+
+ }
+
+ private void addPineOilExtraction() {
+ AutoMap<ItemStack> aLogs = new AutoMap<ItemStack>();
+ AutoMap<ItemStack> aLeaves = new AutoMap<ItemStack>();
+ AutoMap<ItemStack> aSaplings = new AutoMap<ItemStack>();
+ AutoMap<ItemStack> aPinecones = new AutoMap<ItemStack>();
+
+ ItemStack aCrushedPine = ItemUtils.getSimpleStack(AgriculturalChem.mCrushedPine, 1);
+
+ aLogs.add(ItemUtils.getSimpleStack(BOP_Block_Registrator.log_Pine));
+ aLeaves.add(ItemUtils.getSimpleStack(BOP_Block_Registrator.leaves_Pine));
+ aSaplings.add(ItemUtils.getSimpleStack(BOP_Block_Registrator.sapling_Pine));
+ aPinecones.add(ItemUtils.getSimpleStack(AgriculturalChem.mPinecone, 1));
+
+ if (LoadedMods.BiomesOPlenty) {
+ aLogs.add(HANDLER_BiomesOPlenty.getStack(HANDLER_BiomesOPlenty.logs4, 0, 1));
+ aLeaves.add(HANDLER_BiomesOPlenty.getStack(HANDLER_BiomesOPlenty.colorizedLeaves2, 1, 1));
+ aSaplings.add(HANDLER_BiomesOPlenty.getStack(HANDLER_BiomesOPlenty.colorizedSaplings, 5, 1));
+ aPinecones.add(ItemUtils.simpleMetaStack(HANDLER_BiomesOPlenty.mPineCone, 13, 1));
+ }
+ if (LoadedMods.Forestry) {
+ ItemStack aForestryLog = ItemUtils.getItemStackFromFQRN("Forestry:logs", 1);
+ if (aForestryLog != null) {
+ aForestryLog.setItemDamage(20); // Set to Pine
+ aLogs.add(aForestryLog);
+ }
+ ItemStack aForestryLeaves = ItemUtils.getItemStackFromFQRN("Forestry:leaves", 1);
+ if (aForestryLeaves != null) {
+ NBTUtils.setString(aForestryLeaves, "species", "forestry.treePine"); // Set to Pine
+ aLeaves.add(aForestryLeaves);
+ }
+ }
+
+ for (ItemStack aLog : aLogs) {
+ addRecipe(aLog, ItemUtils.getSimpleStack(aCrushedPine, 16), new int[] {10000, 7500, 5000, 2500}, 10, 120);
+ }
+ for (ItemStack aLeaf : aLeaves) {
+ addRecipe(aLeaf, ItemUtils.getSimpleStack(aCrushedPine, 2), new int[] {5000, 5000, 2500, 2500}, 10, 30);
+ }
+ for (ItemStack aSapling : aSaplings) {
+ addRecipe(aSapling, ItemUtils.getSimpleStack(aCrushedPine, 4), new int[] {7500, 7500, 2500, 2500}, 10, 60);
+ }
+ for (ItemStack aCone : aPinecones) {
+ addRecipe(aCone, ItemUtils.getSimpleStack(aCrushedPine, 1), new int[] {7500, 7500, 5000, 2500}, 10, 60);
+ }
+
+
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedAdvancedCircuit(16),
+ ItemUtils.getSimpleStack(aCrushedPine, 64)
+ },
+ new FluidStack[] {
+ FluidUtils.getSteam(5000),
+ },
+ new ItemStack[] {
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyDarkAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyDarkAsh", 5)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 500)
+ },
+ new int[] {
+ 2000, 2000, 2000, 2000
+ },
+ 20 * 60,
+ 120,
+ 2);
+
+ CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedAdvancedCircuit(18),
+ ItemUtils.getSimpleStack(aCrushedPine, 64)
+ },
+ new FluidStack[] {
+ FluidUtils.getSuperHeatedSteam(5000),
+ },
+ new ItemStack[] {
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyDarkAsh", 5),
+ ItemUtils.getItemStackOfAmountFromOreDict("dustTinyDarkAsh", 5)
+ },
+ new FluidStack[] {
+ FluidUtils.getFluidStack(PineOil, 1500)
+ },
+ new int[] {
+ 3000, 3000, 3000, 3000
+ },
+ 20 * 45,
+ 120,
+ 3);
+
+ }
+
+ public boolean addRecipe(ItemStack aInput, ItemStack aOutput1, int[] aChances, int aTime, int aEU) {
+ aOutput1 = GT_OreDictUnificator.get(true, aOutput1);
+ ItemStack aOutputs[] = new ItemStack[4];
+ for (int i=0;i<aChances.length;i++) {
+ aOutputs[i] = aOutput1;
+ }
+ aOutputs = cleanArray(aOutputs);
+ if ((GT_Utility.isStackInvalid(aInput)) || (GT_Utility.isStackInvalid(aOutput1) || (GT_Utility.getContainerItem(aInput, false) != null))) {
+ return false;
+ }
+
+ return CORE.RA.addChemicalPlantRecipe(
+ new ItemStack[] {
+ CI.getNumberedAdvancedCircuit(14),
+ aInput
+ },
+ new FluidStack[] {
+
+ },
+ aOutputs,
+ new FluidStack[] {
+
+ },
+ aChances,
+ aTime * 20,
+ aEU,
+ 1);
+ }
+
+ public static ItemStack[] cleanArray(ItemStack[] input) {
+ int aArraySize = input.length;
+ AutoMap<ItemStack> aCleanedItems = new AutoMap<ItemStack>();
+ for (ItemStack checkStack : input) {
+ if (ItemUtils.checkForInvalidItems(checkStack)) {
+ aCleanedItems.put(checkStack);
+ }
+ }
+ ItemStack[] aOutput = new ItemStack[aCleanedItems.size()];
+ for (int i=0;i<aArraySize;i++) {
+ ItemStack aMappedStack = aCleanedItems.get(i);
+ if (aMappedStack != null){
+ aOutput[i] = aMappedStack;
+ }
+ }
+ return aOutput;
+ }
+
+ private static final HashMap<String, Quad<Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>>> aMilledFluidMap = new HashMap<String, Quad<Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>>>();
+
+ public static void registerOreDataForMilledType(Fluid aMilledFluid, Materials aOutput1, int aPerc1, Materials aOutput2, int aPerc2, Materials aOutput3, int aPerc3, Materials aOutput4, int aPerc4) {
+ registerOreDataForMilledType(aMilledFluid, MaterialUtils.generateMaterialFromGtENUM(aOutput1), aPerc1, MaterialUtils.generateMaterialFromGtENUM(aOutput2), aPerc2, MaterialUtils.generateMaterialFromGtENUM(aOutput3), aPerc3, MaterialUtils.generateMaterialFromGtENUM(aOutput4), aPerc4);
+ }
+
+ public static void registerOreDataForMilledType(Fluid aMilledFluid, Material aOutput1, int aPerc1, Material aOutput2, int aPerc2, Material aOutput3, int aPerc3, Material aOutput4, int aPerc4) {
+
+ Pair<Material, Integer> aFluidOutput1 = new Pair<Material, Integer>(aOutput1, aPerc1);
+ Pair<Material, Integer> aFluidOutput2 = new Pair<Material, Integer>(aOutput2, aPerc2);
+ Pair<Material, Integer> aFluidOutput3 = new Pair<Material, Integer>(aOutput3, aPerc3);
+ Pair<Material, Integer> aFluidOutput4 = new Pair<Material, Integer>(aOutput4, aPerc4);
+ Quad<Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>> aDataQuad = new Quad<Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>>(aFluidOutput1, aFluidOutput2, aFluidOutput3, aFluidOutput4);
+ aMilledFluidMap.put(aMilledFluid.getUnlocalizedName(), aDataQuad);
+
+ }
+
+ private static ItemStack[] getOutputsFromMap(Fluid aFluid) {
+ String aKey = aFluid.getUnlocalizedName();
+ return getArrayFromQuad(aMilledFluidMap.get(aKey));
+ }
+
+ private static ItemStack[] getArrayFromQuad(Quad<Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>, Pair<Material, Integer>> aData) {
+ AutoMap<ItemStack> aOutputs = new AutoMap<ItemStack>();
+ for (Object aPair : aData.values()) {
+ if (aPair != null && Pair.class.isInstance(aPair)) {
+ Pair aObj = (Pair) aPair;
+ Material aMat = (Material) aObj.getKey();
+ int aCount = (int) aObj.getValue();
+ aOutputs.addAll(getItemStackFromPair(aMat, aCount));
+ }
+ }
+ ItemStack[] aRealOutputArray = new ItemStack[aOutputs.size()];
+ int aIndex = 0;
+ for (ItemStack aStack : aOutputs) {
+ aRealOutputArray[aIndex++] = aStack;
+ }
+ return aRealOutputArray;
+ }
+
+ private static AutoMap<ItemStack> getItemStackFromPair(Material aMat, Integer aCount) {
+ AutoMap<ItemStack> aOutputs = new AutoMap<ItemStack>();
+ if (aCount > 64) {
+ AutoMap<Integer> sizes = getStackSizes(aCount);
+ for (int aSplitSize : sizes) {
+ ItemStack aDustStack = aMat.getDust(aSplitSize);
+ aOutputs.put(aDustStack);
+ }
+ }
+ else {
+ ItemStack aDustStack = aMat.getDust(aCount);
+ aOutputs.put(aDustStack);
+ }
+ return aOutputs;
+ }
+
+ private static AutoMap<Integer> getStackSizes(int aBigSize){
+ AutoMap<Integer> aSizes = new AutoMap<Integer>();
+ if (aBigSize <= 64) {
+ aSizes.add(aBigSize);
+ }
+ else {
+ for (int i = aBigSize; i > 0; i -= 64) {
+ aSizes.add(i);
+ }
+ }
+ return aSizes;
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
index 459acb31b9..7745f50010 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/RocketFuels.java
@@ -185,7 +185,7 @@ public class RocketFuels extends ItemPackage {
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(21),
+ CI.getNumberedAdvancedCircuit(21),
},
new FluidStack[] {
FluidUtils.getFluidStack("ammonia", 4000),
@@ -220,7 +220,7 @@ public class RocketFuels extends ItemPackage {
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(21),
+ CI.getNumberedAdvancedCircuit(21),
ItemUtils.getSimpleStack(Formaldehyde_Catalyst, 0),
},
new FluidStack[] {
@@ -258,7 +258,7 @@ public class RocketFuels extends ItemPackage {
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(21),
+ CI.getNumberedAdvancedCircuit(21),
ItemUtils.getSimpleStack(Formaldehyde_Catalyst, 0),
},
new FluidStack[] {
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java b/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
index 7fb5f207f6..ed17f8547a 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
@@ -3,6 +3,8 @@ package gtPlusPlus.core.item.chemistry.general;
import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.item.chemistry.GenericChem;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -12,6 +14,8 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
@@ -19,7 +23,7 @@ public class ItemGenericChemBase extends Item {
final protected IIcon base[];
- final private int aMetaSize = 9;
+ final private int aMetaSize = 13;
/*
* 0 - Red Metal Catalyst //FeCu
@@ -31,6 +35,10 @@ public class ItemGenericChemBase extends Item {
* 6 - Pink Metal Catalyst //PtRh
* 7 - Alumina Grinding Ball
* 8 - Soapstone Grinding Ball
+ * 9 - Sodium Ethoxide // 2 Sodium + 1 Ethanol | 2 C2H5OH + 2 Na → 2 C2H5ONa + H2
+ * 10 - Sodium Ethyl Xanthate //CH3CH2ONa + CS2 → CH3CH2OCS2Na
+ * 11 - Potassium Ethyl Xanthate //CH3CH2OH + CS2 + KOH → CH3CH2OCS2K + H2O
+ * 12 - Potassium Hydroxide // KOH
*/
public ItemGenericChemBase() {
@@ -44,6 +52,14 @@ public class ItemGenericChemBase extends Item {
}
@Override
+ public int getItemStackLimit(ItemStack stack) {
+ if (ItemUtils.isMillingBall(stack)) {
+ return 16;
+ }
+ return super.getItemStackLimit(stack);
+ }
+
+ @Override
public boolean isDamageable() {
return false;
}
@@ -64,17 +80,6 @@ public class ItemGenericChemBase extends Item {
}
@Override
- public void addInformation(ItemStack aStack, EntityPlayer p_77624_2_, List aList, boolean p_77624_4_) {
- try {
-
- }
- catch (Throwable t) {
- t.printStackTrace();
- }
- super.addInformation(aStack, p_77624_2_, aList, p_77624_4_);
- }
-
- @Override
public EnumRarity getRarity(ItemStack p_77613_1_) {
return EnumRarity.common;
}
@@ -112,11 +117,6 @@ public class ItemGenericChemBase extends Item {
}
@Override
- public boolean showDurabilityBar(ItemStack stack) {
- return false;
- }
-
- @Override
public int getItemEnchantability() {
return 0;
}
@@ -161,4 +161,167 @@ public class ItemGenericChemBase extends Item {
}
+
+ @Override
+ public double getDurabilityForDisplay(ItemStack aStack) {
+ if (ItemUtils.isMillingBall(aStack)) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()){
+ createMillingBallNBT(aStack);
+ }
+ double currentDamage = getMillingBallDamage(aStack);
+ double durabilitypercent = currentDamage / 100;
+ return durabilitypercent;
+ }
+ else if (ItemUtils.isCatalyst(aStack)) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()){
+ createCatalystNBT(aStack);
+ }
+ double currentDamage = getCatalystDamage(aStack);
+ double durabilitypercent = currentDamage / 100;
+ return durabilitypercent;
+ }
+ else {
+ return 1D;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer player, List list, boolean bool) {
+ boolean aHasSpecialTooltips = false;
+ int aMaxDamage = 0;
+ int aDamageSegment = 0;
+ int aDam = 0;
+ EnumChatFormatting durability = EnumChatFormatting.GRAY;
+ if (ItemUtils.isMillingBall(aStack)) {
+ list.add(EnumChatFormatting.GRAY+"Tumble Tumble Tumble");
+ aMaxDamage = getMillingBallMaxDamage(aStack);
+ aDamageSegment = aMaxDamage / 5;
+ aDam = aMaxDamage-getMillingBallDamage(aStack);
+ aHasSpecialTooltips = true;
+ }
+ if (ItemUtils.isCatalyst(aStack)) {
+ list.add(EnumChatFormatting.GRAY+"Active Reaction Agent");
+ aMaxDamage = getCatalystMaxDamage(aStack);
+ aDamageSegment = aMaxDamage / 5;
+ aDam = aMaxDamage-getCatalystDamage(aStack);
+ aHasSpecialTooltips = true;
+ }
+ if (aHasSpecialTooltips) {
+ if (aDam > aDamageSegment * 4){
+ durability = EnumChatFormatting.GRAY;
+ }
+ else if (aDam > aDamageSegment * 3){
+ durability = EnumChatFormatting.GREEN;
+ }
+ else if (aDam > aDamageSegment * 2){
+ durability = EnumChatFormatting.YELLOW;
+ }
+ else if (aDam > aDamageSegment){
+ durability = EnumChatFormatting.GOLD;
+ }
+ else if (aDam > 0){
+ durability = EnumChatFormatting.RED;
+ }
+ list.add(durability+""+(aDam)+EnumChatFormatting.GRAY+" / "+aMaxDamage);
+ }
+ super.addInformation(aStack, player, list, bool);
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack aStack) {
+ if (ItemUtils.isMillingBall(aStack)) {
+ int aDam = getMillingBallDamage(aStack);
+ if (aDam > 0) {
+ return true;
+ }
+ }
+ else if (ItemUtils.isCatalyst(aStack)) {
+ int aDam = getCatalystDamage(aStack);
+ if (aDam > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean createMillingBallNBT(ItemStack rStack){
+ final NBTTagCompound tagMain = new NBTTagCompound();
+ final NBTTagCompound tagNBT = new NBTTagCompound();
+ tagNBT.setLong("Damage", 0);
+ tagNBT.setLong("MaxDamage", getMaxBallDurability(rStack));
+ tagMain.setTag("MillingBall", tagNBT);
+ rStack.setTagCompound(tagMain);
+ return true;
+ }
+
+ public static int getMillingBallDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createMillingBallNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("MillingBall").getInteger("Damage");
+ }
+
+ public static int getMillingBallMaxDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createMillingBallNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("MillingBall").getInteger("MaxDamage");
+ }
+
+ public static void setMillingBallDamage(ItemStack aStack,int aAmount) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ aNBT = aNBT.getCompoundTag("MillingBall");
+ aNBT.setInteger("Damage", aAmount);
+ }
+
+ public static int getMaxBallDurability(ItemStack aStack) {
+ if (GT_Utility.areStacksEqual(aStack, GenericChem.mMillingBallAlumina, true)) {
+ return 100;
+ }
+ if (GT_Utility.areStacksEqual(aStack, GenericChem.mMillingBallSoapstone, true)) {
+ return 50;
+ }
+ return 0;
+ }
+
+ public static boolean createCatalystNBT(ItemStack rStack){
+ final NBTTagCompound tagMain = new NBTTagCompound();
+ final NBTTagCompound tagNBT = new NBTTagCompound();
+ tagNBT.setLong("Damage", 0);
+ tagNBT.setLong("MaxDamage", getMaxCatalystDurability(rStack));
+ tagMain.setTag("catalyst", tagNBT);
+ rStack.setTagCompound(tagMain);
+ return true;
+ }
+
+ public static int getCatalystDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createCatalystNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("catalyst").getInteger("Damage");
+ }
+
+ public static int getCatalystMaxDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createCatalystNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("catalyst").getInteger("MaxDamage");
+ }
+
+ public static void setCatalystDamage(ItemStack aStack,int aAmount) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ aNBT = aNBT.getCompoundTag("catalyst");
+ aNBT.setInteger("Damage", aAmount);
+ }
+
+ public static int getMaxCatalystDurability(ItemStack aStack) {
+ return 50;
+ }
+
+
}
diff --git a/src/Java/gtPlusPlus/core/item/circuit/ItemAdvancedChip.java b/src/Java/gtPlusPlus/core/item/circuit/ItemAdvancedChip.java
new file mode 100644
index 0000000000..c375c32952
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/circuit/ItemAdvancedChip.java
@@ -0,0 +1,138 @@
+package gtPlusPlus.core.item.circuit;
+
+import java.util.List;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.EnumRarity;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class ItemAdvancedChip extends Item {
+
+ protected IIcon base;
+
+ public ItemAdvancedChip() {
+ this.setHasSubtypes(true);
+ this.setNoRepair();
+ this.setMaxStackSize(64);
+ this.setMaxDamage(0);
+ this.setUnlocalizedName("T3RecipeSelector");
+ GameRegistry.registerItem(this, this.getUnlocalizedName());
+ }
+
+ @Override
+ public boolean isDamageable() {
+ return false;
+ }
+
+ @Override
+ public boolean shouldRotateAroundWhenRendering() {
+ return super.shouldRotateAroundWhenRendering();
+ }
+
+ @Override
+ public void onUpdate(ItemStack p_77663_1_, World p_77663_2_, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) {
+ super.onUpdate(p_77663_1_, p_77663_2_, p_77663_3_, p_77663_4_, p_77663_5_);
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack aStack) {
+ return super.getItemStackDisplayName(aStack);
+ }
+
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer p_77624_2_, List aList, boolean p_77624_4_) {
+ try {
+ aList.add("Configuration == "+aStack.getItemDamage());
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
+ super.addInformation(aStack, p_77624_2_, aList, p_77624_4_);
+ }
+
+ @Override
+ public EnumRarity getRarity(ItemStack p_77613_1_) {
+ return EnumRarity.common;
+ }
+
+ @Override
+ public void getSubItems(Item aItem, CreativeTabs p_150895_2_, List aList) {
+ aList.add(ItemUtils.simpleMetaStack(aItem, 0, 1));
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) {
+ return false;
+ }
+
+ @Override
+ public boolean isRepairable() {
+ return false;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
+ return false;
+ }
+
+ @Override
+ public int getDisplayDamage(ItemStack stack) {
+ return stack.getItemDamage();
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack stack) {
+ return false;
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public int getItemEnchantability(ItemStack stack) {
+ return 0;
+ }
+
+ @Override
+ public void registerIcons(final IIconRegister u) {
+ this.base = u.registerIcon(CORE.MODID + ":" + "science/general/AdvancedCircuit");
+ }
+
+ @Override
+ public IIcon getIconFromDamageForRenderPass(final int damage, final int pass) {
+ return this.base;
+ }
+
+ @Override
+ public IIcon getIconFromDamage(int damage) {
+ return this.base;
+ }
+
+ @Override
+ public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) {
+ return this.base;
+ }
+
+ @Override
+ public IIcon getIcon(ItemStack stack, int pass) {
+ return this.base;
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack stack) {
+ return super.getUnlocalizedName();
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/item/wearable/hazmat/ItemArmorHazmatEx.java b/src/Java/gtPlusPlus/core/item/wearable/hazmat/ItemArmorHazmatEx.java
new file mode 100644
index 0000000000..1f8009e54a
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/wearable/hazmat/ItemArmorHazmatEx.java
@@ -0,0 +1,31 @@
+package gtPlusPlus.core.item.wearable.hazmat;
+
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.ic2.CustomInternalName;
+import ic2.core.IC2;
+import ic2.core.init.InternalName;
+import ic2.core.item.armor.ItemArmorHazmat;
+import net.minecraft.entity.Entity;
+import net.minecraft.item.ItemStack;
+
+public class ItemArmorHazmatEx extends ItemArmorHazmat {
+
+ public static void init() {
+ GregtechItemList.Armour_Hazmat_Advanced_Helmet.set(new ItemStack(new ItemArmorHazmatEx(CustomInternalName.aHazmatHelmetEx, 0)));
+ GregtechItemList.Armour_Hazmat_Advanced_Chest.set(new ItemStack(new ItemArmorHazmatEx(CustomInternalName.aHazmatChestEx, 1)));
+ GregtechItemList.Armour_Hazmat_Advanced_Legs.set(new ItemStack(new ItemArmorHazmatEx(CustomInternalName.aHazmatLegsEx, 2)));
+ GregtechItemList.Armour_Hazmat_Advanced_Boots.set(new ItemStack(new ItemArmorHazmatEx(CustomInternalName.aHazmatBootsEx, 3)));
+ }
+
+ private ItemArmorHazmatEx(InternalName internalName, int type) {
+ super(internalName, type);
+ this.setMaxDamage(256);
+ }
+
+ @Override
+ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
+ int suffix = this.armorType == 2 ? 2 : 1;
+ return IC2.textureDomain + ":textures/armor/" + "hazmatEx_" + suffix + ".png";
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index 7d49a8d635..dee064353a 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -3,11 +3,7 @@ package gtPlusPlus.core.material;
import static gregtech.api.enums.GT_Values.M;
import static gtPlusPlus.core.util.math.MathUtils.safeCast_LongToInt;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
@@ -1304,6 +1300,23 @@ public class Material {
}
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (!Material.class.isInstance(obj)) {
+ return false;
+ }
+ Material aObj = (Material) obj;
+ if (aObj.unlocalizedName.equals(this.unlocalizedName)) {
+ if (aObj.localizedName.equals(this.localizedName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public boolean registerComponentForMaterial(FluidStack aStack) {
return registerComponentForMaterial(this, aStack);
}
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
index 1561f4b475..ea1bcdb9de 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
@@ -120,7 +120,7 @@ public class RECIPES_GREGTECH {
// Advanced method for Nitric Acid Production
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(17),
+ CI.getNumberedAdvancedCircuit(17),
CI.getPinkCatalyst(0),
},
new FluidStack[] {
@@ -140,7 +140,7 @@ public class RECIPES_GREGTECH {
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(16),
+ CI.getNumberedAdvancedCircuit(16),
CI.getPinkCatalyst(0),
},
new FluidStack[] {
@@ -161,7 +161,7 @@ public class RECIPES_GREGTECH {
// Produce Boric Acid
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedCircuit(21),
+ CI.getNumberedAdvancedCircuit(21),
ItemUtils.getItemStackOfAmountFromOreDict("dustBorax", 4),
},
new FluidStack[] {
@@ -182,7 +182,7 @@ public class RECIPES_GREGTECH {
// Produce Th232
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedCircuit(22),
+ CI.getNumberedAdvancedCircuit(22),
ELEMENT.getInstance().THORIUM.getDust(16)
},
new FluidStack[] {
diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
index ebc2c07a63..387f7bef65 100644
--- a/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
+++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_Machines.java
@@ -265,6 +265,21 @@ public class RECIPES_Machines {
GregtechItemList.ChemicalPlant_Controller.get(1),
120 * 20,
MaterialUtils.getVoltageForTier(2));
+
+
+ CORE.RA.addSixSlotAssemblingRecipe(
+ new ItemStack[] {
+ CI.getNumberedBioCircuit(15),
+ CI.getTieredGTPPMachineCasing(1, 2),
+ ItemList.Hatch_Input_Bus_MV.get(1),
+ CI.getTieredComponentOfMaterial(Materials.Bronze, OrePrefixes.gearGt, 8),
+ CI.getTieredComponentOfMaterial(Materials.Lead, OrePrefixes.plate, 48),
+ CI.getTieredComponentOfMaterial(Materials.SolderingAlloy, OrePrefixes.wireFine, 16),
+ },
+ ALLOY.BRONZE.getFluid(2 * (144 * 4)),
+ GregtechItemList.Bus_Catalysts.get(1),
+ 60 * 20,
+ MaterialUtils.getVoltageForTier(2));
}
@@ -301,7 +316,7 @@ public class RECIPES_Machines {
CORE.RA.addChemicalPlantRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(19),
+ CI.getNumberedAdvancedCircuit(19),
ItemList.Distillation_Tower.get(2),
GregtechItemList.GTPP_Casing_IV.get(16),
CI.getTieredComponent(OrePrefixes.circuit, 6, 8)
@@ -340,7 +355,7 @@ public class RECIPES_Machines {
}
CORE.RA.addSixSlotAssemblingRecipe(
new ItemStack[] {
- CI.getNumberedBioCircuit(21),
+ CI.getNumberedAdvancedCircuit(21),
CI.getElectricPiston(i, 10),
CI.getFieldGenerator(i + 1, 6),
CI.getPlate(i, 16),
@@ -917,7 +932,7 @@ public class RECIPES_Machines {
CI.getGear(1, GTNH ? 4 : 2)
};
aSemiFluidInputs[1] = new ItemStack[]{
- CI.getNumberedBioCircuit(14),
+ CI.getNumberedCircuit(14),
CI.getTieredMachineHull(2, 1),
CI.getElectricPiston(2, GTNH ? 4 : 2),
CI.getTieredComponent(OrePrefixes.circuit, 2, GTNH ? 4 : 2),
@@ -925,7 +940,7 @@ public class RECIPES_Machines {
CI.getGear(2, GTNH ? 4 : 2)
};
aSemiFluidInputs[2] = new ItemStack[]{
- CI.getNumberedBioCircuit(14),
+ CI.getNumberedAdvancedCircuit(14),
CI.getTieredMachineHull(3, 1),
CI.getElectricPiston(3, GTNH ? 4 : 2),
CI.getTieredComponent(OrePrefixes.circuit, 3, GTNH ? 4 : 2),
@@ -2268,7 +2283,7 @@ public class RECIPES_Machines {
CORE.RA.addSixSlotAssemblingRecipe(
new ItemStack[] {
- GregtechItemList.Casing_Vacuum_Furnace.get(Casing_Amount),
+ GregtechItemList.Casing_Vacuum_Furnace.get(aCostMultiplier),
CI.getTieredComponent(OrePrefixes.wireGt16, 7, 4 * aCostMultiplier),
CI.getEnergyCore(6, 1 * aCostMultiplier),
CI.getRobotArm(4, 4 * aCostMultiplier),
diff --git a/src/Java/gtPlusPlus/core/recipe/common/CI.java b/src/Java/gtPlusPlus/core/recipe/common/CI.java
index d67a372572..93ede378a8 100644
--- a/src/Java/gtPlusPlus/core/recipe/common/CI.java
+++ b/src/Java/gtPlusPlus/core/recipe/common/CI.java
@@ -1235,6 +1235,10 @@ public class CI {
return ItemUtils.simpleMetaStack(AgriculturalChem.mBioCircuit, i, 0);
}
+ public static ItemStack getNumberedAdvancedCircuit(int i) {
+ return ItemUtils.simpleMetaStack(GenericChem.mAdvancedCircuit, i, 0);
+ }
+
public static ItemStack getTieredGTPPMachineCasing(int aTier, int aAmount) {
GregtechItemList[] aHulls = new GregtechItemList[] {
GregtechItemList.GTPP_Casing_ULV,
diff --git a/src/Java/gtPlusPlus/core/slots/SlotIntegratedCircuit.java b/src/Java/gtPlusPlus/core/slots/SlotIntegratedCircuit.java
index 48b050d678..19795a41e4 100644
--- a/src/Java/gtPlusPlus/core/slots/SlotIntegratedCircuit.java
+++ b/src/Java/gtPlusPlus/core/slots/SlotIntegratedCircuit.java
@@ -11,6 +11,7 @@ public class SlotIntegratedCircuit extends Slot {
public static Item mCircuitItem;
public static Item mCircuitItem2;
+ public static Item mCircuitItem3;
private final short mCircuitLock;
public SlotIntegratedCircuit(final IInventory inventory, final int slot, final int x, final int y) {
@@ -44,9 +45,12 @@ public class SlotIntegratedCircuit extends Slot {
if (mCircuitItem2 == null) {
mCircuitItem2 = CI.getNumberedBioCircuit(0).getItem();
}
- if (mCircuitItem != null && mCircuitItem2 != null) {
+ if (mCircuitItem3 == null) {
+ mCircuitItem3 = CI.getNumberedAdvancedCircuit(0).getItem();
+ }
+ if (mCircuitItem != null && mCircuitItem2 != null && mCircuitItem3 != null) {
if (itemstack != null) {
- if (itemstack.getItem() == mCircuitItem || itemstack.getItem() == mCircuitItem2) {
+ if (itemstack.getItem() == mCircuitItem || itemstack.getItem() == mCircuitItem2 || itemstack.getItem() == mCircuitItem3) {
if (aLockedCircuitNumber == -1) {
isValid = true;
}
@@ -73,7 +77,10 @@ public class SlotIntegratedCircuit extends Slot {
if (mCircuitItem2 == null) {
mCircuitItem2 = CI.getNumberedBioCircuit(0).getItem();
}
- if (mCircuitItem != null && mCircuitItem2 != null) {
+ if (mCircuitItem3 == null) {
+ mCircuitItem3 = CI.getNumberedAdvancedCircuit(0).getItem();
+ }
+ if (mCircuitItem != null && mCircuitItem2 != null && mCircuitItem3 != null) {
if (itemstack != null) {
if (itemstack.getItem() == mCircuitItem || itemstack.getItem() == mCircuitItem2) {
if (itemstack.getItem() == mCircuitItem) {
@@ -81,7 +88,10 @@ public class SlotIntegratedCircuit extends Slot {
}
else if (itemstack.getItem() == mCircuitItem2) {
return 1;
- }
+ }
+ else if (itemstack.getItem() == mCircuitItem3) {
+ return 2;
+ }
}
}
}
diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityCircuitProgrammer.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityCircuitProgrammer.java
index 23ad2a3233..835d9da2cd 100644
--- a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityCircuitProgrammer.java
+++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityCircuitProgrammer.java
@@ -110,6 +110,9 @@ public class TileEntityCircuitProgrammer extends TileEntity implements ISidedInv
else if (aTypeInSlot == 1) {
aOutput = CI.getNumberedBioCircuit(e);
}
+ else if (aTypeInSlot == 2) {
+ aOutput = CI.getNumberedAdvancedCircuit(e);
+ }
else {
aOutput = null;
}
diff --git a/src/Java/gtPlusPlus/core/util/data/AES.java b/src/Java/gtPlusPlus/core/util/data/AES.java
new file mode 100644
index 0000000000..1183cdd8e7
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/util/data/AES.java
@@ -0,0 +1 @@
+\u0070\u0061\u0063\u006b\u0061\u0067\u0065\u0020\u0067\u0074\u0050\u006c\u0075\u0073\u0050\u006c\u0075\u0073\u002e\u0063\u006f\u0072\u0065\u002e\u0075\u0074\u0069\u006c\u002e\u0064\u0061\u0074\u0061\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u0069\u006f\u002e\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u006d\u0061\u0074\u0068\u002e\u0042\u0069\u0067\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u006e\u0069\u006f\u002e\u0063\u0068\u0061\u0072\u0073\u0065\u0074\u002e\u0053\u0074\u0061\u006e\u0064\u0061\u0072\u0064\u0043\u0068\u0061\u0072\u0073\u0065\u0074\u0073\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u0073\u0065\u0063\u0075\u0072\u0069\u0074\u0079\u002e\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u0073\u0065\u0063\u0075\u0072\u0069\u0074\u0079\u002e\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0041\u0072\u0072\u0061\u0079\u0073\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0042\u0061\u0073\u0065\u0036\u0034\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u0078\u002e\u0063\u0072\u0079\u0070\u0074\u006f\u002e\u0043\u0069\u0070\u0068\u0065\u0072\u003b\u000d\u000a\u0069\u006d\u0070\u006f\u0072\u0074\u0020\u006a\u0061\u0076\u0061\u0078\u002e\u0063\u0072\u0079\u0070\u0074\u006f\u002e\u0073\u0070\u0065\u0063\u002e\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u003b\u000d\u000a\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0063\u006c\u0061\u0073\u0073\u0020\u0041\u0045\u0053\u0020\u007b\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u003b\u003b\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u003b\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u006b\u0065\u0079\u003b\u0009\u000d\u000a\u0009\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0041\u0045\u0053\u0028\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0074\u0068\u0069\u0073\u0028\u0022\u0044\u0061\u0072\u006b\u006e\u0065\u0073\u0073\u0020\u0049\u006e\u0020\u0054\u0068\u0065\u0069\u0072\u0020\u0048\u0065\u0061\u0072\u0074\u0073\u0022\u0029\u003b\u0009\u0009\u000d\u000a\u0009\u007d\u0009\u000d\u000a\u0009\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0041\u0045\u0053\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0053\u0065\u0063\u0072\u0065\u0074\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0073\u0065\u0063\u0072\u0065\u0074\u0020\u003d\u0020\u0061\u0053\u0065\u0063\u0072\u0065\u0074\u003b\u000d\u000a\u0009\u0009\u006b\u0065\u0079\u0020\u003d\u0020\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0067\u0065\u0074\u0048\u0061\u0073\u0068\u0065\u0064\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0073\u0065\u0063\u0072\u0065\u0074\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0020\u003d\u0020\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u004b\u0065\u0079\u0028\u006b\u0065\u0079\u0029\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0067\u0065\u0074\u0048\u0061\u0073\u0068\u0065\u0064\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0053\u0074\u0072\u0069\u006e\u0067\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0074\u006f\u0048\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0067\u0065\u0074\u0053\u0048\u0041\u0028\u0061\u0053\u0074\u0072\u0069\u006e\u0067\u0029\u0029\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0067\u0065\u0074\u0053\u0048\u0041\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0070\u0075\u0074\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u0020\u006d\u0064\u003b\u000d\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u006d\u0064\u0020\u003d\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0053\u0048\u0041\u002d\u0032\u0035\u0036\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006d\u0064\u002e\u0064\u0069\u0067\u0065\u0073\u0074\u0028\u0069\u006e\u0070\u0075\u0074\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0053\u0074\u0061\u006e\u0064\u0061\u0072\u0064\u0043\u0068\u0061\u0072\u0073\u0065\u0074\u0073\u002e\u0055\u0054\u0046\u005f\u0038\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0065\u002e\u0070\u0072\u0069\u006e\u0074\u0053\u0074\u0061\u0063\u006b\u0054\u0072\u0061\u0063\u0065\u0028\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0065\u0077\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u007b\u007d\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0073\u0074\u0061\u0074\u0069\u0063\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0074\u006f\u0048\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0068\u0061\u0073\u0068\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0042\u0069\u0067\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0042\u0069\u0067\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0028\u0031\u002c\u0020\u0068\u0061\u0073\u0068\u0029\u003b\u000d\u000a\u0009\u0009\u0053\u0074\u0072\u0069\u006e\u0067\u0042\u0075\u0069\u006c\u0064\u0065\u0072\u0020\u0068\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u003d\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0042\u0075\u0069\u006c\u0064\u0065\u0072\u0028\u006e\u0075\u006d\u0062\u0065\u0072\u002e\u0074\u006f\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0031\u0036\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u0077\u0068\u0069\u006c\u0065\u0020\u0028\u0068\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u006c\u0065\u006e\u0067\u0074\u0068\u0028\u0029\u0020\u003c\u0020\u0033\u0032\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0068\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0069\u006e\u0073\u0065\u0072\u0074\u0028\u0030\u002c\u0020\u0027\u0030\u0027\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0068\u0065\u0078\u0053\u0074\u0072\u0069\u006e\u0067\u002e\u0074\u006f\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0029\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u004b\u0065\u0079\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0061\u004b\u0065\u0079\u0044\u0061\u0074\u0061\u003b\u000d\u000a\u0009\u0009\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u0020\u0073\u0068\u0061\u003b\u000d\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0073\u0068\u0061\u0020\u003d\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0053\u0048\u0041\u002d\u0032\u0035\u0036\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0073\u0068\u0061\u002e\u0064\u0069\u0067\u0065\u0073\u0074\u0028\u0061\u004b\u0065\u0079\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0053\u0074\u0061\u006e\u0064\u0061\u0072\u0064\u0043\u0068\u0061\u0072\u0073\u0065\u0074\u0073\u002e\u0055\u0054\u0046\u005f\u0038\u0029\u0029\u003b\u0020\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0031\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0065\u0031\u002e\u0070\u0072\u0069\u006e\u0074\u0053\u0074\u0061\u0063\u006b\u0054\u0072\u0061\u0063\u0065\u0028\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0009\u0061\u004b\u0065\u0079\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u0061\u004b\u0065\u0079\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0022\u0055\u0054\u0046\u002d\u0038\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0009\u0073\u0068\u0061\u0020\u003d\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u0044\u0069\u0067\u0065\u0073\u0074\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0053\u0048\u0041\u002d\u0031\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0009\u0061\u004b\u0065\u0079\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u0073\u0068\u0061\u002e\u0064\u0069\u0067\u0065\u0073\u0074\u0028\u006b\u0065\u0079\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0009\u0061\u004b\u0065\u0079\u0044\u0061\u0074\u0061\u0020\u003d\u0020\u0041\u0072\u0072\u0061\u0079\u0073\u002e\u0063\u006f\u0070\u0079\u004f\u0066\u0028\u006b\u0065\u0079\u002c\u0020\u0031\u0036\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0061\u004b\u0065\u0079\u0044\u0061\u0074\u0061\u003b\u000d\u000a\u0009\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u004e\u006f\u0053\u0075\u0063\u0068\u0041\u006c\u0067\u006f\u0072\u0069\u0074\u0068\u006d\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0009\u0065\u002e\u0070\u0072\u0069\u006e\u0074\u0053\u0074\u0061\u0063\u006b\u0054\u0072\u0061\u0063\u0065\u0028\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0009\u0065\u002e\u0070\u0072\u0069\u006e\u0074\u0053\u0074\u0061\u0063\u006b\u0054\u0072\u0061\u0063\u0065\u0028\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u007d\u0009\u0009\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0065\u0077\u0020\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u007b\u007d\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0072\u0069\u0076\u0061\u0074\u0065\u0020\u0066\u0069\u006e\u0061\u006c\u0020\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u0020\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u004b\u0065\u0079\u0028\u0062\u0079\u0074\u0065\u005b\u005d\u0020\u0061\u004b\u0065\u0079\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0065\u0077\u0020\u0053\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0053\u0070\u0065\u0063\u0028\u0061\u004b\u0065\u0079\u002c\u0020\u0022\u0041\u0045\u0053\u0022\u0029\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0074\u0072\u0054\u006f\u0045\u006e\u0063\u0072\u0079\u0070\u0074\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0043\u0069\u0070\u0068\u0065\u0072\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u0020\u003d\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0041\u0045\u0053\u002f\u0045\u0043\u0042\u002f\u0050\u004b\u0043\u0053\u0035\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0069\u006e\u0069\u0074\u0028\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0045\u004e\u0043\u0052\u0059\u0050\u0054\u005f\u004d\u004f\u0044\u0045\u002c\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u0042\u0061\u0073\u0065\u0036\u0034\u002e\u0067\u0065\u0074\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u0028\u0029\u002e\u0065\u006e\u0063\u006f\u0064\u0065\u0054\u006f\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0064\u006f\u0046\u0069\u006e\u0061\u006c\u0028\u0073\u0074\u0072\u0054\u006f\u0045\u006e\u0063\u0072\u0079\u0070\u0074\u002e\u0067\u0065\u0074\u0042\u0079\u0074\u0065\u0073\u0028\u0022\u0055\u0054\u0046\u002d\u0038\u0022\u0029\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006e\u0067\u003a\u0020\u0022\u0020\u002b\u0020\u0065\u002e\u0074\u006f\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0075\u006c\u006c\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u0009\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0064\u0065\u0063\u006f\u0064\u0065\u0028\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0073\u0074\u0072\u0054\u006f\u0044\u0065\u0063\u0072\u0079\u0070\u0074\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u0074\u0072\u0079\u0020\u007b\u000d\u000a\u0009\u0009\u0009\u0043\u0069\u0070\u0068\u0065\u0072\u0020\u0063\u0069\u0070\u0068\u0065\u0072\u0020\u003d\u0020\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0067\u0065\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0028\u0022\u0041\u0045\u0053\u002f\u0045\u0043\u0042\u002f\u0050\u004b\u0043\u0053\u0035\u0050\u0041\u0044\u0044\u0049\u004e\u0047\u0022\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0069\u006e\u0069\u0074\u0028\u0043\u0069\u0070\u0068\u0065\u0072\u002e\u0044\u0045\u0043\u0052\u0059\u0050\u0054\u005f\u004d\u004f\u0044\u0045\u002c\u0020\u0073\u0065\u0063\u0072\u0065\u0074\u004b\u0065\u0079\u0029\u003b\u000d\u000a\u0009\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0065\u0077\u0020\u0053\u0074\u0072\u0069\u006e\u0067\u0028\u0063\u0069\u0070\u0068\u0065\u0072\u002e\u0064\u006f\u0046\u0069\u006e\u0061\u006c\u0028\u0042\u0061\u0073\u0065\u0036\u0034\u002e\u0067\u0065\u0074\u0044\u0065\u0063\u006f\u0064\u0065\u0072\u0028\u0029\u002e\u0064\u0065\u0063\u006f\u0064\u0065\u0028\u0073\u0074\u0072\u0054\u006f\u0044\u0065\u0063\u0072\u0079\u0070\u0074\u0029\u0029\u0029\u003b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0063\u0061\u0074\u0063\u0068\u0020\u0028\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0020\u0065\u0029\u0020\u007b\u000d\u000a\u0009\u0009\u007d\u000d\u000a\u0009\u0009\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006e\u0075\u006c\u006c\u003b\u000d\u000a\u0009\u007d\u000d\u000a\u007d \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/util/data/EnumUtils.java b/src/Java/gtPlusPlus/core/util/data/EnumUtils.java
index 9c96b61876..edcc071b54 100644
--- a/src/Java/gtPlusPlus/core/util/data/EnumUtils.java
+++ b/src/Java/gtPlusPlus/core/util/data/EnumUtils.java
@@ -12,10 +12,13 @@ public class EnumUtils {
**/
public static <T extends Enum<T>> T getValue(Class<T> enumeration, String name) {
Optional<T> j = Enums.getIfPresent(enumeration, name);
- T VALUE = j.get();
- if (j.get() == null) {
+ T VALUE;
+ if (j == null || !j.isPresent()) {
VALUE = valueOfIgnoreCase(enumeration, name);
}
+ else {
+ VALUE = j.get();
+ }
return VALUE;
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
index 7daefbcc23..8b02ea9c7c 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java
@@ -1,17 +1,20 @@
package gtPlusPlus.core.util.minecraft;
import gregtech.api.util.GT_ModHandler;
-import gtPlusPlus.api.objects.Logger;
import ic2.api.item.IElectricItem;
import ic2.api.item.IElectricItemManager;
import ic2.api.item.ISpecialElectricItem;
+import net.minecraft.item.ItemRedstone;
import net.minecraft.item.ItemStack;
public class EnergyUtils {
public static class EU {
- public static boolean isElectricItem(ItemStack aStack) {
+ public static boolean isElectricItem(ItemStack aStack) {
+ if (aStack == null || aStack.getItem() == null || aStack.getItem() instanceof ItemRedstone) {
+ return false;
+ }
if (aStack.getItem() instanceof ISpecialElectricItem) {
return true;
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
index 66f9e2453d..fda7b0b738 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/EntityUtils.java
@@ -16,12 +16,11 @@ import gtPlusPlus.core.util.reflect.ReflectionUtils;
import ic2.core.IC2Potion;
import ic2.core.item.armor.ItemArmorHazmat;
import net.minecraft.block.Block;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLiving;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.entity.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
@@ -103,7 +102,7 @@ public class EntityUtils {
duration = radiationLevel*30;
}
//IC2Potion.radiation.applyTo(entityLiving, duration, damage * 15);
- GT_Utility.applyRadioactivity(entityLiving, radiationLevel, stackSize);
+ applyRadioactivity(entityLiving, radiationLevel, stackSize);
}
}
}
@@ -111,6 +110,68 @@ public class EntityUtils {
}
return false;
}
+
+ public static boolean isWearingFullFrostHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Frost(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullHeatHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Fire(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullBioHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Biohazard(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullRadioHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Radiation(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullElectroHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Electricity(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isWearingFullGasHazmat(EntityLivingBase aEntity) {
+ for (byte i = 1; i < 5; i++)
+ if (!HazmatUtils.providesProtetion_Gas(aEntity.getEquipmentInSlot(i))) {
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean applyRadioactivity(EntityLivingBase aEntity, int aLevel, int aAmountOfItems) {
+ if (aLevel > 0 && aEntity != null && aEntity.getCreatureAttribute() != EnumCreatureAttribute.UNDEAD && aEntity.getCreatureAttribute() != EnumCreatureAttribute.ARTHROPOD && !ItemArmorHazmat.hasCompleteHazmat(aEntity)) {
+ PotionEffect tEffect = null;
+ aEntity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, aLevel * 140 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.moveSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.digSlowdown)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.confusion.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.confusion)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.weakness.id, aLevel * 150 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.weakness)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(Potion.hunger.id, aLevel * 130 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.hunger)) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ aEntity.addPotionEffect(new PotionEffect(IC2Potion.radiation.id, aLevel * 180 * aAmountOfItems + Math.max(0, ((tEffect = aEntity.getActivePotionEffect(Potion.potionTypes[24])) == null ? 0 : tEffect.getDuration())), Math.max(0, (5 * aLevel) / 7)));
+ return true;
+ }
+ return false;
+ }
public static boolean applyHeatDamageToEntity(final int heatLevel, final World world, final Entity entityHolding){
if (!world.isRemote){
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
index be57853dda..f0b93a32dc 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/HazmatUtils.java
@@ -1,29 +1,27 @@
package gtPlusPlus.core.util.minecraft;
-import static gregtech.api.GregTech_API.sBioHazmatList;
-import static gregtech.api.GregTech_API.sElectroHazmatList;
-import static gregtech.api.GregTech_API.sFrostHazmatList;
-import static gregtech.api.GregTech_API.sGasHazmatList;
-import static gregtech.api.GregTech_API.sHeatHazmatList;
-import static gregtech.api.GregTech_API.sRadioHazmatList;
-
-import java.util.Collections;
+import static gregtech.api.GregTech_API.*;
+
+import java.lang.reflect.Field;
import java.util.HashMap;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import gregtech.api.objects.GT_HashSet;
import gregtech.api.objects.GT_ItemStack;
-import gregtech.api.util.GT_ModHandler;
+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.core.lib.LoadedMods;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import ic2.core.Ic2Items;
import ic2.core.item.armor.ItemArmorHazmat;
import ic2.core.item.armor.ItemArmorNanoSuit;
import ic2.core.item.armor.ItemArmorQuantumSuit;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@@ -36,39 +34,8 @@ public class HazmatUtils {
private static boolean mInit = false;
private static HazmatUtils mInstance;
-
- private static final String[] mDefaultHazmat = new String[] {
- "IC2:itemArmorNanoHelmet:27",
- "IC2:itemArmorNanoChestplate:27",
- "IC2:itemArmorNanoLegs:27",
- "IC2:itemArmorNanoBoots:27",
-
- "IC2:itemArmorQuantumHelmet:27",
- "IC2:itemArmorQuantumChestplate:27",
- "IC2:itemArmorQuantumLegs:27",
- "IC2:itemArmorQuantumBoots:27",
- };
-
-
- private static final String[] mGravisuit = new String[] {
- "GraviSuite:advNanoChestPlate:27",
- "GraviSuite:graviChestPlate:27",
- };
- private static final String[] mElectroMagicTools = new String[] {
- "EMT:NanosuitGogglesRevealing:27",
- "EMT:NanoBootsTraveller:27",
- "EMT:NanosuitWing:27",
- "EMT:itemArmorQuantumChestplate:27",
- "EMT:QuantumGogglesRevealing:27",
- "EMT:QuantumBootsTraveller:27",
- "EMT:QuantumWing:27",
- };
- private static final String[] mAdvancedSolarPanels = new String[] {
- "AdvancedSolarPanel:advanced_solar_helmet:27",
- "AdvancedSolarPanel:hybrid_solar_helmet:27",
- "AdvancedSolarPanel:ultimate_solar_helmet:27",
- };
+ @SuppressWarnings("rawtypes")
public static void init() {
if (mInit) {
return;
@@ -76,39 +43,101 @@ public class HazmatUtils {
mInstance = new HazmatUtils();
- sHazmatList.add(GT_ModHandler.getIC2Item("hazmatHelmet", 1L, 32767));
- sHazmatList.add(GT_ModHandler.getIC2Item("hazmatChestplate", 1L, 32767));
- sHazmatList.add(GT_ModHandler.getIC2Item("hazmatLeggings", 1L, 32767));
- sHazmatList.add(GT_ModHandler.getIC2Item("hazmatBoots", 1L, 32767));
+ sHazmatList.add(ItemUtils.getSimpleStack(Ic2Items.hazmatHelmet, 1));
+ sHazmatList.add(ItemUtils.getSimpleStack(Ic2Items.hazmatChestplate, 1));
+ sHazmatList.add(ItemUtils.getSimpleStack(Ic2Items.hazmatLeggings, 1));
+ sHazmatList.add(ItemUtils.getSimpleStack(Ic2Items.hazmatBoots, 1));
// Make Nano a hazmat suit
// Make Quantum a hazmat suit
if (LoadedMods.IndustrialCraft2 || LoadedMods.IndustrialCraft2Classic) {
- for (String aItemName : mDefaultHazmat) {
- addProtection(ItemUtils.getItemStackFromFQRN(aItemName, 1));
+ AutoMap<ItemStack> aVanillaIC2Armour = new AutoMap<ItemStack>();
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.nanoHelmet, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.nanoBodyarmor, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.nanoLeggings, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.nanoBoots, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.quantumHelmet, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.quantumBodyarmor, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.quantumLeggings, 1));
+ aVanillaIC2Armour.add(ItemUtils.getSimpleStack(Ic2Items.quantumBoots, 1));
+ for (ItemStack aItem : aVanillaIC2Armour) {
+ addProtection(aItem);
}
Logger.INFO("[Hazmat] Registered IC2 Items as hazmat gear.");
}
if (LoadedMods.isModLoaded("EMT")) {
- for (String aItemName : mElectroMagicTools) {
- addProtection(ItemUtils.getItemStackFromFQRN(aItemName, 1));
+ AutoMap<Field> aItemFields = new AutoMap<Field>();
+ Class aItemsEMT = ReflectionUtils.getClass("emt.init.EMTItems");
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "nanoThaumicHelmet"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "nanoWing"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "nanoBootsTraveller"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "quantumThaumicHelmet"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "quantumWing"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "quantumArmor"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "quantumBootsTraveller"));
+ AutoMap<ItemStack> aEMT = new AutoMap<ItemStack>();
+ for (Field aItemField : aItemFields) {
+ Item aItemObject = null;
+ if (aItemField != null) {
+ try {
+ aItemObject = (Item) aItemField.get(null);
+ }
+ catch (Exception t) {
+ t.printStackTrace();
+ }
+ }
+ if (aItemObject != null) {
+ aEMT.add(ItemUtils.getSimpleStack(aItemObject));
+ }
+ else {
+ Logger.INFO("[Hazmat] Could not get "+aItemField.getName()+" from "+aItemsEMT.getName());
+ }
+ }
+ Logger.INFO("[Hazmat] Registering "+aEMT.size()+" EMT Items as hazmat gear.");
+ for (ItemStack aItem : aEMT) {
+ addProtection(aItem);
}
Logger.INFO("[Hazmat] Registered EMT Items as hazmat gear.");
}
- if (LoadedMods.isModLoaded("GraviSuite")) {
- for (String aItemName : mGravisuit) {
- addProtection(ItemUtils.getItemStackFromFQRN(aItemName, 1));
+ if (LoadedMods.isModLoaded("GraviSuite")) {
+ AutoMap<Field> aItemFields = new AutoMap<Field>();
+ Class aItemsGravisuite = ReflectionUtils.getClass("gravisuite.GraviSuite");
+ aItemFields.add(ReflectionUtils.getField(aItemsGravisuite, "advNanoChestPlate"));
+ aItemFields.add(ReflectionUtils.getField(aItemsGravisuite, "graviChestPlate"));
+ AutoMap<ItemStack> aGravisuite = new AutoMap<ItemStack>();
+ for (Field aItemField : aItemFields) {
+ Item aItemObject = (Item) ReflectionUtils.getFieldValue(aItemField);
+ if (aItemObject != null) {
+ aGravisuite.add(ItemUtils.getSimpleStack(aItemObject));
+ }
+ }
+ Logger.INFO("[Hazmat] Registering "+aGravisuite.size()+" Gravisuit Items as hazmat gear.");
+ for (ItemStack aItem : aGravisuite) {
+ addProtection(aItem);
}
Logger.INFO("[Hazmat] Registered Gravisuit Items as hazmat gear.");
}
if (LoadedMods.isModLoaded("AdvancedSolarPanel")) {
- for (String aItemName : mAdvancedSolarPanels) {
- addProtection(ItemUtils.getItemStackFromFQRN(aItemName, 1));
+ AutoMap<Field> aItemFields = new AutoMap<Field>();
+ Class aItemsEMT = ReflectionUtils.getClass("advsolar.common.AdvancedSolarPanel");
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "advancedSolarHelmet"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "hybridSolarHelmet"));
+ aItemFields.add(ReflectionUtils.getField(aItemsEMT, "ultimateSolarHelmet"));
+ AutoMap<ItemStack> aASP = new AutoMap<ItemStack>();
+ for (Field aItemField : aItemFields) {
+ Item aItemObject = (Item) ReflectionUtils.getFieldValue(aItemField);
+ if (aItemObject != null) {
+ aASP.add(ItemUtils.getSimpleStack(aItemObject));
+ }
+ }
+ Logger.INFO("[Hazmat] Registering "+aASP.size()+" Adv. Solar Items as hazmat gear.");
+ for (ItemStack aItem : aASP) {
+ addProtection(aItem);
}
Logger.INFO("[Hazmat] Registered Adv. Solar Items as hazmat gear.");
}
@@ -124,38 +153,36 @@ public class HazmatUtils {
@SubscribeEvent
public void onItemTooltip(ItemTooltipEvent event) {
//Logger.INFO("Ticking Hazmat handler");
- if (GTplusplus.CURRENT_LOAD_PHASE != INIT_PHASE.STARTED
- && GTplusplus.CURRENT_LOAD_PHASE != INIT_PHASE.SERVER_START) {
- //Logger.INFO("[Hazmat] Bad Phase : " + GTplusplus.CURRENT_LOAD_PHASE);
- return;
- }
- if (event.itemStack == null || isVanillaHazmatPiece(event.itemStack)) {
- //Logger.INFO("[Hazmat] Invalid Itemstack or vanilla hazmat");
- return;
- } else {
- ItemStack aStackTemp = event.itemStack;
- GT_ItemStack aStack = new GT_ItemStack(aStackTemp);
- if (isNanoArmourPiece(aStackTemp) || isQuantumArmourPiece(aStackTemp)) {
- event.toolTip.add(EnumChatFormatting.DARK_PURPLE+"Provides full hazmat protection.");
- }
- else {
- //Logger.INFO("[Hazmat] Finding Tooltip Data");
- String[] aTooltips = getTooltips(aStack);
- if (aTooltips == null || aTooltips.length == 0) {
- //Logger.INFO("[Hazmat] No Info!");
- return;
- } else {
- //Logger.INFO("[Hazmat] Found Tooltips!");
- if (providesProtection(aStackTemp)) {
- event.toolTip.add(EnumChatFormatting.LIGHT_PURPLE+"Provides full hazmat protection.");
+ if (GTplusplus.CURRENT_LOAD_PHASE == INIT_PHASE.STARTED) {
+
+ if (event.itemStack == null || isVanillaHazmatPiece(event.itemStack)) {
+ //Logger.INFO("[Hazmat] Invalid Itemstack or vanilla hazmat");
+ return;
+ } else {
+ ItemStack aStackTemp = event.itemStack;
+ GT_ItemStack aStack = new GT_ItemStack(aStackTemp);
+ if (isNanoArmourPiece(aStackTemp) || isQuantumArmourPiece(aStackTemp)) {
+ event.toolTip.add(EnumChatFormatting.DARK_PURPLE+"Provides full hazmat protection.");
+ }
+ else {
+ //Logger.INFO("[Hazmat] Finding Tooltip Data");
+ String[] aTooltips = getTooltips(aStack);
+ if (aTooltips == null || aTooltips.length == 0) {
+ //Logger.INFO("[Hazmat] No Info!");
+ return;
} else {
- event.toolTip.add(mToolTipText);
- for (String r : aTooltips) {
- event.toolTip.add(" - " + r);
+ //Logger.INFO("[Hazmat] Found Tooltips!");
+ if (providesProtection(aStackTemp)) {
+ event.toolTip.add(EnumChatFormatting.LIGHT_PURPLE+"Provides full hazmat protection.");
+ } else {
+ event.toolTip.add(mToolTipText);
+ for (String r : aTooltips) {
+ event.toolTip.add(" - " + r);
+ }
}
}
- }
- }
+ }
+ }
}
}
@@ -173,7 +200,7 @@ public class HazmatUtils {
if (living == null || living.isDead) {
return false;
} else {
-
+
// Map All Player Armour slots
AutoMap<ItemStack> aEquipment = new AutoMap<ItemStack>();
for (int i = 1; i < 5; ++i) {
@@ -190,11 +217,13 @@ public class HazmatUtils {
// Compare Equipment to all items mapped for full hazmat.
for (ItemStack aSlotStack : aEquipment) {
if (!isHazmatPiece(aSlotStack)) {
+ //Logger.INFO("Found item which is not hazmat. "+ItemUtils.getItemName(aSlotStack));
return false;
}
}
// We are in some kind of full hazmat, huzzah!
+ //Logger.INFO("Has full hazmat.");
return true;
}
}
@@ -247,6 +276,18 @@ public class HazmatUtils {
* @return - Did we register this ItemStack properly?
*/
public static boolean addProtection(ItemStack aVanStack) {
+ if (!ItemUtils.checkForInvalidItems(aVanStack)) {
+ Logger.INFO("=================Bad Hazmat Addition======================");
+ Logger.INFO("Called from: "+ReflectionUtils.getMethodName(0));
+ Logger.INFO(ReflectionUtils.getMethodName(1));
+ Logger.INFO(ReflectionUtils.getMethodName(2));
+ Logger.INFO(ReflectionUtils.getMethodName(3));
+ Logger.INFO(ReflectionUtils.getMethodName(4));
+ Logger.INFO(ReflectionUtils.getMethodName(5));
+ Logger.INFO(ReflectionUtils.getMethodName(6));
+ Logger.INFO("==========================================================");
+ return false;
+ }
Logger.INFO("[Hazmat] Registering " + aVanStack.getDisplayName() + " for full Hazmat protection.");
GT_ItemStack aStack = getGtStackFromVanilla(aVanStack);
AutoMap<Boolean> aAdded = new AutoMap<Boolean>();
@@ -339,22 +380,35 @@ public class HazmatUtils {
return providesProtetion_Generic(sElectroHazmatList, aStack);
}
- private static boolean providesProtetion_Generic(GT_HashSet aSet, ItemStack aStack) {
+ private static boolean providesProtetion_Generic(GT_HashSet<GT_ItemStack> aSet, ItemStack aStack) {
if (isVanillaHazmatPiece(aStack)) {
return true;
}
- return aSet.getMap().containsKey(aStack);
+ for (GT_ItemStack o : aSet) {
+ if (o != null && o.mItem != null && aStack != null && aStack.getItem() != null) {
+ if (GT_Utility.areStacksEqual(o.toStack(), aStack, true)) {
+ return true;
+ }
+ if (o.isStackEqual(aStack)){
+ return true;
+ }
+ if (o.mItem == aStack.getItem() && EnergyUtils.EU.isElectricItem(aStack)) {
+ return true;
+ }
+ }
+ }
+ return false;
}
private static String[] getTooltips(GT_ItemStack aStack) {
- String aKey = convertGtItemstackToStringData(aStack);
+ String aKey = convertGtItemstackToStringDataIgnoreDamage(aStack);
AutoMap<String> aTempTooltipData = mToolTips.get(aKey);
- if (aTempTooltipData == null) {
+ if (aTempTooltipData == null || aTempTooltipData.isEmpty()) {
//Logger.INFO("[Hazmat] Item was not mapped for TTs - "+aKey);
return new String[] {};
} else {
//Logger.INFO("[Hazmat] Item was mapped for TTs");
- Collections.sort(aTempTooltipData);
+ //Collections.sort(aTempTooltipData);
//Logger.INFO("[Hazmat] Sorted TTs");
String[] mBuiltOutput = new String[aTempTooltipData.size()];
@@ -368,15 +422,15 @@ public class HazmatUtils {
}
private static void registerTooltip(GT_ItemStack aStack, String aTooltip) {
- String aKey = convertGtItemstackToStringData(aStack);
+ String aKey = convertGtItemstackToStringDataIgnoreDamage(aStack);
Logger.INFO("[Hazmat] Mapping " + aTooltip + " for " + aKey);
AutoMap<String> aTempTooltipData = mToolTips.get(aKey);
if (aTempTooltipData == null) {
Logger.INFO("No data mapped yet, creating.");
aTempTooltipData = new AutoMap<String>();
+ mToolTips.put(aKey, aTempTooltipData);
}
aTempTooltipData.add(aTooltip);
- mToolTips.put(convertGtItemstackToStringData(aStack), aTempTooltipData);
}
public static ItemStack getStackFromGtStack(GT_ItemStack aGtStack) {
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
index 725799a43d..70b635583d 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
@@ -109,7 +109,7 @@ public class ItemUtils {
final ItemStack y = ItemUtils.simpleMetaStack(x, WILDCARD_VALUE, 1);
return y;
}
-
+
public static ItemStack getIC2Cell(final String S) {
final ItemStack moreTemp = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cell" + S, 1);
@@ -174,7 +174,7 @@ public class ItemUtils {
Logger.ERROR(ItemUtils.getItemName(stack) + " not registered. [NULL]");
}
}
-
+
public static void addItemToOreDictionary(final ItemStack stack, final String oreDictName) {
addItemToOreDictionary(stack, oreDictName, false);
}
@@ -291,8 +291,31 @@ public class ItemUtils {
public static ItemStack getItemStackFromFQRN(final String fqrn, final int Size) // fqrn = fully qualified resource name
{
+ Logger.INFO("Trying to split string '"+fqrn+"'.");
final String[] fqrnSplit = fqrn.split(":");
- return GameRegistry.findItemStack(fqrnSplit[0], fqrnSplit[1], Size);
+ if (fqrnSplit.length < 2) {
+ return null;
+ }
+ else {
+ if (fqrnSplit.length == 2) {
+ Logger.INFO("Mod: "+fqrnSplit[0]+", Item: "+fqrnSplit[1]);
+ return GameRegistry.findItemStack(fqrnSplit[0], fqrnSplit[1], Size);
+ }
+ else if (fqrnSplit.length == 3 && fqrnSplit[2] != null && fqrnSplit[2].length() > 0) {
+ Logger.INFO("Mod: "+fqrnSplit[0]+", Item: "+fqrnSplit[1]+", Meta: "+fqrnSplit[2]);
+ ItemStack aStack = GameRegistry.findItemStack(fqrnSplit[0], fqrnSplit[1], Size);
+ int aMeta = Integer.parseInt(fqrnSplit[2]);
+ if (aStack != null && (aMeta >= 0 && aMeta <= Short.MAX_VALUE)){
+ return ItemUtils.simpleMetaStack(aStack, aMeta, Size);
+ }
+ else {
+ Logger.INFO("Could not find instance of Item: "+fqrnSplit[1]);
+
+ }
+ }
+
+ }
+ return null;
}
public static void generateSpawnEgg(final String entityModID, final String parSpawnName, final int colourEgg,
@@ -871,6 +894,9 @@ public class ItemUtils {
}
public static ItemStack getOrePrefixStack(OrePrefixes mPrefix, Materials mMat, int mAmount) {
+ if (mPrefix == OrePrefixes.rod) {
+ mPrefix = OrePrefixes.stick;
+ }
ItemStack aGtStack = GT_OreDictUnificator.get(mPrefix, mMat, mAmount);
if (aGtStack == null) {
Logger.INFO(
@@ -1065,11 +1091,11 @@ public class ItemUtils {
}
-
+
public static String getFluidName(FluidStack aFluid) {
return aFluid != null ? aFluid.getFluid().getLocalizedName(aFluid) : "NULL";
}
-
+
public static String getFluidName(Fluid aFluid) {
return aFluid != null ? aFluid.getLocalizedName() : "NULL";
}
@@ -1227,10 +1253,11 @@ public class ItemUtils {
public static ItemStack depleteStack(ItemStack aStack, int aAmount) {
final int cap = aStack.stackSize;
- if (cap > 1 && cap > aAmount) {
- aStack.stackSize = (MathUtils.balance((aStack.stackSize - 1), 0, 64));
- if (aStack.stackSize > 0) {
- return aStack;
+ if (cap >= 1 && cap >= aAmount) {
+ ItemStack aDepStack = aStack.copy();
+ aDepStack.stackSize = (MathUtils.balance((aDepStack.stackSize - 1), 0, 64));
+ if (aDepStack.stackSize > 0) {
+ return aDepStack;
}
}
return getNullStack();
@@ -1239,13 +1266,13 @@ public class ItemUtils {
public static boolean isControlCircuit(ItemStack aStack) {
if (aStack != null) {
Item aItem = aStack.getItem();
- if (aItem == CI.getNumberedBioCircuit(0).getItem() || aItem == CI.getNumberedCircuit(0).getItem()) {
+ if (aItem == CI.getNumberedBioCircuit(0).getItem() || aItem == CI.getNumberedCircuit(0).getItem() || aItem == CI.getNumberedAdvancedCircuit(0).getItem()) {
return true;
}
}
return false;
}
-
+
public static boolean isCatalyst(ItemStack aStack) {
if (GT_Utility.areStacksEqual(aStack, RocketFuels.Formaldehyde_Catalyst_Stack, true)) {
return true;
@@ -1276,7 +1303,7 @@ public class ItemUtils {
}
return false;
}
-
+
public static boolean isMillingBall(ItemStack aStack) {
if (GT_Utility.areStacksEqual(aStack, GenericChem.mMillingBallAlumina, true)) {
return true;
@@ -1290,9 +1317,9 @@ public class ItemUtils {
public static String getLocalizedNameOfBlock(Block aBlock, int aMeta) {
return LangUtils.getLocalizedNameOfBlock(aBlock, aMeta);
}
-
-
+
+
public static boolean doesItemListEntryExist(String string) {
ItemList[] aListValues = ItemList.class.getEnumConstants();
for (ItemList aItem : aListValues) {
@@ -1320,11 +1347,11 @@ public class ItemUtils {
}
return aOther;
}
-
+
public static ItemStack getValueOfItemList(String string, int aAmount, ItemList aOther) {
return getValueOfItemList(string, aOther).get(aAmount);
}
-
+
public static ItemStack getValueOfItemList(String string, int aAmount, ItemStack aOther) {
ItemList[] aListValues = ItemList.class.getEnumConstants();
for (ItemList aItem : aListValues) {
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
index 64a6c9e820..7e9e34ae47 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java
@@ -209,10 +209,10 @@ public class MaterialUtils {
}
public static int getTierOfMaterial(final double aMeltingPoint){
-
+
return aMeltingPoint < 1000 ? 0 : (MathUtils.roundToClosestInt(aMeltingPoint/1000f));
-
-
+
+
/*if ((aMeltingPoint >= 0) && (aMeltingPoint <= 1000)){
return 1;
}
@@ -250,40 +250,42 @@ public class MaterialUtils {
public static int getVoltageForTier(int aTier) {
//aTier += 1; - Probably some logic to this, idk.
- if (aTier <= 0) {
- return 16;
- } else if (aTier == 1) {
- return 30;
- } else if (aTier == 2) {
- return 120;
- } else if (aTier == 3) {
- return 480;
- } else if (aTier == 4) {
- return 1920;
- } else if (aTier == 5) {
- return 7680;
- } else if (aTier == 6) {
- return 30720;
- } else if (aTier == 7) {
- return 122880;
- } else if (aTier == 8) {
- return 491520;
- } else if (aTier == 9) {
- return 1966080;
- } else if (aTier == 10) {
- return 7864320;
- } else if (aTier == 11) {
- return 31457280;
- } else if (aTier == 12) {
- return 125829120;
- } else if (aTier == 13) {
- return 503316480;
- } else if (aTier == 14) {
- return 2013265920;
- } else {
- return Integer.MAX_VALUE;
- }
-
+
+ switch(aTier){
+ case 0:
+ return 16;
+ case 1:
+ return 30;
+ case 2:
+ return 120;
+ case 3:
+ return 480;
+ case 4:
+ return 1920;
+ case 5:
+ return 7680;
+ case 6:
+ return 30720;
+ case 7:
+ return 122880;
+ case 8:
+ return 491520;
+ case 9:
+ return 1966080;
+ case 10:
+ return 7864320;
+ case 11:
+ return 31457280;
+ case 12:
+ return 125829120;
+ case 13:
+ return 503316480;
+ case 14:
+ return 2013265920;
+ default:
+ return Integer.MAX_VALUE;
+ }
+
/*else {
int newTier = aTier - 1;
return (int) ((4*(Math.pow(4, newTier)))*7.5);
@@ -342,7 +344,7 @@ public class MaterialUtils {
TextureSet o = (r != null && r.isPresent() && r.get() != null) ? r.get() : null;
return o;*/
}
-
+
public static Materials getMaterial(String aMaterialName, String aFallbackMaterialName) {
@@ -416,7 +418,7 @@ public class MaterialUtils {
return aDataSet;
}
return aDataSet;
- */}
+ */}
public static AutoMap<Material> getCompoundMaterialsRecursively_Speiger(Material toSearch) {
AutoMap<Material> resultList = new AutoMap<Material>();
@@ -425,11 +427,11 @@ public class MaterialUtils {
return resultList;
}
final int HARD_LIMIT = 1000;
-
+
// Could be a Deque but i dont use the interface
// enough to use it as default.
LinkedList<Material> toCheck = new LinkedList<Material>();
-
+
toCheck.add(toSearch);
int processed = 0;
while (toCheck.size() > 0 && processed < HARD_LIMIT) {
@@ -445,11 +447,11 @@ public class MaterialUtils {
}
return resultList;
}
-
+
public static void generateComponentAndAssignToAMaterial(ComponentTypes aType, Material aMaterial) {
generateComponentAndAssignToAMaterial(aType, aMaterial, true);
}
-
+
public static void generateComponentAndAssignToAMaterial(ComponentTypes aType, Material aMaterial, boolean generateRecipes) {
Item aGC;
if (aType == ComponentTypes.PLATEHEAVY) {
@@ -460,33 +462,33 @@ public class MaterialUtils {
}
if (aGC != null) {
String aFormattedLangName = aType.getName();
-
+
if (!aFormattedLangName.startsWith(" ")) {
if (aFormattedLangName.contains("@")) {
String[] aSplit = aFormattedLangName.split("@");
aFormattedLangName = aSplit[0] + " " + aMaterial.getLocalizedName() + " " + aSplit[1];
}
}
-
+
if (aFormattedLangName.equals(aType.getName())) {
aFormattedLangName = aMaterial.getLocalizedName() + aFormattedLangName;
-
+
}
-
-
-
+
+
+
Logger.MATERIALS("[Lang] "+aGC.getUnlocalizedName()+".name="+aFormattedLangName);
aMaterial.registerComponentForMaterial(aType, ItemUtils.getSimpleStack(aGC));
}
}
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
public static void generateSpecialDustAndAssignToAMaterial(Material aMaterial) {
generateSpecialDustAndAssignToAMaterial(aMaterial, true);
}
@@ -498,7 +500,7 @@ public class MaterialUtils {
aMaterial.registerComponentForMaterial(OrePrefixes.dustSmall, ItemUtils.getSimpleStack(aDusts[1]));
aMaterial.registerComponentForMaterial(OrePrefixes.dustTiny, ItemUtils.getSimpleStack(aDusts[2]));
}
-
+
}
public static boolean doesMaterialExist(String aMatName) {
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/PlayerUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
index e64414b493..110b2baf25 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/PlayerUtils.java
@@ -1,23 +1,27 @@
package gtPlusPlus.core.util.minecraft;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.core.handler.events.BlockEventHandler;
import gtPlusPlus.core.util.Utils;
import net.minecraft.client.Minecraft;
+import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
+import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
+import net.minecraftforge.common.util.FakePlayer;
+import thaumcraft.common.lib.FakeThaumcraftPlayer;
public class PlayerUtils {
+ public static final Map<String, EntityPlayer> mCachedFakePlayers = new WeakHashMap<String, EntityPlayer>();
+
public static void messagePlayer(final EntityPlayer P, final String S){
gregtech.api.util.GT_Utility.sendChatToPlayer(P, S);
}
@@ -195,5 +199,53 @@ public class PlayerUtils {
public static boolean canTakeDamage(EntityPlayer aPlayer) {
return !aPlayer.capabilities.disableDamage;
}
+
+ public static void cacheFakePlayer(EntityPlayer aPlayer) {
+ ChunkCoordinates aChunkLocation = aPlayer.getPlayerCoordinates();
+ // Cache Fake Player
+ if (aPlayer instanceof FakePlayer || aPlayer instanceof FakeThaumcraftPlayer
+ || (aPlayer.getCommandSenderName() == null
+ || aPlayer.getCommandSenderName().length() <= 0)
+ || (aPlayer.isEntityInvulnerable() && !aPlayer.canCommandSenderUseCommand(0, "")
+ && (aChunkLocation == null) || (aChunkLocation.posX == 0 && aChunkLocation.posY == 0
+ && aChunkLocation.posZ == 0))) {
+ mCachedFakePlayers.put(aPlayer.getUniqueID().toString(), aPlayer);
+ }
+ }
+
+ public static boolean isCachedFakePlayer(String aUUID) {
+ return mCachedFakePlayers.containsKey(aUUID);
+ }
+
+ public static boolean isRealPlayer(EntityLivingBase aEntity) {
+ if (aEntity instanceof EntityPlayer) {
+ EntityPlayer p = (EntityPlayer) aEntity;
+ ChunkCoordinates aChunkLocation = p.getPlayerCoordinates();
+ if (p instanceof FakePlayer) {
+ cacheFakePlayer(p);
+ return false;
+ }
+ if (p instanceof FakeThaumcraftPlayer) {
+ cacheFakePlayer(p);
+ return false;
+ }
+ if (p.getCommandSenderName() == null) {
+ cacheFakePlayer(p);
+ return false;
+ }
+ if (p.getCommandSenderName().length() <= 0) {
+ cacheFakePlayer(p);
+ return false;
+ }
+ if (p.isEntityInvulnerable() && !p.canCommandSenderUseCommand(0, "") && (aChunkLocation.posX == 0 && aChunkLocation.posY == 0 && aChunkLocation.posZ == 0)) {
+ cacheFakePlayer(p);
+ return false;
+ }
+ if (!isCachedFakePlayer(p.getUniqueID().toString())) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
index e45d27b926..e0634dfb14 100644
--- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
+++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
@@ -22,6 +22,7 @@ import com.google.common.reflect.ClassPath;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.data.StringUtils;
+import gtPlusPlus.xmod.gregtech.common.StaticFields59;
public class ReflectionUtils {
@@ -507,6 +508,30 @@ public class ReflectionUtils {
Logger.REFLECTION("Invoke failed or did something wrong.");
return false;
}
+
+ public static boolean invokeVoid(Object objectInstance, Method method, Object[] values){
+ if (method == null || values == null || (!ReflectionUtils.isStaticMethod(method) && objectInstance == null)){
+ //Logger.REFLECTION("Null value when trying to Dynamically invoke "+methodName+" on an object of type: "+objectInstance.getClass().getName());
+ return false;
+ }
+ String methodName = method.getName();
+ String classname = objectInstance != null ? objectInstance.getClass().getCanonicalName() : method.getDeclaringClass().getCanonicalName();
+ Logger.REFLECTION("Trying to invoke "+methodName+" on an instance of "+classname+".");
+ try {
+ Method mInvokingMethod = method;
+ if (mInvokingMethod != null){
+ Logger.REFLECTION(methodName+" was not null.");
+ mInvokingMethod.invoke(objectInstance, values);
+ Logger.REFLECTION("Successfully invoked "+methodName+".");
+ return true;
+ }
+ }
+ catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ Logger.REFLECTION("Failed to Dynamically invoke "+methodName+" on an object of type: "+classname);
+ }
+ Logger.REFLECTION("Invoke failed or did something wrong.");
+ return false;
+ }
public static boolean invokeVoid(Object objectInstance, String methodName, Class[] parameters, Object[] values){
if (objectInstance == null || methodName == null || parameters == null || values == null){
@@ -536,17 +561,17 @@ public class ReflectionUtils {
public static Object invokeNonBool(Object objectInstance, Method method, Object[] values){
- if (objectInstance == null || method == null || values == null){
+ if ((!ReflectionUtils.isStaticMethod(method) && objectInstance == null) || method == null || values == null){
return false;
}
String methodName = method.getName();
- Class<?> mLocalClass = (objectInstance instanceof Class ? (Class<?>) objectInstance : objectInstance.getClass());
- Logger.REFLECTION("Trying to invoke "+methodName+" on an instance of "+mLocalClass.getCanonicalName()+".");
+ String classname = objectInstance != null ? objectInstance.getClass().getCanonicalName() : method.getDeclaringClass().getCanonicalName();
+ Logger.REFLECTION("Trying to invoke "+methodName+" on an instance of "+classname+".");
try {
return method.invoke(objectInstance, values);
}
catch (SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
- Logger.REFLECTION("Failed to Dynamically invoke "+methodName+" on an object of type: "+mLocalClass.getName());
+ Logger.REFLECTION("Failed to Dynamically invoke "+methodName+" on an object of type: "+classname);
}
Logger.REFLECTION("Invoke failed or did something wrong.");
@@ -1035,5 +1060,19 @@ public class ReflectionUtils {
return null;
}
+ public static <T> T createNewInstanceFromConstructor(Constructor aConstructor, Object[] aArgs) {
+ T aInstance;
+ try {
+ aInstance = (T) aConstructor.newInstance(aArgs);
+ if (aInstance != null) {
+ return aInstance;
+ }
+ }
+ catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/util/sys/NetworkUtils.java b/src/Java/gtPlusPlus/core/util/sys/NetworkUtils.java
index b883391a86..1403713b3d 100644
--- a/src/Java/gtPlusPlus/core/util/sys/NetworkUtils.java
+++ b/src/Java/gtPlusPlus/core/util/sys/NetworkUtils.java
@@ -41,10 +41,10 @@ public class NetworkUtils {
public static boolean checkNetworkIsAvailableWithValidInterface(){
try {
if (hasValidNetworkInterface()){
- if (checkAddressWithTimeout("http://www.google.com", 10) ||
- checkAddressWithTimeout("http://www.baidu.com", 10) ||
- checkAddressWithTimeout("https://github.com/draknyte1/GTplusplus", 10) ||
- checkAddressWithTimeout("www.yahoo.com", 10)/* ||
+ if (checkAddressWithTimeout("http://www.google.com", 100) ||
+ checkAddressWithTimeout("http://www.baidu.com", 100) ||
+ checkAddressWithTimeout("http://www.github.com/alkcorp/GTplusplus", 100) ||
+ checkAddressWithTimeout("http://www.yahoo.com", 100)/* ||
netIsAvailableGoogle() ||
netIsAvailableBaidu() ||
netIsAvailableGithub() ||
@@ -63,82 +63,26 @@ public class NetworkUtils {
return false;
}
- private static boolean netIsAvailableGoogle() {
- try {
- final URL url = new URL("http://www.google.com");
- final URLConnection conn = url.openConnection();
- conn.connect();
- return true;
- } catch (final MalformedURLException e) {
- throw new RuntimeException(e);
- } catch (final IOException e) {
- return false;
- }
- }
-
- private static boolean netIsAvailableBaidu() {
- try {
- final URL url = new URL("http://www.baidu.com");
- final URLConnection conn = url.openConnection();
- conn.connect();
- return true;
- } catch (final MalformedURLException e) {
- throw new RuntimeException(e);
- } catch (final IOException e) {
- return false;
- }
- }
+ private static boolean checkAddressWithTimeout(String URL, int timeout) {
- private static boolean netIsAvailableGithub() {
try {
- final URL url = new URL("https://github.com/draknyte1/GTplusplus");
- final URLConnection conn = url.openConnection();
- conn.connect();
+ InetAddress.getByName(URL).isReachable(timeout); //Replace with your name
return true;
- } catch (final MalformedURLException e) {
- throw new RuntimeException(e);
- } catch (final IOException e) {
- return false;
- }
- }
-
- private static boolean netIsAvailableOther() {
- try {
- final int timeout = 200;
- final InetAddress[] addresses = InetAddress.getAllByName("www.yahoo.com");
- for (final InetAddress address : addresses) {
- if (address.isReachable(timeout)) {
- return true;
- }
- return false;
- }
- } catch (final Exception e) {
- return false;
- }
- return false;
- }
-
- private static boolean checkAddressWithTimeout(String URL, int timeout) {
-
- try {
- InetAddress.getByName(URL).isReachable(timeout); //Replace with your name
- return true;
- } catch (Exception e) {
- return false;
- }
-
- /*try {
- final InetAddress[] addresses = InetAddress.getAllByName(URL);
- for (final InetAddress address : addresses) {
- if (address.isReachable(timeout)) {
- return true;
+ } catch (Exception e) {
+ boolean result = false;
+ try {
+ URL urlObj = new URL(URL);
+ HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
+ con.setRequestMethod("GET");
+ con.setConnectTimeout(timeout);
+ con.connect();
+ int code = con.getResponseCode();
+ if (code == 200) {
+ result = true;
}
- return false;
- }
- } catch (final Exception e) {
- return false;
+ } catch (Exception e2) {}
+ return result;
}
- return false;*/
}
private static boolean hasValidNetworkInterface() throws SocketException{