diff options
Diffstat (limited to 'src')
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; |
