aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-12-15 16:11:54 +0100
committerGitHub <noreply@github.com>2021-12-15 16:11:54 +0100
commit128c74faa99dfef8d056c1d82c6e4388b9d470e8 (patch)
tree2c84162154ba681232f86dffd4106db530236814 /src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
parent47ce336f288a45aa3244c8ae1177499fa5080942 (diff)
parentff4b8c7068c2ea7d654e9beda00646d23e62b314 (diff)
downloadGT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.tar.gz
GT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.tar.bz2
GT5-Unofficial-128c74faa99dfef8d056c1d82c6e4388b9d470e8.zip
Merge pull request #65 from GTNewHorizons/unified-build-script2
Move sources and resources
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java280
1 files changed, 280 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
new file mode 100644
index 0000000000..9e58d486d3
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java
@@ -0,0 +1,280 @@
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gtPlusPlus.api.interfaces.RunnableWithInfo;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.ALLOY;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.material.MaterialGenerator;
+import gtPlusPlus.core.material.MaterialStack;
+import gtPlusPlus.core.material.nuclear.FLUORIDES;
+import gtPlusPlus.core.material.nuclear.NUCLIDE;
+import gtPlusPlus.core.material.state.MaterialState;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidStack;
+
+public class RecipeGen_BlastSmelter extends RecipeGen_Base {
+
+ public final static Set<RunnableWithInfo<Material>> mRecipeGenMap = new HashSet<RunnableWithInfo<Material>>();
+ static {
+ MaterialGenerator.mRecipeMapsToGenerate.put(mRecipeGenMap);
+ }
+
+ public RecipeGen_BlastSmelter(final Material M){
+ this.toGenerate = M;
+ mRecipeGenMap.add(this);
+ }
+
+ @Override
+ public void run() {
+ generateARecipe(this.toGenerate);
+ }
+
+ private void generateARecipe(final Material M){
+
+ //Add a Blast Smelting Recipe, Let's go!
+ ItemStack tStack;
+ if (null != (tStack = M.getDust(1))) {
+
+ final Material[] badMaterials = {
+ FLUORIDES.THORIUM_HEXAFLUORIDE,
+ FLUORIDES.THORIUM_TETRAFLUORIDE,
+ ALLOY.BLOODSTEEL,
+ NUCLIDE.LiFBeF2ThF4UF4,
+ NUCLIDE.LiFBeF2ZrF4UF4,
+ NUCLIDE.LiFBeF2ZrF4U235
+ };
+ for (final Material R : badMaterials){
+ if (M == R){
+ return;
+ }
+ }
+
+ //Prepare some Variables
+ ItemStack[] components;
+ ArrayList<MaterialStack> tMaterial = new ArrayList<>();
+ int inputStackCount=0;
+ int fluidAmount=0;
+ final boolean doTest = true;
+ tMaterial = M.getComposites();
+
+ //This Bad boy here is what dictates unique recipes. Fuck life, right?
+ ItemStack circuitGT = ItemUtils.getGregtechCircuit(0);
+
+
+ //Set a duration - OLD
+ /*int duration = 0;
+ if (M.getMeltingPointK() > 150){
+ duration = (int) Math.max(M.getMass() / 50L, 1L) * M.getMeltingPointK();
+ }
+ else {
+ duration = (int) Math.max(M.getMass() / 50L, 1L) * 150;
+ }*/
+
+ long aVoltage = MaterialUtils.getVoltageForTier(M.vTier);
+
+
+ //Set a duration - NEW
+ int duration = 120*M.vTier*10;
+
+ if (M.vTier <= 4){
+ duration = 20*M.vTier*10;
+ }
+
+ int mMaterialListSize=0;
+
+ int mTotalPartsCounter = M.smallestStackSizeWhenProcessing;
+
+ if (M.getComposites() != null){
+ for (final gtPlusPlus.core.material.MaterialStack ternkfsdf : M.getComposites()){
+ if (ternkfsdf != null) {
+ mMaterialListSize++;
+ //mTotalPartsCounter += ternkfsdf.getSmallestStackSizes()[0];
+ }
+ }
+ }
+ else {
+ mMaterialListSize = 1;
+ }
+
+ if (duration <= 0){
+ final int second = 20;
+ duration = 14*second*mMaterialListSize*8;
+ }
+
+ Logger.WARNING("[BAS] Size: "+mMaterialListSize);
+
+
+ //Make a simple one Material Materialstack[] and log it for validity.
+ circuitGT = ItemUtils.getGregtechCircuit(1);
+ final ItemStack[] tItemStackTest = new ItemStack[]{circuitGT, tStack};
+ inputStackCount = 1;
+ fluidAmount = 144*inputStackCount;
+ Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for "+M.getLocalizedName()+". Gives "+fluidAmount+"L of molten metal.");
+ for (int das=0;das<tItemStackTest.length;das++){
+ if (tItemStackTest[das] != null) {
+ Logger.WARNING("[BAS] tMaterial["+das+"]: "+tItemStackTest[das].getDisplayName()+" Meta: "+tItemStackTest[das].getItemDamage()+", Amount: "+tItemStackTest[das].stackSize);
+ }
+ }
+
+ final boolean hasMoreInputThanACircuit = (tItemStackTest.length > 1);
+
+ //Generate Recipes for all singular materials that can be made molten.
+ if (hasMoreInputThanACircuit){
+ if (M.requiresBlastFurnace()) {
+ if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluidStack(fluidAmount), 100, (duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)), (int) aVoltage)){
+ Logger.WARNING("[BAS] Success.");
+ Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe.");
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration, 120)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/9, 120)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/4, 120)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/9, 120)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }*/
+ }
+ }
+ else {
+ Logger.WARNING("[BAS] Failed.");
+ }
+ }
+ else {
+ if (CORE.RA.addBlastSmelterRecipe(tItemStackTest, M.getFluidStack(fluidAmount), 100, duration/(mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)/2, (int) aVoltage)){
+ Logger.WARNING("[BAS] Success.");
+ if (GT_Values.RA.addFluidSolidifierRecipe(ItemList.Shape_Mold_Ingot.get(0), M.getFluidStack(144), M.getIngot(1), duration/2, 60)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe.");
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, duration/2, 60)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, duration/2/9, 60)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ /*if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, duration/2/4, 60)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }
+ if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, duration/2/9, 60)){
+ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe.");
+ }*/
+ }
+ }
+ else {
+ Logger.WARNING("[BAS] Failed.");
+ }
+ }
+
+ if (tMaterial != null){
+ //Reset the Variables for compounds if last recipe was a success.
+ inputStackCount=0;
+
+ //If this Material has some kind of compound list, proceed
+ if (mMaterialListSize > 1){
+ final gtPlusPlus.core.material.MaterialStack[] tempStack = new gtPlusPlus.core.material.MaterialStack[mMaterialListSize];
+ circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize);
+ //Just double checking
+ if (tempStack.length > 1){
+
+ //Builds me a MaterialStack[] from the MaterialList of M.
+ int ooo=0;
+ for (final gtPlusPlus.core.material.MaterialStack xMaterial : M.getComposites()){
+ if (xMaterial != null){
+ if (xMaterial.getStackMaterial() != null){
+ Logger.WARNING("[BAS] FOUND: "+xMaterial.getStackMaterial().getLocalizedName());
+ Logger.WARNING("[BAS] ADDING: "+xMaterial.getStackMaterial().getLocalizedName());
+ }
+ tempStack[ooo] = xMaterial;
+ }
+ ooo++;
+ }
+
+ //Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for the 144L fluid multiplier
+ components = new ItemStack[9];
+ inputStackCount=0;
+ FluidStack componentsFluid = null;
+ for (int irc=0;irc<M.getComposites().size();irc++){
+ if (M.getComposites().get(irc) != null){
+ final int r = (int) M.vSmallestRatio[irc];
+ inputStackCount = inputStackCount+r;
+ if ((M.getComposites().get(irc).getStackMaterial().getState() != MaterialState.SOLID) || !ItemUtils.checkForInvalidItems(M.getComposites().get(irc).getDustStack(r))){
+ final int xr = r;
+ if ((xr > 0) && (xr <= 100)){
+ final int mathmatics = (r*1000);
+ componentsFluid = FluidUtils.getFluidStack(M.getComposites().get(irc).getStackMaterial().getFluidStack(mathmatics), mathmatics);
+ }
+ }
+ else {
+ components[irc] = M.getComposites().get(irc).getDustStack(r);
+ }
+ }
+ }
+
+
+ //Adds a circuit
+ if ((mMaterialListSize < 9) && (mMaterialListSize != 0)){
+ final ItemStack[] components_NoCircuit = components;
+ //Builds me an ItemStack[] of the materials. - With a circuit
+ components = new ItemStack[components_NoCircuit.length+1];
+ for (int fr=0;fr<components.length;fr++){
+ if (fr==0){
+ components[0] = circuitGT;
+ }
+ else {
+ components[fr] = components_NoCircuit[fr-1];
+ }
+ }
+ Logger.WARNING("[BAS] Should have added a circuit. mMaterialListSize: "+mMaterialListSize+" | circuit: "+components[0].getDisplayName());
+ }
+ else {
+ Logger.WARNING("[BAS] Did not add a circuit. mMaterialListSize: "+mMaterialListSize);
+ }
+
+ //Set Fluid output
+ fluidAmount = 144*inputStackCount;
+
+ Logger.WARNING("[BAS] Adding an Alloy Blast Smelter Recipe for "+M.getLocalizedName()+" using it's compound dusts. This material has "+ inputStackCount+" parts. Gives "+fluidAmount+"L of molten metal.");
+ Logger.WARNING("[BAS] tMaterial.length: "+components.length+".");
+ for (int das=0;das<components.length;das++){
+ if (components[das] != null) {
+ Logger.WARNING("[BAS] tMaterial["+das+"]: "+components[das].getDisplayName()+" Meta: "+components[das].getItemDamage()+", Amount: "+components[das].stackSize);
+ }
+ }
+
+ //Adds Recipe
+ if (M.requiresBlastFurnace()) {
+ if (CORE.RA.addBlastSmelterRecipe(components, componentsFluid, M.getFluidStack(fluidAmount), 100, duration, (int) aVoltage)){
+ Logger.WARNING("[BAS] Success.");
+ }
+ else {
+ Logger.WARNING("[BAS] Failed.");
+ }
+ }
+ else {
+ if (CORE.RA.addBlastSmelterRecipe(components, componentsFluid, M.getFluidStack(fluidAmount), 100, duration, (int) aVoltage/2)){
+ Logger.WARNING("[BAS] Success.");
+ }
+ else {
+ Logger.WARNING("[BAS] Failed.");
+ }
+ }
+ }
+ }
+ }
+ else {
+ Logger.WARNING("[BAS] doTest: "+doTest+" | tMaterial != null: "+(tMaterial != null));
+ }
+ }
+ }
+}