diff options
author | GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com> | 2022-12-20 05:40:20 +0000 |
---|---|---|
committer | GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com> | 2022-12-20 05:40:20 +0000 |
commit | c304ea893cf81ed764b2256301a760a17ccba6ef (patch) | |
tree | 8feb8176252baea94459c3aaa4f28300985b5cd9 /src/main | |
parent | d10374e653a60e9f0a1df8655513a12f0a602403 (diff) | |
download | GT5-Unofficial-c304ea893cf81ed764b2256301a760a17ccba6ef.tar.gz GT5-Unofficial-c304ea893cf81ed764b2256301a760a17ccba6ef.tar.bz2 GT5-Unofficial-c304ea893cf81ed764b2256301a760a17ccba6ef.zip |
Refactor
Diffstat (limited to 'src/main')
9 files changed, 1617 insertions, 331 deletions
diff --git a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java index 14e4b3a090..bb85ccf170 100644 --- a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java @@ -34,7 +34,8 @@ public class ThingsLoader implements Runnable { TT_Container_Casings.sBlockCasingsBA0 = new GT_Block_CasingsBA0(); TecTech.LOGGER.info("Nikolai's Casing registered"); - TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators = new SpacetimeCompressionFieldCasing(); + TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators = + new SpacetimeCompressionFieldCasing(); TecTech.LOGGER.info("Spacetime Compression Field Casings registered."); TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator = new TimeAccelerationFieldCasing(); diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java index 112e227fe8..5e7cfac127 100644 --- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java +++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java @@ -1,19 +1,18 @@ package com.github.technus.tectech.recipe; +import static com.google.common.math.LongMath.pow; +import static gregtech.api.util.GT_Utility.getPlasmaFuelValueInEUPerLiterFromMaterial; + import gregtech.api.enums.Materials; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper; - -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static com.google.common.math.LongMath.pow; -import static gregtech.api.enums.GT_Values.getMaxPlasmaTurbineEfficiency; -import static gregtech.api.util.GT_Utility.getPlasmaFuelValueInEUPerLiterFromMaterial; +import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper; public class EyeOfHarmonyRecipe { @@ -32,18 +31,19 @@ public class EyeOfHarmonyRecipe { private final long miningTimeSeconds; - - public EyeOfHarmonyRecipe(GT5OreLayerHelper.OreDimensionWrapper dimensionWrapper, - double recipeEnergyEfficiency, - long hydrogenRequirement, - long heliumRequirement, - long miningTimeSeconds, - long spacetimeCasingTierRequired, - long euOutput, - double baseSuccessChance - ) { + public EyeOfHarmonyRecipe( + GT5OreLayerHelper.NormalOreDimensionWrapper normalOreDimensionWrapper, + GT5OreSmallHelper.SmallOreDimensionWrapper smallOreDimensionWrapper, + double recipeEnergyEfficiency, // E.g. 90% efficient = 0.9 = lose 10% EU from plasma + EU output. + long hydrogenRequirement, + long heliumRequirement, + long miningTimeSeconds, + long spacetimeCasingTierRequired, + long euOutput, + double baseSuccessChance) { // 6 * 64 = 6 stacks/second. - ArrayList<Pair<Materials, Long>> materialList = processDimension(dimensionWrapper, miningTimeSeconds, 6 * 64); + ArrayList<Pair<Materials, Long>> materialList = + processDimension(normalOreDimensionWrapper, smallOreDimensionWrapper, miningTimeSeconds, 6 * 64); this.outputItems = validDustGenerator(materialList); this.outputFluids = validPlasmaGenerator(materialList, 0.1); @@ -101,12 +101,14 @@ public class EyeOfHarmonyRecipe { return spacetimeCasingTierRequired; } - static final double primaryMultiplier = (0.1 + 1.0/9.0); // Byproduct from macerating/washing chance. - static final double secondaryMultiplier = (1.0/9.0); // Thermal centrifuge byproduct chance. + static final double primaryMultiplier = (0.1 + 1.0 / 9.0); // Byproduct from macerating/washing chance. + static final double secondaryMultiplier = (1.0 / 9.0); // Thermal centrifuge byproduct chance. static final double tertiaryMultiplier = (0.1); // Macerating thermal centrifuged byproduct chance. static final double quaternaryMultiplier = (0.7); // Mercury/chem bath processing chance. - static final double[] oreMultiplier = {primaryMultiplier, secondaryMultiplier, tertiaryMultiplier, quaternaryMultiplier}; + static final double[] oreMultiplier = { + primaryMultiplier, secondaryMultiplier, tertiaryMultiplier, quaternaryMultiplier + }; private static class HashMapHelper extends HashMap<Materials, Double> { @@ -124,24 +126,35 @@ public class EyeOfHarmonyRecipe { } static void processHelper(HashMapHelper outputMap, Materials material, double mainMultiplier, double probability) { - outputMap.add(material, (material.mOreMultiplier * 2) * mainMultiplier * probability); + outputMap.add(material.mDirectSmelting, (material.mOreMultiplier * 2) * mainMultiplier * probability); int index = 0; for (Materials byProductMaterial : material.mOreByProducts) { - outputMap.add(byProductMaterial, mainMultiplier * (oreMultiplier[index++] * 2) * probability); + outputMap.add( + byProductMaterial.mDirectSmelting, mainMultiplier * (oreMultiplier[index++] * 2) * probability); } } - static ArrayList<Pair<Materials, Long>> processDimension(GT5OreLayerHelper.OreDimensionWrapper dimWrapper, long timeInSeconds, long miningMultiplier) { + static ArrayList<Pair<Materials, Long>> processDimension( + GT5OreLayerHelper.NormalOreDimensionWrapper normalOreDimWrapper, + GT5OreSmallHelper.SmallOreDimensionWrapper smallOreDimWrapper, + long timeInSeconds, + long miningMultiplier) { HashMapHelper outputMap = new HashMapHelper(); double mainMultiplier = timeInSeconds * miningMultiplier; - dimWrapper.oreVeinToProbabilityInDimension.forEach((veinInfo, probability) -> { + normalOreDimWrapper.oreVeinToProbabilityInDimension.forEach((veinInfo, probability) -> { processHelper(outputMap, veinInfo.mPrimaryVeinMaterial, mainMultiplier, probability); processHelper(outputMap, veinInfo.mSecondaryMaterial, mainMultiplier, probability); - processHelper(outputMap, veinInfo.mBetweenMaterial, mainMultiplier, probability); - processHelper(outputMap, veinInfo.mSporadicMaterial, mainMultiplier, probability); + // 8.0 to replicate void miner getDropsVanillaVeins method yields. + processHelper(outputMap, veinInfo.mBetweenMaterial, mainMultiplier / 8.0, probability); + processHelper(outputMap, veinInfo.mSporadicMaterial, mainMultiplier / 8.0, probability); + }); + + // Iterate over small ores in dimension and add them, kinda hacky but works and is close enough. + smallOreDimWrapper.oreVeinToProbabilityInDimension.forEach((veinInfo, probability) -> { + processHelper(outputMap, veinInfo.getOreMaterial(), mainMultiplier, probability); }); ArrayList<Pair<Materials, Long>> outputList = new ArrayList<>(); @@ -151,7 +164,8 @@ public class EyeOfHarmonyRecipe { return outputList; } - static FluidStack[] validPlasmaGenerator(final List<Pair<Materials, Long>> planetList, final double percentageOfPlasma) { + static FluidStack[] validPlasmaGenerator( + final List<Pair<Materials, Long>> planetList, final double percentageOfPlasma) { List<FluidStack> plasmaList = new ArrayList<>(); @@ -163,9 +177,9 @@ public class EyeOfHarmonyRecipe { return plasmaList.toArray(new FluidStack[0]); } - static List<Pair<ItemStack, Long>> validDustGenerator(final List<Pair<Materials, Long>> planetList) { + static ArrayList<Pair<ItemStack, Long>> validDustGenerator(final ArrayList<Pair<Materials, Long>> planetList) { - List<Pair<ItemStack, Long>> dustList = new ArrayList<>(); + ArrayList<Pair<ItemStack, Long>> dustList = new ArrayList<>(); for (Pair<Materials, Long> pair : planetList) { ItemStack dust = pair.getLeft().getDust(1); @@ -186,27 +200,33 @@ public class EyeOfHarmonyRecipe { return (long) (total * getMaxPlasmaTurbineEfficiency()); } + public static double getMaxPlasmaTurbineEfficiency() { + // I hate Shirabon. + return 3.85; + } + static final List<Materials> validPlasmas = Stream.of( - Materials.Helium, - Materials.Boron, - Materials.Nitrogen, - Materials.Oxygen, - Materials.Sulfur, - Materials.Calcium, - Materials.Titanium, - Materials.Iron, - Materials.Nickel, - Materials.Zinc, - Materials.Niobium, - Materials.Silver, - Materials.Tin, - Materials.Bismuth, - Materials.Americium, - Materials.Niobium - ).collect(Collectors.toList()); - - static HashMap<Fluid, Long> plasmaEnergyMap = new HashMap<Fluid, Long>() {{ - validPlasmas.forEach((material -> put(material.getPlasma(1).getFluid(), (long) getPlasmaFuelValueInEUPerLiterFromMaterial(material)))); - }}; + Materials.Helium, + Materials.Boron, + Materials.Nitrogen, + Materials.Oxygen, + Materials.Sulfur, + Materials.Calcium, + Materials.Titanium, + Materials.Iron, + Materials.Nickel, + Materials.Zinc, + Materials.Silver, + Materials.Tin, + Materials.Bismuth, + Materials.Americium, + Materials.Niobium) + .collect(Collectors.toList()); + + static HashMap<Fluid, Long> plasmaEnergyMap = new HashMap<Fluid, Long>() { + { + validPlasmas.forEach((material -> put( + material.getPlasma(1).getFluid(), (long) getPlasmaFuelValueInEUPerLiterFromMaterial(material)))); + } + }; } - diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java index 4c2255a5f4..936228584c 100644 --- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java +++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java @@ -1,66 +1,69 @@ package com.github.technus.tectech.recipe; -import com.google.common.math.LongMath; -import gregtech.api.GregTech_API; +import java.util.HashMap; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; -import org.lwjgl.Sys; import pers.gwyog.gtneioreplugin.plugin.block.BlockDimensionDisplay; import pers.gwyog.gtneioreplugin.plugin.block.ModBlocks; import pers.gwyog.gtneioreplugin.util.DimensionHelper; - -import java.util.HashMap; - -import static pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper.dimToOreWrapper; +import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper; +import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper; public class EyeOfHarmonyRecipeStorage { -// static final long MILLION = LongMath.pow(10, 6); -// static final long BILLION = LongMath.pow(10, 9); -// static final long TRILLION = LongMath.pow(10, 12); -// static final long QUADRILLION = LongMath.pow(10, 15); -// static final long QUINTILLION = LongMath.pow(10, 18); -// static final long SEXTILLION = LongMath.pow(10, 21); + // static final long MILLION = LongMath.pow(10, 6); + // static final long BILLION = LongMath.pow(10, 9); + // static final long TRILLION = LongMath.pow(10, 12); + // static final long QUADRILLION = LongMath.pow(10, 15); + // static final long QUINTILLION = LongMath.pow(10, 18); + // static final long SEXTILLION = LongMath.pow(10, 21); // Map is unique so this is fine. - HashMap<Block, String> blocksMapInverted = new HashMap<Block, String>() {{ - ModBlocks.blocks.forEach((dimString, dimBlock) -> { - put(dimBlock, dimString); - }); - }}; + HashMap<Block, String> blocksMapInverted = new HashMap<Block, String>() { + { + ModBlocks.blocks.forEach((dimString, dimBlock) -> { + put(dimBlock, dimString); + }); + } + }; - private final HashMap<String, EyeOfHarmonyRecipe> recipeHashMap = new HashMap<String, EyeOfHarmonyRecipe>() {{ - for (String dimAbbreviation : DimensionHelper.DimNameDisplayed) { - BlockDimensionDisplay a = (BlockDimensionDisplay) ModBlocks.blocks.get(dimAbbreviation); + private final HashMap<String, EyeOfHarmonyRecipe> recipeHashMap = new HashMap<String, EyeOfHarmonyRecipe>() { + { + for (String dimAbbreviation : DimensionHelper.DimNameDisplayed) { + BlockDimensionDisplay a = (BlockDimensionDisplay) ModBlocks.blocks.get(dimAbbreviation); - try { - put(dimAbbreviation, new EyeOfHarmonyRecipe( - dimToOreWrapper.get(dimAbbreviation), - 1.0, - 100, - 100, - 36_000L, - 0, - 100 * 10, - 0.4)); - } catch(Exception e) { - e.printStackTrace(); - System.out.println(dimAbbreviation + " dimension not found in dimToOreWrapper"); + try { + put( + dimAbbreviation, + new EyeOfHarmonyRecipe( + GT5OreLayerHelper.dimToOreWrapper.get(dimAbbreviation), + GT5OreSmallHelper.dimToSmallOreWrapper.get(dimAbbreviation), + 1.0, + 100, + 100, + 36_000L, + 0, + 100 * 10, + 0.4)); + } catch (Exception e) { + e.printStackTrace(); + System.out.println(dimAbbreviation + " dimension not found in dimToOreWrapper"); + } } } - }}; + }; public EyeOfHarmonyRecipe recipeLookUp(ItemStack aStack) { String dimAbbreviation = blocksMapInverted.get(Block.getBlockFromItem(aStack.getItem())); return recipeHashMap.get(dimAbbreviation); } -// public EyeOfHarmonyRecipe overworld = new EyeOfHarmonyRecipe(dimToOreWrapper.get("Ow"), -// 1.0, -// 100, -// 100, -// 36_000L, -// 0, -// 100 * 10, -// 0.4); + // public EyeOfHarmonyRecipe overworld = new EyeOfHarmonyRecipe(dimToOreWrapper.get("Ow"), + // 1.0, + // 100, + // 100, + // 36_000L, + // 0, + // 100 * 10, + // 0.4); } diff --git a/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java b/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java index 21c83c03d8..559231f846 100644 --- a/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java +++ b/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java @@ -486,6 +486,4 @@ public class TT_recipeAdder extends GT_RecipeAdder { check)); return true; } - - } diff --git a/src/main/java/com/github/technus/tectech/thing/casing/SpacetimeCompressionFieldCasing.java b/src/main/java/com/github/technus/tectech/thing/casing/SpacetimeCompressionFieldCasing.java index 92ec8ae390..59d8ff7ef3 100644 --- a/src/main/java/com/github/technus/tectech/thing/casing/SpacetimeCompressionFieldCasing.java +++ b/src/main/java/com/github/technus/tectech/thing/casing/SpacetimeCompressionFieldCasing.java @@ -1,5 +1,7 @@ package com.github.technus.tectech.thing.casing; +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; + import com.github.technus.tectech.thing.CustomItemList; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -8,6 +10,7 @@ import gregtech.api.objects.GT_CopiedBlockTexture; import gregtech.api.util.GT_LanguageManager; import gregtech.common.blocks.GT_Block_Casings_Abstract; import gregtech.common.blocks.GT_Material_Casings; +import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -15,10 +18,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; -import java.util.List; - -import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; - /** * Created by danie_000 on 03.10.2016. */ @@ -30,16 +29,24 @@ public class SpacetimeCompressionFieldCasing extends GT_Block_Casings_Abstract { public SpacetimeCompressionFieldCasing() { super(GT_Item_CasingsBA0.class, "gt.spacetime_compression_field_generator", GT_Material_Casings.INSTANCE); for (byte b = 0; b < 16; b = (byte) (b + 1)) { - Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = new GT_CopiedBlockTexture(this, 6, b); + Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = + new GT_CopiedBlockTexture(this, 6, b); } - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Crude Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Primitive Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Stable Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Superb Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Resplendent Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Perfect Spacetime Compression Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Tipler Grade Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".0.name", "Crude Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".1.name", "Primitive Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".2.name", "Stable Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".3.name", "Superb Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".4.name", "Resplendent Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".5.name", "Perfect Spacetime Compression Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".6.name", "Tipler Grade Spacetime Compression Field Generator"); CustomItemList.SpacetimeCompressionFieldGeneratorTier0.set(new ItemStack(this, 1, 0)); CustomItemList.SpacetimeCompressionFieldGeneratorTier1.set(new ItemStack(this, 1, 1)); @@ -48,7 +55,6 @@ public class SpacetimeCompressionFieldCasing extends GT_Block_Casings_Abstract { CustomItemList.SpacetimeCompressionFieldGeneratorTier4.set(new ItemStack(this, 1, 4)); CustomItemList.SpacetimeCompressionFieldGeneratorTier5.set(new ItemStack(this, 1, 5)); CustomItemList.SpacetimeCompressionFieldGeneratorTier6.set(new ItemStack(this, 1, 6)); - } @Override diff --git a/src/main/java/com/github/technus/tectech/thing/casing/StabilisationFieldCasing.java b/src/main/java/com/github/technus/tectech/thing/casing/StabilisationFieldCasing.java index 79ecf062e7..05d97b0eb3 100644 --- a/src/main/java/com/github/technus/tectech/thing/casing/StabilisationFieldCasing.java +++ b/src/main/java/com/github/technus/tectech/thing/casing/StabilisationFieldCasing.java @@ -1,5 +1,7 @@ package com.github.technus.tectech.thing.casing; +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; + import com.github.technus.tectech.thing.CustomItemList; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -8,6 +10,7 @@ import gregtech.api.objects.GT_CopiedBlockTexture; import gregtech.api.util.GT_LanguageManager; import gregtech.common.blocks.GT_Block_Casings_Abstract; import gregtech.common.blocks.GT_Material_Casings; +import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -15,10 +18,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; -import java.util.List; - -import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; - public class StabilisationFieldCasing extends GT_Block_Casings_Abstract { private static IIcon texture_tier_0; @@ -27,16 +26,24 @@ public class StabilisationFieldCasing extends GT_Block_Casings_Abstract { public StabilisationFieldCasing() { super(GT_Item_CasingsBA0.class, "gt.stabilisation_field_generator", GT_Material_Casings.INSTANCE); for (byte b = 0; b < 16; b = (byte) (b + 1)) { - Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = new GT_CopiedBlockTexture(this, 6, b); + Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = + new GT_CopiedBlockTexture(this, 6, b); } - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Crude Stabilisation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Primitive Stabilisation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Stable Stabilisation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Superb Stabilisation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Resplendent Stabilisation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Perfect Stabilisation Dilation Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Tipler Grade Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".0.name", "Crude Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".1.name", "Primitive Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".2.name", "Stable Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".3.name", "Superb Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".4.name", "Resplendent Stabilisation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".5.name", "Perfect Stabilisation Dilation Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".6.name", "Tipler Grade Stabilisation Field Generator"); CustomItemList.StabilisationFieldGeneratorTier0.set(new ItemStack(this, 1, 0)); CustomItemList.StabilisationFieldGeneratorTier1.set(new ItemStack(this, 1, 1)); diff --git a/src/main/java/com/github/technus/tectech/thing/casing/TT_Block_TimeAccelerationFieldGenerators.java b/src/main/java/com/github/technus/tectech/thing/casing/TT_Block_TimeAccelerationFieldGenerators.java index 101410baec..ecb070aa5c 100644 --- a/src/main/java/com/github/technus/tectech/thing/casing/TT_Block_TimeAccelerationFieldGenerators.java +++ b/src/main/java/com/github/technus/tectech/thing/casing/TT_Block_TimeAccelerationFieldGenerators.java @@ -6,5 +6,4 @@ public class TT_Block_TimeAccelerationFieldGenerators { public static Block TimeAccelerationFieldGenerator; private TT_Block_TimeAccelerationFieldGenerators() {} - } diff --git a/src/main/java/com/github/technus/tectech/thing/casing/TimeAccelerationFieldCasing.java b/src/main/java/com/github/technus/tectech/thing/casing/TimeAccelerationFieldCasing.java index baf55af3fd..fc6ec97dd5 100644 --- a/src/main/java/com/github/technus/tectech/thing/casing/TimeAccelerationFieldCasing.java +++ b/src/main/java/com/github/technus/tectech/thing/casing/TimeAccelerationFieldCasing.java @@ -1,5 +1,7 @@ package com.github.technus.tectech.thing.casing; +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; + import com.github.technus.tectech.thing.CustomItemList; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -8,6 +10,7 @@ import gregtech.api.objects.GT_CopiedBlockTexture; import gregtech.api.util.GT_LanguageManager; import gregtech.common.blocks.GT_Block_Casings_Abstract; import gregtech.common.blocks.GT_Material_Casings; +import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -15,10 +18,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; -import java.util.List; - -import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; - public class TimeAccelerationFieldCasing extends GT_Block_Casings_Abstract { private static IIcon texture_tier_0; @@ -27,16 +26,24 @@ public class TimeAccelerationFieldCasing extends GT_Block_Casings_Abstract { public TimeAccelerationFieldCasing() { super(GT_Item_CasingsBA0.class, "gt.time_acceleration_field_generator", GT_Material_Casings.INSTANCE); for (byte b = 0; b < 16; b = (byte) (b + 1)) { - Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = new GT_CopiedBlockTexture(this, 6, b); + Textures.BlockIcons.casingTexturePages[texturePage][b + START_INDEX] = + new GT_CopiedBlockTexture(this, 6, b); } - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Crude Time Dilation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Primitive Time Dilation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Stable Time Dilation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Superb Time Dilation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Resplendent Time Dilation Field Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Perfect Time Temporal Dilation Generator"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Tipler Grade Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".0.name", "Crude Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".1.name", "Primitive Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".2.name", "Stable Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".3.name", "Superb Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".4.name", "Resplendent Time Dilation Field Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".5.name", "Perfect Time Temporal Dilation Generator"); + GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".6.name", "Tipler Grade Time Dilation Field Generator"); CustomItemList.TimeAccelerationFieldGeneratorTier0.set(new ItemStack(this, 1, 0)); CustomItemList.TimeAccelerationFieldGeneratorTier1.set(new ItemStack(this, 1, 1)); @@ -45,7 +52,6 @@ public class TimeAccelerationFieldCasing extends GT_Block_Casings_Abstract { CustomItemList.TimeAccelerationFieldGeneratorTier4.set(new ItemStack(this, 1, 4)); CustomItemList.TimeAccelerationFieldGeneratorTier5.set(new ItemStack(this, 1, 5)); CustomItemList.TimeAccelerationFieldGeneratorTier6.set(new ItemStack(this, 1, 6)); - } @Override @@ -74,6 +80,7 @@ public class TimeAccelerationFieldCasing extends GT_Block_Casings_Abstract { return Textures.BlockIcons.MACHINE_CASING_SOLID_STEEL.getIcon(); } } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess aWorld, int xCoord, int yCoord, int zCoord, int aSide) { diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java index 4c02edf46e..dcc28e9578 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java @@ -1,5 +1,14 @@ package com.github.technus.tectech.thing.metaTileEntity.multi; +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset; +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; +import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sBlockCasingsTT; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.enums.GT_Values.AuthorColen; +import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional; +import static java.lang.Math.*; +import static net.minecraft.util.EnumChatFormatting.*; + import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe; import com.github.technus.tectech.recipe.EyeOfHarmonyRecipeStorage; import com.github.technus.tectech.thing.casing.TT_Block_SpacetimeCompressionFieldGenerators; @@ -26,6 +35,7 @@ import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME; import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Output_ME; +import java.util.*; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -33,28 +43,18 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.fluids.FluidStack; import org.apache.commons.lang3.tuple.Pair; -import java.util.*; - -import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset; -import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage; -import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sBlockCasingsTT; -import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; -import static gregtech.api.enums.GT_Values.AuthorColen; -import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional; -import static java.lang.Math.*; -import static net.minecraft.util.EnumChatFormatting.*; - @SuppressWarnings("SpellCheckingInspection") -public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable, IGlobalWirelessEnergy { - //region variables +public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_MultiblockBase_EM + implements IConstructable, IGlobalWirelessEnergy { + // region variables private static Textures.BlockIcons.CustomIcon ScreenOFF; private static Textures.BlockIcons.CustomIcon ScreenON; private static EyeOfHarmonyRecipeStorage recipes; - private int SpacetimeCompressionFieldMetadata = -1; - private int TimeAccelerationFieldMetadata = -1; - private int StabilisationFieldMetadata = -1; + private int spacetimeCompressionFieldMetadata = -1; + private int timeAccelerationFieldMetadata = -1; + private int stabilisationFieldMetadata = -1; private String userUUID = ""; private String userName = ""; @@ -63,124 +63,1328 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl private final long[] computationStack = new long[computationTickCacheSize]; // Multiblock structure. - private static final IStructureDefinition<GT_MetaTileEntity_EM_EyeOfHarmony> STRUCTURE_DEFINITION = IStructureDefinition - .<GT_MetaTileEntity_EM_EyeOfHarmony>builder() - .addShape("main", transpose(new String[][]{ - {" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " CCCCCCCCC ", " C C ", " CCCCCCCCC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " C C ", " DDDDD ", " DDCDCDD ", " CCCCDCCDCCDCCCC ", " DDDDDDD ", " CCCCDCCDCCDCCCC ", " DDCDCDD ", " DDDDD ", " C C ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " D ", " D ", " DDDDDDD ", " DD DD ", " D EEE D ", " CCC D EAAAE D CCC ", " DDD EAAAE DDD ", " CCC D EAAAE D CCC ", " D EEE D ", " DD DD ", " DDDDDDD ", " D ", " D ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " C C ", " C C ", " D ", " D ", " ", " ", " ", " ", " ", " CC CC ", " DD DD ", " CC CC ", " ", " ", " ", " ", " ", " D ", " D ", " C C ", " C C ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " C C ", " CCCCC ", " D ", " A ", " A ", " ", " ", " ", " ", " C C ", " CC CC ", " CDAA AADC ", " CC CC ", " C C ", " ", " ", " ", " ", " A ", " A ", " D ", " CCCCC ", " C C ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " C C ", " C C ", " D ", " SEEAEES ", " ", " ", " ", " ", " ", " S S ", " E E ", " CC E E CC ", " DA AD ", " CC E E CC ", " E E ", " S S ", " ", " ", " ", " ", " ", " SEEAEES ", " D ", " C C ", " C C ", " ", " ", " ", " "}, - {" ", " ", " ", " C C ", " CCCCC ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " C C ", " CC CC ", " CDA ADC ", " CC CC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " CCCCC ", " C C ", " ", " ", " "}, - {" ", " ", " C C ", " C C ", " D ", " SEEAEES ", " ", " ", " ", " ", " ", " ", " ", " S S ", " E E ", " CC E E CC ", " DA AD ", " CC E E CC ", " E E ", " S S ", " ", " ", " ", " ", " ", " ", " ", " SEEAEES ", " D ", " C C ", " C C ", " ", " "}, - {" ", " ", " C C ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " DA AD ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " C C ", " ", " "}, - {" ", " C C ", " C C ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " CC CC ", " DA AD ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " C C ", " C C ", " "}, - {" ", " C C ", " D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " D D ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D ", " C C ", " "}, - {" ", " C C ", " D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " D D ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D ", " C C ", " "}, - {" CCCCCCC ", " C C ", " DDDDDDD ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D D ", " D D ", "CCD DCC", " D D ", "CCD DCC", " D D ", " D D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " DDDDDDD ", " C C ", " C C "}, - {" CCHHHHHCC ", " DDDDD ", " DD DD ", " ", " ", " S S ", " ", " S S ", " ", " ", " ", " ", " D D ", " D D ", " D D ", "CD DC", " D D ", "CD DC", " D D ", " D D ", " D D ", " ", " ", " ", " ", " S S ", " ", " S S ", " ", " ", " DD DD ", " DDDDD ", " C C "}, - {" CHHHHHHHC ", " DDCDCDD ", " D EEE D ", " ", " C C ", " E E ", " C C ", " E E ", " ", " ", " ", " ", " D D ", " D D ", " D D ", "CCE ECC", " DE ED ", "CCE ECC", " D D ", " D D ", " D D ", " ", " ", " ", " ", " E E ", " C C ", " E E ", " C C ", " ", " D EEE D ", " DDCDCDD ", " C C "}, - {" CHHFFFHHC ", " CCCCDCCDCCDCCCC ", " CCC D EAAAE D CCC ", " CC CC ", " CC CC ", " CC E E CC ", " CC CC ", " CC E E CC ", " C C ", " CC CC ", " C C ", " C C ", "CCD DCC", "CD DC", "CCE ECC", "CCA ACC", "CDA ADC", "CCA ACC", "CCE ECC", "CD DC", "CCD DCC", " C C ", " C C ", " CC CC ", " C C ", " CC E E CC ", " CC CC ", " CC E E CC ", " CC CC ", " CC CC ", " CCC D EAAAE D CCC ", " CCCCDCCDCCDCCCC ", " CCCCCCCCC "}, - {" CHHF~FHHC ", " DDDDDDD ", " DDD EAAAE DDD ", " DD DD ", " CDAA AADC ", " DA AD ", " CDA ADC ", " DA AD ", " DA AD ", " DA AD ", " D D ", " D D ", " D D ", " D D ", " DE ED ", "CDA ADC", " DA AD ", "CDA ADC", " DE ED ", " D D ", " D D ", " D D ", " D D ", " DA AD ", " DA AD ", " DA AD ", " CDA ADC ", " DA AD ", " CDAA AADC ", " DD DD ", " DDD EAAAE DDD ", " DDDDDDD ", " C C "}, - {" CHHFFFHHC ", " CCCCDCCDCCDCCCC ", " CCC D EAAAE D CCC ", " CC CC ", " CC CC ", " CC E E CC ", " CC CC ", " CC E E CC ", " C C ", " CC CC ", " C C ", " C C ", "CCD DCC", "CD DC", "CCE ECC", "CCA ACC", "CDA ADC", "CCA ACC", "CCE ECC", "CD DC", "CCD DCC", " C C ", " C C ", " CC CC ", " C C ", " CC E E CC ", " CC CC ", " CC E E CC ", " CC CC ", " CC CC ", " CCC D EAAAE D CCC ", " CCCCDCCDCCDCCCC ", " CCCCCCCCC "}, - {" CHHHHHHHC ", " DDCDCDD ", " D EEE D ", " ", " C C ", " E E ", " C C ", " E E ", " ", " ", " ", " ", " D D ", " D D ", " D D ", "CCE ECC", " DE ED ", "CCE ECC", " D D ", " D D ", " D D ", " ", " ", " ", " ", " E E ", " C C ", " E E ", " C C ", " ", " D EEE D ", " DDCDCDD ", " C C "}, - {" CCHHHHHCC ", " DDDDD ", " DD DD ", " ", " ", " S S ", " ", " S S ", " ", " ", " ", " ", " D D ", " D D ", " D D ", "CD DC", " D D ", "CD DC", " D D ", " D D ", " D D ", " ", " ", " ", " ", " S S ", " ", " S S ", " ", " ", " DD DD ", " DDDDD ", " C C "}, - {" CCCCCCC ", " C C ", " DDDDDDD ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D D ", " D D ", "CCD DCC", " D D ", "CCD DCC", " D D ", " D D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " DDDDDDD ", " C C ", " C C "}, - {" ", " C C ", " D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " D D ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D ", " C C ", " "}, - {" ", " C C ", " D ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " D D ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " D ", " C C ", " "}, - {" ", " C C ", " C C ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " CC CC ", " DA AD ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " C C ", " C C ", " "}, - {" ", " ", " C C ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " DA AD ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " C C ", " ", " "}, - {" ", " ", " C C ", " C C ", " D ", " SEEAEES ", " ", " ", " ", " ", " ", " ", " ", " S S ", " E E ", " CC E E CC ", " DA AD ", " CC E E CC ", " E E ", " S S ", " ", " ", " ", " ", " ", " ", " ", " SEEAEES ", " D ", " C C ", " C C ", " ", " "}, - {" ", " ", " ", " C C ", " CCCCC ", " D ", " A ", " ", " ", " ", " ", " ", " ", " ", " C C ", " CC CC ", " CDA ADC ", " CC CC ", " C C ", " ", " ", " ", " ", " ", " ", " ", " A ", " D ", " CCCCC ", " C C ", " ", " ", " "}, - {" ", " ", " ", " ", " C C ", " C C ", " D ", " SEEAEES ", " ", " ", " ", " ", " ", " S S ", " E E ", " CC E E CC ", " DA AD ", " CC E E CC ", " E E ", " S S ", " ", " ", " ", " ", " ", " SEEAEES ", " D ", " C C ", " C C ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " C C ", " CCCCC ", " D ", " A ", " A ", " ", " ", " ", " ", " C C ", " CC CC ", " CDAA AADC ", " CC CC ", " C C ", " ", " ", " ", " ", " A ", " A ", " D ", " CCCCC ", " C C ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " C C ", " C C ", " D ", " D ", " ", " ", " ", " ", " ", " CC CC ", " DD DD ", " CC CC ", " ", " ", " ", " ", " ", " D ", " D ", " C C ", " C C ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " D ", " D ", " DDDDDDD ", " DD DD ", " D EEE D ", " CCC D EAAAE D CCC ", " DDD EAAAE DDD ", " CCC D EAAAE D CCC ", " D EEE D ", " DD DD ", " DDDDDDD ", " D ", " D ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " C C ", " DDDDD ", " DDCDCDD ", " CCCCDCCDCCDCCCC ", " DDDDDDD ", " CCCCDCCDCCDCCCC ", " DDCDCDD ", " DDDDD ", " C C ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " "}, - {" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " C C ", " C C ", " C C ", " CCCCCCCCC ", " C C ", " CCCCCCCCC ", " C C ", " C C ", " C C ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "} + private static final IStructureDefinition<GT_MetaTileEntity_EM_EyeOfHarmony> STRUCTURE_DEFINITION = + IStructureDefinition.<GT_MetaTileEntity_EM_EyeOfHarmony>builder() + .addShape("main", transpose(new String[][] { + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " CCCCCCCCC ", + " C C ", + " CCCCCCCCC ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " C C ", + " DDDDD ", + " DDCDCDD ", + " CCCCDCCDCCDCCCC ", + " DDDDDDD ", + " CCCCDCCDCCDCCCC ", + " DDCDCDD ", + " DDDDD ", + " C C ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " D ", + " D ", + " DDDDDDD ", + " DD DD ", + " D EEE D ", + " CCC D EAAAE D CCC ", + " DDD EAAAE DDD ", + " CCC D EAAAE D CCC ", + " D EEE D ", + " DD DD ", + " DDDDDDD ", + " D ", + " D ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " D ", + " D ", + " ", + " ", + " ", + " ", + " ", + " CC CC ", + " DD DD ", + " CC CC ", + " ", + " ", + " ", + " ", + " ", + " D ", + " D ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " C C ", + " CCCCC ", + " D ", + " A ", + " A ", + " ", + " ", + " ", + " ", + " C C ", + " CC CC ", + " CDAA AADC ", + " CC CC ", + " C C ", + " ", + " ", + " ", + " ", + " A ", + " A ", + " D ", + " CCCCC ", + " C C ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " D ", + " SEEAEES ", + " ", + " ", + " ", + " ", + " ", + " S S ", + " E E ", + " CC E E CC ", + " DA AD ", + " CC E E CC ", + " E E ", + " S S ", + " ", + " ", + " ", + " ", + " ", + " SEEAEES ", + " D ", + " C C ", + " C C ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " C C ", + " CCCCC ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " CC CC ", + " CDA ADC ", + " CC CC ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " CCCCC ", + " C C ", + " ", + " ", + " " + }, + { + " ", + " ", + " C C ", + " C C ", + " D ", + " SEEAEES ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " S S ", + " E E ", + " CC E E CC ", + " DA AD ", + " CC E E CC ", + " E E ", + " S S ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " SEEAEES ", + " D ", + " C C ", + " C C ", + " ", + " " + }, + { + " ", + " ", + " C C ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " DA AD ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " C C ", + " ", + " " + }, + { + " ", + " C C ", + " C C ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " CC CC ", + " DA AD ", + " CC CC ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " C C ", + " C C ", + " " + }, + { + " ", + " C C ", + " D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " D D ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D ", + " C C ", + " " + }, + { + " ", + " C C ", + " D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " D D ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D ", + " C C ", + " " + }, + { + " CCCCCCC ", + " C C ", + " DDDDDDD ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + "CCD DCC", + " D D ", + "CCD DCC", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " DDDDDDD ", + " C C ", + " C C " + }, + { + " CCHHHHHCC ", + " DDDDD ", + " DD DD ", + " ", + " ", + " S S ", + " ", + " S S ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + " D D ", + "CD DC", + " D D ", + "CD DC", + " D D ", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " S S ", + " ", + " S S ", + " ", + " ", + " DD DD ", + " DDDDD ", + " C C " + }, + { + " CHHHHHHHC ", + " DDCDCDD ", + " D EEE D ", + " ", + " C C ", + " E E ", + " C C ", + " E E ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + " D D ", + "CCE ECC", + " DE ED ", + "CCE ECC", + " D D ", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " E E ", + " C C ", + " E E ", + " C C ", + " ", + " D EEE D ", + " DDCDCDD ", + " C C " + }, + { + " CHHFFFHHC ", + " CCCCDCCDCCDCCCC ", + " CCC D EAAAE D CCC ", + " CC CC ", + " CC CC ", + " CC E E CC ", + " CC CC ", + " CC E E CC ", + " C C ", + " CC CC ", + " C C ", + " C C ", + "CCD DCC", + "CD DC", + "CCE ECC", + "CCA ACC", + "CDA ADC", + "CCA ACC", + "CCE ECC", + "CD DC", + "CCD DCC", + " C C ", + " C C ", + " CC CC ", + " C C ", + " CC E E CC ", + " CC CC ", + " CC E E CC ", + " CC CC ", + " CC CC ", + " CCC D EAAAE D CCC ", + " CCCCDCCDCCDCCCC ", + " CCCCCCCCC " + }, + { + " CHHF~FHHC ", + " DDDDDDD ", + " DDD EAAAE DDD ", + " DD DD ", + " CDAA AADC ", + " DA AD ", + " CDA ADC ", + " DA AD ", + " DA AD ", + " DA AD ", + " D D ", + " D D ", + " D D ", + " D D ", + " DE ED ", + "CDA ADC", + " DA AD ", + "CDA ADC", + " DE ED ", + " D D ", + " D D ", + " D D ", + " D D ", + " DA AD ", + " DA AD ", + " DA AD ", + " CDA ADC ", + " DA AD ", + " CDAA AADC ", + " DD DD ", + " DDD EAAAE DDD ", + " DDDDDDD ", + " C C " + }, + { + " CHHFFFHHC ", + " CCCCDCCDCCDCCCC ", + " CCC D EAAAE D CCC ", + " CC CC ", + " CC CC ", + " CC E E CC ", + " CC CC ", + " CC E E CC ", + " C C ", + " CC CC ", + " C C ", + " C C ", + "CCD DCC", + "CD DC", + "CCE ECC", + "CCA ACC", + "CDA ADC", + "CCA ACC", + "CCE ECC", + "CD DC", + "CCD DCC", + " C C ", + " C C ", + " CC CC ", + " C C ", + " CC E E CC ", + " CC CC ", + " CC E E CC ", + " CC CC ", + " CC CC ", + " CCC D EAAAE D CCC ", + " CCCCDCCDCCDCCCC ", + " CCCCCCCCC " + }, + { + " CHHHHHHHC ", + " DDCDCDD ", + " D EEE D ", + " ", + " C C ", + " E E ", + " C C ", + " E E ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + " D D ", + "CCE ECC", + " DE ED ", + "CCE ECC", + " D D ", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " E E ", + " C C ", + " E E ", + " C C ", + " ", + " D EEE D ", + " DDCDCDD ", + " C C " + }, + { + " CCHHHHHCC ", + " DDDDD ", + " DD DD ", + " ", + " ", + " S S ", + " ", + " S S ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + " D D ", + "CD DC", + " D D ", + "CD DC", + " D D ", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " S S ", + " ", + " S S ", + " ", + " ", + " DD DD ", + " DDDDD ", + " C C " + }, + { + " CCCCCCC ", + " C C ", + " DDDDDDD ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D D ", + " D D ", + "CCD DCC", + " D D ", + "CCD DCC", + " D D ", + " D D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " DDDDDDD ", + " C C ", + " C C " + }, + { + " ", + " C C ", + " D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " D D ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D ", + " C C ", + " " + }, + { + " ", + " C C ", + " D ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " D D ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " D ", + " C C ", + " " + }, + { + " ", + " C C ", + " C C ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " CC CC ", + " DA AD ", + " CC CC ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " C C ", + " C C ", + " " + }, + { + " ", + " ", + " C C ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " DA AD ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " C C ", + " ", + " " + }, + { + " ", + " ", + " C C ", + " C C ", + " D ", + " SEEAEES ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " S S ", + " E E ", + " CC E E CC ", + " DA AD ", + " CC E E CC ", + " E E ", + " S S ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " SEEAEES ", + " D ", + " C C ", + " C C ", + " ", + " " + }, + { + " ", + " ", + " ", + " C C ", + " CCCCC ", + " D ", + " A ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " CC CC ", + " CDA ADC ", + " CC CC ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " A ", + " D ", + " CCCCC ", + " C C ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " D ", + " SEEAEES ", + " ", + " ", + " ", + " ", + " ", + " S S ", + " E E ", + " CC E E CC ", + " DA AD ", + " CC E E CC ", + " E E ", + " S S ", + " ", + " ", + " ", + " ", + " ", + " SEEAEES ", + " D ", + " C C ", + " C C ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " C C ", + " CCCCC ", + " D ", + " A ", + " A ", + " ", + " ", + " ", + " ", + " C C ", + " CC CC ", + " CDAA AADC ", + " CC CC ", + " C C ", + " ", + " ", + " ", + " ", + " A ", + " A ", + " D ", + " CCCCC ", + " C C ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " D ", + " D ", + " ", + " ", + " ", + " ", + " ", + " CC CC ", + " DD DD ", + " CC CC ", + " ", + " ", + " ", + " ", + " ", + " D ", + " D ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " D ", + " D ", + " DDDDDDD ", + " DD DD ", + " D EEE D ", + " CCC D EAAAE D CCC ", + " DDD EAAAE DDD ", + " CCC D EAAAE D CCC ", + " D EEE D ", + " DD DD ", + " DDDDDDD ", + " D ", + " D ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " C C ", + " DDDDD ", + " DDCDCDD ", + " CCCCDCCDCCDCCCC ", + " DDDDDDD ", + " CCCCDCCDCCDCCCC ", + " DDCDCDD ", + " DDDDD ", + " C C ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + }, + { + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " C C ", + " C C ", + " C C ", + " CCCCCCCCC ", + " C C ", + " CCCCCCCCC ", + " C C ", + " C C ", + " C C ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + } })) - .addElement('A', ofBlocksTiered( - (block, meta) -> block == TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators ? meta : -1, - ImmutableList.of( - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 0), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 1), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 2), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 3), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 4), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 5), - Pair.of(TT_Block_SpacetimeCompressionFieldGenerators.SpacetimeCompressionFieldGenerators, 6) - ), - -1, - (t, meta) -> t.SpacetimeCompressionFieldMetadata = meta, - t -> t.SpacetimeCompressionFieldMetadata - )) - .addElement('S', ofBlocksTiered( - (block, meta) -> block == TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators ? meta : -1, - ImmutableList.of( - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 0), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 1), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 2), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 3), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 4), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 5), - Pair.of(TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, 6) - ), - -1, - (t, meta) -> t.StabilisationFieldMetadata = meta, - t -> t.StabilisationFieldMetadata - )) - .addElement('B', ofBlock(sBlockCasingsTT, 11)) - .addElement('C', ofBlock(sBlockCasingsTT, 12)) - .addElement('D', ofBlock(sBlockCasingsTT, 13)) - .addElement('E', ofBlocksTiered( - (block, meta) -> block == TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator ? meta : -1, - ImmutableList.of( - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 0), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 1), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 2), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 3), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 4), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 5), - Pair.of(TT_Block_TimeAccelerationFieldGenerators.TimeAccelerationFieldGenerator, 6) - ), - -1, - (t, meta) -> t.TimeAccelerationFieldMetadata = meta, - t -> t.TimeAccelerationFieldMetadata - )) - .addElement('H', ofHatchAdderOptional(GT_MetaTileEntity_EM_EyeOfHarmony::addClassicToMachineList, textureOffset, 1, sBlockCasingsTT, 0)) - .addElement('F', ofHatchAdderOptional(GT_MetaTileEntity_EM_EyeOfHarmony::addElementalToMachineList, textureOffset + 4, 2, sBlockCasingsTT, 4)) - .build(); - - - private double hydrogen_overflow_probability_adjustment; - private double helium_overflow_probability_adjustment; + .addElement( + 'A', + ofBlocksTiered( + (block, meta) -> block + == TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators + ? meta + : -1, + ImmutableList.of( + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 0), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 1), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 2), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 3), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 4), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 5), + Pair.of( + TT_Block_SpacetimeCompressionFieldGenerators + .SpacetimeCompressionFieldGenerators, + 6)), + -1, + (t, meta) -> t.spacetimeCompressionFieldMetadata = meta, + t -> t.spacetimeCompressionFieldMetadata)) + .addElement( + 'S', + ofBlocksTiered( + (block, meta) -> + block == TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators + ? meta + : -1, + ImmutableList.of( + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 0), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 1), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 2), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 3), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 4), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 5), + Pair.of( + TT_Block_StabilisationFieldGenerators.StabilisationFieldGenerators, + 6)), + -1, + (t, meta) -> t.stabilisationFieldMetadata = meta, + t -> t.stabilisationFieldMetadata)) + .addElement('B', ofBlock(sBlockCasingsTT, 11)) + .addElement('C', ofBlock(sBlockCasingsTT, 12)) + .addElement('D', ofBlock(sBlockCasingsTT, 13)) + .addElement( + 'E', + ofBlocksTiered( + (block, meta) -> block + == TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator + ? meta + : -1, + ImmutableList.of( + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 0), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 1), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 2), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 3), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 4), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 5), + Pair.of( + TT_Block_TimeAccelerationFieldGenerators + .TimeAccelerationFieldGenerator, + 6)), + -1, + (t, meta) -> t.timeAccelerationFieldMetadata = meta, + t -> t.timeAccelerationFieldMetadata)) + .addElement( + 'H', + ofHatchAdderOptional( + GT_MetaTileEntity_EM_EyeOfHarmony::addClassicToMachineList, + textureOffset, + 1, + sBlockCasingsTT, + 0)) + .addElement( + 'F', + ofHatchAdderOptional( + GT_MetaTileEntity_EM_EyeOfHarmony::addElementalToMachineList, + textureOffset + 4, + 2, + sBlockCasingsTT, + 4)) + .build(); + + private double hydrogenOverflowProbabilityAdjustment; + private double heliumOverflowProbabilityAdjustment; // Maximum additional chance of recipe success that can be obtained from adding computation. private static final double max_percentage_chance_gain_from_computation_per_second = 0.3; - private static final long ticks_between_hatch_drain = 20; + // todo: make higher on final release. + private static final long ticksBetweenHatchDrain = 20; - List<Pair<ItemStack, Long>> output_items; + List<Pair<ItemStack, Long>> outputItems; - private void calculateHydrogenHeliumInputExcessValues(long hydrogen_recipe_requirement, long helium_recipe_requirement) { + private void calculateHydrogenHeliumInputExcessValues( + long hydrogen_recipe_requirement, long helium_recipe_requirement) { long hydrogen_stored = validFluidMap.get(Materials.Hydrogen.getGas(1L)); - long helium_stored = validFluidMap.get(Materials.Helium.getGas(1L)); + long helium_stored = validFluidMap.get(Materials.Helium.getGas(1L)); double hydrogen_excess_percentage = abs(1 - hydrogen_stored / hydrogen_recipe_requirement); double helium_excess_percentage = abs(1 - helium_stored / helium_recipe_requirement); - hydrogen_overflow_probability_adjustment = 1 - exp(- pow(30 * hydrogen_excess_percentage, 2)); - helium_overflow_probability_adjustment = 1 - exp(- pow(30 * helium_excess_percentage, 2)); + hydrogenOverflowProbabilityAdjustment = 1 - exp(-pow(30 * hydrogen_excess_percentage, 2)); + heliumOverflowProbabilityAdjustment = 1 - exp(-pow(30 * helium_excess_percentage, 2)); } - private double recipeChanceCalculator(double base_recipe_chance) { - double chance = (base_recipe_chance - - TimeAccelerationFieldMetadata * 0.1 - + StabilisationFieldMetadata * 0.05 - - hydrogen_overflow_probability_adjustment - - helium_overflow_probability_adjustment + private double recipeChanceCalculator() { + double chance = (currentRecipe.getBaseRecipeSuccessChance() + - timeAccelerationFieldMetadata * 0.1 + + stabilisationFieldMetadata * 0.05 + - hydrogenOverflowProbabilityAdjustment + - heliumOverflowProbabilityAdjustment + max_percentage_chance_gain_from_computation_per_second * (1 - exp(-10e-5 * getComputation()))); return clamp(chance, 0.0, 1.0); @@ -192,9 +1396,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl private double recipeYieldCalculator() { double yield = 1 - - hydrogen_overflow_probability_adjustment - - helium_overflow_probability_adjustment - - StabilisationFieldMetadata * 0.05; + - hydrogenOverflowProbabilityAdjustment + - heliumOverflowProbabilityAdjustment + - stabilisationFieldMetadata * 0.05; return clamp(yield, 0.0, 1.0); } @@ -203,8 +1407,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl double double_recipe_time = (double) recipe_time; - long spacetime_casing_difference = (recipe_spacetime_casing_required - SpacetimeCompressionFieldMetadata); - return (long) (double_recipe_time * pow(2, -TimeAccelerationFieldMetadata) * pow(0.97, spacetime_casing_difference)); + long spacetime_casing_difference = (recipe_spacetime_casing_required - spacetimeCompressionFieldMetadata); + return (long) + (double_recipe_time * pow(2, -timeAccelerationFieldMetadata) * pow(0.97, spacetime_casing_difference)); } @Override @@ -301,20 +1506,28 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl .addInfo(BLUE + "Spacetime Compression Field Generator:") .addInfo("- The tier of this block determines what recipes can be run. If the multiblocks") .addInfo(" spacetime compression field block exceeds the requirements of the recipe it") - .addInfo(" will decrease the processing time by " + RED + "3%" + GRAY + " per tier over the requirement. This") + .addInfo(" will decrease the processing time by " + RED + "3%" + GRAY + + " per tier over the requirement. This") .addInfo(" is multiplicative.") .addInfo(BLUE + "Time Dilation Field Generator:") - .addInfo("- Decreases the time required by a recipe by a factor of " + RED + "2" + GRAY + " per tier of block.") - .addInfo(" Decreases the probability of a recipe succeeding by " + RED + "10%" + GRAY + " per tier (additive)") + .addInfo("- Decreases the time required by a recipe by a factor of " + RED + "2" + GRAY + + " per tier of block.") + .addInfo(" Decreases the probability of a recipe succeeding by " + RED + "10%" + GRAY + + " per tier (additive)") .addInfo(BLUE + "Stabilisation Field Generator:") - .addInfo("- Increases the probability of a recipe succeeding by " + RED + "5%" + GRAY + " per tier (additive).") + .addInfo("- Increases the probability of a recipe succeeding by " + RED + "5%" + GRAY + + " per tier (additive).") .addInfo(" Decreases the yield of a recipe by " + RED + "5%" + GRAY + " per tier (additive). ") .addInfo(GOLD + "--------------------------------------------------------------------------------") - .addInfo("Computation/s provided to the multiblock can increase the chance by up to " + RED + GT_Utility.formatNumbers(max_percentage_chance_gain_from_computation_per_second * 100) + GRAY + "%.") - .addInfo("The associated formula is " + GREEN + "additional_chance = 0.3 * exp(10^(-5) * computation_per_second)" + GRAY + ".") + .addInfo("Computation/s provided to the multiblock can increase the chance by up to " + RED + + GT_Utility.formatNumbers(max_percentage_chance_gain_from_computation_per_second * 100) + GRAY + + "%.") + .addInfo("The associated formula is " + GREEN + + "additional_chance = 0.3 * exp(10^(-5) * computation_per_second)" + GRAY + ".") .addInfo(GOLD + "--------------------------------------------------------------------------------") .addInfo("Going over a recipe requirement on hydrogen or helium has a penalty on yield and recipe") - .addInfo("chance. All stored hydrogen and helium is consumed during a craft. The associated formulas are:") + .addInfo( + "chance. All stored hydrogen and helium is consumed during a craft. The associated formulas are:") .addInfo(GREEN + "percentage_overflow = abs(1 - fluid_stored/recipe_requirement)") .addInfo(GREEN + "adjustment_value = 1 - exp(-(30 * percentage_overflow)^2)") .addInfo("The value of adjustment_value is then subtracted from the total yield and recipe chance.") @@ -324,26 +1537,37 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl .addInfo("by the yield calculated.") .addInfo(GOLD + "--------------------------------------------------------------------------------") .addInfo("This multiblock can only output to ME output busses/hatches. If no space in the network") - .addInfo("is avaliable the items/fluids will be " + UNDERLINE + DARK_RED + "voided" + RESET + GRAY + ".") + .addInfo( + "is avaliable the items/fluids will be " + UNDERLINE + DARK_RED + "voided" + RESET + GRAY + ".") .addInfo(GOLD + "--------------------------------------------------------------------------------") .addInfo("Recipes that fail will return a random amount of the fluid back from the recipe and some") .addInfo("exotic material that rejects conventional physics.") .addSeparator() .addStructureInfo("Eye of Harmony structure is too complex! See schematic for details.") - .addStructureInfo(EnumChatFormatting.GOLD + "888" + EnumChatFormatting.GRAY + " Ultimate Molecular Casing.") - .addStructureInfo(EnumChatFormatting.GOLD + "534" + EnumChatFormatting.GRAY + " Ultimate Advanced Molecular Casing.") - .addStructureInfo(EnumChatFormatting.GOLD + "680" + EnumChatFormatting.GRAY + " Time Dilation Field Generator.") - .addStructureInfo(EnumChatFormatting.GOLD + "48" + EnumChatFormatting.GRAY + " Stabilisation Field Generator.") - .addStructureInfo(EnumChatFormatting.GOLD + "138" + EnumChatFormatting.GRAY + " Spacetime Compression Field Generator.") + .addStructureInfo( + EnumChatFormatting.GOLD + "888" + EnumChatFormatting.GRAY + " Ultimate Molecular Casing.") + .addStructureInfo(EnumChatFormatting.GOLD + "534" + EnumChatFormatting.GRAY + + " Ultimate Advanced Molecular Casing.") + .addStructureInfo( + EnumChatFormatting.GOLD + "680" + EnumChatFormatting.GRAY + " Time Dilation Field Generator.") + .addStructureInfo( + EnumChatFormatting.GOLD + "48" + EnumChatFormatting.GRAY + " Stabilisation Field Generator.") + .addStructureInfo(EnumChatFormatting.GOLD + "138" + EnumChatFormatting.GRAY + + " Spacetime Compression Field Generator.") .addStructureInfo("--------------------------------------------") - .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " maintenance hatch.") - .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 2 + EnumChatFormatting.GRAY + " input hatches.") - .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + "+ ME output hatch.") - .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " input busses.") - .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " ME output bus.") + .addStructureInfo( + "Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " maintenance hatch.") + .addStructureInfo( + "Requires " + EnumChatFormatting.GOLD + 2 + EnumChatFormatting.GRAY + " input hatches.") + .addStructureInfo( + "Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + "+ ME output hatch.") + .addStructureInfo( + "Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " input busses.") + .addStructureInfo( + "Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " ME output bus.") .addStructureInfo("--------------------------------------------") .beginStructureBlock(33, 33, 33, false) - .toolTipFinisher( AuthorColen.substring(8) + EnumChatFormatting.GRAY + "&" + CommonValues.TEC_MARK_EM); + .toolTipFinisher(AuthorColen.substring(8) + EnumChatFormatting.GRAY + "&" + CommonValues.TEC_MARK_EM); return tt; } @@ -356,54 +1580,63 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl } @Override - public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { + public ITexture[] getTexture( + IGregTechTileEntity aBaseMetaTileEntity, + byte aSide, + byte aFacing, + byte aColorIndex, + boolean aActive, + boolean aRedstone) { if (aSide == aFacing) { - return new ITexture[]{Textures.BlockIcons.casingTexturePages[texturePage][12], new TT_RenderedExtendedFacingTexture(aActive ? ScreenON : ScreenOFF)}; + return new ITexture[] { + Textures.BlockIcons.casingTexturePages[texturePage][12], + new TT_RenderedExtendedFacingTexture(aActive ? ScreenON : ScreenOFF) + }; } - return new ITexture[]{Textures.BlockIcons.casingTexturePages[texturePage][12]}; + return new ITexture[] {Textures.BlockIcons.casingTexturePages[texturePage][12]}; } @Override public void construct(ItemStack stackSize, boolean hintsOnly) { - SpacetimeCompressionFieldMetadata = -1; - TimeAccelerationFieldMetadata = -1; - StabilisationFieldMetadata = -1; + spacetimeCompressionFieldMetadata = -1; + timeAccelerationFieldMetadata = -1; + stabilisationFieldMetadata = -1; structureBuild_EM("main", 16, 16, 0, stackSize, hintsOnly); } - private final Map<FluidStack, Long> validFluidMap = new HashMap<FluidStack, Long>() {{ + private final Map<FluidStack, Long> validFluidMap = new HashMap<FluidStack, Long>() {{ put(Materials.Hydrogen.getGas(1), 0L); put(Materials.Helium.getGas(1), 0L); }}; private void drainFluidFromHatchesAndStoreInternally() { - for (GT_MetaTileEntity_Hatch_Input input_hatch : mInputHatches) { - FluidStack fluid_in_hatch = input_hatch.getFluid(); + for (GT_MetaTileEntity_Hatch_Input inputHatch : mInputHatches) { + FluidStack fluidInHatch = inputHatch.getFluid(); - if (fluid_in_hatch == null) { + if (fluidInHatch == null) { continue; } // Iterate over valid fluids and store them in a hashmap. - for (FluidStack valid_fluid : validFluidMap.keySet()) { - if (fluid_in_hatch.isFluidEqual(valid_fluid)) { - validFluidMap.put(valid_fluid, validFluidMap.get(valid_fluid) + (long) fluid_in_hatch.amount); - input_hatch.setFillableStack(null); + for (FluidStack validFluid : validFluidMap.keySet()) { + if (fluidInHatch.isFluidEqual(validFluid)) { + validFluidMap.put(validFluid, validFluidMap.get(validFluid) + (long) fluidInHatch.amount); + inputHatch.setFillableStack(null); } } } } - EyeOfHarmonyRecipe currentRecipeObject; + private EyeOfHarmonyRecipe currentRecipe; @Override public boolean checkRecipe_EM(ItemStack aStack) { - currentRecipeObject = recipes.recipeLookUp(aStack); - if (processRecipe(currentRecipeObject)) { + currentRecipe = recipes.recipeLookUp(aStack); + if (processRecipe(currentRecipe)) { return true; } - currentRecipeObject = null; + currentRecipe = null; return false; } @@ -417,12 +1650,12 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl public boolean processRecipe(EyeOfHarmonyRecipe recipeObject) { - if ((getHydrogenStored() < currentRecipeObject.getHydrogenRequirement()) & (getHeliumStored() < currentRecipeObject.getHeliumRequirement())) { + if ((getHydrogenStored() < currentRecipe.getHydrogenRequirement()) && (getHeliumStored() < currentRecipe.getHeliumRequirement())) { return false; } // Check tier of spacetime compression blocks is high enough. - if (SpacetimeCompressionFieldMetadata <= recipeObject.getSpacetimeCasingTierRequired()) { + if (spacetimeCompressionFieldMetadata <= recipeObject.getSpacetimeCasingTierRequired()) { return false; } @@ -431,14 +1664,19 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl return false; } - mMaxProgresstime = (int) Math.max(1, recipeProcessTimeCalculator(recipeObject.getRecipeTime(), recipeObject.getSpacetimeCasingTierRequired())); + mMaxProgresstime = (int) Math.max( + 1, + recipeProcessTimeCalculator( + recipeObject.getRecipeTime(), recipeObject.getSpacetimeCasingTierRequired())); + + calculateHydrogenHeliumInputExcessValues( + recipeObject.getHydrogenRequirement(), recipeObject.getHeliumRequirement()); - calculateHydrogenHeliumInputExcessValues(recipeObject.getHydrogenRequirement(), recipeObject.getHeliumRequirement()); // DEBUG ! DELETE THESE TWO LINES: - hydrogen_overflow_probability_adjustment = 0; - helium_overflow_probability_adjustment = 0; + hydrogenOverflowProbabilityAdjustment = 0; + heliumOverflowProbabilityAdjustment = 0; - success_chance = recipeChanceCalculator(recipeObject.getBaseRecipeSuccessChance()); + successChance = recipeChanceCalculator(); // Determine EU recipe output. euOutput = recipeObject.getEUOutput(); @@ -452,28 +1690,30 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl double yield = recipeYieldCalculator(); - List<Pair<ItemStack, Long>> tmp_items_output = new ArrayList<>(); - FluidStack[] tmp_fluids_output = recipeObject.getOutputFluids().clone(); + List<Pair<ItemStack, Long>> tmpItemsOutput = new ArrayList<>(); + FluidStack[] tmpFluidsOutput = recipeObject.getOutputFluids().clone(); - // Iterate over item output list and apply yield values. - for (Pair<ItemStack, Long> pair : recipeObject.getOutputItems()) { - tmp_items_output.add(Pair.of(pair.getLeft(), (long) (pair.getRight() * yield))); - } + if (yield != 1.0) { + // Iterate over item output list and apply yield values. + for (Pair<ItemStack, Long> pair : recipeObject.getOutputItems()) { + tmpItemsOutput.add(Pair.of(pair.getLeft(), (long) (pair.getRight() * yield))); + } - // Iterate over fluid output list and apply yield values. - for (FluidStack fluidStack : tmp_fluids_output) { - fluidStack.amount *= yield; + // Iterate over fluid output list and apply yield values. + for (FluidStack fluidStack : tmpFluidsOutput) { + fluidStack.amount *= yield; + } } - output_items = tmp_items_output; - mOutputFluids = tmp_fluids_output; + outputItems = tmpItemsOutput; + mOutputFluids = tmpFluidsOutput; updateSlots(); recipeRunning = true; return true; } - private double success_chance; + private double successChance; private void outputFailedChance() {} @@ -487,7 +1727,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl recipeRunning = false; eRequiredData = 0L; - if (success_chance > random()) { + if (successChance > random()) { outputFailedChance(); return; } @@ -495,7 +1735,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl addEUToGlobalEnergyMap(userUUID, euOutput); euOutput = 0; - for (Pair<ItemStack, Long> itemPair : output_items) { + for (Pair<ItemStack, Long> itemPair : outputItems) { outputItemToAENetwork(itemPair.getLeft(), itemPair.getRight()); } @@ -504,8 +1744,8 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl private void pushComputation() { // Add computation to finite "stack". - for (int i = computationTickCacheSize - 1 ; i > 2; i--) { - computationStack[i-1] = computationStack[i]; + for (int i = computationTickCacheSize - 1; i > 2; i--) { + computationStack[i - 1] = computationStack[i]; } computationStack[0] = eAvailableData; } @@ -529,14 +1769,14 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl pushComputation(); if (!recipeRunning) { - if ((aTick % ticks_between_hatch_drain) == 0) { + if ((aTick % ticksBetweenHatchDrain) == 0) { drainFluidFromHatchesAndStoreInternally(); } } } private boolean recipeRunning = false; - private final static int computationTickCacheSize = 5; + private static final int computationTickCacheSize = 5; private long getComputation() { return max(computationStack); @@ -546,7 +1786,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl long max = array[0]; for (long i : array) { - if (i > max) { max = i; } + if (i > max) { + max = i; + } } return max; @@ -581,12 +1823,12 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl public String[] getInfoData() { ArrayList<String> str = new ArrayList<>(Arrays.asList(super.getInfoData())); str.add(GOLD + "---------------- Control Block Statistics ----------------"); - str.add("Spacetime Compression Field Grade: " + BLUE + SpacetimeCompressionFieldMetadata); - str.add("Time Dilation Field Grade: " + BLUE + TimeAccelerationFieldMetadata); - str.add("Stabilisation Field Grade: " + BLUE + StabilisationFieldMetadata); + str.add("Spacetime Compression Field Grade: " + BLUE + spacetimeCompressionFieldMetadata); + str.add("Time Dilation Field Grade: " + BLUE + timeAccelerationFieldMetadata); + str.add("Stabilisation Field Grade: " + BLUE + stabilisationFieldMetadata); str.add(GOLD + "----------------- Internal Fluids Stored ----------------"); - validFluidMap.forEach((key, value) -> str.add(BLUE + key.getLocalizedName() + RESET + - " : " + RED + GT_Utility.formatNumbers(value))); + validFluidMap.forEach((key, value) -> + str.add(BLUE + key.getLocalizedName() + RESET + " : " + RED + GT_Utility.formatNumbers(value))); str.add(GOLD + "-----------------------------------------------------"); return str.toArray(new String[0]); } @@ -610,7 +1852,10 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl public void loadNBTData(final NBTTagCompound aNBT) { // Load the quantity of fluid stored inside the controller. - validFluidMap.forEach((key, value) -> validFluidMap.put(key, aNBT.getLong("stored." + key.getUnlocalizedName()))); + validFluidMap.forEach( + (key, value) -> validFluidMap.put(key, aNBT.getLong("stored." + key.getUnlocalizedName()))); + + // Load other stuff from NBT. recipeRunning = aNBT.getBoolean("eye_of_harmony_recipeRunning"); super.loadNBTData(aNBT); |