From 33e6060119d4263dcac1a594e53390e7a62e848a Mon Sep 17 00:00:00 2001 From: Muramasa Date: Sat, 10 Sep 2016 13:20:09 +0100 Subject: Simplify, cleanup and seperate processors --- src/main/java/gregtech/api/enums/Materials.java | 2 +- src/main/java/gregtech/api/enums/OrePrefixes.java | 2 + .../gregtech/common/GT_Worldgen_GT_Ore_Layer.java | 8 +- .../loaders/oreprocessing/ProcessingArrows.java | 6 +- .../loaders/oreprocessing/ProcessingBattery.java | 12 +- .../loaders/oreprocessing/ProcessingCell.java | 121 +++---- .../oreprocessing/ProcessingCellPlasma.java | 23 -- .../loaders/oreprocessing/ProcessingCrafting.java | 76 +++-- .../ProcessingCrushedCentrifuged.java | 20 -- .../oreprocessing/ProcessingCrushedOre.java | 38 +++ .../oreprocessing/ProcessingCrushedPurified.java | 42 --- .../loaders/oreprocessing/ProcessingDust.java | 356 ++++++++++++--------- .../oreprocessing/ProcessingDustImpure.java | 64 ---- .../loaders/oreprocessing/ProcessingDustSmall.java | 31 -- .../loaders/oreprocessing/ProcessingDustTiny.java | 36 --- .../loaders/oreprocessing/ProcessingFood.java | 25 +- .../loaders/oreprocessing/ProcessingGear.java | 16 +- .../loaders/oreprocessing/ProcessingGearSmall.java | 19 -- .../loaders/oreprocessing/ProcessingGem.java | 101 ++++-- .../oreprocessing/ProcessingGemChipped.java | 21 -- .../oreprocessing/ProcessingGemExquisite.java | 22 -- .../loaders/oreprocessing/ProcessingGemFlawed.java | 22 -- .../oreprocessing/ProcessingGemFlawless.java | 22 -- .../loaders/oreprocessing/ProcessingIngot.java | 91 ++++++ .../loaders/oreprocessing/ProcessingIngot1.java | 62 ---- .../loaders/oreprocessing/ProcessingIngot2.java | 21 -- .../loaders/oreprocessing/ProcessingIngot3.java | 21 -- .../loaders/oreprocessing/ProcessingIngot4.java | 21 -- .../loaders/oreprocessing/ProcessingIngot5.java | 21 -- .../loaders/oreprocessing/ProcessingIngotHot.java | 18 -- .../loaders/oreprocessing/ProcessingItem.java | 30 +- .../loaders/oreprocessing/ProcessingLeaves.java | 14 - .../loaders/oreprocessing/ProcessingPipe.java | 49 +++ .../loaders/oreprocessing/ProcessingPipeLarge.java | 23 -- .../oreprocessing/ProcessingPipeMedium.java | 23 -- .../oreprocessing/ProcessingPipeRestrictive.java | 18 -- .../loaders/oreprocessing/ProcessingPipeSmall.java | 23 -- .../loaders/oreprocessing/ProcessingPlate.java | 166 ++++++++++ .../loaders/oreprocessing/ProcessingPlate1.java | 96 ------ .../loaders/oreprocessing/ProcessingPlate2.java | 31 -- .../loaders/oreprocessing/ProcessingPlate3.java | 32 -- .../loaders/oreprocessing/ProcessingPlate4.java | 29 -- .../loaders/oreprocessing/ProcessingPlate5.java | 27 -- .../loaders/oreprocessing/ProcessingPlate9.java | 20 -- .../oreprocessing/ProcessingPlateAlloy.java | 27 -- .../loaders/oreprocessing/ProcessingToolHead.java | 132 ++++++++ .../oreprocessing/ProcessingToolHeadArrow.java | 19 -- .../oreprocessing/ProcessingToolHeadAxe.java | 17 - .../oreprocessing/ProcessingToolHeadBuzzSaw.java | 20 -- .../oreprocessing/ProcessingToolHeadChainsaw.java | 26 -- .../oreprocessing/ProcessingToolHeadDrill.java | 30 -- .../oreprocessing/ProcessingToolHeadFile.java | 21 -- .../oreprocessing/ProcessingToolHeadHammer.java | 44 --- .../oreprocessing/ProcessingToolHeadHoe.java | 17 - .../oreprocessing/ProcessingToolHeadPickaxe.java | 17 - .../oreprocessing/ProcessingToolHeadPlow.java | 17 - .../oreprocessing/ProcessingToolHeadSaw.java | 17 - .../oreprocessing/ProcessingToolHeadSense.java | 17 - .../oreprocessing/ProcessingToolHeadShovel.java | 17 - .../oreprocessing/ProcessingToolHeadSword.java | 17 - .../ProcessingToolHeadUniversalSpade.java | 18 -- .../oreprocessing/ProcessingToolHeadWrench.java | 30 -- .../loaders/oreprocessing/ProcessingToolOther.java | 33 ++ .../loaders/oreprocessing/ProcessingWire.java | 160 +++++++++ .../loaders/oreprocessing/ProcessingWire01.java | 52 --- .../loaders/oreprocessing/ProcessingWire02.java | 46 --- .../loaders/oreprocessing/ProcessingWire04.java | 45 --- .../loaders/oreprocessing/ProcessingWire08.java | 45 --- .../loaders/oreprocessing/ProcessingWire12.java | 44 --- .../loaders/oreprocessing/ProcessingWire16.java | 27 -- .../loaders/preload/GT_Loader_OreProcessing.java | 58 +--- 71 files changed, 1113 insertions(+), 1821 deletions(-) delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingCellPlasma.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedCentrifuged.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedOre.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedPurified.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingDustImpure.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingDustSmall.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingDustTiny.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingGearSmall.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingGemChipped.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingGemExquisite.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingGemFlawed.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingGemFlawless.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot1.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot2.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot3.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot4.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot5.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingIngotHot.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingLeaves.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPipe.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPipeLarge.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPipeMedium.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPipeRestrictive.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPipeSmall.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate1.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate2.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate3.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate4.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate5.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate9.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingPlateAlloy.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHead.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadArrow.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadAxe.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadBuzzSaw.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadChainsaw.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadDrill.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadFile.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadHammer.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadHoe.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadPickaxe.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadPlow.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadSaw.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadSense.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadShovel.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadSword.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadUniversalSpade.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHeadWrench.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingToolOther.java create mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire01.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire02.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire04.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire08.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire12.java delete mode 100644 src/main/java/gregtech/loaders/oreprocessing/ProcessingWire16.java (limited to 'src/main/java') diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java index 6b0008ddae..81b0ea8f60 100644 --- a/src/main/java/gregtech/api/enums/Materials.java +++ b/src/main/java/gregtech/api/enums/Materials.java @@ -1331,7 +1331,7 @@ public class Materials implements IColorModulationContainer, ISubTagContainer { public static void init() { for (IMaterialHandler aRegistrator : mMaterialHandlers) { - aRegistrator.onMaterialsInit(); //This is where addon mods can and manipulate materials + aRegistrator.onMaterialsInit(); //This is where addon mods can add/manipulate materials } initMaterialProperties(); //No more material addition or manipulation should be done past this point! MATERIALS_ARRAY = MATERIALS_MAP.values().toArray(new Materials[MATERIALS_MAP.size()]); //Generate standard object array. This is a lot faster to loop over. diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java index 56ad47ac3f..ea71dc3662 100644 --- a/src/main/java/gregtech/api/enums/OrePrefixes.java +++ b/src/main/java/gregtech/api/enums/OrePrefixes.java @@ -854,6 +854,8 @@ public enum OrePrefixes { for (IOreRecipeRegistrator tRegistrator : mOreProcessing) { if (D2) GT_Log.ore.println("Processing '" + aOreDictName + "' with the Prefix '" + name() + "' and the Material '" + aMaterial.mName + "' at " + GT_Utility.getClassName(tRegistrator)); + //if (Materials.mDefaultComponents.contains(this) && !this.mGeneratedItems.contains(aMaterial)) return; + //if (this.mGeneratedItems.contains(aMaterial)) tRegistrator.registerOre(this, aMaterial, aOreDictName, aModName, GT_Utility.copyAmount(1, aStack)); } } diff --git a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java index 77de60a67a..5c3d387ba9 100644 --- a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java +++ b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java @@ -54,10 +54,10 @@ public class GT_Worldgen_GT_Ore_Layer this.mSporadicMeta = ((short) GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "OreSporaticlyAround", aSporadic.mMetaItemSubID)); this.mRestrictBiome = GregTech_API.sWorldgenFile.get("worldgen." + this.mWorldGenName, "RestrictToBiomeName", "None"); - if (mPrimaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mPrimaryMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied Material ID " + mPrimaryMeta + " for " + mWorldGenName + " does not exist"); - if (mSecondaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mSecondaryMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied Material ID " + mSecondaryMeta + " for " + mWorldGenName + " does not exist"); - if (mBetweenMeta != -1 && GregTech_API.sGeneratedMaterials[(mBetweenMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied Material ID " + mBetweenMeta + " for " + mWorldGenName + " does not exist"); - if (mPrimaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mSporadicMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied Material ID " + mSporadicMeta + " for " + mWorldGenName + " does not exist"); + //if (mPrimaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mPrimaryMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied ID " + mPrimaryMeta + " for " + mWorldGenName + " does not exist"); + //if (mSecondaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mSecondaryMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied ID " + mSecondaryMeta + " for " + mWorldGenName + " does not exist"); + //if (mBetweenMeta != -1 && GregTech_API.sGeneratedMaterials[(mBetweenMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied ID " + mBetweenMeta + " for " + mWorldGenName + " does not exist"); + //if (mPrimaryMeta != -1 && GregTech_API.sGeneratedMaterials[(mSporadicMeta % 1000)] == null) throw new IllegalArgumentException("A Material for the supplied ID " + mSporadicMeta + " for " + mWorldGenName + " does not exist"); if (this.mEnabled) { GT_Achievements.registerOre(GregTech_API.sGeneratedMaterials[(mPrimaryMeta % 1000)], aMinY, aMaxY, aWeight, aOverworld, aNether, aEnd); diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java index fd4fd984bd..731d02dfe5 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java @@ -10,10 +10,8 @@ import net.minecraft.item.ItemStack; public class ProcessingArrows implements gregtech.api.interfaces.IOreRecipeRegistrator { public ProcessingArrows() { - for (OrePrefixes tPrefix : OrePrefixes.values()) - if (tPrefix.name().startsWith("arrowGt")) { - tPrefix.add(this); - } + OrePrefixes.arrowGtWood.add(this); + OrePrefixes.arrowGtPlastic.add(this); } public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBattery.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBattery.java index 56b8b2af62..e7c1edf531 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBattery.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBattery.java @@ -1,21 +1,17 @@ package gregtech.loaders.oreprocessing; -import gregtech.api.enums.GT_Values; -import gregtech.api.enums.ItemList; import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; import net.minecraft.item.ItemStack; public class ProcessingBattery implements gregtech.api.interfaces.IOreRecipeRegistrator { public ProcessingBattery() { - OrePrefixes.battery.add(this); + //OrePrefixes.battery.add(this); } public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if (aMaterial == Materials.Lithium) { - // GT_Values.RA.addAssemblerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("cropnalyzer", 1L, 32767), ItemList.Tool_Scanner.getAlmostBroken(1L, new Object[0]), 12800, 16); - } + /*if (aMaterial == Materials.Lithium) { + GT_Values.RA.addAssemblerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("cropnalyzer", 1L, 32767), ItemList.Tool_Scanner.getAlmostBroken(1L, new Object[0]), 12800, 16); + }*/ } } diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java index df158b8dc8..20e71b0bda 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java @@ -18,73 +18,86 @@ public class ProcessingCell implements IOreRecipeRegistrator { public ProcessingCell() { OrePrefixes.cell.add(this); + OrePrefixes.cellPlasma.add(this); } public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if (aMaterial == Materials.Empty) { - GT_ModHandler.removeRecipeByOutput(aStack); - if (aModName.equalsIgnoreCase("AtomicScience")) { - GT_ModHandler.addExtractionRecipe(ItemList.Cell_Empty.get(1L, new Object[0]), aStack); - } - } else { - if (aMaterial.mFuelPower > 0) { - GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.getFluidForFilledItem(aStack, true) == null ? GT_Utility.getContainerItem(aStack, true) : null, aMaterial.mFuelPower, aMaterial.mFuelType); - } - if ((aMaterial.mMaterialList.size() > 0) && ((aMaterial.mExtraData & 0x3) != 0)) { - int tAllAmount = 0; - MaterialStack tMat2; - for (Iterator i$ = aMaterial.mMaterialList.iterator(); i$.hasNext(); tAllAmount = (int) (tAllAmount + tMat2.mAmount)) { - tMat2 = (MaterialStack) i$.next(); - } - long tItemAmount = 0L; - long tCapsuleCount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{aStack}) * -tAllAmount; - long tDensityMultiplier = aMaterial.getDensity() > 3628800L ? aMaterial.getDensity() / 3628800L : 1L; - ArrayList tList = new ArrayList(); - for (MaterialStack tMat : aMaterial.mMaterialList) { - if (tMat.mAmount > 0L) { - ItemStack tStack; - if (tMat.mMaterial == Materials.Air) { - tStack = ItemList.Cell_Air.get(tMat.mAmount * tDensityMultiplier / 2L, new Object[0]); - } else { - tStack = GT_OreDictUnificator.get(OrePrefixes.dust, tMat.mMaterial, tMat.mAmount); - if (tStack == null) { - tStack = GT_OreDictUnificator.get(OrePrefixes.cell, tMat.mMaterial, tMat.mAmount); - } + switch (aPrefix) { + case cell: + if (aMaterial == Materials.Empty) { + GT_ModHandler.removeRecipeByOutput(aStack); + if (aModName.equalsIgnoreCase("AtomicScience")) { + GT_ModHandler.addExtractionRecipe(ItemList.Cell_Empty.get(1L, new Object[0]), aStack); + } + } else { + if (aMaterial.mFuelPower > 0) { + GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.getFluidForFilledItem(aStack, true) == null ? GT_Utility.getContainerItem(aStack, true) : null, aMaterial.mFuelPower, aMaterial.mFuelType); + } + if ((aMaterial.mMaterialList.size() > 0) && ((aMaterial.mExtraData & 0x3) != 0)) { + int tAllAmount = 0; + MaterialStack tMat2; + for (Iterator i$ = aMaterial.mMaterialList.iterator(); i$.hasNext(); tAllAmount = (int) (tAllAmount + tMat2.mAmount)) { + tMat2 = (MaterialStack) i$.next(); } - if (tItemAmount + tMat.mAmount * 3628800L <= aStack.getMaxStackSize() * aMaterial.getDensity()) { - tItemAmount += tMat.mAmount * 3628800L; - if (tStack != null) { - ItemStack tmp397_395 = tStack; - tmp397_395.stackSize = ((int) (tmp397_395.stackSize * tDensityMultiplier)); - while ((tStack.stackSize > 64) && (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64 < 0L ? tList.size() < 5 : tList.size() < 6) && (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64 <= 64L)) { - tCapsuleCount += GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64; - tList.add(GT_Utility.copyAmount(64L, new Object[]{tStack})); - tStack.stackSize -= 64; + long tItemAmount = 0L; + long tCapsuleCount = GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{aStack}) * -tAllAmount; + long tDensityMultiplier = aMaterial.getDensity() > 3628800L ? aMaterial.getDensity() / 3628800L : 1L; + ArrayList tList = new ArrayList(); + for (MaterialStack tMat : aMaterial.mMaterialList) { + if (tMat.mAmount > 0L) { + ItemStack tStack; + if (tMat.mMaterial == Materials.Air) { + tStack = ItemList.Cell_Air.get(tMat.mAmount * tDensityMultiplier / 2L, new Object[0]); + } else { + tStack = GT_OreDictUnificator.get(OrePrefixes.dust, tMat.mMaterial, tMat.mAmount); + if (tStack == null) { + tStack = GT_OreDictUnificator.get(OrePrefixes.cell, tMat.mMaterial, tMat.mAmount); + } } - if (tStack.stackSize > 0) { - if (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}) <= 64L) { - if (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}) < 0L ? tList.size() < 5 : tList.size() < 6) { - tCapsuleCount += GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}); - tList.add(tStack); + if (tItemAmount + tMat.mAmount * 3628800L <= aStack.getMaxStackSize() * aMaterial.getDensity()) { + tItemAmount += tMat.mAmount * 3628800L; + if (tStack != null) { + ItemStack tmp397_395 = tStack; + tmp397_395.stackSize = ((int) (tmp397_395.stackSize * tDensityMultiplier)); + while ((tStack.stackSize > 64) && (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64 < 0L ? tList.size() < 5 : tList.size() < 6) && (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64 <= 64L)) { + tCapsuleCount += GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64; + tList.add(GT_Utility.copyAmount(64L, new Object[]{tStack})); + tStack.stackSize -= 64; + } + if (tStack.stackSize > 0) { + if (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}) <= 64L) { + if (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}) < 0L ? tList.size() < 5 : tList.size() < 6) { + tCapsuleCount += GT_ModHandler.getCapsuleCellContainerCountMultipliedWithStackSize(new ItemStack[]{tStack}); + tList.add(tStack); + } + } } } } } } + tItemAmount = (tItemAmount * tDensityMultiplier % aMaterial.getDensity() > 0L ? 1 : 0) + tItemAmount * tDensityMultiplier / aMaterial.getDensity(); + if (tList.size() > 0) { + if ((aMaterial.mExtraData & 0x1) != 0) { + //GT_Values.RA.addElectrolyzerRecipe(GT_Utility.copyAmount(tItemAmount, new Object[] { aStack }), tCapsuleCount > 0L ? (int)tCapsuleCount : 0, (ItemStack)tList.get(0), tList.size() < 2 ? null : (ItemStack)tList.get(1), tList.size() < 3 ? null : (ItemStack)tList.get(2), tList.size() < 4 ? null : (ItemStack)tList.get(3), tList.size() < 5 ? null : (ItemStack)tList.get(4), tList.size() < 6 ? null : tCapsuleCount < 0L ? ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]) : (ItemStack)tList.get(5), (int)Math.max(1L, Math.abs(aMaterial.getProtons() * 8L * tItemAmount)), Math.min(4, tList.size()) * 30); + GT_Values.RA.addElectrolyzerRecipe(GT_Utility.copyAmount(tItemAmount, new Object[]{aStack}), tCapsuleCount <= 0L ? 0 : (int) tCapsuleCount, (ItemStack) tList.get(0), tList.size() >= 2 ? (ItemStack) tList.get(1) : null, tList.size() >= 3 ? (ItemStack) tList.get(2) : null, tList.size() >= 4 ? (ItemStack) tList.get(3) : null, tList.size() >= 5 ? (ItemStack) tList.get(4) : null, tCapsuleCount >= 0L ? tList.size() >= 6 ? (ItemStack) tList.get(5) : null : ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]), (int) Math.max(1L, Math.abs(aMaterial.getProtons() * 8L * tItemAmount)), Math.min(4, tList.size()) * 30); + } + if ((aMaterial.mExtraData & 0x2) != 0) { + //GT_Values.RA.addCentrifugeRecipe(GT_Utility.copyAmount(tItemAmount, new Object[] { aStack }), tCapsuleCount > 0L ? (int)tCapsuleCount : 0, (ItemStack)tList.get(0), tList.size() < 2 ? null : (ItemStack)tList.get(1), tList.size() < 3 ? null : (ItemStack)tList.get(2), tList.size() < 4 ? null : (ItemStack)tList.get(3), tList.size() < 5 ? null : (ItemStack)tList.get(4), tList.size() < 6 ? null : tCapsuleCount < 0L ? ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]) : (ItemStack)tList.get(5), (int)Math.max(1L, Math.abs(aMaterial.getMass() * 2L * tItemAmount))); + GT_Values.RA.addCentrifugeRecipe(GT_Utility.copyAmount(tItemAmount, new Object[]{aStack}), tCapsuleCount <= 0L ? 0 : (int) tCapsuleCount, (ItemStack) tList.get(0), tList.size() >= 2 ? (ItemStack) tList.get(1) : null, tList.size() >= 3 ? (ItemStack) tList.get(2) : null, tList.size() >= 4 ? (ItemStack) tList.get(3) : null, tList.size() >= 5 ? (ItemStack) tList.get(4) : null, tCapsuleCount >= 0L ? tList.size() >= 6 ? (ItemStack) tList.get(5) : null : ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]), (int) Math.max(1L, Math.abs(aMaterial.getMass() * 2L * tItemAmount))); + } + } } } - tItemAmount = (tItemAmount * tDensityMultiplier % aMaterial.getDensity() > 0L ? 1 : 0) + tItemAmount * tDensityMultiplier / aMaterial.getDensity(); - if (tList.size() > 0) { - if ((aMaterial.mExtraData & 0x1) != 0) { - //GT_Values.RA.addElectrolyzerRecipe(GT_Utility.copyAmount(tItemAmount, new Object[] { aStack }), tCapsuleCount > 0L ? (int)tCapsuleCount : 0, (ItemStack)tList.get(0), tList.size() < 2 ? null : (ItemStack)tList.get(1), tList.size() < 3 ? null : (ItemStack)tList.get(2), tList.size() < 4 ? null : (ItemStack)tList.get(3), tList.size() < 5 ? null : (ItemStack)tList.get(4), tList.size() < 6 ? null : tCapsuleCount < 0L ? ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]) : (ItemStack)tList.get(5), (int)Math.max(1L, Math.abs(aMaterial.getProtons() * 8L * tItemAmount)), Math.min(4, tList.size()) * 30); - GT_Values.RA.addElectrolyzerRecipe(GT_Utility.copyAmount(tItemAmount, new Object[]{aStack}), tCapsuleCount <= 0L ? 0 : (int) tCapsuleCount, (ItemStack) tList.get(0), tList.size() >= 2 ? (ItemStack) tList.get(1) : null, tList.size() >= 3 ? (ItemStack) tList.get(2) : null, tList.size() >= 4 ? (ItemStack) tList.get(3) : null, tList.size() >= 5 ? (ItemStack) tList.get(4) : null, tCapsuleCount >= 0L ? tList.size() >= 6 ? (ItemStack) tList.get(5) : null : ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]), (int) Math.max(1L, Math.abs(aMaterial.getProtons() * 8L * tItemAmount)), Math.min(4, tList.size()) * 30); - } - if ((aMaterial.mExtraData & 0x2) != 0) { - //GT_Values.RA.addCentrifugeRecipe(GT_Utility.copyAmount(tItemAmount, new Object[] { aStack }), tCapsuleCount > 0L ? (int)tCapsuleCount : 0, (ItemStack)tList.get(0), tList.size() < 2 ? null : (ItemStack)tList.get(1), tList.size() < 3 ? null : (ItemStack)tList.get(2), tList.size() < 4 ? null : (ItemStack)tList.get(3), tList.size() < 5 ? null : (ItemStack)tList.get(4), tList.size() < 6 ? null : tCapsuleCount < 0L ? ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]) : (ItemStack)tList.get(5), (int)Math.max(1L, Math.abs(aMaterial.getMass() * 2L * tItemAmount))); - GT_Values.RA.addCentrifugeRecipe(GT_Utility.copyAmount(tItemAmount, new Object[]{aStack}), tCapsuleCount <= 0L ? 0 : (int) tCapsuleCount, (ItemStack) tList.get(0), tList.size() >= 2 ? (ItemStack) tList.get(1) : null, tList.size() >= 3 ? (ItemStack) tList.get(2) : null, tList.size() >= 4 ? (ItemStack) tList.get(3) : null, tList.size() >= 5 ? (ItemStack) tList.get(4) : null, tCapsuleCount >= 0L ? tList.size() >= 6 ? (ItemStack) tList.get(5) : null : ItemList.Cell_Empty.get(-tCapsuleCount, new Object[0]), (int) Math.max(1L, Math.abs(aMaterial.getMass() * 2L * tItemAmount))); - } + break; + case cellPlasma: + if (aMaterial == Materials.Empty) { + GT_ModHandler.removeRecipeByOutput(aStack); + } else { + GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.getFluidForFilledItem(aStack, true) == null ? GT_Utility.getContainerItem(aStack, true) : null, (int) Math.max(1024L, 1024L * aMaterial.getMass()), 4); + GT_Values.RA.addVacuumFreezerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), gregtech.api.util.GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), (int) Math.max(aMaterial.getMass() * 2L, 1L)); } - } + break; } } } diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCellPlasma.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCellPlasma.java deleted file mode 100644 index 942196d422..0000000000 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCellPlasma.java +++ /dev/null @@ -1,23 +0,0 @@ -package gregtech.loaders.oreprocessing; - -import gregtech.api.enums.GT_Values; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; - -public class ProcessingCellPlasma implements gregtech.api.interfaces.IOreRecipeRegistrator { - public ProcessingCellPlasma() { - OrePrefixes.cellPlasma.add(this); - } - - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if (aMaterial == Materials.Empty) { - GT_ModHandler.removeRecipeByOutput(aStack); - } else { - GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.getFluidForFilledItem(aStack, true) == null ? GT_Utility.getContainerItem(aStack, true) : null, (int) Math.max(1024L, 1024L * aMaterial.getMass()), 4); - GT_Values.RA.addVacuumFreezerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), gregtech.api.util.GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), (int) Math.max(aMaterial.getMass() * 2L, 1L)); - } - } -} diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java index 5c8e4143e6..939d45d2ab 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java @@ -13,41 +13,51 @@ public class ProcessingCrafting implements gregtech.api.interfaces.IOreRecipeReg } public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if (aOreDictName.equals(OreDictNames.craftingQuartz.toString())) { - GT_Values.RA.addAssemblerRecipe(new ItemStack(Blocks.redstone_torch, 3, 32767), GT_Utility.copyAmount(1L, new Object[]{aStack}), Materials.Concrete.getMolten(144L), new ItemStack(net.minecraft.init.Items.comparator, 1, 0), 800, 1); - } else if (aOreDictName.equals(OreDictNames.craftingWireCopper.toString())) { - GT_Values.RA.addAssemblerRecipe(ItemList.Circuit_Basic.get(1L, new Object[0]), GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("frequencyTransmitter", 1L), 800, 1); - } else if (aOreDictName.equals(OreDictNames.craftingWireTin.toString())) { - GT_Values.RA.addAssemblerRecipe(ItemList.Circuit_Basic.get(1L, new Object[0]), GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("frequencyTransmitter", 1L), 800, 1); - } else if (aOreDictName.equals(OreDictNames.craftingLensBlue.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 13), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 13), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(ItemList.IC2_LapotronCrystal.getWildcard(1L, new Object[0]), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Master.get(3L, new Object[0]), 256, 480); - } else if (aOreDictName.equals(OreDictNames.craftingLensYellow.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 14), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 14), 2000, 1920); - } else if (aOreDictName.equals(OreDictNames.craftingLensCyan.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 15), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 15), 2000, 1920); - } else if (aOreDictName.equals(OreDictNames.craftingLensRed.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Redstone, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("BuildCraft|Silicon", "redstoneChipset", 1L, 0), 50, 120); + switch (aOreDictName) { + case "craftingQuartz": + GT_Values.RA.addAssemblerRecipe(new ItemStack(Blocks.redstone_torch, 3, 32767), GT_Utility.copyAmount(1L, new Object[]{aStack}), Materials.Concrete.getMolten(144L), new ItemStack(net.minecraft.init.Items.comparator, 1, 0), 800, 1); + break; + case "craftingWireCopper": + GT_Values.RA.addAssemblerRecipe(ItemList.Circuit_Basic.get(1L, new Object[0]), GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("frequencyTransmitter", 1L), 800, 1); + break; + case "craftingWireTin": + GT_Values.RA.addAssemblerRecipe(ItemList.Circuit_Basic.get(1L, new Object[0]), GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_ModHandler.getIC2Item("frequencyTransmitter", 1L), 800, 1); + break; + case "craftingLensBlue": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 13), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 13), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(ItemList.IC2_LapotronCrystal.getWildcard(1L, new Object[0]), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Master.get(3L, new Object[0]), 256, 480); + break; + case "craftingLensYellow": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 14), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 14), 2000, 1920); + break; + case "craftingLensCyan": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 15), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 15), 2000, 1920); + break; + case "craftingLensRed": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Redstone, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("BuildCraft|Silicon", "redstoneChipset", 1L, 0), 50, 120); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Copper, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Basic.get(1L, new Object[0]), 64, 30); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.AnnealedCopper, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Basic.get(1L, new Object[0]), 64, 30); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Gold, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Advanced.get(1L, new Object[0]), 64, 120); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Electrum, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Advanced.get(1L, new Object[0]), 64, 120); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Elite.get(1L, new Object[0]), 64, 480); - } else if (aOreDictName.equals(OreDictNames.craftingLensGreen.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Olivine, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), 256, 480); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Emerald, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), 256, 480); - } else if (aOreDictName.equals(OreDictNames.craftingLensWhite.toString())) { - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 19), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 19), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Copper, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Basic.get(1L, new Object[0]), 64, 30); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.AnnealedCopper, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Basic.get(1L, new Object[0]), 64, 30); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Gold, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Advanced.get(1L, new Object[0]), 64, 120); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Electrum, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Advanced.get(1L, new Object[0]), 64, 120); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Wiring_Elite.get(1L, new Object[0]), 64, 480); + break; + case "craftingLensGreen": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Olivine, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), 256, 480); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Emerald, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), ItemList.Circuit_Parts_Crystal_Chip_Elite.get(1L, new Object[0]), 256, 480); + break; + case "craftingLensWhite": + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.Iron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 19), 2000, 1920); + GT_Values.RA.addLaserEngraverRecipe(GT_OreDictUnificator.get(OrePrefixes.block, Materials.WroughtIron, 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "item.ItemMultiMaterial", 1L, 19), 2000, 1920); - GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.sandstone, 1, 2), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.sandstone, 1, 1), 50, 16); - GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.stone, 1, 0), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.stonebrick, 1, 3), 50, 16); - GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.quartz_block, 1, 0), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.quartz_block, 1, 1), 50, 16); - GT_Values.RA.addLaserEngraverRecipe(GT_ModHandler.getModItem("appliedenergistics2", "tile.BlockQuartz", 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "tile.BlockQuartzChiseled", 1L), 50, 16); + GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.sandstone, 1, 2), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.sandstone, 1, 1), 50, 16); + GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.stone, 1, 0), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.stonebrick, 1, 3), 50, 16); + GT_Values.RA.addLaserEngraverRecipe(new ItemStack(Blocks.quartz_block, 1, 0), GT_Utility.copyAmount(0L, new Object[]{aStack}), new ItemStack(Blocks.quartz_block, 1, 1), 50, 16); + GT_Values.RA.addLaserEngraverRecipe(GT_ModHandler.getModItem("appliedenergistics2", "tile.BlockQuartz", 1L), GT_Utility.copyAmount(0L, new Object[]{aStack}), GT_ModHandler.getModItem("appliedenergistics2", "tile.BlockQuartzChiseled", 1L), 50, 16); + break; } } } diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedCentrifuged.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedCentrifuged.java deleted file mode 100644 index 278bf29448..0000000000 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedCentrifuged.java +++ /dev/null @@ -1,20 +0,0 @@ -package gregtech.loaders.oreprocessing; - -import gregtech.api.enums.GT_Values; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; - -public class ProcessingCrushedCentrifuged implements gregtech.api.interfaces.IOreRecipeRegistrator { - public ProcessingCrushedCentrifuged() { - OrePrefixes.crushedCentrifuged.add(this); - } - - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - GT_Values.RA.addForgeHammerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), 10, 16); - GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, GT_Utility.selectItemInList(2, aMaterial.mMacerateInto, aMaterial.mOreByProducts), 1L), 10, false); - } -} diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedOre.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedOre.java new file mode 100644 index 0000000000..069d872aae --- /dev/null +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedOre.java @@ -0,0 +1,38 @@ +package gregtech.loaders.oreprocessing; + +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Utility; +import net.minecraft.item.ItemStack; + +public class ProcessingCrushedOre implements gregtech.api.interfaces.IOreRecipeRegistrator { + public ProcessingCrushedOre() { + OrePrefixes.crushedCentrifuged.add(this); + OrePrefixes.crushedPurified.add(this); + } + + public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { + switch (aPrefix) { + case crushedCentrifuged: + GT_Values.RA.addForgeHammerRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), 10, 16); + GT_ModHandler.addPulverisationRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, GT_Utility.selectItemInList(2, aMaterial.mMacerateInto, aMaterial.mOreByProducts), 1L), 10, false); + break; + case crushedPurified: + GT_ModHandler.addThermalCentrifugeRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), (int) Math.min(5000L, Math.abs(aMaterial.getMass() * 20L)), new Object[]{GT_OreDictUnificator.get(OrePrefixes.crushedCentrifuged, aMaterial.mMacerateInto, GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), 1L), GT_OreDictUnificator.get(OrePrefixes.dustTiny, GT_Utility.selectItemInList(1, aMaterial.mMacerateInto, aMaterial.mOreByProducts), 1L)}); + ItemStack tGem = GT_OreDictUnificator.get(OrePrefixes.gem, aMaterial, 1L); + if (tGem != null) { + switch (aMaterial.mName) { + case "Tanzanite": case "Sapphire": case "Olivine": case "GreenSapphire": case "Opal": case "Amethyst": case "Emerald": case "Ruby": + case "Amber": case "Diamond": case "FoolsRuby": case "BlueTopaz": case "GarnetRed": case "Topaz": case "Jasper": case "GarnetYellow": + GT_Values.RA.addSifterRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.gemExquisite, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemFlawless, aMaterial, tGem, 1L), tGem, GT_OreDictUnificator.get(OrePrefixes.gemFlawed, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemChipped, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, tGem, 1L)}, new int[]{300, 1200, 4500, 1400, 2800, 3500}, 800, 16); + default: + GT_Values.RA.addSifterRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.gemExquisite, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemFlawless, aMaterial, tGem, 1L), tGem, GT_OreDictUnificator.get(OrePrefixes.gemFlawed, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemChipped, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, tGem, 1L)}, new int[]{100, 400, 1500, 2000, 4000, 5000}, 800, 16); + } + } + break; + } + } +} diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedPurified.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedPurified.java deleted file mode 100644 index c35a658f5b..0000000000 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedPurified.java +++ /dev/null @@ -1,42 +0,0 @@ -package gregtech.loaders.oreprocessing; - -import gregtech.api.enums.GT_Values; -import gregtech.api.enums.Materials; -import gregtech.api.enums.OrePrefixes; -import gregtech.api.util.GT_ModHandler; -import gregtech.api.util.GT_OreDictUnificator; -import gregtech.api.util.GT_Utility; -import net.minecraft.item.ItemStack; - -public class ProcessingCrushedPurified implements gregtech.api.interfaces.IOreRecipeRegistrator { - public ProcessingCrushedPurified() { - OrePrefixes.crushedPurified.add(this); - } - - public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - GT_ModHandler.addThermalCentrifugeRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), (int) Math.min(5000L, Math.abs(aMaterial.getMass() * 20L)), new Object[]{GT_OreDictUnificator.get(OrePrefixes.crushedCentrifuged, aMaterial.mMacerateInto, GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial.mMacerateInto, 1L), 1L), GT_OreDictUnificator.get(OrePrefixes.dustTiny, GT_Utility.selectItemInList(1, aMaterial.mMacerateInto, aMaterial.mOreByProducts), 1L)}); - ItemStack tGem = GT_OreDictUnificator.get(OrePrefixes.gem, aMaterial, 1L); - if (tGem != null) - if(aMaterial == Materials.Tanzanite|| - aMaterial == Materials.Sapphire|| - aMaterial == Materials.Olivine|| - aMaterial == Materials.GreenSapphire|| - aMaterial == Materials.Opal|| - aMaterial == Materials.Amethyst|| - aMaterial == Materials.Emerald|| - aMaterial == Materials.Ruby|| - aMaterial == Materials.Amber|| - aMaterial == Materials.Diamond|| - aMaterial == Materials.FoolsRuby|| - aMaterial == Materials.BlueTopaz|| - aMaterial == Materials.GarnetRed|| - aMaterial == Materials.Topaz|| - aMaterial == Materials.Jasper|| - aMaterial == Materials.GarnetYellow){ - GT_Values.RA.addSifterRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.gemExquisite, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemFlawless, aMaterial, tGem, 1L), tGem, GT_OreDictUnificator.get(OrePrefixes.gemFlawed, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemChipped, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, tGem, 1L)}, new int[]{300, 1200, 4500, 1400, 2800, 3500}, 800, 16); - - }else{ - GT_Values.RA.addSifterRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.gemExquisite, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemFlawless, aMaterial, tGem, 1L), tGem, GT_OreDictUnificator.get(OrePrefixes.gemFlawed, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.gemChipped, aMaterial, tGem, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, tGem, 1L)}, new int[]{100, 400, 1500, 2000, 4000, 5000}, 800, 16); - } - } -} diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingDust.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingDust.java index fe4a68c8ab..be2c77855a 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingDust.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingDust.java @@ -14,175 +14,235 @@ import java.util.ArrayList; public class ProcessingDust implements gregtech.api.interfaces.IOreRecipeRegistrator { public ProcessingDust() { OrePrefixes.dust.add(this); + OrePrefixes.dustPure.add(this); + OrePrefixes.dustImpure.add(this); + OrePrefixes.dustRefined.add(this); + OrePrefixes.dustSmall.add(this); + OrePrefixes.dustTiny.add(this); } public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) { - if (aMaterial.mFuelPower > 0) - GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, aMaterial.mFuelPower, aMaterial.mFuelType); - if (GT_Utility.getFluidForFilledItem(GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), true) == null) - GT_Values.RA.addCannerRecipe(aStack, ItemList.Cell_Empty.get(1L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), null, 100, 1); - GT_Values.RA.addBoxingRecipe(GT_Utility.copyAmount(16L, new Object[]{aStack}), ItemList.Crate_Empty.get(1L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.crateGtDust, aMaterial, 1L), 100, 8); - GT_Values.RA.addUnboxingRecipe(GT_OreDictUnificator.get(OrePrefixes.crateGtDust, aMaterial, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, 16L), ItemList.Crate_Empty.get(1L, new Object[0]), 800, 1); - if (!aMaterial.mBlastFurnaceRequired) { - GT_RecipeRegistrator.registerReverseFluidSmelting(aStack, aMaterial, aPrefix.mMaterialAmount, null); - if (aMaterial.mSmeltInto.mArcSmeltInto != aMaterial) { - GT_RecipeRegistrator.registerReverseArcSmelting(GT_Utility.copyAmount(1L, new Object[]{aStack}), aMaterial, aPrefix.mMaterialAmount, null, null, null); - } - } - - ItemStack tStack; - if ((null != (tStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) && (!aMaterial.contains(SubTag.NO_SMELTING))) { - if (aMaterial.mBlastFurnaceRequired) { - GT_ModHandler.removeFurnaceSmelting(aStack); - GT_Values.RA.addBlastRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, tStack, 1L) : GT_Utility.copyAmount(1L, new Object[]{tStack}), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial.mBlastFurnaceTemp); - if (aMaterial.mBlastFurnaceTemp <= 1000) { - GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.copyAmount(1L, new Object[]{tStack}), aMaterial.mBlastFurnaceTemp); + switch (aPrefix) { + case dust: + if (aMaterial.mFuelPower > 0) + GT_Values.RA.addFuel(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, aMaterial.mFuelPower, aMaterial.mFuelType); + if (GT_Utility.getFluidForFilledItem(GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), true) == null) + GT_Values.RA.addCannerRecipe(aStack, ItemList.Cell_Empty.get(1L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.cell, aMaterial, 1L), null, 100, 1); + GT_Values.RA.addBoxingRecipe(GT_Utility.copyAmount(16L, new Object[]{aStack}), ItemList.Crate_Empty.get(1L, new Object[0]), GT_OreDictUnificator.get(OrePrefixes.crateGtDust, aMaterial, 1L), 100, 8); + GT_Values.RA.addUnboxingRecipe(GT_OreDictUnificator.get(OrePrefixes.crateGtDust, aMaterial, 1L), GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, 16L), ItemList.Crate_Empty.get(1L, new Object[0]), 800, 1); + if (!aMaterial.mBlastFurnaceRequired) { + GT_RecipeRegistrator.registerReverseFluidSmelting(aStack, aMaterial, aPrefix.mMaterialAmount, null); + if (aMaterial.mSmeltInto.mArcSmeltInto != aMaterial) { + GT_RecipeRegistrator.registerReverseArcSmelting(GT_Utility.copyAmount(1L, new Object[]{aStack}), aMaterial, aPrefix.mMaterialAmount, null, null, null); + } } - } else { - GT_ModHandler.addSmeltingRecipe(aStack, tStack); - } - } else if (!aMaterial.contains(SubTag.NO_WORKING)) { - if ((!OrePrefixes.block.isIgnored(aMaterial)) && - (null == GT_OreDictUnificator.get(OrePrefixes.gem, aMaterial, 1L))) { - GT_ModHandler.addCompressionRecipe(GT_Utility.copyAmount(9L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L)); - } - if (((OrePrefixes.block.isIgnored(aMaterial)) || (null == GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L))) && (aMaterial != Materials.GraniteRed) && (aMaterial != Materials.GraniteBlack) && (aMaterial != Materials.Glass) && (aMaterial != Materials.Obsidian) && (aMaterial != Materials.Glowstone) && (aMaterial != Materials.Paper)) { - GT_ModHandler.addCompressionRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L)); - } - } - - if ((aMaterial.mMaterialList.size() > 0) && ((aMaterial.mExtraData & 0x3) != 0)) { - long tItemAmount = 0L; - long tCapsuleCount = 0L; - long tDensityMultiplier = aMaterial.getDensity() > 3628800L ? aMaterial.getDensity() / 3628800L : 1L; - ArrayList tList = new ArrayList(); - for (MaterialStack tMat : aMaterial.mMaterialList) - if (tMat.mAmount > 0L) { - if (tMat.mMaterial == Materials.Air) { - tStack = ItemList.Cell_Air.get(tMat.mAmount / 2L, new Object[0]); + ItemStack tDustStack; + if ((null != (tDustStack = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial.mSmeltInto, 1L))) && (!aMaterial.contains(SubTag.NO_SMELTING))) { + if (aMaterial.mBlastFurnaceRequired) { + GT_ModHandler.removeFurnaceSmelting(aStack); + GT_Values.RA.addBlastRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), null, null, null, aMaterial.mBlastFurnaceTemp > 1750 ? GT_OreDictUnificator.get(OrePrefixes.ingotHot, aMaterial.mSmeltInto, tDustStack, 1L) : GT_Utility.copyAmount(1L, new Object[]{tDustStack}), null, (int) Math.max(aMaterial.getMass() / 40L, 1L) * aMaterial.mBlastFurnaceTemp, 120, aMaterial.mBlastFurnaceTemp); + if (aMaterial.mBlastFurnaceTemp <= 1000) { + GT_ModHandler.addRCBlastFurnaceRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_Utility.copyAmount(1L, new Object[]{tDustStack}), aMaterial.mBlastFurnaceTemp); + } } else { - tStack = GT_OreDictUnificator.get(OrePrefixes.dust, tMat.mMaterial, tMat.mAmount); - if (tStack == null) - tStack = GT_OreDictUnificator.get(OrePrefixes.cell, tMat.mMaterial, tMat.mAmount); + GT_ModHandler.addSmeltingRecipe(aStack, tDustStack); + } + } else if (!aMaterial.contains(SubTag.NO_WORKING)) { + if ((!OrePrefixes.block.isIgnored(aMaterial)) && + (null == GT_OreDictUnificator.get(OrePrefixes.gem, aMaterial, 1L))) { + GT_ModHandler.addCompressionRecipe(GT_Utility.copyAmount(9L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L)); + } + if (((OrePrefixes.block.isIgnored(aMaterial)) || (null == GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L))) && (aMaterial != Materials.GraniteRed) && (aMaterial != Materials.GraniteBlack) && (aMaterial != Materials.Glass) && (aMaterial != Materials.Obsidian) && (aMaterial != Materials.Glowstone) && (aMaterial != Materials.Paper)) { + GT_ModHandler.addCompressionRecipe(GT_Utility.copyAmount(1L, new Object[]{aStack}), GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L)); } - if (tItemAmount + tMat.mAmount * 3628800L <= aStack.getMaxStackSize() * aMaterial.getDensity()) { - tItemAmount += tMat.mAmount * 3628800L; - if (tStack != null) { - ItemStack tmp793_791 = tStack; - tmp793_791.stackSize = ((int) (tmp793_791.stackSize * tDensityMultiplier)); - while ((tStack.stackSize > 64) && (tList.size() < 6) && (tCapsuleCount + GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64 <= 64L)) { - tCapsuleCount += GT_ModHandler.getCapsuleCellContainerCount(tStack) * 64; - tList.add(GT_Utility.copyAmount(64L, new Object[]{tS