aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorConnor-Colenso <52056774+Connor-Colenso@users.noreply.github.com>2023-02-27 17:25:39 +0000
committerGitHub <noreply@github.com>2023-02-27 17:25:39 +0000
commit70a3539bb9e1b1fbe7cee43ad97a4f24d49ee2ab (patch)
treed2eaeb7c491a615eedf12a489bff11689ff01c1d /src
parentec2938ad647f76b8be8389364792d29b6aad0f7e (diff)
parent8f3b0129b9c2cdba2cd92c97b012987ecd476169 (diff)
downloadGT5-Unofficial-70a3539bb9e1b1fbe7cee43ad97a4f24d49ee2ab.tar.gz
GT5-Unofficial-70a3539bb9e1b1fbe7cee43ad97a4f24d49ee2ab.tar.bz2
GT5-Unofficial-70a3539bb9e1b1fbe7cee43ad97a4f24d49ee2ab.zip
Merge pull request #161 from GTNewHorizons/EOHImprovementsAndFixes
EOH improvements and fixes
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java52
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java117
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java15
-rw-r--r--src/main/java/com/github/technus/tectech/thing/block/EyeOfHarmonyBlock.java26
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java75
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsTT.java10
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Spacetime.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java135
-rw-r--r--src/main/resources/assets/tectech/lang/en_US.lang6
9 files changed, 281 insertions, 157 deletions
diff --git a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
index a362837bf4..aed978e0d0 100644
--- a/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
+++ b/src/main/java/com/github/technus/tectech/compatibility/dreamcraft/DreamCraftRecipeLoader.java
@@ -2503,7 +2503,9 @@ public class DreamCraftRecipeLoader {
addWirelessEnergyRecipes();
- addEOHRecipes();
+ if (Loader.isModLoaded("TGregworks")) {
+ addEOHRecipes();
+ }
// UHV-UMV Energy Hatch & Dynamo
TT_recipeAdder.addResearchableAssemblylineRecipe(
@@ -5005,14 +5007,15 @@ public class DreamCraftRecipeLoader {
// ------------------------- Set up information -------------------------
// ----------------------------------------------------------------------
- // Fluid mutatedLivingSolder = FluidRegistry.getFluid("molten.mutatedlivingsolder") != null
- // ? FluidRegistry.getFluid("molten.mutatedlivingsolder")
- // : FluidRegistry.getFluid("molten.solderingalloy");
+ Fluid mutatedLivingSolder = FluidRegistry.getFluid("molten.mutatedlivingsolder") != null
+ ? FluidRegistry.getFluid("molten.mutatedlivingsolder")
+ : FluidRegistry.getFluid("molten.solderingalloy");
- FluidStack fluid_0 = Materials.MagnetohydrodynamicallyConstrainedStarMatter.getMolten(576);
- FluidStack fluid_1 = Materials.SpaceTime.getMolten(576);
- FluidStack fluid_2 = Materials.Universium.getMolten(576);
- FluidStack fluid_3 = Materials.Lubricant.getFluid(8000);
+ FluidStack moltenMHDCSM_576 = Materials.MagnetohydrodynamicallyConstrainedStarMatter.getMolten(576);
+ FluidStack moltenSpaceTime_576 = Materials.SpaceTime.getMolten(576);
+ FluidStack moltenUniversium_576 = Materials.Universium.getMolten(576);
+ FluidStack lubricantFluid_8000 = Materials.Lubricant.getFluid(8000);
+ FluidStack solderingAlloy_14_400 = new FluidStack(mutatedLivingSolder, 14_400);
int totalComputation = 384_000;
int compPerSecond = 512;
@@ -5056,7 +5059,7 @@ public class DreamCraftRecipeLoader {
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 2L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 2L),
Materials.Neutronium.getNanite(4) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, lubricantFluid_8000 },
ItemList.Electric_Motor_UXV.get(1L),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5077,15 +5080,15 @@ public class DreamCraftRecipeLoader {
.get(OrePrefixes.plate, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 4L),
GT_OreDictUnificator
.get(OrePrefixes.screw, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 16L),
- new Object[] { OrePrefixes.ring.get(Materials.AnySyntheticRubber), 64L },
- new Object[] { OrePrefixes.ring.get(Materials.AnySyntheticRubber), 64L },
+ GT_OreDictUnificator.get(OrePrefixes.ring, MaterialsKevlar.Kevlar, 64L),
+ GT_OreDictUnificator.get("ringRadoxPoly", 64L),
GT_OreDictUnificator
.get(OrePrefixes.rotor, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 4L),
GT_OreDictUnificator.get("rotorShirabon", 4),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 2L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 2L),
Materials.Neutronium.getNanite(4) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, lubricantFluid_8000 },
ItemList.Electric_Pump_UXV.get(1),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5109,11 +5112,10 @@ public class DreamCraftRecipeLoader {
.get(OrePrefixes.round, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 64L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 2L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 2L),
- new Object[] { OrePrefixes.plate.get(Materials.AnySyntheticRubber), 64L },
- new Object[] { OrePrefixes.plate.get(Materials.AnySyntheticRubber), 64L },
- new Object[] { OrePrefixes.plate.get(Materials.AnySyntheticRubber), 32L },
- Materials.Neutronium.getNanite(4) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ MaterialsKevlar.Kevlar.getPlates(64), MaterialsKevlar.Kevlar.getPlates(16),
+ GT_OreDictUnificator.get("plateRadoxPoly", 64L),
+ GT_OreDictUnificator.get("plateRadoxPoly", 16L), Materials.Neutronium.getNanite(4) },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, lubricantFluid_8000 },
ItemList.Conveyor_Module_UXV.get(1),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5146,7 +5148,7 @@ public class DreamCraftRecipeLoader {
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 6L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 6L),
Materials.Neutronium.getNanite(8) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, lubricantFluid_8000 },
ItemList.Robot_Arm_UXV.get(1L),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5181,7 +5183,7 @@ public class DreamCraftRecipeLoader {
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 4L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 4L),
Materials.Neutronium.getNanite(4) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, lubricantFluid_8000 },
ItemList.Electric_Piston_UXV.get(1),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5213,7 +5215,7 @@ public class DreamCraftRecipeLoader {
Materials.Neutronium.getNanite(8)
},
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, solderingAlloy_14_400 },
ItemList.Emitter_UXV.get(1L),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5243,7 +5245,7 @@ public class DreamCraftRecipeLoader {
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 7L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 7L),
Materials.Neutronium.getNanite(8) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, solderingAlloy_14_400 },
ItemList.Sensor_UXV.get(1L),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5280,7 +5282,7 @@ public class DreamCraftRecipeLoader {
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.SpaceTime, 8L),
GT_OreDictUnificator.get(OrePrefixes.wireGt04, Materials.Infinity, 8L),
Materials.Neutronium.getNanite(12) },
- new FluidStack[] { fluid_0, fluid_1, fluid_2, fluid_3 },
+ new FluidStack[] { moltenMHDCSM_576, moltenSpaceTime_576, moltenUniversium_576, solderingAlloy_14_400 },
ItemList.Field_Generator_UXV.get(1L),
craftingTimeInTicks,
craftingEuPerTick);
@@ -5307,15 +5309,15 @@ public class DreamCraftRecipeLoader {
final ItemStack[] plateList = new ItemStack[] {
// Dense Shirabon plate.
- GT_OreDictUnificator.get("plateDenseShirabon", 1),
+ GT_OreDictUnificator.get("boltShirabon", 2),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.WhiteDwarfMatter, 2),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.WhiteDwarfMatter, 8),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.WhiteDwarfMatter, 32),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.BlackDwarfMatter, 2),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.BlackDwarfMatter, 8),
GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.BlackDwarfMatter, 32),
- GT_OreDictUnificator.get(OrePrefixes.rod, Materials.BlackDwarfMatter, 32),
- GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 2) };
+ GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 2),
+ GT_OreDictUnificator.get(OrePrefixes.bolt, Materials.MagnetohydrodynamicallyConstrainedStarMatter, 8) };
// EOH Controller Recipe.
{
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 98f24260eb..f19cb2daee 100644
--- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java
@@ -3,6 +3,7 @@ package com.github.technus.tectech.recipe;
import static com.github.technus.tectech.recipe.EyeOfHarmonyRecipeStorage.BILLION;
import static com.google.common.math.IntMath.pow;
import static gregtech.api.GregTech_API.getUnificatedOreDictStack;
+import static gregtech.api.util.GT_ModHandler.getModItem;
import static gregtech.api.util.GT_Utility.getPlasmaFuelValueInEUPerLiterFromMaterial;
import static java.lang.Math.min;
@@ -10,12 +11,12 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import org.apache.commons.lang3.tuple.Pair;
+import pers.gwyog.gtneioreplugin.plugin.block.BlockDimensionDisplay;
import pers.gwyog.gtneioreplugin.util.GT5OreLayerHelper;
import pers.gwyog.gtneioreplugin.util.GT5OreSmallHelper;
@@ -31,6 +32,13 @@ import gregtech.api.util.GT_OreDictUnificator;
@SuppressWarnings("SpellCheckingInspection")
public class EyeOfHarmonyRecipe {
+ static final FluidStack[] SPECIAL_FLUIDS = new FluidStack[] { Materials.WhiteDwarfMatter.getMolten(576),
+ Materials.WhiteDwarfMatter.getMolten(576), Materials.WhiteDwarfMatter.getMolten(2_304),
+ Materials.WhiteDwarfMatter.getMolten(9_216), Materials.BlackDwarfMatter.getMolten(576),
+ Materials.BlackDwarfMatter.getMolten(2_304), Materials.BlackDwarfMatter.getMolten(9_216),
+ Materials.Universium.getMolten(576), Materials.Universium.getMolten(2_304),
+ Materials.Universium.getMolten(9_216) };
+
HashingStrategy<ItemStack> itemStackHashingStrategy = new HashingStrategy<ItemStack>() {
@Override
@@ -95,7 +103,7 @@ public class EyeOfHarmonyRecipe {
return rocketTier;
}
- public EyeOfHarmonyRecipe(ArrayList<Pair<Materials, Long>> materialList, Block block,
+ public EyeOfHarmonyRecipe(final ArrayList<Pair<Materials, Long>> materialList, final BlockDimensionDisplay block,
final double recipeEnergyEfficiency, final long hydrogenRequirement, final long heliumRequirement,
final long miningTimeSeconds, final long rocketTierOfRecipe, final double baseSuccessChance) {
@@ -108,8 +116,7 @@ public class EyeOfHarmonyRecipe {
this.sumOfItems = this.outputItems.stream().map(ItemStackLong::getStackSize).reduce(0L, Long::sum);
- this.outputItems.add(
- new ItemStackLong(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 1), this.sumOfItems * 3));
+ this.outputItems.add(new ItemStackLong(getStoneDustType(block.getDimension()), this.sumOfItems * 3L));
this.outputItems.sort(Comparator.comparingLong(ItemStackLong::getStackSize));
Collections.reverse(this.outputItems);
@@ -132,30 +139,22 @@ public class EyeOfHarmonyRecipe {
// Add a bonus fluid of compressed star matter.
fluidStackArrayList.add(Materials.RawStarMatter.getFluid((this.spacetimeCasingTierRequired + 1) * 100_000));
- // Tier 0 - 576 White
- // Tier 1 - 2304 White
- // Tier 2 - 9216 White
- // Tier 3 - 36864 White
+ // Tier 0 & 1 - 576 White
+ // Tier 2 - 2304 White
+ // Tier 3 - 9216 White
// Tier 4 - 576 Black
// Tier 5 - 2304 Black
// Tier 6 - 9216 Black
- // Tier 7 - 36864 Black
-
- // Tier 8 - 576 Universium
- // Tier 9 - 2304 Universium
-
- if (rocketTierOfRecipe <= 2) {
- fluidStackArrayList.add(Materials.WhiteDwarfMatter.getMolten(576L * pow(4, (int) rocketTierOfRecipe)));
- }
-
- if ((3 <= rocketTierOfRecipe) && (rocketTierOfRecipe <= 7)) {
- fluidStackArrayList.add(Materials.BlackDwarfMatter.getMolten(576L * pow(4, (int) rocketTierOfRecipe - 3)));
- }
- if (rocketTierOfRecipe >= 8) {
- fluidStackArrayList.add(Materials.Universium.getMolten(576L * pow(4, (int) (rocketTierOfRecipe - 8))));
+ // Tier 7 - 576 Universium
+ // Tier 8 - 2304 Universium
+ // Tier 9 - 9216 Universium
+ int spacetimeTier = (int) rocketTierOfRecipe;
+ if (spacetimeTier == 0 || spacetimeTier == 9) {
+ spacetimeTier -= 1;
}
+ fluidStackArrayList.add(SPECIAL_FLUIDS[spacetimeTier + 1]);
outputFluids = fluidStackArrayList;
// End fluid processing.
@@ -174,10 +173,78 @@ public class EyeOfHarmonyRecipe {
this.euOutput = (long) (euStartCost * recipeEnergyEfficiency);
}
+ private ItemStack getStoneDustType(String key) {
+
+ switch (key) {
+ case "Ne":
+ return GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Netherrack, 1);
+ case "ED":
+ case "VA":
+ case "EA":
+ return GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Endstone, 1);
+ case "Mo":
+ return getModItem("dreamcraft", "item.MoonStoneDust", 1);
+ case "De":
+ return getModItem("dreamcraft", "item.DeimosStoneDust", 1);
+ case "Ma":
+ return getModItem("dreamcraft", "item.MarsStoneDust", 1);
+ case "Ph":
+ return getModItem("dreamcraft", "item.PhobosStoneDust", 1);
+ case "As":
+ case "KB":
+ return getModItem("dreamcraft", "item.AsteroidsStoneDust", 1);
+ case "Ca":
+ return getModItem("dreamcraft", "item.CallistoStoneDust", 1);
+ case "Ce":
+ return getModItem("dreamcraft", "item.CeresStoneDust", 1);
+ case "Eu":
+ return getModItem("dreamcraft", "item.EuropaStoneDust", 1);
+ case "Ga":
+ return getModItem("dreamcraft", "item.GanymedeStoneDust", 1);
+ case "Io":
+ return getModItem("dreamcraft", "item.IoStoneDust", 1);
+ case "Me":
+ return getModItem("dreamcraft", "item.MercuryStoneDust", 1);
+ case "Ve":
+ return getModItem("dreamcraft", "item.VenusStoneDust", 1);
+ case "En":
+ return getModItem("dreamcraft", "item.EnceladusStoneDust", 1);
+ case "Mi":
+ return getModItem("dreamcraft", "item.MirandaStoneDust", 1);
+ case "Ob":
+ return getModItem("dreamcraft", "item.OberonStoneDust", 1);
+ case "Ti":
+ return getModItem("dreamcraft", "item.TitanStoneDust", 1);
+ case "Pr":
+ return getModItem("dreamcraft", "item.ProteusStoneDust", 1);
+ case "Tr":
+ return getModItem("dreamcraft", "item.TritonStoneDust", 1);
+ case "Ha":
+ return getModItem("dreamcraft", "item.HaumeaStoneDust", 1);
+ case "MM":
+ return getModItem("dreamcraft", "item.MakeMakeStoneDust", 1);
+ case "Pl":
+ return getModItem("dreamcraft", "item.PlutoStoneDust", 1);
+ case "BE":
+ return getModItem("dreamcraft", "item.BarnardaEStoneDust", 1);
+ case "BF":
+ return getModItem("dreamcraft", "item.BarnardaFStoneDust", 1);
+ case "CB":
+ return getModItem("dreamcraft", "item.CentauriAStoneDust", 1);
+ case "TE":
+ return getModItem("dreamcraft", "item.TCetiEStoneDust", 1);
+ case "VB":
+ return getModItem("dreamcraft", "item.VegaBStoneDust", 1);
+ default:
+ return GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 1);
+ }
+ }
+
public EyeOfHarmonyRecipe(final GT5OreLayerHelper.NormalOreDimensionWrapper normalOreDimensionWrapper,
- final GT5OreSmallHelper.SmallOreDimensionWrapper smallOreDimensionWrapper, final Block block,
- final double recipeEnergyEfficiency, final long hydrogenRequirement, final long heliumRequirement,
- final long miningTimeSeconds, final long spacetimeCasingTierRequired, final double baseSuccessChance) {
+ final GT5OreSmallHelper.SmallOreDimensionWrapper smallOreDimensionWrapper,
+ final BlockDimensionDisplay block, final double recipeEnergyEfficiency, final long hydrogenRequirement,
+ final long heliumRequirement, final long miningTimeSeconds, final long spacetimeCasingTierRequired,
+ final double baseSuccessChance) {
// Process recipes output items.
// 6 * 64 = 6 stacks/second for VM tier 3 + Og gas.
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 78e97f4c46..9c2c638f34 100644
--- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
@@ -27,6 +27,7 @@ import gregtech.api.util.GT_OreDictUnificator;
public class EyeOfHarmonyRecipeStorage {
public static final long BILLION = LongMath.pow(10, 9);
+ private static final double CHANCE_DECREASE_PER_DIMENSION = 0.05;
// Map is unique so this is fine.
HashMap<Block, String> blocksMapInverted = new HashMap<Block, String>() {
@@ -52,10 +53,15 @@ public class EyeOfHarmonyRecipeStorage {
GT5OreSmallHelper.SmallOreDimensionWrapper smallOre = GT5OreSmallHelper.dimToSmallOreWrapper
.getOrDefault(dimAbbreviation, null);
if (normalOre == null && smallOre == null) {
- // no ores are generated in this dimension. fail silently
+ // No ores are generated in this dimension. Fail silently.
continue;
}
+ long spacetimeTier = blockDimensionDisplay.getDimensionRocketTier();
+ if (spacetimeTier == 0) {
+ spacetimeTier += 1;
+ }
+
put(
dimAbbreviation,
new EyeOfHarmonyRecipe(
@@ -66,8 +72,9 @@ public class EyeOfHarmonyRecipeStorage {
BILLION * (blockDimensionDisplay.getDimensionRocketTier() + 1),
BILLION * (blockDimensionDisplay.getDimensionRocketTier() + 1),
timeCalculator(blockDimensionDisplay.getDimensionRocketTier()),
- blockDimensionDisplay.getDimensionRocketTier(),
- 1.0 - 0.05 * blockDimensionDisplay.getDimensionRocketTier()));
+ spacetimeTier - 1,
+ 1.0 - CHANCE_DECREASE_PER_DIMENSION
+ * blockDimensionDisplay.getDimensionRocketTier()));
}
}
}
@@ -138,7 +145,7 @@ public class EyeOfHarmonyRecipeStorage {
BILLION * (rocketTier + 1),
timeCalculator(rocketTier),
rocketTier, // -1 so that we avoid out of bounds exception on NEI render.
- 1.0 - rocketTier / 10.0));
+ 1.0 - rocketTier * CHANCE_DECREASE_PER_DIMENSION));
}
private static long timeCalculator(final long rocketTier) {
diff --git a/src/main/java/com/github/technus/tectech/thing/block/EyeOfHarmonyBlock.java b/src/main/java/com/github/technus/tectech/thing/block/EyeOfHarmonyBlock.java
index 2f6a3f4e5c..1085c2b3f3 100644
--- a/src/main/java/com/github/technus/tectech/thing/block/EyeOfHarmonyBlock.java
+++ b/src/main/java/com/github/technus/tectech/thing/block/EyeOfHarmonyBlock.java
@@ -3,13 +3,10 @@ package com.github.technus.tectech.thing.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import com.github.technus.tectech.TecTech;
-import com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_EyeOfHarmony;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
@@ -23,7 +20,7 @@ public class EyeOfHarmonyBlock extends Block {
this.setHardness(-1.0f);
this.setCreativeTab(TecTech.creativeTabEM);
this.setBlockName("Eye of Harmony Renderer");
- this.setLightLevel(100.0f); // todo check
+ this.setLightLevel(100.0f);
registerOther(this);
}
@@ -63,25 +60,4 @@ public class EyeOfHarmonyBlock extends Block {
GameRegistry.registerBlock(block, name.substring(name.indexOf(":") + 1));
}
- @Override
- public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_,
- float p_149727_7_, float p_149727_8_, float p_149727_9_) {
-
- if (!GT_MetaTileEntity_EM_EyeOfHarmony.EOH_DEBUG_MODE) return false;
-
- TileEyeOfHarmony tile = (TileEyeOfHarmony) world.getTileEntity(x, y, z);
-
- if (player.isSneaking()) {
- tile.incrementSize();
- } else {
- tile.increaseRotationSpeed();
- }
-
- if (!world.isRemote) {
- player.addChatComponentMessage(new ChatComponentText("Rotation Speed:" + tile.getRotationSpeed()));
- player.addChatComponentMessage(new ChatComponentText("Size: " + tile.getSize()));
- }
-
- return true;
- }
}
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java
index 35bfe12071..f0c12be8bc 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsBA0.java
@@ -2,6 +2,8 @@ package com.github.technus.tectech.thing.casing;
import static com.github.technus.tectech.util.CommonValues.*;
import static gregtech.api.util.GT_Utility.formatNumbers;
+import static net.minecraft.util.EnumChatFormatting.AQUA;
+import static net.minecraft.util.EnumChatFormatting.GRAY;
import static net.minecraft.util.StatCollector.translateToLocal;
import java.util.List;
@@ -11,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
+import gregtech.api.enums.TierEU;
import gregtech.common.blocks.GT_Item_Casings_Abstract;
public class GT_Item_CasingsBA0 extends GT_Item_Casings_Abstract {
@@ -37,42 +40,68 @@ public class GT_Item_CasingsBA0 extends GT_Item_Casings_Abstract {
translateToLocal("gt.blockcasingsBA0.0.desc.0") + " "
+ formatNumbers(V[aStack.getItemDamage() + 1])
+ " EU/t"); // Handles up to
- aList.add(
- EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
- + translateToLocal("gt.blockcasingsBA0.0.desc.1")); // What one man calls God, another
- // calls the
+ aList.add(AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("gt.blockcasingsBA0.0.desc.1")); // What
+ // one
+ // man
+ // calls
+ // God,
+ // another
+ // calls
+ // the
// laws of physics.
break;
case 6: // "Tesla Base Casing"
aList.add(translateToLocal("gt.blockcasingsBA0.6.desc.0")); // The base of a wondrous contraption
- aList.add(
- EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
- + translateToLocal("gt.blockcasingsBA0.6.desc.1")); // it's alive, IT'S ALIVE!
+ aList.add(AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("gt.blockcasingsBA0.6.desc.1")); // it's
+ // alive,
+ // IT'S
+ // ALIVE!
break;
case 7: // "Tesla Toroid Casing"
aList.add(translateToLocal("gt.blockcasingsBA0.7.desc.0")); // Made out of the finest tin foil!
- aList.add(
- EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
- + translateToLocal("gt.blockcasingsBA0.7.desc.1")); // Faraday suits might come later
+ aList.add(AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("gt.blockcasingsBA0.7.desc.1")); // Faraday
+ // suits
+ // might
+ // come
+ // later
break;
case 8: // "Tesla Secondary Windings"
aList.add(translateToLocal("gt.blockcasingsBA0.8.desc.0")); // Picks up power from a primary coil
- aList.add(
- EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
- + translateToLocal("gt.blockcasingsBA0.8.desc.1")); // Who wouldn't want a 32k epoxy
- // multi?
+ aList.add(AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("gt.blockcasingsBA0.8.desc.1")); // Who
+ // wouldn't
+ // want
+ // a
+ // 32k
+ // epoxy
+ // multi?
break;
case 9: // "ZPM Superconductor Primary Tesla Windings"
- aList.add(translateToLocal("gt.blockcasingsBA0.0.desc.0") + " " + formatNumbers(V[7]) + " EU/t"); // Handles
- // up
- // to
- aList.add(
- EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD
- + translateToLocal("gt.blockcasingsBA0.0.desc.1")); // What one man calls God, another
- // calls the
- // laws of physics.
+ aList.add(translateToLocal("gt.blockcasingsBA0.0.desc.0") + " " + formatNumbers(TierEU.ZPM) + " EU/t"); // Handles
+ // up
+ // to
+ aList.add(AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("gt.blockcasingsBA0.0.desc.1")); // What
+ // one
+ // man
+ // calls
+ // God,
+ // another
+ case 10: // Reinforced Temporal Structure Casing
+ aList.add(AQUA + translateToLocal("gt.blockcasingsBA0.10.desc.0"));
+ aList.add(GRAY + translateToLocal("gt.blockcasingsBA0.10.desc.1"));
+ // Designed to resist spatial shearing from internal volume expansion.
+ // Can survive at least one big bang, maybe two...
+ break;
+ case 11: // Reinforced Temporal Structure Casing
+ aList.add(AQUA + translateToLocal("gt.blockcasingsBA0.11.desc.0"));
+ aList.add(GRAY + translateToLocal("gt.blockcasingsBA0.11.desc.1"));
+ // Resistant to temporal shearing from time dilation differences.
+ // This block can last an eternity without any decay.
+ break;
+ case 12: // Infinite Spacetime Energy Boundary Casing
+ aList.add(AQUA + translateToLocal("gt.blockcasingsBA0.12.desc.0"));
+ // Provides a stable bridge between spacetime regions.
break;
- default: // WTF?
+ default:
aList.add("Damn son where did you get that!?");
aList.add(EnumChatFormatting.BLUE.toString() + "From outer space... I guess...");
}
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsTT.java b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsTT.java
index 8417c848bf..c362b9aaaf 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsTT.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_CasingsTT.java
@@ -123,17 +123,11 @@ public class GT_Item_CasingsTT extends GT_Item_Casings_Abstract {
break;
case 15: // "Debug Sides"
aList.add(translateToLocal("gt.blockcasingsTT.15.desc.0")); // Lazy man way of determining sides.
- aList.add(EnumChatFormatting.BLUE.toString() + translateToLocal("gt.blockcasingsTT.15.desc.1")); // 0,
- // 1,
- // 2,
- // 3,
- // 4,
- // 5,
- // 6?!
+ aList.add(EnumChatFormatting.BLUE + translateToLocal("gt.blockcasingsTT.15.desc.1"));
break;
default: // WTF?
aList.add("Damn son where did you get that!?");
- aList.add(EnumChatFormatting.BLUE.toString() + "From outer space... I guess...");
+ aList.add(EnumChatFormatting.BLUE + "From outer space... I guess...");
}
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Spacetime.java b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Spacetime.java
index 1b670ee9d9..0f38f5fadf 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Spacetime.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Spacetime.java
@@ -43,7 +43,7 @@ public class GT_Item_Casings_Spacetime extends GT_Item_Casings_Abstract {
+ GT_LanguageManager.addStringLocalization(
"EOH.Spacetime.Standard.Tooltip.1",
"Capable of running recipes up to tier ")
- + aStack.getItemDamage());
+ + (aStack.getItemDamage() + 1));
break;
default:
aList.add(
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 6bd8ee639c..3a1dd00c67 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
@@ -16,10 +16,12 @@ import java.util.*;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.FluidStack;
@@ -59,7 +61,10 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
implements IConstructable, IGlobalWirelessEnergy, ISurvivalConstructable {
public static final boolean EOH_DEBUG_MODE = false;
- private boolean disableAnimation = false;
+ private static final long MOLTEN_SPACETIME_PER_FAILURE_TIER = 14_400L;
+ private static final double SPACETIME_FAILURE_BASE = 2;
+ private static final String TOOLTIP_BAR = GOLD
+ + "------------------------------------------------------------------------------------";
// Region variables.
private static Textures.BlockIcons.CustomIcon ScreenOFF;
@@ -70,9 +75,11 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
private int stabilisationFieldMetadata = -1;
private static final double SPACETIME_CASING_DIFFERENCE_DISCOUNT_PERCENTAGE = 0.03;
+ private static final double TIME_ACCEL_DECREASE_CHANCE_PER_TIER = 0.1;
+ // % Increase in recipe chance and % decrease in yield per tier.
+ private static final double STABILITY_INCREASE_PROBABILITY_DECREASE_YIELD_PER_TIER = 0.05;
private String userUUID = "";
- private String userName = "";
private long euOutput = 0;
@Override
@@ -715,7 +722,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
private double hydrogenOverflowProbabilityAdjustment;
private double heliumOverflowProbabilityAdjustment;
- private static final long TICKS_BETWEEN_HATCH_DRAIN = EOH_DEBUG_MODE ? 20 : 200;
+ private static final long TICKS_BETWEEN_HATCH_DRAIN = EOH_DEBUG_MODE ? 10 : 50;
private List<ItemStackLong> outputItems = new ArrayList<>();
@@ -733,8 +740,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
}
private double recipeChanceCalculator() {
- double chance = currentRecipe.getBaseRecipeSuccessChance() - timeAccelerationFieldMetadata * 0.1
- + stabilisationFieldMetadata * 0.05
+ double chance = currentRecipe.getBaseRecipeSuccessChance()
+ - timeAccelerationFieldMetadata * TIME_ACCEL_DECREASE_CHANCE_PER_TIER
+ + stabilisationFieldMetadata * STABILITY_INCREASE_PROBABILITY_DECREASE_YIELD_PER_TIER
- hydrogenOverflowProbabilityAdjustment
- heliumOverflowProbabilityAdjustment;
@@ -748,12 +756,12 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
private double recipeYieldCalculator() {
double yield = 1.0 - hydrogenOverflowProbabilityAdjustment
- heliumOverflowProbabilityAdjustment
- - stabilisationFieldMetadata * 0.05;
+ - stabilisationFieldMetadata * STABILITY_INCREASE_PROBABILITY_DECREASE_YIELD_PER_TIER;
return clamp(yield, 0.0, 1.0);
}
- private int recipeProcessTimeCalculator(long recipeTime, long recipeSpacetimeCasingRequired) {
+ private int recipeProcessTimeCalculator(final long recipeTime, final long recipeSpacetimeCasingRequired) {
// Tier 1 recipe.
// Tier 2 spacetime blocks.
@@ -763,9 +771,10 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
// Tier 3 spacetime blocks.
// = 3%*3% = 5.91% discount.
- long spacetimeCasingDifference = (recipeSpacetimeCasingRequired - spacetimeCompressionFieldMetadata);
- double recipeTimeDiscounted = recipeTime * pow(2.0, -timeAccelerationFieldMetadata)
- * pow(1 - SPACETIME_CASING_DIFFERENCE_DISCOUNT_PERCENTAGE, spacetimeCasingDifference);
+ final long spacetimeCasingDifference = (recipeSpacetimeCasingRequired - spacetimeCompressionFieldMetadata);
+ final double recipeTimeDiscounted = recipeTime * pow(2.0, -timeAccelerationFieldMetadata)
+ * pow(1 - SPACETIME_CASING_DIFFERENCE_DISCOUNT_PERCENTAGE, spacetimeCasingDifference)
+ / max(1, pow(2, currentCircuitMultiplier));
return (int) Math.max(recipeTimeDiscounted, 1.0);
}
@@ -851,16 +860,22 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
return true;
}
+ private boolean animationsEnabled = true;
+
+ public final void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ animationsEnabled = !animationsEnabled;
+ aPlayer.addChatMessage(
+ new ChatComponentText("Animations are now " + (animationsEnabled ? "enabled" : "disabled") + "."));
+ }
+
@Override
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
- tt.addMachineType("Spacetime Manipulator, EOH")
- .addInfo(GOLD + "--------------------------------------------------------------------------------")
+ tt.addMachineType("Spacetime Manipulator, EOH").addInfo(TOOLTIP_BAR)
.addInfo("Creates a pocket of spacetime that is bigger on the inside using transdimensional")
.addInfo("engineering. Certified Time Lord regulation compliant. This multi uses too much EU")
.addInfo("to be handled with conventional means. All EU requirements are handled directly by")
- .addInfo("your wireless EU network.")
- .addInfo(GOLD + "--------------------------------------------------------------------------------")
+ .addInfo("your wireless EU network.").addInfo(TOOLTIP_BAR)
.addInfo("This multiblock will constantly consume hydrogen and helium when it is not running a")
.addInfo("recipe as fast as it can. It will store this internally, you can see the totals by")
.addInfo("using a scanner. This multi also has three tiered blocks with " + RED + 9 + GRAY + " tiers")
@@ -870,46 +885,65 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
.addInfo(" spacetime compression field block exceeds the requirements of the recipe it")
.addInfo(
" will decrease the processing time by " + RED
- + "3%"
+ + formatNumbers(SPACETIME_CASING_DIFFERENCE_DISCOUNT_PERCENTAGE * 100)
+ + "%"
+ GRAY
- + " per tier over the requirement. This")
- .addInfo(" is multiplicative.").addInfo(BLUE + "Time Dilation Field Generator:")
+ + " per tier over the requirement (multiplicative).")
+ .addInfo(BLUE + "Time Dilation Field Generator:")
.addInfo(
- "- Decreases the time required by a recipe by a factor of " + RED
- + "2"
+ "- Decreases the time required for a recipe by " + RED
+ + "50%"
+ GRAY
- + " per tier of block.")
+ + " per tier of block (multiplicative).")
.addInfo(
" Decreases the probability of a recipe succeeding by " + RED
- + "10%"
+ + formatNumbers(TIME_ACCEL_DECREASE_CHANCE_PER_TIER * 100)
+ + "%"
+ GRAY
+ " per tier (additive)")
.addInfo(BLUE + "Stabilisation Field Generator:")
.addInfo(
"- Increases the probability of a recipe succeeding by " + RED
- + "5%"
+ + formatNumbers(STABILITY_INCREASE_PROBABILITY_DECREASE_YIELD_PER_TIER * 100)
+ + "%"
+ GRAY
+ " per tier (additive).")
- .addInfo(" Decreases the yield of a recipe by " + RED + "5%" + GRAY + " per tier (additive). ")
- .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:")
+ " Decreases the yield of a recipe by " + RED
+ + formatNumbers(STABILITY_INCREASE_PROBABILITY_DECREASE_YIELD_PER_TIER * 100)
+ + "%"
+ + GRAY
+ + " per tier (additive). ")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo(
+ "Going over a recipe requirement on hydrogen or helium has a penalty on yield and recipe chance.")
+ .addInfo("All stored hydrogen and helium is consumed during a craft. The associated formulas are:")
.addInfo(GREEN + "percentageOverflow = abs(1 - fluidStored/recipeRequirement)")
.addInfo(GREEN + "adjustmentValue = 1 - exp(-(30 * percentageOverflow)^2)")
.addInfo("The value of adjustmentValue is then subtracted from the total yield and recipe chance.")
- .addInfo(GOLD + "--------------------------------------------------------------------------------")
- .addInfo("It should be noted that base recipe chance is determined per recipe and yield always")
- .addInfo("starts at 1 and subtracts depending on penalities. All fluid/item outputs are multiplied")
- .addInfo("by the yield calculated.")
- .addInfo(GOLD + "--------------------------------------------------------------------------------")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("It should be noted that base recipe chance is determined per recipe and yield always starts")
+ .addInfo("at 1 and subtracts depending on penalities. All fluid/item outputs are multiplied by the")
+ .addInfo("yield. Failure fluid is exempt.").addInfo(TOOLTIP_BAR)
.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(GOLD + "--------------------------------------------------------------------------------")
+ .addInfo(TOOLTIP_BAR)
.addInfo("This multiblock can be overclocked by placing a programmed circuit into the input bus.")
.addInfo(
- "E.g. A circuit of 1 will provide 1 OC, 4x EU consumed and 0.5x the time. All outputs are equal.")
+ "E.g. A circuit of 2 will provide 2 OCs, 16x EU consumed and 0.25x the time. All outputs are equal.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo(
+ "If a recipe fails the EOH will output " + GREEN
+ + "successChance * "
+ + formatNumbers(MOLTEN_SPACETIME_PER_FAILURE_TIER)
+ + " * ("
+ + SPACETIME_FAILURE_BASE
+ + ")^(Recipe tier)"
+ + GRAY
+ + "L of molten")
+ .addInfo(Materials.SpaceTime.getLocalizedNameForItem("%material") + " and return half the start EU.")
+ .addInfo(TOOLTIP_BAR).addInfo("Animations can be disabled by using a screwdriver on the multiblock.")
.addSeparator().addStructureInfo("Eye of Harmony structure is too complex! See schematic for details.")
.addStructureInfo(
EnumChatFormatting.GOLD + "896"
@@ -1056,8 +1090,12 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
}
}
+ if (spacetimeCompressionFieldMetadata == -1) {
+ return false;
+ }
+
// Check tier of spacetime compression blocks is high enough.
- if (spacetimeCompressionFieldMetadata < recipeObject.getSpacetimeCasingTierRequired()) {
+ if ((spacetimeCompressionFieldMetadata + 1) < recipeObject.getSpacetimeCasingTierRequired()) {
return false;
}
@@ -1071,7 +1109,6 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
mMaxProgresstime = recipeProcessTimeCalculator(
recipeObject.getRecipeTimeInTicks(),
recipeObject.getSpacetimeCasingTierRequired());
- mMaxProgresstime /= max(1, pow(2, currentCircuitMultiplier));
calculateHydrogenHeliumInputExcessValues(
recipeObject.getHydrogenRequirement(),
@@ -1114,7 +1151,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
updateSlots();
- createRenderBlock(currentRecipe);
+ if (animationsEnabled) {
+ createRenderBlock(currentRecipe);
+ }
recipeRunning = true;
return true;
@@ -1154,11 +1193,10 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
private double successChance;
private void outputFailedChance() {
- // todo Replace with proper fluid once added to GT.
- int exoticMaterialOutputAmount = (int) ((successChance) * 1440
- * (getHydrogenStored() + getHeliumStored())
- / 1_000_000_000.0);
- mOutputFluids = new FluidStack[] { Materials.SpaceTime.getFluid(exoticMaterialOutputAmount) };
+ // 2^Tier spacetime released upon recipe failure.
+ mOutputFluids = new FluidStack[] { Materials.SpaceTime.getMolten(
+ (long) (successChance * MOLTEN_SPACETIME_PER_FAILURE_TIER
+ * pow(SPACETIME_FAILURE_BASE, currentRecipe.getRocketTier() + 1))) };
super.outputAfterRecipe_EM();
}
@@ -1192,12 +1230,14 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
if (successChance < random()) {
outputFailedChance();
outputItems = new ArrayList<>();
- return;
+ addEUToGlobalEnergyMap(
+ userUUID,
+ (long) (currentRecipe.getEUStartCost() * pow(4, currentCircuitMultiplier) / 2L));
+ } else {
+ addEUToGlobalEnergyMap(userUUID, euOutput);
+ euOutput = 0;
}
- addEUToGlobalEnergyMap(userUUID, euOutput);
- euOutput = 0;
-
for (ItemStackLong itemStack : outputItems) {
outputItemToAENetwork(itemStack.itemStack, itemStack.stackSize);
}
@@ -1215,7 +1255,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
if (aTick == 1) {
userUUID = String.valueOf(getBaseMetaTileEntity().getOwnerUuid());
- userName = getBaseMetaTileEntity().getOwnerName();
+ String userName = getBaseMetaTileEntity().getOwnerName();
strongCheckOrAddUser(userUUID, userName);
}
@@ -1304,6 +1344,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
private static final String RECIPE_EU_OUTPUT_NBT_TAG = EYE_OF_HARMONY + "euOutput";
private static final String RECIPE_SUCCESS_CHANCE_NBT_TAG = EYE_OF_HARMONY + "recipeSuccessChance";
private static final String CURRENT_CIRCUIT_MULTIPLIER_TAG = EYE_OF_HARMONY + "currentCircuitMultiplier";
+ private static final String ANIMATIONS_ENABLED = EYE_OF_HARMONY + "animationsEnabled";
// Sub tags, less specific names required.
private static final String STACK_SIZE = "stackSize";
@@ -1318,6 +1359,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
aNBT.setLong(RECIPE_EU_OUTPUT_NBT_TAG, euOutput);
aNBT.setDouble(RECIPE_SUCCESS_CHANCE_NBT_TAG, successChance);
aNBT.setLong(CURRENT_CIRCUIT_MULTIPLIER_TAG, currentCircuitMultiplier);
+ aNBT.setBoolean(ANIMATIONS_ENABLED, animationsEnabled);
// Store damage values/stack sizes of GT items being outputted.
NBTTagCompound itemStackListNBTTag = new NBTTagCompound();
@@ -1351,6 +1393,7 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
euOutput = aNBT.getLong(RECIPE_EU_OUTPUT_NBT_TAG);
successChance = aNBT.getDouble(RECIPE_SUCCESS_CHANCE_NBT_TAG);
currentCircuitMultiplier = aNBT.getLong(CURRENT_CIRCUIT_MULTIPLIER_TAG);
+ animationsEnabled = aNBT.getBoolean(ANIMATIONS_ENABLED);
// Load damage values/stack sizes of GT items being outputted and convert back to items.
NBTTagCompound tempItemTag = aNBT.getCompoundTag(ITEM_OUTPUT_NBT_TAG);
diff --git a/src/main/resources/assets/tectech/lang/en_US.lang b/src/main/resources/assets/tectech/lang/en_US.lang
index 1164a8e1e9..f0b88411f8 100644
--- a/src/main/resources/assets/tectech/lang/en_US.lang
+++ b/src/main/resources/assets/tectech/lang/en_US.lang
@@ -732,8 +732,14 @@ gt.blockmachines.multimachine.em.blackholegenerator.desc.1=Uses a black hole to
# Eye of Harmony
achievement.gt.blockmachines.multimachine.em.eye_of_harmony=Eye of Harmony Controller
achievement.gt.blockcasingsBA0.12=Infinite Spacetime Energy Boundary Casing
+gt.blockcasingsBA0.12.desc.0=Provides a stable bridge between spacetime regions.
achievement.gt.blockcasingsBA0.11=Reinforced Spatial Structure Casing
+gt.blockcasingsBA0.11.desc.0=Designed to resist spatial shearing from internal volume expansion.
+gt.blockcasingsBA0.11.desc.1=Can survive at least one big bang, maybe two...
achievement.gt.blockcasingsBA0.10=Reinforced Temporal Structure Casing
+gt.blockcasingsBA0.10.desc.0=Resistant to temporal shearing from time dilation differences.
+gt.blockcasingsBA0.10.desc.1=This block can last an eternity without any decay.
+
achievement.gt.spacetime_compression_field_generator.0=Crude Spacetime Compression Field Generator
achievement.gt.spacetime_compression_field_generator.1=Primitive Spacetime Compression Field Generator