aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java2
-rw-r--r--src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java52
-rw-r--r--src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java5
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java21
-rw-r--r--src/main/java/gregtech/common/items/GT_DepletetCell_Item.java2
-rw-r--r--src/main/java/gregtech/common/items/armor/ArmorCalculation.java413
-rw-r--r--src/main/java/gregtech/common/items/armor/ArmorData.java345
-rw-r--r--src/main/java/gregtech/common/items/armor/ContainerBasicArmor.java48
-rw-r--r--src/main/java/gregtech/common/items/armor/ContainerElectricArmor1.java53
-rw-r--r--src/main/java/gregtech/common/items/armor/ContainerModularArmor.java171
-rw-r--r--src/main/java/gregtech/common/items/armor/ElectricModularArmor1.java42
-rw-r--r--src/main/java/gregtech/common/items/armor/FluidSync.java67
-rw-r--r--src/main/java/gregtech/common/items/armor/FluidSync2.java67
-rw-r--r--src/main/java/gregtech/common/items/armor/GuiElectricArmor1.java310
-rw-r--r--src/main/java/gregtech/common/items/armor/GuiModularArmor.java196
-rw-r--r--src/main/java/gregtech/common/items/armor/InventoryArmor.java235
-rw-r--r--src/main/java/gregtech/common/items/armor/ModularArmor_Item.java449
-rw-r--r--src/main/java/gregtech/common/items/armor/SlotFluid.java33
-rw-r--r--src/main/java/gregtech/common/items/armor/SlotLocked.java33
-rw-r--r--src/main/java/gregtech/common/items/armor/Values.java125
-rw-r--r--src/main/java/gregtech/common/items/armor/Vector3.java278
-rw-r--r--src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java20
-rw-r--r--src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java11
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java21
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorMOXDual.pngbin0 -> 419 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorMOXQuad.pngbin0 -> 606 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorMOXSimple.pngbin0 -> 368 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorUraniumDual.pngbin0 -> 574 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorUraniumQuad.pngbin0 -> 739 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/items/gt.reactorUraniumSimple.pngbin0 -> 528 bytes
30 files changed, 2971 insertions, 28 deletions
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index 362f37ce9c..6a0fe6bb7e 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -634,7 +634,7 @@ public enum ItemList implements IItemContainer {
Honeycomb, Charcoal_Pile, Block_BrittleCharcoal, Seismic_Prospector, OilDrill, AdvancedMiner2, PyrolyseOven, OilCracker, Crop_Drop_UUMBerry, Crop_Drop_UUABerry, Empty_Board_Basic, Empty_Board_Elite,
Battery_Charger_4by4_ULV, Battery_Charger_4by4_LV, Battery_Charger_4by4_MV, Battery_Charger_4by4_HV, Battery_Charger_4by4_EV, Battery_Charger_4by4_IV, Battery_Charger_4by4_LuV, Battery_Charger_4by4_ZPM, Battery_Charger_4by4_UV, Battery_Charger_4by4_MAX,
MicroTransmitter_HV, MicroTransmitter_EV, MicroTransmitter_IV, MicroTransmitter_LUV, MicroTransmitter_ZPM,
- Crop_Drop_Bauxite, Crop_Drop_Ilmenite, Crop_Drop_Pitchblende, Crop_Drop_Uraninite, Crop_Drop_Thorium, Crop_Drop_Nickel, Crop_Drop_Zinc, Crop_Drop_Manganese, Crop_Drop_Scheelite, Crop_Drop_Platinum, Crop_Drop_Iridium, Crop_Drop_Osmium, Crop_Drop_Naquadah;
+ Crop_Drop_Bauxite, Crop_Drop_Ilmenite, Crop_Drop_Pitchblende, Crop_Drop_Uraninite, Crop_Drop_Thorium, Crop_Drop_Nickel, Crop_Drop_Zinc, Crop_Drop_Manganese, Crop_Drop_Scheelite, Crop_Drop_Platinum, Crop_Drop_Iridium, Crop_Drop_Osmium, Crop_Drop_Naquadah, Uraniumcell_1, Uraniumcell_2, Uraniumcell_4, Moxcell_1, Moxcell_2, Moxcell_4;
public static final ItemList[]
DYE_ONLY_ITEMS = {Color_00, Color_01, Color_02, Color_03, Color_04, Color_05, Color_06, Color_07, Color_08, Color_09, Color_10, Color_11, Color_12, Color_13, Color_14, Color_15}, SPRAY_CAN_DYES = {Spray_Color_00, Spray_Color_01, Spray_Color_02, Spray_Color_03, Spray_Color_04, Spray_Color_05, Spray_Color_06, Spray_Color_07, Spray_Color_08, Spray_Color_09, Spray_Color_10, Spray_Color_11, Spray_Color_12, Spray_Color_13, Spray_Color_14, Spray_Color_15}, SPRAY_CAN_DYES_USED = {Spray_Color_Used_00, Spray_Color_Used_01, Spray_Color_Used_02, Spray_Color_Used_03, Spray_Color_Used_04, Spray_Color_Used_05, Spray_Color_Used_06, Spray_Color_Used_07, Spray_Color_Used_08, Spray_Color_Used_09, Spray_Color_Used_10, Spray_Color_Used_11, Spray_Color_Used_12, Spray_Color_Used_13, Spray_Color_Used_14, Spray_Color_Used_15}, TRANSFORMERS = {Transformer_LV_ULV, Transformer_MV_LV, Transformer_HV_MV, Transformer_EV_HV, Transformer_IV_EV, Transformer_LuV_IV, Transformer_ZPM_LuV, Transformer_UV_ZPM, Transformer_MAX_UV}, MACHINE_HULLS = {Hull_ULV, Hull_LV, Hull_MV, Hull_HV, Hull_EV, Hull_IV, Hull_LuV, Hull_ZPM, Hull_UV, Hull_MAX}, HATCHES_DYNAMO = {Hatch_Dynamo_ULV, Hatch_Dynamo_LV, Hatch_Dynamo_MV, Hatch_Dynamo_HV, Hatch_Dynamo_EV, Hatch_Dynamo_IV, Hatch_Dynamo_LuV, Hatch_Dynamo_ZPM, Hatch_Dynamo_UV, Hatch_Dynamo_MAX}, HATCHES_ENERGY = {Hatch_Energy_ULV, Hatch_Energy_LV, Hatch_Energy_MV, Hatch_Energy_HV, Hatch_Energy_EV, Hatch_Energy_IV, Hatch_Energy_LuV, Hatch_Energy_ZPM, Hatch_Energy_UV, Hatch_Energy_MAX}, HATCHES_INPUT = {Hatch_Input_ULV, Hatch_Input_LV, Hatch_Input_MV, Hatch_Input_HV, Hatch_Input_EV, Hatch_Input_IV, Hatch_Input_LuV, Hatch_Input_ZPM, Hatch_Input_UV, Hatch_Input_MAX}, HATCHES_INPUT_BUS = {Hatch_Input_Bus_ULV, Hatch_Input_Bus_LV, Hatch_Input_Bus_MV, Hatch_Input_Bus_HV, Hatch_Input_Bus_EV, Hatch_Input_Bus_IV, Hatch_Input_Bus_LuV, Hatch_Input_Bus_ZPM, Hatch_Input_Bus_UV, Hatch_Input_Bus_MAX}, HATCHES_OUTPUT = {Hatch_Output_ULV, Hatch_Output_LV, Hatch_Output_MV, Hatch_Output_HV, Hatch_Output_EV, Hatch_Output_IV, Hatch_Output_LuV, Hatch_Output_ZPM, Hatch_Output_UV, Hatch_Output_MAX}, HATCHES_OUTPUT_BUS = {Hatch_Output_Bus_ULV, Hatch_Output_Bus_LV, Hatch_Output_Bus_MV, Hatch_Output_Bus_HV, Hatch_Output_Bus_EV, Hatch_Output_Bus_IV, Hatch_Output_Bus_LuV, Hatch_Output_Bus_ZPM, Hatch_Output_Bus_UV, Hatch_Output_Bus_MAX}, HATCHES_MUFFLER = {Hatch_Muffler_LV, Hatch_Muffler_LV, Hatch_Muffler_MV, Hatch_Muffler_HV, Hatch_Muffler_EV, Hatch_Muffler_IV, Hatch_Muffler_LuV, Hatch_Muffler_ZPM, Hatch_Muffler_UV, Hatch_Muffler_MAX};
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
index 9be65b1586..e9e9ce517b 100644
--- a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
+++ b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
@@ -19,8 +19,10 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
public final float sEnergy;
public final int sRadiation;
public final float sHeat;
+ public final ItemStack sDepleted;
+ public final boolean sMox;
- public GT_RadioactiveCellIC_Item(String aUnlocalized, String aEnglish, int aCellcount, int maxDamage, float aEnergy, int aRadiation, float aHeat) {
+ public GT_RadioactiveCellIC_Item(String aUnlocalized, String aEnglish, int aCellcount, int maxDamage, float aEnergy, int aRadiation, float aHeat, ItemStack aDepleted, boolean aMox) {
super(aUnlocalized, aEnglish, aCellcount);
setMaxStackSize(64);
this.maxDmg = maxDamage;
@@ -28,6 +30,8 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
this.sEnergy = aEnergy;
this.sRadiation = aRadiation;
this.sHeat = aHeat;
+ this.sDepleted = aDepleted;
+ this.sMox = aMox;
}
@@ -54,8 +58,12 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
} else {
pulses += checkPulseable(reactor, x - 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x + 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y - 1, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y + 1, yourStack, x, y, heatrun);
- int heat = sumUp(pulses) * 4;
+// int heat = sumUp(pulses) * 4;
+ int heat = triangularNumber(pulses) * 4;
+
+ heat = getFinalHeat(reactor, yourStack, x, y, heat);
+
ArrayList<ItemStackCoord> heatAcceptors = new ArrayList();
checkHeatAcceptor(reactor, x - 1, y, heatAcceptors);
checkHeatAcceptor(reactor, x + 1, y, heatAcceptors);
@@ -76,20 +84,33 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
}
}
if (getDamageOfStack(yourStack) >= getMaxDamageEx() - 1) {
- switch (this.numberOfCells) {
- case 1:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_1.get(1, new Object[0]));
- break;
- case 2:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_2.get(1, new Object[0]));
- break;
- case 4:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_4.get(1, new Object[0]));
- }
+// switch (this.numberOfCells) {
+// case 1:
+// reactor.setItemAt(x, y, ItemList.Depleted_Thorium_1.get(1, new Object[0]));
+// break;
+// case 2:
+// reactor.setItemAt(x, y, ItemList.Depleted_Thorium_2.get(1, new Object[0]));
+// break;
+// case 4:
+// reactor.setItemAt(x, y, ItemList.Depleted_Thorium_4.get(1, new Object[0]));
+// }
+ reactor.setItemAt(x, y, sDepleted.copy());
} else if (heatrun) {
damageItemStack(yourStack, 1);
}
}
+
+ protected int getFinalHeat(IReactor reactor, ItemStack stack, int x, int y, int heat)
+ {
+ if (sMox&&reactor.isFluidCooled())
+ {
+ float breedereffectiveness = reactor.getHeat() / reactor.getMaxHeat();
+ if (breedereffectiveness > 0.5D) {
+ heat *= 2;
+ }
+ }
+ return heat;
+ }
private void checkHeatAcceptor(IReactor reactor, int x, int y, ArrayList<ItemStackCoord> heatAcceptors) {
ItemStack thing = reactor.getItemAt(x, y);
@@ -101,7 +122,12 @@ public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implement
public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean heatrun) {
if (!heatrun) {
- reactor.addOutput((float) (1.0F * this.sEnergy));
+ if(sMox){
+ float breedereffectiveness = reactor.getHeat() / reactor.getMaxHeat();
+ float ReaktorOutput = 1.5F * breedereffectiveness + 1.0F;
+ reactor.addOutput(ReaktorOutput * this.sEnergy);
+ }else{
+ reactor.addOutput((float) (1.0F * this.sEnergy));}
}
return true;
}
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
index 7ceaf43f2e..f2169085d6 100644
--- a/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
+++ b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
@@ -36,6 +36,11 @@ public class GT_RadioactiveCell_Item
}
return b;
}
+
+ protected static int triangularNumber(int x)
+ {
+ return (x * x + x) / 2;
+ }
protected boolean outputPulseForStack(ItemStack aStack) {
NBTTagCompound tNBT = aStack.getTagCompound();
diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java
index b6fa328b79..8026a7376f 100644
--- a/src/main/java/gregtech/api/util/GT_Utility.java
+++ b/src/main/java/gregtech/api/util/GT_Utility.java
@@ -20,6 +20,7 @@ import gregtech.api.objects.GT_ItemStack;
import gregtech.api.objects.ItemData;
import gregtech.api.threads.GT_Runnable_Sound;
import gregtech.common.GT_Proxy;
+import ic2.api.recipe.ICannerBottleRecipeManager;
import ic2.api.recipe.IRecipeInput;
import ic2.api.recipe.RecipeInputItemStack;
import ic2.api.recipe.RecipeInputOreDict;
@@ -810,6 +811,26 @@ public class GT_Utility {
return copyMetaData(Items.feather.getDamage(aStack) + 1, aStack);
return null;
}
+
+ public static synchronized boolean removeIC2BottleRecipe(ItemStack aContainer, ItemStack aInput, Map<ic2.api.recipe.ICannerBottleRecipeManager.Input, RecipeOutput> aRecipeList, ItemStack aOutput){
+ if ((isStackInvalid(aInput) && isStackInvalid(aOutput) && isStackInvalid(aContainer)) || aRecipeList == null) return false;
+ boolean rReturn = false;
+ Iterator<Map.Entry<ic2.api.recipe.ICannerBottleRecipeManager.Input, RecipeOutput>> tIterator = aRecipeList.entrySet().iterator();
+ aOutput = GT_OreDictUnificator.get(aOutput);
+ while (tIterator.hasNext()) {
+ Map.Entry<ic2.api.recipe.ICannerBottleRecipeManager.Input, RecipeOutput> tEntry = tIterator.next();
+ if (aInput == null || tEntry.getKey().matches(aContainer, aInput)) {
+ List<ItemStack> tList = tEntry.getValue().items;
+ if (tList != null) for (ItemStack tOutput : tList)
+ if (aOutput == null || areStacksEqual(GT_OreDictUnificator.get(tOutput), aOutput)) {
+ tIterator.remove();
+ rReturn = true;
+ break;
+ }
+ }
+ }
+ return rReturn;
+ }
public static synchronized boolean removeSimpleIC2MachineRecipe(ItemStack aInput, Map<IRecipeInput, RecipeOutput> aRecipeList, ItemStack aOutput) {
if ((isStackInvalid(aInput) && isStackInvalid(aOutput)) || aRecipeList == null) return false;
diff --git a/src/main/java/gregtech/common/items/GT_DepletetCell_Item.java b/src/main/java/gregtech/common/items/GT_DepletetCell_Item.java
index add80f07c3..9d23d09587 100644
--- a/src/main/java/gregtech/common/items/GT_DepletetCell_Item.java
+++ b/src/main/java/gregtech/common/items/GT_DepletetCell_Item.java
@@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack;
public class GT_DepletetCell_Item extends GT_RadioactiveCellIC_Item {
public GT_DepletetCell_Item(String aUnlocalized, String aEnglish, int aRadiation) {
- super(aUnlocalized, aEnglish, 1, 1, 0, aRadiation, 0);
+ super(aUnlocalized, aEnglish, 1, 1, 0, aRadiation, 0, null, false);
}
public void processChamber(IReactor paramIReactor, ItemStack paramItemStack, int paramInt1, int paramInt2, boolean paramBoolean) {
diff --git a/src/main/java/gregtech/common/items/armor/ArmorCalculation.java b/src/main/java/gregtech/common/items/armor/ArmorCalculation.java
new file mode 100644
index 0000000000..8915ce6f52
--- /dev/null
+++ b/src/main/java/gregtech/common/items/armor/ArmorCalculation.java
@@ -0,0 +1,413 @@
+package gregtech.common.items.armor;
+
+import java.util.List;
+
+import thaumcraft.api.nodes.IRevealer;
+import cpw.mods.fml.common.Loader;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.objects.ItemData;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ArmorCalculation {
+ public static float[] calculateArmor(ItemStack[] parts) {
+ float[] def = new float[32];
+ def[0] = 0; // Weight
+ def[1] = 1; // physical Def
+ def[2] = 1; // projectileDef
+ def[3] = 1; // fireDef
+ def[4] = 1; // magicDef
+ def[5] = 1; // explosionDef
+ def[6] = 0; // radiationDef
+ def[7] = 0; // electricDef
+ def[8] = 0; // witherDef
+ def[9] = 0; // fallDef
+ def[10] = 0; // Thorns
+ def[11] = 0; // ItemMagnet
+ def[12] = 0; // ItemCharge
+ def[13] = 0; // Thaumcraft goggles
+ def[14] = 0; // Nightvision
+ def[15] = 0; // tankCap
+ def[16] = 0; // motorPower
+ def[17] = 0; // motorEU
+ def[18] = 0; // pistonPower
+ def[19] = 0; // pistonEU
+ def[20] = 0; // ElectrolyzerPower
+ def[21] = 0; // ElectrolyzerEU
+ def[22] = 0; // FieldEmmiterPower
+ def[23] = 0; // FieldEmmiterEU
+ def[24] = 0; // JetpackFuelPower
+ def[25] = 0; // FuelUsage
+ def[26] = 0; // JetpackEUPower
+ def[27] = 0; // JetpackEU
+ def[28] = 0; // AntiGravPower
+ def[29] = 0; // AntiGravEU
+ def[30] = 0; // ProcessingPower
+ def[31] = 0; // ProcessingPowerUsed
+
+ if (parts != null) {
+ def[12] = 0.0f;
+ for (int i = 0; i < parts.length; i++) {
+ if (parts[i] != null) {
+ ItemData data = GT_OreDictUnificator.getItemData(parts[i]);
+ if (data != null && (data.mPrefix == OrePrefixes.plate || data.mPrefix == OrePrefixes.plateAlloy)) {
+ // Weight
+ def[0] = def[0] + Values.INSTANCE.getValues(data.mMaterial.mMaterial).weight;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ def[0] = def[0] - 20;
+ }
+ // physicalDef
+ float tmp = Values.INSTANCE.getValues(data.mMaterial.mMaterial).physicalDef;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ tmp = 0.27f;
+ }
+ if (tmp > 0.0f) {
+ def[1] = def[1] - (tmp * def[1]);
+ }
+ // projectileDef
+ tmp = Values.INSTANCE.getValues(data.mMaterial.mMaterial).projectileDef;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ tmp = 0.27f;
+ }
+ if (tmp > 0.0f) {
+ def[2] = def[2] - (tmp * def[2]);
+ }
+ // fireDef
+ tmp = Values.INSTANCE.getValues(data.mMaterial.mMaterial).fireDef;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ tmp = 0.25f;
+ }
+ if (tmp > 0.0f) {
+ def[3] = def[3] - (tmp * def[3]);
+ }
+ // magicDef
+ tmp = Values.INSTANCE.getValues(data.mMaterial.mMaterial).magicDef;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ tmp = 0.25f;
+ }
+ if (tmp > 0.0f) {
+ def[4] = def[4] - (tmp * def[4]);
+ }
+ // explosionDef
+ tmp = Values.INSTANCE.getValues(data.mMaterial.mMaterial).explosionDef;
+ if (data.mPrefix == OrePrefixes.plateAlloy && data.mMaterial.mMaterial == Materials.Iridium) {
+ tmp = 0.27f;
+ }
+ if (tmp > 0.0f) {
+ def[5] = def[5] - (tmp * def[5]);
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.Rubber) {
+ def[7] = def[7] + 0.25f;
+ def[9] = def[9] + 2.0f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.Lead) {
+ def[6] = def[6] + 0.30f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.Plastic) {
+ def[7] = def[7] + 0.25f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.NeodymiumMagnetic) {
+ def[11] = def[11] + 2.0f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.NetherStar) {
+ def[8] = def[8] + 0.20f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.InfusedFire) {
+ def[10] = def[10] + 3.0f;
+ }
+ if (data.mPrefix == OrePrefixes.plate && data.mMaterial.mMaterial == Materials.InfusedEntropy) {
+ def[10] = def[10] + 4.0f;
+ }
+ } else if (GT_ModHandler.isChargerItem(parts[i])) {
+ def[12] = def[12] + (float) ic2.api.item.ElectricItem.manager.getCharge(parts[i]);
+ def[0] = (float) (def[0] + Math.pow(ic2.api.item.ElectricItem.manager.getCharge(parts[i]), 0.33f));
+ }
+ else if (Loader.isModLoaded("Thaumcraft") && parts[i].getItem() instanceof IRevealer) {
+ def[13] = 1;
+ def[31] += 100;
+ }
+ else if (parts[i].getItem().getUnlocalizedName().equals("ic2.itemNightvisionGoggles")) {
+ def[14] = 1;
+ def[31] += 100;
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gt.meta.spring")) {// Once readded: GT Motors
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 8630:
+ def[16] += 200; // motorPower
+ def[17] += 50;
+ def[31] += 10;
+ break;
+ case 8631:
+ def[16] += 300; // motorPower
+ def[17] += 100;
+ def[31] += 20;
+ break;
+ case 8632:
+ def[16] += 400; // motorPower
+ def[17] += 200;
+ def[31] += 50;
+ break;
+ case 8633:
+ def[16] += 500; // motorPower
+ def[17] += 400;
+ def[31] += 100;
+ break;
+ case 8634:
+ def[16] += 600; // motorPower
+ def[17] += 800;
+ def[31] += 200;
+ break;
+ }
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gt.meta.springSmall")) {// Once Readded: GT Electric Pistons
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 8630:
+ def[18] += 3;
+ def[19] += 200;
+ def[31] += 10;
+ break;
+ case 8631:
+ def[18] += 4;
+ def[19] += 300;
+ def[31] += 20;
+ break;
+ case 8632:
+ def[18] += 5;
+ def[19] += 450;
+ def[31] += 50;
+ break;
+ case 8633:
+ def[18] += 6;
+ def[19] += 800;
+ def[31] += 100;
+ break;
+ case 8634:
+ def[18] += 7;
+ def[19] += 1600;
+ def[31] += 200;
+ break;
+ }
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gt.meta.Electrolyzer")) {// Once Readded: GT Electrolyzer
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 8630:
+ def[20] += 10; // ElectrolyzerPower
+ def[21] += 1; // ElectrolyzerEU
+ def[31] += 50;
+ break;
+ case 8631:
+ def[20] += 20; // ElectrolyzerPower
+ def[21] += 4; // ElectrolyzerEU
+ def[31] += 100;
+ break;
+ case 8632:
+ def[20] += 40; // ElectrolyzerPower
+ def[21] += 16; // ElectrolyzerEU
+ def[31] += 150;
+ break;
+ case 8633:
+ def[20] += 80; // ElectrolyzerPower
+ def[21] += 64; // ElectrolyzerEU
+ def[31] += 200;
+ break;
+ case 8634:
+ def[20] += 160; // ElectrolyzerPower
+ def[21] += 256; // ElectrolyzerEU
+ def[31] += 250;
+ break;
+ }
+ } else if (parts[i].getItem().equals(ItemList.Cell_Empty.getItem())) {
+ def[15] += 8000;
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gt.meta.cell")) {// Once Readded: GT Fluid Cells (tank)
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 8630: // steel fluid cell
+ def[15] += 16000;
+ break;
+ case 8631: // tungsten fluid cell
+ def[15] += 64000;
+ break;
+ }
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gt.meta.emmiter")) {// Once Readded: GT Field Emmiter
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 8630:
+ def[22] += 1; // FieldEmmiterPower
+ def[23] += 1; // FieldEmmiterEU
+ def[31] += 100;
+ break;
+ case 8631:
+ def[22] += 2; // FieldEmmiterPower
+ def[23] += 4; // FieldEmmiterEU
+ def[31] += 200;
+ break;
+ case 8632:
+ def[22] += 3; // FieldEmmiterPower
+ def[23] += 16; // FieldEmmiterEU
+ def[31] += 300;
+ break;
+ case 8633:
+ def[22] += 4; // FieldEmmiterPower
+ def[23] += 64; // FieldEmmiterEU
+ def[31] += 400;
+ break;
+ case 8634:
+ def[22] += 5; // FieldEmmiterPower
+ def[23] += 512; // FieldEmmiterEU
+ def[31] += 500;
+ break;
+ }
+ } else if (data !=null && data.mPrefix == OrePrefixes.circuit) {// processing power stuff
+ if (data.mMaterial.mMaterial == Materials.Basic) {
+ def[30] += 100;
+ } else if (data.mMaterial.mMaterial == Materials.Good) {
+ def[30] += 200;
+ } else if (data.mMaterial.mMaterial == Materials.Advanced) {
+ def[30] += 300;
+ } else if (data.mMaterial.mMaterial == Materials.Data) {
+ def[30] += 400;
+ } else if (data.mMaterial.mMaterial == Materials.Elite) {
+ def[30] += 500;
+ } else if (data.mMaterial.mMaterial == Materials.Master) {
+ def[30] += 600;
+ }
+ } else if (parts[i].getItem().getUnlocalizedName().equals("gte.meta.jetpack")) {// jeptack parts
+ switch (parts[i].getItem().getDamage(parts[i])) {
+ case 0:
+ def[24] += 50; // JetpackFuelPower
+ def[25] += 1; // FuelUsage
+ def[31] += 10;
+ break;
+ case 1:
+ def[24] += 75; // JetpackFuelPower
+ def[25] += 2; // FuelUsage
+ def[31] += 20;
+ break;
+ case 2:
+ def[24] += 100; // JetpackFuelPower
+ def[25] += 4; // FuelUsage
+ def[31] += 30;
+ break;
+ case 3:
+ def[24] += 125; // JetpackFuelPower
+ def[25] += 8; // FuelUsage
+ def[31] += 40;
+ break;
+ case 4:
+ def[24] += 150; // JetpackFuelPower
+ def[25] += 16; // FuelUsage
+ def[31] += 50;
+ break;
+ case 5:
+ def[26] += 20; // JetpackEUPower
+ def[27] += 8; // JetpackEU
+ def[31] += 30;
+ break;
+ case 6:
+ def[26] += 30; // JetpackEUPower
+ def[27] += 16; // JetpackEU
+ def[31] += 60;
+ break;
+ case 7:
+ def[26] += 40; // JetpackEUPower
+ def[27] += 32; // JetpackEU
+ def[31] += 90;
+ break;
+ case 8:
+ def[26] += 50; // JetpackEUPower
+ def[27] += 64; // JetpackEU
+ def[31] += 120;
+ break;
+ case 9:
+ def[26] += 60; // JetpackEUPower
+ def[27] += 128; // JetpackEU
+ def[31] += 150;
+ break;
+ case 10:
+ def[28] += 100; // AntiGravPower
+ def[29] += 32; // AntiGravEU
+ def[31] += 100;
+ break;
+ case 11:
+ def[28] += 133; // AntiGravPower
+ def[29] += 64; // AntiGravEU
+ def[31] += 200;
+ break;
+ case 12:
+ def[28] += 166; // AntiGravPower
+ def[29] += 128; // AntiGravEU
+ def[31] += 300;
+ break;
+ case 13:
+ def[28] += 200; // AntiGravPower
+ def[29] += 256; // AntiGravEU
+ def[31] += 400;
+ break;
+ case 14:
+ def[28] += 233; // AntiGravPower
+ def[29] += 512; // AntiGravEU
+ def[31] += 500;
+ break;
+ }
+ } else if (true) {
+ //System.out.println("Unknown Item: " + parts[i].getItem().getUnlocalizedName());
+ }
+ }
+ }
+ }
+ def[1] = 1 - def[1];
+ def[2] = 1 - def[2];
+ def[3] = 1 - def[3];
+ def[4] = 1 - def[4];
+ def[5] = 1 - def[5];
+ if (def[7] > 0.95) {
+ def[7] = 1.0f;
+ }
+ if (def[8] > 0.98) {
+ def[8] = 1.0f;
+ }
+ return def;
+ }
+
+ public static int deChargeBatterys(ItemStack[] parts, int amount) {
+ // System.out.println("deCharge " + amount);
+ int decharged = 0;
+ for (int i = 0; decharged < amount && i < parts.length; i++) {
+ if (GT_ModHandler.isChargerItem(parts[i])) {
+ decharged = (int) (decharged + ic2.api.item.ElectricItem.manager.discharge(parts[i], amount - decharged, 10, false, false, false));
+ }
+ }
+ return decharged;
+ }
+
+ public static FluidStack getFluid(ItemStack[] parts, int tankCap) {
+ int fluidAmount;
+ if (parts.length > 12 && parts[12] != null) {
+ NBTTagCompound nbt = parts[12].getTagCompound();
+ if (nbt != null) {
+ fluidAmount = (int) nbt.getLong("mFluidDisplayAmount");
+ if (fluidAmount > tankCap) {
+ nbt.setLong("mFluidDisplayAmount", tankCap);
+ parts[12].setTagCompound(nbt);
+ fluidAmount = tankCap;
+ }
+ return new FluidStack(parts[12].getItemDamage(), fluidAmount);
+ }
+
+ }
+ return null;
+ }
+
+ public static void useFluid(ItemStack[] parts, int usedAmount) {
+ int fluidAmount;
+ if (parts.length > 12 && parts[12] != null) {
+ NBTTagCompound nbt = parts[12].getTagCompound();
+ if (nbt != null) {
+ fluidAmount = (int) nbt.getLong("mFluidDisplayAmount");
+ nbt.setLong("mFluidDisplayAmount", fluidAmount - usedAmount);
+ parts[12].setTagCompound(nbt);
+ }
+ }
+ }
+}
diff --git a/src/main/java/gregtech/common/items/armor/ArmorData.java b/src/main/java/gregtech/common/items/armor/ArmorData.java
new file mode 100644
index 0000000000..79c6a20ffa
--- /dev/null
+++ b/src/main/java/gregtech/common/items/armor/ArmorData.java
@@ -0,0 +1,345 @@
+package gregtech.common.items.armor;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Random;
+
+import gregtech.api.damagesources.GT_DamageSources;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.api.util.GT_Utility;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.DamageSource;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+public class ArmorData {
+
+ public int type; // 0 = helmet; 1 = chestplate; 2 = leggings; 3 = boots;
+ public int armorTier; // 0 = Basic Modular Armor; 1 = Modular Exoskeleton; 2= Modular Nanosuit; 3 = Heavy Power Armor
+ public List info; // needs Localization
+ public boolean isTopItem;
+ public int tooltipUpdate;
+ public boolean openGui;
+
+ public ArmorData helmet;
+ public ArmorData chestplate;
+ public ArmorData leggings;
+ public ArmorData boots;
+
+ public boolean fullArmor;
+ public boolean fullRadiationDef;
+ public boolean fullElectricDef;
+
+ public float fallDef;
+ public float physicalDef;
+ public float projectileDef;
+ public float fireDef;
+ public float magicDef;
+ public float explosionDef;
+ public float radiationDef;
+ public float electricDef;
+ public float witherDef;
+
+ public float thorns;
+ public float thornsSingle;
+ public int magnet;
+ public int magnetSingle;
+
+ public int partsCharge;
+ public int maxCharge;
+ public int charge;
+ public boolean thaumicGoggles;
+ public boolean nightVision;
+ public boolean potionInjector;
+ public boolean autoFeeder;
+
+ public FluidStack fluid;
+ public int tankCap;
+
+ public int weight;