aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java45
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java4
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java1
-rw-r--r--src/main/java/com/github/technus/tectech/loader/MainLoader.java5
-rw-r--r--src/main/java/com/github/technus/tectech/loader/recipe/Godforge.java117
-rw-r--r--src/main/java/com/github/technus/tectech/loader/recipe/ResearchStationAssemblyLine.java361
-rw-r--r--src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java7
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/GodforgePlasmaFrontend.java5
-rw-r--r--src/main/java/com/github/technus/tectech/rendering/EOH/EOH_RenderingUtils.java16
-rw-r--r--src/main/java/com/github/technus/tectech/rendering/EOH/EOH_TESR.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/CustomItemList.java13
-rw-r--r--src/main/java/com/github/technus/tectech/thing/block/RenderForgeOfGods.java119
-rw-r--r--src/main/java/com/github/technus/tectech/thing/block/TileForgeOfGods.java5
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Godforge.java12
-rw-r--r--src/main/java/com/github/technus/tectech/thing/casing/GodforgeCasings.java19
-rw-r--r--src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java10
-rw-r--r--src/main/java/com/github/technus/tectech/thing/item/RenderForgeOfGodsItem.java70
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsRingsStructureString.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsStructureString.java70
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_ForgeOfGods.java1179
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_BaseModule.java97
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_ExoticModule.java31
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_MoltenModule.java33
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_PlasmaModule.java32
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_SmeltingModule.java30
-rw-r--r--src/main/java/com/github/technus/tectech/util/GodforgeMath.java2
-rw-r--r--src/main/java/com/github/technus/tectech/util/TT_Utility.java20
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java3
-rw-r--r--src/main/java/gregtech/api/enums/Materials.java15
-rw-r--r--src/main/java/gregtech/api/enums/MaterialsUEVplus.java160
-rw-r--r--src/main/java/gregtech/api/enums/OrePrefixes.java8
-rw-r--r--src/main/java/gregtech/api/enums/Textures.java3
-rw-r--r--src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java10
-rw-r--r--src/main/java/gregtech/common/items/ID_MetaItem_03.java5
-rw-r--r--src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java124
-rw-r--r--src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java17
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/AssemblerRecipes.java26
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/AutoclaveRecipes.java19
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/BenderRecipes.java8
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/BlastFurnaceRecipes.java22
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/ChemicalBathRecipes.java12
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/CompressorRecipes.java9
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/FusionReactorRecipes.java9
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/MixerRecipes.java16
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/PlasmaForgeRecipes.java20
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/TranscendentPlasmaMixerRecipes.java18
-rw-r--r--src/main/java/gregtech/loaders/postload/recipes/VacuumFreezerRecipes.java9
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java20
-rw-r--r--src/main/java/gtPlusPlus/core/item/ModItems.java5
-rw-r--r--src/main/java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java18
50 files changed, 2332 insertions, 533 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java
index dfc3ab7e83..d616829fbd 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java
@@ -16,6 +16,7 @@ import static gregtech.api.enums.Mods.UniversalSingularities;
import static gregtech.api.util.GT_ModHandler.getModItem;
import static gregtech.api.util.GT_RecipeBuilder.MINUTES;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import net.minecraft.item.ItemStack;
@@ -26,6 +27,7 @@ import gregtech.api.enums.MaterialsUEVplus;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.TierEU;
import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
public class ElectricImplosionCompressorRecipes implements Runnable {
@@ -43,7 +45,7 @@ public class ElectricImplosionCompressorRecipes implements Runnable {
.noOptimize()
.addTo(electricImplosionCompressorRecipes);
- if (UniversalSingularities.isModLoaded())
+ if (UniversalSingularities.isModLoaded()) {
// Raw Exposed Optical Chip
GT_Values.RA.stdBuilder()
.itemInputs(
@@ -55,6 +57,29 @@ public class ElectricImplosionCompressorRecipes implements Runnable {
.eut(TierEU.RECIPE_UMV)
.noOptimize()
.addTo(electricImplosionCompressorRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ // fluxed electrum singularity
+ getModItem(UniversalSingularities.ID, "universal.general.singularity", 1L, 20))
+ .fluidInputs(MaterialsUEVplus.Mellion.getMolten(4 * 144L))
+ // spaghettic singularity
+ .itemOutputs(getModItem(EternalSingularity.ID, "combined_singularity", 1L, 2))
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_UMV)
+ .addTo(electricImplosionCompressorRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ // iron singularity
+ getModItem(Avaritia.ID, "Singularity", 1L, 0))
+ .fluidInputs(MaterialsUEVplus.Creon.getMolten(4 * 144L))
+ // cryptic singularity
+ .itemOutputs(getModItem(EternalSingularity.ID, "combined_singularity", 1L, 4))
+ .duration(1 * SECONDS)
+ .eut(TierEU.RECIPE_UMV)
+ .addTo(electricImplosionCompressorRecipes);
+ }
}
GT_Values.RA.stdBuilder()
@@ -124,6 +149,24 @@ public class ElectricImplosionCompressorRecipes implements Runnable {
.eut(TierEU.RECIPE_UIV)
.noOptimize()
.addTo(electricImplosionCompressorRecipes);
+
+ // Copper Singularity
+ GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Copper.getMolten(3648 * 9 * 144L))
+ .itemOutputs(getModItem(Avaritia.ID, "Singularity", 1L, 5))
+ .duration(1 * TICKS)
+ .eut(TierEU.RECIPE_UIV)
+ .addTo(electricImplosionCompressorRecipes);
+
+ ItemStack diamondBlocks = GT_Utility
+ .copyAmountUnsafe(729, GT_OreDictUnificator.get(OrePrefixes.block, Materials.Diamond, 1L));
+ // Diamond Singularity
+ GT_Values.RA.stdBuilder()
+ .itemInputs(diamondBlocks)
+ .itemOutputs(getModItem(UniversalSingularities.ID, "universal.vanilla.singularity", 1L, 2))
+ .duration(1 * TICKS)
+ .eut(TierEU.RECIPE_UIV)
+ .addTo(electricImplosionCompressorRecipes);
}
// MHDCSM V2
GT_Values.RA.stdBuilder()
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java
index a1398f57e3..51398d2914 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java
@@ -422,7 +422,7 @@ public class AdditionalRecipes {
.itemOutputs(WerkstoffLoader.MagnetoResonaticDust.get(gemChipped, 9))
.outputChances(90_00)
.fluidInputs(WerkstoffLoader.Neon.getFluidOrGas(1000))
- .duration(3 * MINUTES + 45 * SECONDS)
+ .duration(25 * SECONDS)
.eut(TierEU.RECIPE_IV)
.addTo(autoclaveRecipes);
@@ -430,7 +430,7 @@ public class AdditionalRecipes {
.itemInputs(WerkstoffLoader.MagnetoResonaticDust.get(dust))
.itemOutputs(WerkstoffLoader.MagnetoResonaticDust.get(gem))
.fluidInputs(WerkstoffLoader.Krypton.getFluidOrGas(1000))
- .duration(3 * MINUTES + 45 * SECONDS)
+ .duration(25 * SECONDS)
.eut(TierEU.RECIPE_IV)
.addTo(autoclaveRecipes);
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java
index c8946ec80d..c31f9a878d 100644
--- a/src/main/java/com/github/technus/tectech/TecTech.java
+++ b/src/main/java/com/github/technus/tectech/TecTech.java
@@ -113,6 +113,7 @@ public class TecTech {
@SuppressWarnings("unused")
public void onLoadCompleted(FMLLoadCompleteEvent event) {
eyeOfHarmonyRecipeStorage = new EyeOfHarmonyRecipeStorage();
+ MainLoader.onLoadCompleted();
}
public static EyeOfHarmonyRecipeStorage eyeOfHarmonyRecipeStorage = null;
diff --git a/src/main/java/com/github/technus/tectech/loader/MainLoader.java b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
index 01d63392e5..915b113fe9 100644
--- a/src/main/java/com/github/technus/tectech/loader/MainLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
@@ -18,6 +18,7 @@ import net.minecraftforge.fluids.FluidStack;
import com.github.technus.tectech.TecTech;
import com.github.technus.tectech.loader.gui.CreativeTabTecTech;
import com.github.technus.tectech.loader.recipe.BaseRecipeLoader;
+import com.github.technus.tectech.loader.recipe.ResearchStationAssemblyLine;
import com.github.technus.tectech.loader.thing.CoverLoader;
import com.github.technus.tectech.loader.thing.MachineLoader;
import com.github.technus.tectech.loader.thing.ThingsLoader;
@@ -199,4 +200,8 @@ public final class MainLoader {
safeSetResistance(GameRegistry.findBlock("TwilightForest", "tile.TFDeadrock"), 5);
}
}
+
+ public static void onLoadCompleted() {
+ new ResearchStationAssemblyLine().runLateRecipes();
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/loader/recipe/Godforge.java b/src/main/java/com/github/technus/tectech/loader/recipe/Godforge.java
index a2dc61132d..80f10fc44f 100644
--- a/src/main/java/com/github/technus/tectech/loader/recipe/Godforge.java
+++ b/src/main/java/com/github/technus/tectech/loader/recipe/Godforge.java
@@ -3,7 +3,11 @@ package com.github.technus.tectech.loader.recipe;
import static com.github.technus.tectech.recipe.TecTechRecipeMaps.godforgeExoticMatterRecipes;
import static com.github.technus.tectech.recipe.TecTechRecipeMaps.godforgePlasmaRecipes;
import static com.github.technus.tectech.util.GodforgeMath.getRandomIntInRange;
+import static gregtech.api.enums.Mods.EternalSingularity;
+import static gregtech.api.enums.Mods.GalaxySpace;
+import static gregtech.api.util.GT_ModHandler.getModItem;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import static gregtech.api.util.GT_RecipeConstants.FOG_EXOTIC_TIER;
import static gregtech.api.util.GT_RecipeConstants.FOG_PLASMA_TIER;
@@ -15,12 +19,21 @@ import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
+import com.github.technus.tectech.thing.CustomItemList;
+
+import goodgenerator.items.MyMaterial;
+import goodgenerator.util.ItemRefer;
import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.MaterialsUEVplus;
+import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.TierEU;
+import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.material.ALLOY;
import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
public class Godforge implements Runnable {
@@ -29,6 +42,7 @@ public class Godforge implements Runnable {
public static final HashMap<ItemStack, Integer> exoticModulePlasmaItemMap = new HashMap<>();
public static final HashMap<FluidStack, Integer> exoticModulePlasmaFluidMap = new HashMap<>();
public static final HashMap<ItemStack, Integer> exoticModuleMagmatterItemMap = new HashMap<>();
+ public static final HashMap<Integer, ItemStack[]> godforgeUpgradeMats = new HashMap<>();
public static final List<ItemStack> quarkGluonFluidItemsForNEI = new ArrayList<>();
public static final List<ItemStack> quarkGluonItemsForNEI = new ArrayList<>();
public static final List<ItemStack> magmatterTimeFluidItemsForNEI = new ArrayList<>();
@@ -112,7 +126,7 @@ public class Godforge implements Runnable {
GT_Values.RA.stdBuilder()
.itemInputs(solids_t0_1step[i])
.fluidOutputs(solid_plasmas_t0_1step[i])
- .duration(1 * SECONDS)
+ .duration(10 * TICKS)
.eut(TierEU.RECIPE_MAX)
.special(multistep)
.metadata(FOG_PLASMA_TIER, 0)
@@ -145,7 +159,7 @@ public class Godforge implements Runnable {
GT_Values.RA.stdBuilder()
.itemInputs(solids_t0_xstep[i])
.fluidOutputs(solid_plasmas_t0_xstep[i])
- .duration(3 * SECONDS)
+ .duration(2 * SECONDS)
.eut(TierEU.RECIPE_MAX)
.special(multistep)
.metadata(FOG_PLASMA_TIER, 0)
@@ -249,16 +263,16 @@ public class Godforge implements Runnable {
// Fusion tier 1-3
{
// Single step
- FluidStack[] fluids_t0_1step = { Materials.Helium.getGas(1000), Materials.Nitrogen.getGas(1000),
- Materials.Argon.getGas(1000), Materials.Chlorine.getGas(1000), Materials.Deuterium.getGas(1000),
- Materials.Fluorine.getGas(1000), Materials.Hydrogen.getGas(1000), Materials.Radon.getGas(1000),
- Materials.Tritium.getGas(1000), Materials.Mercury.getFluid(1000) };
- FluidStack[] fluid_plasmas_t0_1step = { Materials.Helium.getPlasma(1000),
- Materials.Nitrogen.getPlasma(1000), Materials.Argon.getPlasma(1000),
- Materials.Chlorine.getPlasma(1000), Materials.Deuterium.getPlasma(1000),
- Materials.Fluorine.getPlasma(1000), Materials.Hydrogen.getPlasma(1000),
- Materials.Radon.getPlasma(1000), Materials.Tritium.getPlasma(1000),
- Materials.Mercury.getPlasma(1000) };
+ FluidStack[] fluids_t0_1step = { Materials.Helium.getGas(500), Materials.Nitrogen.getGas(500),
+ Materials.Argon.getGas(500), Materials.Chlorine.getGas(500), Materials.Deuterium.getGas(500),
+ Materials.Fluorine.getGas(500), Materials.Hydrogen.getGas(500), Materials.Radon.getGas(500),
+ Materials.Tritium.getGas(500), Materials.Mercury.getFluid(500) };
+ FluidStack[] fluid_plasmas_t0_1step = { Materials.Helium.getPlasma(500),
+ Materials.Nitrogen.getPlasma(500), Materials.Argon.getPlasma(500),
+ Materials.Chlorine.getPlasma(500), Materials.Deuterium.getPlasma(500),
+ Materials.Fluorine.getPlasma(500), Materials.Hydrogen.getPlasma(500),
+ Materials.Radon.getPlasma(500), Materials.Tritium.getPlasma(500),
+ Materials.Mercury.getPlasma(500) };
for (int i = 0; i < fluids_t0_1step.length; i++) {
boolean multistep = false;
@@ -274,12 +288,12 @@ public class Godforge implements Runnable {
}
// Multi-step
- FluidStack[] fluids_t0_xstep = { ELEMENT.getInstance().NEON.getFluidStack(1000),
- Materials.Oxygen.getGas(1000), ELEMENT.getInstance().KRYPTON.getFluidStack(1000),
- ELEMENT.getInstance().XENON.getFluidStack(1000) };
- FluidStack[] fluid_plasmas_t0_xstep = { new FluidStack(ELEMENT.getInstance().NEON.getPlasma(), 1000),
- Materials.Oxygen.getPlasma(1000), new FluidStack(ELEMENT.getInstance().KRYPTON.getPlasma(), 1000),
- new FluidStack(ELEMENT.getInstance().XENON.getPlasma(), 1000) };
+ FluidStack[] fluids_t0_xstep = { ELEMENT.getInstance().NEON.getFluidStack(500),
+ Materials.Oxygen.getGas(500), ELEMENT.getInstance().KRYPTON.getFluidStack(500),
+ ELEMENT.getInstance().XENON.getFluidStack(500) };
+ FluidStack[] fluid_plasmas_t0_xstep = { new FluidStack(ELEMENT.getInstance().NEON.getPlasma(), 500),
+ Materials.Oxygen.getPlasma(500), new FluidStack(ELEMENT.getInstance().KRYPTON.getPlasma(), 500),
+ new FluidStack(ELEMENT.getInstance().XENON.getPlasma(), 500) };
for (int i = 0; i < fluids_t0_xstep.length; i++) {
boolean multistep = true;
@@ -577,5 +591,72 @@ public class Godforge implements Runnable {
GT_Utility.getFluidDisplayStack(MaterialsUEVplus.Space.getMolten(getRandomIntInRange(51, 100)), true));
}
magmatterItemsForNEI.addAll(exoticModuleMagmatterItemMap.keySet());
+
+ // Godforge upgrade materials
+ if (EternalSingularity.isModLoaded() && GalaxySpace.isModLoaded()) {
+ godforgeUpgradeMats.put(
+ 0,
+ new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUIVBase, 64),
+ ItemList.SuperconductorComposite.get(32),
+ MyMaterial.metastableOganesson.get(OrePrefixes.gearGt, 16),
+ getModItem(EternalSingularity.ID, "eternal_singularity", 8L), ItemList.Robot_Arm_UIV.get(64L),
+ ItemList.Field_Generator_UEV.get(64L) });
+
+ godforgeUpgradeMats.put(
+ 5,
+ new ItemStack[] { GregtechItemList.Mega_AlloyBlastSmelter.get(16L),
+ ItemList.Casing_Coil_Hypogen.get(64L),
+ CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(32L),
+ getModItem(EternalSingularity.ID, "eternal_singularity", 16L),
+ ItemRefer.Field_Restriction_Coil_T3.get(48), ItemList.Robot_Arm_UIV.get(64L),
+ ItemList.Field_Generator_UEV.get(64L) });
+
+ godforgeUpgradeMats.put(
+ 7,
+ new ItemStack[] { CustomItemList.Godforge_StellarEnergySiphonCasing.get(8),
+ GregtechItemList.FusionComputer_UV3.get(8), GregtechItemList.Casing_Fusion_Internal2.get(64),
+ getModItem(GalaxySpace.ID, "item.DysonSwarmParts", 64, 3), ALLOY.QUANTUM.getPlateDense(48),
+ ELEMENT.STANDALONE.RHUGNOR.getGear(32),
+ getModItem(EternalSingularity.ID, "eternal_singularity", 16L), ItemList.Robot_Arm_UIV.get(64L),
+ ItemList.Field_Generator_UEV.get(64L) });
+
+ godforgeUpgradeMats.put(
+ 11,
+ new ItemStack[] { CustomItemList.Godforge_StellarEnergySiphonCasing.get(16),
+ ItemRefer.Compact_Fusion_MK5.get(2), ItemRefer.Compact_Fusion_Coil_T4.get(64),
+ CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(16),
+ ItemList.Machine_Multi_TranscendentPlasmaMixer.get(4), ELEMENT.STANDALONE.RHUGNOR.getGear(64),
+ GT_OreDictUnificator.get(OrePrefixes.gearGt, Materials.Ichorium, 64),
+ getModItem(EternalSingularity.ID, "eternal_singularity", 32L), ItemList.Robot_Arm_UIV.get(64L),
+ ItemList.Field_Generator_UEV.get(64L) });
+
+ godforgeUpgradeMats.put(
+ 26,
+ new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.SpaceTime, 64),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUMVBase, 64),
+ ELEMENT.STANDALONE.HYPOGEN.getFrameBox(64), ELEMENT.STANDALONE.DRAGON_METAL.getFrameBox(64),
+ CustomItemList.EOH_Reinforced_Spatial_Casing.get(64),
+ CustomItemList.EOH_Infinite_Energy_Casing.get(8), ItemList.ZPM6.get(4),
+ ItemList.Field_Generator_UMV.get(32) });
+
+ godforgeUpgradeMats.put(
+ 29,
+ new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.WhiteDwarfMatter, 64),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.BlackDwarfMatter, 64),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Eternity, 16),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Universium, 4),
+ CustomItemList.EOH_Infinite_Energy_Casing.get(64),
+ CustomItemList.StabilisationFieldGeneratorTier5.get(16), ItemList.ZPM6.get(16),
+ ItemList.Field_Generator_UMV.get(64) });
+
+ godforgeUpgradeMats.put(
+ 30,
+ new ItemStack[] { CustomItemList.Machine_Multi_QuarkGluonPlasmaModule.get(32),
+ CustomItemList.Godforge_StellarEnergySiphonCasing.get(64),
+ CustomItemList.StabilisationFieldGeneratorTier6.get(48),
+ ItemList.Transdimensional_Alignment_Matrix.get(8), ItemList.ZPM6.get(16),
+ ItemList.Robot_Arm_UMV.get(64), ItemList.Conveyor_Module_UMV.get(64) });
+ }
+
}
}
diff --git a/src/main/java/com/github/technus/tectech/loader/recipe/ResearchStationAssemblyLine.java b/src/main/java/com/github/technus/tectech/loader/recipe/ResearchStationAssemblyLine.java
index dc5cf1c5ed..f9377143c4 100644
--- a/src/main/java/com/github/technus/tectech/loader/recipe/ResearchStationAssemblyLine.java
+++ b/src/main/java/com/github/technus/tectech/loader/recipe/ResearchStationAssemblyLine.java
@@ -13,6 +13,7 @@ import static gregtech.api.enums.Mods.EternalSingularity;
import static gregtech.api.enums.Mods.ExtraUtilities;
import static gregtech.api.enums.Mods.GTNHIntergalactic;
import static gregtech.api.enums.Mods.GTPlusPlusEverglades;
+import static gregtech.api.enums.Mods.GalacticraftAmunRa;
import static gregtech.api.enums.Mods.GalaxySpace;
import static gregtech.api.enums.Mods.GraviSuite;
import static gregtech.api.enums.Mods.IndustrialCraft2;
@@ -53,11 +54,15 @@ import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry;
import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
import com.github.technus.tectech.recipe.TT_recipeAdder;
import com.github.technus.tectech.thing.CustomItemList;
+import com.github.technus.tectech.thing.block.GodforgeGlassBlock;
+import com.github.technus.tectech.thing.block.QuantumGlassBlock;
import com.rwtema.extrautils.ExtraUtils;
+import common.Blocks;
import common.TileEntities;
import fox.spiteful.avaritia.compat.ticon.Tonkers;
import goodgenerator.items.MyMaterial;
+import goodgenerator.util.ItemRefer;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.MaterialsBotania;
@@ -70,6 +75,8 @@ import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.material.ALLOY;
import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.material.MISC_MATERIALS;
+import gtPlusPlus.core.material.Particle;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
import tconstruct.tools.TinkerTools;
@@ -86,6 +93,7 @@ public class ResearchStationAssemblyLine implements Runnable {
itemPartsUMVAsslineRecipes();
itemPartsUXVAsslineRecipes();
addWirelessEnergyRecipes();
+ addGodforgeRecipes();
if (TinkersGregworks.isModLoaded() && Avaritia.isModLoaded() // Infinity, Cosmic Neutronium
&& ExtraUtilities.isModLoaded() // Bedrockium
@@ -2970,7 +2978,332 @@ public class ResearchStationAssemblyLine implements Runnable {
CustomItemList.astralArrayFabricator.get(1),
300 * SECONDS,
(int) TierEU.RECIPE_UXV);
+ }
+
+ private void addGodforgeRecipes() {
+ if (EternalSingularity.isModLoaded()) {
+ // Controller
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_StellarEnergySiphonCasing.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_StellarEnergySiphonCasing.get(4), ItemList.ZPM4.get(2),
+ ItemList.Casing_Dim_Bridge.get(64), getModItem(EternalSingularity.ID, "eternal_singularity", 32L),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Mellion, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.SixPhasedCopper, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 16),
+ MyMaterial.metastableOganesson.get(OrePrefixes.plateDense, 16),
+ new ItemStack(
+ Particle.getBaseParticle(Particle.GRAVITON)
+ .getItem(),
+ 64),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 16),
+ ItemList.Sensor_UIV.get(32), GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UIV, 64),
+ CustomItemList.eM_energyTunnel7_UIV.get(1), ItemRegistry.energyDistributor[11] },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(2048 * 144),
+ MaterialsUEVplus.ExcitedDTEC.getFluid(8_192_000), Materials.Thorium.getPlasma(256 * 144),
+ MaterialsUEVplus.TranscendentMetal.getMolten(2048 * 144) },
+ CustomItemList.Machine_Multi_ForgeOfGods.get(1),
+ 300 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
+
+ }
+
+ // Magnetic Confinement Casing
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.TranscendentMetal, 1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.TranscendentMetal, 8),
+ WerkstoffLoader.MagnetoResonaticDust.get(OrePrefixes.block, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.TengamAttuned, 32),
+ GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Creon, 16),
+ ELEMENT.STANDALONE.HYPOGEN.getScrew(8),
+ GT_OreDictUnificator.get(OrePrefixes.screw, MaterialsUEVplus.SixPhasedCopper, 8),
+ ItemList.SuperconductorComposite.get(1), ItemList.Emitter_UIV.get(2),
+ ItemList.Electromagnet_Tengam.get(1) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(16 * 144),
+ Materials.Plutonium241.getPlasma(16 * 144) },
+ CustomItemList.Godforge_MagneticConfinementCasing.get(8),
+ 50 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ if (GalacticraftAmunRa.isModLoaded()) {
+ // Structure Casing
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_MagneticConfinementCasing.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Mellion, 16),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.SixPhasedCopper, 16),
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.TranscendentMetal, 8),
+ ELEMENT.STANDALONE.ASTRAL_TITANIUM.getFrameBox(8),
+ GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Creon, 6),
+ new ItemStack(
+ Particle.getBaseParticle(Particle.GRAVITON)
+ .getItem(),
+ 8),
+ ItemList.Field_Generator_UEV.get(2),
+ // Artificial Gravity Generator
+ getModItem(GalacticraftAmunRa.ID, "tile.machines3", 4L, 1) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(16 * 144),
+ Materials.Lead.getPlasma(2 * 144) },
+ CustomItemList.Godforge_BoundlessStructureCasing.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+ }
+
+ // Guidance Casing
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_BoundlessStructureCasing.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_BoundlessStructureCasing.get(1), ItemList.ZPM2.get(1),
+ GregtechItemList.CosmicFabricManipulator.get(1), ItemList.Field_Generator_UEV.get(2),
+ ItemList.Emitter_UIV.get(3), GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Creon, 6),
+ GT_OreDictUnificator.get(OrePrefixes.gearGt, MaterialsUEVplus.Creon, 8),
+ GT_OreDictUnificator.get(OrePrefixes.gearGtSmall, MaterialsUEVplus.Mellion, 8) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(16 * 144),
+ Materials.Thorium.getPlasma(2 * 144) },
+ CustomItemList.Godforge_GuidanceCasing.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ // Energy Siphon Casing
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_GuidanceCasing.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_BoundlessStructureCasing.get(1),
+ ItemList.Casing_Coil_Hypogen.get(64), ItemList.Casing_Coil_Hypogen.get(64),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt08, Materials.SuperconductorUIV, 32),
+ ItemList.neutroniumHeatCapacitor.get(1L), ItemList.neutroniumHeatCapacitor.get(1L),
+ ItemList.Reactor_Coolant_Sp_6.get(1L), ItemList.Reactor_Coolant_Sp_6.get(1L),
+ CustomItemList.eM_energyTunnel7_UIV.get(1), ItemList.Generator_Plasma_UV.get(64),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 6),
+ ELEMENT.STANDALONE.HYPOGEN.getPlate(6) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(16 * 144),
+ Materials.SuperconductorUIVBase.getMolten(32 * 144L), MaterialsUEVplus.ExcitedDTEC.getFluid(128_000L) },
+ CustomItemList.Godforge_StellarEnergySiphonCasing.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ // Gravitational Lens
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ new ItemStack(QuantumGlassBlock.INSTANCE, 1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { new ItemStack(QuantumGlassBlock.INSTANCE, 8),
+ new ItemStack(ItemRegistry.bw_glasses[1], 8, 0), GregtechItemList.ForceFieldGlass.get(8),
+ new ItemStack(
+ Particle.getBaseParticle(Particle.GRAVITON)
+ .getItem(),
+ 32),
+ getItemContainer("RadoxPolymerLens").get(6), getItemContainer("ChromaticLens").get(6),
+ getItemContainer("MysteriousCrystalLens").get(6),
+ WerkstoffLoader.MagnetoResonaticDust.get(OrePrefixes.lens, 6),
+ ELEMENT.STANDALONE.CHRONOMATIC_GLASS.getPlateDense(36),
+ GT_OreDictUnificator.get(OrePrefixes.stickLong, MaterialsUEVplus.Creon, 6),
+ GT_OreDictUnificator.get(OrePrefixes.stickLong, MaterialsUEVplus.Mellion, 6),
+ GT_OreDictUnificator.get(OrePrefixes.stickLong, MaterialsUEVplus.SixPhasedCopper, 6) },
+ new FluidStack[] { ELEMENT.STANDALONE.RHUGNOR.getFluidStack(16 * 144),
+ MaterialsUEVplus.Creon.getMolten(16 * 144),
+ ELEMENT.STANDALONE.ADVANCED_NITINOL.getFluidStack(1024 * 144) },
+ new ItemStack(GodforgeGlassBlock.INSTANCE, 1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ // Graviton Modulator 1
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.Battery_Gem_4.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_MagneticConfinementCasing.get(2),
+ ItemRefer.Field_Restriction_Coil_T3.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Creon, 16),
+ GT_OreDictUnificator.get(OrePrefixes.gearGtSmall, MaterialsUEVplus.Mellion, 8),
+ GregtechItemList.Battery_Gem_4.get(2), GregtechItemList.Laser_Lens_Special.get(4),
+ ItemList.Emitter_UIV.get(4), GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UEV, 16),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, Materials.Silver, 2) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(32 * 144),
+ Materials.SuperconductorUIVBase.getMolten(32 * 144), Materials.Infinity.getMolten(32 * 144) },
+ CustomItemList.Godforge_GravitonFlowModulatorTier1.get(2),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ // Graviton Modulator 2
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_GravitonFlowModulatorTier1.get(1),
+ 96_000_000,
+ 16_384,
+ (int) TierEU.RECIPE_UXV,
+ 128,
+ new Object[] { CustomItemList.Godforge_MagneticConfinementCasing.get(1),
+ ItemRefer.Field_Restriction_Coil_T4.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 8),
+ GT_OreDictUnificator.get(OrePrefixes.gearGt, MaterialsUEVplus.Mellion, 4),
+ GregtechItemList.Battery_Gem_4.get(4), GregtechItemList.Laser_Lens_Special.get(8),
+ ItemList.Emitter_UMV.get(4), GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UMV, 8),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, Materials.Silver, 2),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, Materials.Gold, 2) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(64 * 144),
+ Materials.SuperconductorUMVBase.getMolten(64 * 144), MaterialsUEVplus.SpaceTime.getMolten(64 * 144) },
+ CustomItemList.Godforge_GravitonFlowModulatorTier2.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
+ // Graviton Modulator 3
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ CustomItemList.Godforge_GravitonFlowModulatorTier2.get(1),
+ 192_000_000,
+ 32_768,
+ (int) TierEU.RECIPE_MAX,
+ 256,
+ new Object[] { CustomItemList.Godforge_MagneticConfinementCasing.get(1),
+ ItemRefer.Field_Restriction_Coil_T4.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 64),
+ GT_OreDictUnificator.get(OrePrefixes.gearGt, MaterialsUEVplus.Mellion, 64),
+ GregtechItemList.SpaceTimeContinuumRipper.get(8), GregtechItemList.Battery_Gem_4.get(8),
+ GregtechItemList.Laser_Lens_Special.get(8), ItemList.Emitter_UXV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UXV, 8),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, Materials.Silver, 8),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, Materials.Gold, 8),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, MaterialsUEVplus.SixPhasedCopper, 8),
+ GT_OreDictUnificator.get(OrePrefixes.nanite, MaterialsUEVplus.Universium, 8) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(256 * 144),
+ Materials.SuperconductorUMVBase.getMolten(256 * 144),
+ MaterialsUEVplus.WhiteDwarfMatter.getMolten(256 * 144),
+ MaterialsUEVplus.Eternity.getMolten(256 * 144) },
+ CustomItemList.Godforge_GravitonFlowModulatorTier3.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UXV);
+
+ // Phonon Transmission Conduit
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ ItemList.Relativistic_Heat_Capacitor.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.TranscendentMetal, 1),
+ GT_OreDictUnificator.get(OrePrefixes.stickLong, MaterialsUEVplus.Creon, 12),
+ new ItemStack(Blocks.tfftStorageField, 1, 9), ItemList.Tesseract.get(8),
+ ItemList.Relativistic_Heat_Capacitor.get(4), ItemList.Thermal_Superconductor.get(6),
+ ItemList.Field_Generator_UEV.get(4),
+ GT_OreDictUnificator.get(OrePrefixes.bolt, MaterialsUEVplus.SixPhasedCopper, 24) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(64 * 144),
+ MaterialsUEVplus.PhononMedium.getFluid(1000), Materials.Plutonium241.getPlasma(16 * 144) },
+ CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(1),
+ 10 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+
+ ItemStack megaEBF = GT_Utility.copyAmount(64, ItemRegistry.megaMachines[0]);
+
+ // Smelting Module Controller
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ // mega ebf controller
+ ItemRegistry.megaMachines[0],
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_SingularityShieldingCasing.get(4), megaEBF,
+ ItemList.Machine_Multi_Furnace.get(64), ItemList.ZPM4.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 16),
+ ItemList.Robot_Arm_UIV.get(16), ItemList.Conveyor_Module_UIV.get(32),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.SixPhasedCopper, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Mellion, 8),
+ GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UIV, 32) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(1024 * 144),
+ MaterialsUEVplus.ExcitedDTEC.getFluid(2_048_000), Materials.Lead.getPlasma(256 * 144),
+ MaterialsUEVplus.TranscendentMetal.getMolten(1024 * 144) },
+ CustomItemList.Machine_Multi_SmeltingModule.get(1),
+ 300 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
+
+ // Molten Module Controller
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GregtechItemList.Mega_AlloyBlastSmelter.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_SingularityShieldingCasing.get(4), megaEBF,
+ GregtechItemList.Mega_AlloyBlastSmelter.get(64), ItemList.ZPM4.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 32),
+ ItemList.Robot_Arm_UIV.get(16), ItemList.Conveyor_Module_UIV.get(32),
+ ItemList.Electric_Pump_UIV.get(64), ItemList.Relativistic_Heat_Capacitor.get(8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.SixPhasedCopper, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Mellion, 8),
+ GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UIV, 32) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(1024 * 144),
+ MaterialsUEVplus.ExcitedDTEC.getFluid(2_048_000), MaterialsUEVplus.PhononMedium.getFluid(32000),
+ MaterialsUEVplus.TranscendentMetal.getMolten(1024 * 144) },
+ CustomItemList.Machine_Multi_MoltenModule.get(1),
+ 300 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
+
+ // Plasma Module Controller
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ ItemList.FluidHeaterUIV.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_SingularityShieldingCasing.get(4), ItemList.FluidHeaterUIV.get(64),
+ GregtechItemList.FusionComputer_UV3.get(8), ItemList.ZPM4.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 32),
+ ItemList.Robot_Arm_UIV.get(16), ItemList.Conveyor_Module_UIV.get(32),
+ ItemList.Electric_Pump_UIV.get(64), ItemList.Relativistic_Heat_Capacitor.get(8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.SixPhasedCopper, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Mellion, 8),
+ GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UIV, 32) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(1024 * 144),
+ MaterialsUEVplus.ExcitedDTEC.getFluid(2_048_000), MaterialsUEVplus.PhononMedium.getFluid(32000),
+ MaterialsUEVplus.TranscendentMetal.getMolten(1024 * 144) },
+ CustomItemList.Machine_Multi_PlasmaModule.get(1),
+ 300 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
+
+ // Exotic Module Controller
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ ItemList.Machine_Multi_TranscendentPlasmaMixer.get(1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { CustomItemList.Godforge_SingularityShieldingCasing.get(4),
+ ItemList.Machine_Multi_TranscendentPlasmaMixer.get(4), ItemRefer.Compact_Fusion_MK5.get(1),
+ ItemList.ZPM4.get(4), GT_OreDictUnificator.get(OrePrefixes.wireGt16, Materials.SuperconductorUIV, 64),
+ ItemList.Robot_Arm_UIV.get(16), ItemList.Conveyor_Module_UIV.get(32),
+ ItemList.Electric_Pump_UIV.get(64), CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(8),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.SixPhasedCopper, 32),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Creon, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.Mellion, 16),
+ GT_OreDictUnificator.get(OrePrefixes.circuit, Materials.UIV, 64) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(1024 * 144),
+ MaterialsUEVplus.ExcitedDTEC.getFluid(2_048_000), MaterialsUEVplus.PhononMedium.getFluid(64000),
+ MaterialsUEVplus.TranscendentMetal.getMolten(1024 * 144) },
+ CustomItemList.Machine_Multi_QuarkGluonPlasmaModule.get(1),
+ 300 * SECONDS,
+ (int) TierEU.RECIPE_UMV);
}
private void addWirelessEnergyRecipes() {
@@ -3340,4 +3673,32 @@ public class ResearchStationAssemblyLine implements Runnable {
recipeEuPerTick);
}
}
+
+ public void runLateRecipes() {
+ if (EternalSingularity.isModLoaded()) {
+ // Shielding Casing
+ TT_recipeAdder.addResearchableAssemblylineRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.block, MaterialsUEVplus.TranscendentMetal, 1),
+ 48_000_000,
+ 8_192,
+ (int) TierEU.RECIPE_UMV,
+ 64,
+ new Object[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.SixPhasedCopper, 4),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.CosmicNeutronium, 16),
+ MyMaterial.tairitsu.get(OrePrefixes.plateDense, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Infinity, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, MaterialsUEVplus.TranscendentMetal, 8),
+ getModItem(EternalSingularity.ID, "combined_singularity", 1L, 2),
+ getModItem(EternalSingularity.ID, "combined_singularity", 1L, 4),
+ ItemRefer.Advanced_Radiation_Protection_Plate.get(64),
+ GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Mellion, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plate, MaterialsUEVplus.Creon, 16), ALLOY.QUANTUM.getPlate(16),
+ ALLOY.ABYSSAL.getFrameBox(4) },
+ new FluidStack[] { MISC_MATERIALS.MUTATED_LIVING_SOLDER.getFluidStack(128 * 144),
+ Materials.Bedrockium.getMolten(16_384 * 144), Materials.Neutronium.getMolten(2_048 * 144) },
+ CustomItemList.Godforge_SingularityShieldingCasing.get(4),
+ 30 * SECONDS,
+ (int) TierEU.RECIPE_UIV);
+ }
+ }
}
diff --git a/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
index c7fd1bffe6..5c5005503b 100644
--- a/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/thing/MachineLoader.java
@@ -308,6 +308,7 @@ import static com.github.technus.tectech.thing.CustomItemList.hatch_CreativeMain
import static com.github.technus.tectech.thing.CustomItemList.hatch_CreativeUncertainty;
import static com.github.technus.tectech.thing.CustomItemList.holder_Hatch;
import static com.github.technus.tectech.thing.CustomItemList.rack_Hatch;
+import static com.gtnewhorizon.gtnhlib.util.AnimatedTooltipHandler.addItemTooltip;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.MetaTileEntityIDs.ActiveTransformer;
import static gregtech.api.enums.MetaTileEntityIDs.AdvancedTeslaTransceiver1by1;
@@ -661,6 +662,7 @@ import com.github.technus.tectech.thing.metaTileEntity.single.GT_MetaTileEntity_
import com.github.technus.tectech.thing.metaTileEntity.single.GT_MetaTileEntity_OwnerDetector;
import com.github.technus.tectech.thing.metaTileEntity.single.GT_MetaTileEntity_TeslaCoil;
+import gregtech.api.enums.GT_Values;
import gregtech.api.enums.MetaTileEntityIDs;
/**
@@ -2482,26 +2484,31 @@ public class MachineLoader implements Runnable {
ForgeoftheGods.ID,
"multimachine.em.forge_of_gods",
"Forge of the Gods").getStackForm(1L));
+ addItemTooltip(Machine_Multi_ForgeOfGods.get(1), GT_Values.AuthorCloud);
Machine_Multi_SmeltingModule.set(
new GT_MetaTileEntity_EM_SmeltingModule(
HelioflarePowerForge.ID,
"multimachine.em.smelting_module",
"Helioflare Power Forge").getStackForm(1L));
+ addItemTooltip(Machine_Multi_SmeltingModule.get(1), GT_Values.AuthorCloud);
Machine_Multi_MoltenModule.set(
new GT_MetaTileEntity_EM_MoltenModule(
HeliofluxMeltingCore.ID,
"multimachine.em.molten_module",
"Helioflux Melting Core").getStackForm(1L));
+ addItemTooltip(Machine_Multi_MoltenModule.get(1), GT_Values.AuthorCloud);
Machine_Multi_PlasmaModule.set(
new GT_MetaTileEntity_EM_PlasmaModule(
HeliothermalPlasmaFabricator.ID,
"multimachine.em.plasma_module",
"Heliothermal Plasma Fabricator").getStackForm(1L));
+ addItemTooltip(Machine_Multi_PlasmaModule.get(1), GT_Values.AuthorCloud);
Machine_Multi_QuarkGluonPlasmaModule.set(
new GT_MetaTileEntity_EM_ExoticModule(
HeliofusionExoticizer.ID,
"multimachine.em.exotic_module",
"Heliofusion Exoticizer").getStackForm(1L));
+ addItemTooltip(Machine_Multi_QuarkGluonPlasmaModule.get(1), GT_Values.AuthorCloud);
}
// ===================================================================================================
diff --git a/src/main/java/com/github/technus/tectech/recipe/GodforgePlasmaFrontend.java b/src/main/java/com/github/technus/tectech/recipe/GodforgePlasmaFrontend.java
index 8264c6a169..7cdf2bb5c1 100644
--- a/src/main/java/com/github/technus/tectech/recipe/GodforgePlasmaFrontend.java
+++ b/src/main/java/com/github/technus/tectech/recipe/GodforgePlasmaFrontend.java
@@ -64,7 +64,10 @@ public class GodforgePlasmaFrontend extends RecipeMapFrontend {
recipeInfo.drawText(trans("152", "Total: ") + GT_Utility.formatNumbers(eut * duration) + " EU");
recipeInfo.drawText(trans("153", "Usage: ") + GT_Utility.formatNumbers(eut) + " EU/t");
- recipeInfo.drawText(trans("158", "Time: ") + GT_Utility.formatNumbers(duration / 20) + " secs");
+ recipeInfo.drawText(
+ trans("158", "Time: ") + GT_Utility.formatNumbers(duration / 20d)
+ + " secs"
+ + (duration < 20 ? " (" + duration + " ticks)" : ""));
recipeInfo.drawText(translateToLocal("gt.blockmachines.multimachine.FOG.plasmamultistep") + ": " + multistep);
recipeInfo
.drawText(translateToLocal("gt.blockmachines.multimachine.FOG.plasmarecipetier") + ": " + requiredUpgrade);
diff --git a/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_RenderingUtils.java b/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_RenderingUtils.java
index 3f72cacd77..582b695eb2 100644
--- a/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_RenderingUtils.java
+++ b/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_RenderingUtils.java
@@ -22,7 +22,7 @@ import cpw.mods.fml.client.FMLClientHandler;
public abstract class EOH_RenderingUtils {
- public static void renderStar(IItemRenderer.ItemRenderType type, Color color) {
+ public static void renderStar(IItemRenderer.ItemRenderType type, Color color, int size) {
GL11.glPushMatrix();
if (type == IItemRenderer.ItemRenderType.INVENTORY) GL11.glRotated(180, 0, 1, 0);
@@ -33,18 +33,18 @@ public abstract class EOH_RenderingUtils {
}
// Render star stuff.
- renderStarLayer(0, STAR_LAYER_0, color, 1.0f);
- renderStarLayer(1, STAR_LAYER_1, color, 0.4f);
- renderStarLayer(2, STAR_LAYER_2, color, 0.2f);
+ renderStarLayer(0, STAR_LAYER_0, color, 1.0f, size);
+ renderStarLayer(1, STAR_LAYER_1, color, 0.4f, size);
+ renderStarLayer(2, STAR_LAYER_2, color, 0.2f, size);
GL11.glPopMatrix();
}
- public static void renderStar(IItemRenderer.ItemRenderType type) {
- renderStar(type, new Color(1.0f, 0.4f, 0.05f, 1.0f));
+ public static void renderStar(IItemRenderer.ItemRenderType type, int size) {
+ renderStar(type, new Color(1.0f, 0.4f, 0.05f, 1.0f), size);
}
- private static void renderStarLayer(int layer, ResourceLocation texture, Color color, float alpha) {
+ public static void renderStarLayer(int layer, ResourceLocation texture, Color color, float alpha, int size) {
// Begin animation.
GL11.glPushMatrix();
@@ -72,7 +72,7 @@ public abstract class EOH_RenderingUtils {
// 0.01f magic number to shrink sphere obj down.
// Size obtained from the multis current recipe.
- float scale = 0.01f;
+ float scale = 0.01f * size;
// Put each subsequent layer further out.
scale *= pow(1.04f, layer);
diff --git a/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_TESR.java b/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_TESR.java
index da704a37ff..e4b7c50c93 100644
--- a/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_TESR.java
+++ b/src/main/java/com/github/technus/tectech/rendering/EOH/EOH_TESR.java
@@ -49,7 +49,7 @@ public class EOH_TESR extends TileEntitySpecialRenderer {
renderOrbitObjects(EOHRenderTile);
// Render the star itself.
- renderStar(IItemRenderer.ItemRenderType.INVENTORY);
+ renderStar(IItemRenderer.ItemRenderType.INVENTORY, 1);
GL11.glPopAttrib();
GL11.glPopMatrix();
diff --git a/src/main/java/com/github/technus/tectech/thing/CustomItemList.java b/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
index 79e53e2239..58285080cc 100644
--- a/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
+++ b/src/main/java/com/github/technus/tectech/thing/CustomItemList.java
@@ -451,15 +451,16 @@ public enum CustomItemList implements IItemContainer {
StabilisationFieldGeneratorTier7,
StabilisationFieldGeneratorTier8,
- Godforge_Gravitational_Lens,
- Godforge_Singularity_Shielding_Casing,
- Godforge_Guidance_Casing,
- Godforge_Boundless_Structure_Casing,
- Godforge_Magnetic_Confinement_Casing,
- Godforge_Stellar_Energy_Siphon_Casing,
+ Godforge_GravitationalLens,
+ Godforge_SingularityShieldingCasing,
+ Godforge_GuidanceCasing,
+ Godforge_BoundlessStructureCasing,
+ Godforge_MagneticConfinementCasing,
+ Godforge_StellarEnergySiphonCasing,
Godforge_GravitonFlowModulatorTier1,
Godforge_GravitonFlowModulatorTier2,
Godforge_GravitonFlowModulatorTier3,
+ Godforge_HarmonicPhononTransmissionConduit,
astralArrayFabricator;
diff --git a/src/main/java/com/github/technus/tectech/thing/block/RenderForgeOfGods.java b/src/main/java/com/github/technus/tectech/thing/block/RenderForgeOfGods.java
index 70314927f4..4da28875f9 100644
--- a/src/main/java/com/github/technus/tectech/thing/block/RenderForgeOfGods.java
+++ b/src/main/java/com/github/technus/tectech/thing/block/RenderForgeOfGods.java
@@ -1,7 +1,12 @@
package com.github.technus.tectech.thing.block;
import static com.github.technus.tectech.Reference.MODID;
-import static java.lang.Math.pow;
+import static com.github.technus.tectech.rendering.EOH.EOH_RenderingUtils.renderStarLayer;
+import static com.github.technus.tectech.rendering.EOH.EOH_TESR.STAR_LAYER_0;
+import static com.github.technus.tectech.rendering.EOH.EOH_TESR.STAR_LAYER_1;
+import static com.github.technus.tectech.rendering.EOH.EOH_TESR.STAR_LAYER_2;
+
+import java.awt.Color;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
@@ -11,120 +16,50 @@ import net.minecraftforge.client.model.IModelCustom;
import org.lwjgl.opengl.GL11;
-import cpw.mods.fml.client.FMLClientHandler;
-
public class RenderForgeOfGods extends TileEntitySpecialRenderer {
- public static final ResourceLocation STAR_LAYER_0 = new ResourceLocation(MODID, "models/StarLayer0.png");
- public static final ResourceLocation STAR_LAYER_1 = new ResourceLocation(MODID, "models/StarLayer1.png");
- public static final ResourceLocation STAR_LAYER_2 = new ResourceLocation(MODID, "models/StarLayer2.png");
public static IModelCustom starModel;
- private static IModelCustom spaceModel;
- private static final float RED = 180 / 255f;
- private static final float GREEN = 180 / 255f;
- private static final float BLUE = 255 / 255f;
public RenderForgeOfGods() {
starModel = AdvancedModelLoader.loadModel(new ResourceLocation(MODID, "models/Star.obj"));
- spaceModel = AdvancedModelLoader.loadModel(new ResourceLocation(MODID, "models/Space.obj"));
}
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float timeSinceLastTick) {
if (!(tile instanceof TileForgeOfGods)) return;
- TileForgeOfGods FOGRenderTile = (TileForgeOfGods) tile;
-
- // Render outer space layer.
-
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
- renderOuterSpaceShell();
+ GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
+ GL11.glDisable(GL11.GL_LIGHTING);
+ GL11.glDisable(GL11.GL_BLEND);
- // Render star stuff.
- renderStarLayer(FOGRenderTile, 0, STAR_LAYER_0, 1.0f);
- renderStarLayer(FOGRenderTile, 1, STAR_LAYER_1, 0.4f);
- renderStarLayer(FOGRenderTile, 2, STAR_LAYER_2, 0.2f);
+ // Innermost layer should be opaque
+ enableOpaqueColorInversion();
+ renderStarLayer(0, STAR_LAYER_0, new Color(1.0f, 0.4f, 0.05f, 1.0f), 1.0f, 25);
+ disableOpaqueColorInversion();
+ enablePseudoTransparentColorInversion();
+ renderStarLayer(1, STAR_LAYER_1, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.4f, 25);
+ renderStarLayer(2, STAR_LAYER_2, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.2f, 25);
+
+ GL11.glPopAttrib();
GL11.glPopMatrix();
}
}
- public static void renderOuterSpaceShell() {
-
- GL11.glPushMatrix();
-
- GL11.glDisable(GL11.GL_LIGHTING);
- GL11.glEnable(GL11.GL_BLEND);
-
- FMLClientHandler.instance()
- .getClient()
- .getTextureManager()
- .bindTexture(new ResourceLocation(MODID, "models/spaceLayer.png"));
-
- final float scale = 0.01f * 17.5f;
- GL11.glScalef(scale, scale, scale);
-
- GL11.glColor4f(222 / 255f, 243 / 255f, 250 / 255f, 255 / 255f);
-
- spaceModel.renderAll();
- GL11.glDisable(GL11.GL_BLEND);
- GL11.glDepthMask(true);
- GL11.glEnable(GL11.GL_LIGHTING);
-
- GL11.glPopMatrix();
+ public static void enablePseudoTransparentColorInversion() {
+ GL11.glEnable(GL11.GL_COLOR_LOGIC_OP);
+ GL11.glLogicOp(GL11.GL_OR_INVERTED);
}
- private static final float STAR_RESCALE = 0.2f;
-
- private void renderStarLayer(TileForgeOfGods FOGRenderTile, int layer, ResourceLocation texture, float alpha) {
-
- GL11.glPushMatrix();
-
- GL11.glDisable(GL11.GL_LIGHTING);
- GL11.glEnable(GL11.GL_CULL_FACE);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
-
- FMLClientHandler.instance()
- .getClient()
- .getTextureManager()
- .bindTexture(texture);
-
- // 0.01f magic number to shrink sphere obj down
- float scale = 0.01f * STAR_RESCALE * FOGRenderTile.getRenderSize();
-
- // Put each layer further out
- scale *= pow(1.04f, layer);
-
- // Scale the star up in the x, y and z directions
- GL11.glScalef(scale, scale, scale);
-
- switch (layer) {
- case 0:
- GL11.glRotatef(130, 0F, 1F, 1F);
- break;
- case 1:
- GL11.glRotatef(-49, 1F, 1F, 0F);
- break;
- case 2:
- GL11.glRotatef(67, 1F, 0F, 1F);
- break;
- }
-
- // Set color and alpha of the star layer
- GL11.glColor4f(RED, GREEN, BLUE, alpha);
-
- // Spin the star
- GL11.glRotatef((0.03f * FOGRenderTile.angle * FOGRenderTile.getRenderRotationSpeed()) % 360.0f, 0F, 0F, 1F);
-
- starModel.renderAll();
- GL11.glDisable(GL11.GL_BLEND);
- GL11.glDisable(GL11.GL_CULL_FACE);
- GL11.glDepthMask(true);
- GL11.glEnable(GL11.GL_LIGHTING);
+ public static void enableOpaqueColorInversion() {
+ GL11.glEnable(GL11.GL_COLOR_LOGIC_OP);
+ GL11.glLogicOp(GL11.GL_COPY_INVERTED);
+ }
- GL11.glPopMatrix();
+ public static void disableOpaqueColorInversion() {
+ GL11.glDisable(GL11.GL_COLOR_LOGIC_OP);
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/block/TileForgeOfGods.java b/src/main/java/com/github/technus/tectech/thing/block/TileForgeOfGods.java
index 0e0b536046..03109b46bd 100644
--- a/src/main/java/com/github/technus/tectech/thing/block/TileForgeOfGods.java
+++ b/src/main/java/com/github/technus/tectech/thing/block/TileForgeOfGods.java
@@ -17,6 +17,11 @@ public class TileForgeOfGods extends TileEntity {
return INFINITE_EXTENT_AABB;
}
+ @Override
+ public double getMaxRenderDistanceSquared() {
+ return 25600;
+ }
+
public void setRenderSize(float size) {
this.size = size;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Godforge.java b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Godforge.java
index e527fc552d..e931b94423 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Godforge.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GT_Item_Casings_Godforge.java
@@ -104,6 +104,18 @@ public class GT_Item_Casings_Godforge extends GT_Item_Casings_Abstract {
AQUA.toString() + BOLD
+ GT_LanguageManager.addStringLocalization("godforge.casings.7.Tooltip.1", "Gravity Central"));
break;
+ case 8:
+ aList.add(
+ GT_LanguageManager.addStringLocalization(
+ "godforge.casings.8.Tooltip.0",
+ "Transfers and stores extreme amounts of heat without any loss"));
+ aList.add(
+ AQUA.toString() + BOLD
+ + GT_LanguageManager.addStringLocalization("godforge.casings.8.Tooltip.1", "<<<Thermal<<<"));
+ aList.add(
+ AQUA.toString() + BOLD
+ + GT_LanguageManager.addStringLocalization("godforge.casings.8.Tooltip.2", ">>>Wave>>>"));
+ break;
default:
aList.add(
EnumChatFormatting.RED.toString() + BOLD
diff --git a/src/main/java/com/github/technus/tectech/thing/casing/GodforgeCasings.java b/src/main/java/com/github/technus/tectech/thing/casing/GodforgeCasings.java
index 809e6bbff1..df89071d80 100644
--- a/src/main/java/com/github/technus/tectech/thing/casing/GodforgeCasings.java
+++ b/src/main/java/com/github/technus/tectech/thing/casing/GodforgeCasings.java
@@ -29,6 +29,7 @@ public class GodforgeCasings extends GT_Block_Casings_Abstract {
private static IIcon GravitonModulatorT1;
private static IIcon GravitonModulatorT2;
private static IIcon GravitonModulatorT3;
+ private static IIcon PhononConduit;
private static final byte START_INDEX = 64;
@@ -51,15 +52,18 @@ public class GodforgeCasings extends GT_Block_Casings_Abstract {
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Remote Graviton Flow Modulator");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Medial Graviton Flow Modulator");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".7.name", "Central Graviton Flow Modulator");
+ GT_LanguageManager
+ .addStringLocalization(getUnlocalizedName() + ".8.name", "Harmonic Phonon Transmission Conduit");
- CustomItemList.Godforge_Singularity_Shielding_Casing.set(new ItemStack(this, 1, 0));
- CustomItemList.Godforge_Guidance_Casing.set(new ItemStack(this, 1, 1));
- CustomItemList.Godforge_Boundless_Structure_Casing.set(new ItemStack(this, 1, 2));
- CustomItemList.Godforge_Magnetic_Confinement_Casing.set(new ItemStack(this, 1, 3));
- CustomItemList.Godforge_Stellar_Energy_Siphon_Casing.set(new ItemStack(this, 1, 4));
+ CustomItemList.Godforge_SingularityShieldingCasing.set(new ItemStack(this, 1, 0));
+ CustomItemList.Godforge_GuidanceCasing.set(new ItemStack(this, 1, 1));
+ CustomItemList.Godforge_BoundlessStructureCasing.set(new ItemStack(this, 1, 2));
+ CustomItemList.Godforge_MagneticConfinementCasing.set(new ItemStack(this, 1, 3));
+ CustomItemList.Godforge_StellarEnergySiphonCasing.set(new ItemStack(this, 1, 4));
CustomItemList.Godforge_GravitonFlowModulatorTier1.set(new ItemStack(this, 1, 5));
CustomItemList.Godforge_GravitonFlowModulatorTier2.set(new ItemStack(this, 1, 6));
CustomItemList.Godforge_GravitonFlowModulatorTier3.set(new ItemStack(this, 1, 7));
+ CustomItemList.Godforge_HarmonicPhononTransmissionConduit.set(new ItemStack(this, 1, 8));
}
@Override
@@ -72,6 +76,7 @@ public class GodforgeCasings extends GT_Block_Casings_Abstract {
GravitonModulatorT1 = aIconRegister.registerIcon("gregtech:iconsets/GRAVITON_CASING_2");
GravitonModulatorT2 = aIconRegister.registerIcon("gregtech:iconsets/GRAVITON_CASING_1");
GravitonModulatorT3 = aIconRegister.registerIcon("gregtech:iconsets/GRAVITON_CASING_0");
+ PhononConduit = aIconRegister.registerIcon("gregtech:iconsets/PHONON_CONDUIT");
}
@Override
@@ -102,6 +107,8 @@ public class GodforgeCasings extends GT_Block_Casings_Abstract {
return GodforgeOuter;
}
return GravitonModulatorT3;
+ case 8:
+ return PhononConduit;
default:
return Textures.BlockIcons.MACHINE_CASING_SOLID_STEEL.getIcon();
}
@@ -117,7 +124,7 @@ public class GodforgeCasings extends GT_Block_Casings_Abstract {
@SuppressWarnings("unchecked")
@Override
public void getSubBlocks(Item aItem, CreativeTabs par2CreativeTabs, List aList) {
- for (int i = 0; i <= 7; i++) {
+ for (int i = 0; i <= 8; i++) {
aList.add(new ItemStack(aItem, 1, i));
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java b/src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java
index 8c0c801363..b9f18e4e48 100644
--- a/src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java
+++ b/src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java
@@ -29,7 +29,12 @@ public class TecTechUITextures {
public static final UITexture BUTTON_STANDARD_LIGHT_16x16 = UITexture
.fullImage(MODID, "gui/button/standard_light_16x16");
public static final UITexture BUTTON_CELESTIAL_32x32 = UITexture.fullImage(MODID, "gui/button/celestial");
-
+ public static final UITexture BUTTON_SPACE_32x16 = UITexture.fullImage(MODID, "gui/button/purple");
+ public static final UITexture BUTTON_SPACE_PRESSED_32x16 = UITexture.fullImage(MODID, "gui/button/purple_pressed");
+ public static final UITexture BUTTON_BOXED_CHECKMARK_18x18 = UITexture
+ .fullImage(MODID, "gui/button/boxed_checkmark");
+ public static final UITexture BUTTON_BOXED_EXCLAMATION_POINT_18x18 = UITexture
+ .fullImage(MODID, "gui/button/boxed_exclamation_point");
public static final UITexture OVERLAY_BUTTON_POWER_SWITCH_DISABLED = UITexture
.fullImage(MODID, "gui/overlay_button/power_switch_disabled");
public static final UITexture OVERLAY_BUTTON_POWER_SWITCH_OFF = UITexture
@@ -78,6 +83,9 @@ public class TecTechUITextures {
.fullImage(MODID, "gui/overlay_button/battery_off");
public static final UITexture OVERLAY_BUTTON_FLAG = UITexture.fullImage(MODID, "gui/overlay_button/flag");
public static final UITexture OVERLAY_CYCLIC_BLUE = UITexture.fullImage(MODID, "gui/overlay_button/cyclic_blue");
+ public static final UITexture OVERLAY_EJECTION_LOCKED = UITexture
+ .fullImage(MODID, "gui/overlay_button/eject_disabled");
+ public static final UITexture OVERLAY_EJECTION_ON = UITexture.fullImage(MODID, "gui/overlay_button/eject");
public static final UITexture OVERLAY_SLOT_RACK = UITexture.fullImage(MODID, "gui/overlay_slot/rack");
public static final UITexture OVERLAY_SLOT_MESH = UITexture.fullImage(MODID, "gui/overlay_slot/mesh");
diff --git a/src/main/java/com/github/technus/tectech/thing/item/RenderForgeOfGodsItem.java b/src/main/java/com/github/technus/tectech/thing/item/RenderForgeOfGodsItem.java
index 35f2199663..a9be26fce8 100644
--- a/src/main/java/com/github/technus/tectech/thing/item/RenderForgeOfGodsItem.java
+++ b/src/main/java/com/github/technus/tectech/thing/item/RenderForgeOfGodsItem.java
@@ -1,16 +1,18 @@
package com.github.technus.tectech.thing.item;
+import static com.github.technus.tectech.rendering.EOH.EOH_RenderingUtils.renderStarLayer;
import static com.github.technus.tectech.rendering.EOH.EOH_TESR.*;
-import static java.lang.Math.pow;
+import static com.github.technus.tectech.thing.block.RenderForgeOfGods.disableOpaqueColorInversion;
+import static com.github.technus.tectech.thing.block.RenderForgeOfGods.enableOpaqueColorInversion;
+import static com.github.technus.tectech.thing.block.RenderForgeOfGods.enablePseudoTransparentColorInversion;
+
+import java.awt.Color;
import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
-import cpw.mods.fml.client.FMLClientHandler;
-
public class RenderForgeOfGodsItem implements IItemRenderer {
@Override
@@ -27,6 +29,7 @@ public class RenderForgeOfGodsItem implements IItemRenderer {
@Override
public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object... data) {
GL11.glPushMatrix();
+ GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
if (type == IItemRenderer.ItemRenderType.INVENTORY) GL11.glRotated(180, 0, 1, 0);
else if (type == IItemRenderer.ItemRenderType.EQUIPPED
@@ -35,57 +38,22 @@ public class RenderForgeOfGodsItem implements IItemRenderer {
if (type == IItemRenderer.ItemRenderType.EQUIPPED) GL11.glRotated(90, 0, 1, 0);
}
- // Render star stuff
- renderStarLayer(0, STAR_LAYER_0, 1.0f);
- renderStarLayer(1, STAR_LAYER_1, 0.4f);
- renderStarLayer(2, STAR_LAYER_2, 0.2f);
-
- GL11.glPopMatrix();
- }
-
- private void renderStarLayer(int layer, ResourceLocation texture, float alpha) {
-
- GL11.glPushMatrix();
-
- GL11.glDisable(GL11.GL_LIGHTING);
- GL11.glEnable(GL11.GL_CULL_FACE);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
-
- FMLClientHandler.instance()
- .getClient()
- .getTextureManager()
- .bindTexture(texture);
+ {
- // 0.01f magic number to shrink sphere obj down
- float scale = 0.01f;
+ GL11.glDisable(GL11.GL_LIGHTING);
+ GL11.glDisable(GL11.GL_BLEND);
- // Put each layer further out
- scale *= pow(1.04f, layer);
+ // Innermost layer should be opaque
+ enableOpaqueColorInversion();
+ renderStarLayer(0, STAR_LAYER_0, new Color(1.0f, 0.4f, 0.05f, 1.0f), 1.0f, 1);
+ disableOpaqueColorInversion();
- // Scale the star up in the x, y and z directions
- GL11.glScalef(scale, scale, scale);
+ enablePseudoTransparentColorInversion();
+ renderStarLayer(1, STAR_LAYER_1, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.4f, 1);
+ renderStarLayer(2, STAR_LAYER_2, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.2f, 1);
- switch (layer) {
- case 0:
- GL11.glRotatef(130 + (System.currentTimeMillis() / 64) % 360, 0F, 1F, 1F);
- break;
- case 1:
- GL11.glRotatef(-49 + (System.currentTimeMillis() / 64) % 360, 1F, 1F, 0F);
- break;
- case 2:
- GL11.glRotatef(67 + (System.currentTimeMillis() / 64) % 360, 1F, 0F, 1F);
- break;
+ GL11.glPopAttrib();
+ GL11.glPopMatrix();
}
-
- // Set colour and alpha of the star layer
- GL11.glColor4f(222, 243, 250, alpha);
-
- starModel.renderAll();
- GL11.glDisable(GL11.GL_BLEND);
- GL11.glDepthMask(true);
- GL11.glEnable(GL11.GL_LIGHTING);
-
- GL11.glPopMatrix();
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsRingsStructureString.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsRingsStructureString.java
index c01a17af86..1bdd8fc7c5 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsRingsStructureString.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsRingsStructureString.java
@@ -1,5 +1,7 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
+import static com.github.technus.tectech.util.TT_Utility.replaceLetters;
+
public abstract class ForgeOfGodsRingsStructureString {
public static final String[][] SECOND_RING = { {
@@ -5097,5 +5099,7 @@ public abstract class ForgeOfGodsRingsStructureString {
" ",
" ",
" " } };
+ public static final String[][] SECOND_RING_AIR = replaceLetters(SECOND_RING, "L");
+ public static final String[][] THIRD_RING_AIR = replaceLetters(THIRD_RING, "L");
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsStructureString.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsStructureString.java
index bbf9e56f89..ce43510568 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsStructureString.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/ForgeOfGodsStructureString.java
@@ -1,8 +1,11 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
+import static com.github.technus.tectech.util.TT_Utility.appendStringArrays;
+import static com.github.technus.tectech.util.TT_Utility.replaceLetters;
+
public abstract class ForgeOfGodsStructureString {
- public static final String[][] MAIN_STRUCTURE = { {
+ public static final String[][] BEAM_SHAFT = { {
" ",
" ",
" ",
@@ -1107,7 +1110,7 @@ public abstract class ForgeOfGodsStructureString {
" " },
{ " J ",
" BEEEEEB ",
- " EEEE EEE ",
+ " EEE EEE ",
" E E ",
" EE EE ",
" E E ",
@@ -1742,36 +1745,37 @@ public abstract class ForgeOfGodsStructureString {
" ",
" ",
" ",
- " " },
- { " ",
- " ",
- " ",
- " ",
- " ",
- " BBBBB ",
- " BBCCCCCBB ",
- " BBCC CCBB ",
- " BBCC CCBB ",
- " EEC CEE ",
- " EC CE ",
- " EC CE ",
- " C CCC C ",
- " C C C C ",
- " C C C C ",
- " C C C C ",
- " C CCC C ",
- " EC CE ",
- " EC CE ",
- " EEC CEE ",
- " BBCC CCBB ",
- " BBCC CCBB ",
- " BBCCCCCBB ",
- " BBBBB ",
- " ",
- " ",
- " ",
- " ",
- " " },
+ " " } };
+ public static final String[][] FIRST_RING = { {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " BBBBB ",
+ " BBCCCCCBB ",
+ " BBCC CCBB ",
+ " BBCC CCBB ",
+ " EEC CEE ",
+ " EC CE ",
+ " EC CE ",
+ " C CCC C ",
+ " C C C C ",
+ " C C C C ",
+ " C C C C ",
+ " C CCC C ",
+ " EC CE ",
+ " EC CE ",
+ " EEC CEE ",
+ " BBCC CCBB ",
+ " BBCC CCBB ",
+ " BBCCCCCBB ",
+ " BBBBB ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " " },
{ " ",
" ",
" ",
@@ -5426,4 +5430,6 @@ public abstract class ForgeOfGodsStructureString {
" ",
" ",
" " } };
+ public static final String[][] MAIN_STRUCTURE = appendStringArrays(BEAM_SHAFT, FIRST_RING);
+ public static final String[][] FIRST_RING_AIR = replaceLetters(FIRST_RING, "L");
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_ForgeOfGods.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_ForgeOfGods.java
index e8e27e7bfc..86f608b602 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_ForgeOfGods.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_ForgeOfGods.java
@@ -1,5 +1,6 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
+import static com.github.technus.tectech.loader.recipe.Godforge.godforgeUpgradeMats;
import static com.github.technus.tectech.thing.casing.TT_Container_Casings.GodforgeCasings;
import static com.github.technus.tectech.thing.casing.TT_Container_Casings.forgeOfGodsRenderBlock;
import static com.github.technus.tectech.util.GodforgeMath.allowModuleConnection;
@@ -30,6 +31,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
@@ -41,18 +43,17 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import com.github.technus.tectech.TecTech;
-import com.github.technus.tectech.thing.CustomItemList;
import com.github.technus.tectech.thing.block.GodforgeGlassBlock;
import com.github.technus.tectech.thing.block.TileForgeOfGods;
import com.github.technus.tectech.thing.gui.TecTechUITextures;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
-import com.github.technus.tectech.thing.metaTileEntity.multi.base.render.TT_RenderedExtendedFacingTexture;
import com.github.technus.tectech.thing.metaTileEntity.multi.godforge_modules.GT_MetaTileEntity_EM_BaseModule;
import com.github.technus.tectech.thing.metaTileEntity.multi.godforge_modules.GT_MetaTileEntity_EM_ExoticModule;
import com.github.technus.tectech.thing.metaTileEntity.multi.godforge_modules.GT_MetaTileEntity_EM_MoltenModule;
import com.github.technus.tectech.thing.metaTileEntity.multi.godforge_modules.GT_MetaTileEntity_EM_PlasmaModule;
import com.github.technus.tectech.thing.metaTileEntity.multi.godforge_modules.GT_MetaTileEntity_EM_SmeltingModule;
import com.github.technus.tectech.util.CommonValues;
+import com.google.common.collect.ImmutableList;
import com.google.common.math.LongMath;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
@@ -72,7 +73,6 @@ import com.gtnewhorizons.modularui.api.math.Size;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.api.widget.IWidgetBuilder;
-import com.gtnewhorizons.modularui.api.widget.Interactable;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
@@ -88,7 +88,6 @@ import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.MaterialsUEVplus;
import gregtech.api.enums.OrePrefixes;
@@ -99,10 +98,15 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_HatchElementBuilder;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.IGT_HatchAdder;
+import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_InputBus_ME;
+import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Input_ME;
+import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_MultiblockBase_EM
implements IConstructable, ISurvivalConstructable {
@@ -133,6 +137,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
private BigInteger totalPowerConsumed = BigInteger.ZERO;
private boolean batteryCharging = false;
private boolean inversion = false;
+ private boolean gravitonShardEjection = false;
+ private boolean noFormatting = false;
+ private boolean isRenderActive = false;
public ArrayList<GT_MetaTileEntity_EM_BaseModule> moduleHatches = new ArrayList<>();
protected ItemStackHandler inputSlotHandler = new ItemStackHandler(16);
@@ -143,8 +150,10 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
private static final int MILESTONE_WINDOW_ID = 13;
private static final int INDIVIDUAL_MILESTONE_WINDOW_ID = 14;
private static final int MANUAL_INSERTION_WINDOW_ID = 15;
+ private static final int GENERAL_INFO_WINDOW_ID = 16;
private static final int TEXTURE_INDEX = 960;
private static final int[] FIRST_SPLIT_UPGRADES = new int[] { 12, 13, 14 };
+ private static final Integer[] UPGRADE_MATERIAL_ID_CONVERSION = { 0, 5, 7, 11, 26, 29, 30 };
private static final long POWER_MILESTONE_CONSTANT = LongMath.pow(10, 15);
private static final long RECIPE_MILESTONE_CONSTANT = LongMath.pow(10, 7);
private static final long FUEL_MILESTONE_CONSTANT = 10_000;
@@ -156,9 +165,17 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
private static final double RECIPE_LOG_CONSTANT = Math.log(6);
private static final double FUEL_LOG_CONSTANT = Math.log(3);
protected static final String STRUCTURE_PIECE_MAIN = "main";
+ protected static final String STRUCTURE_PIECE_SHAFT = "beam_shaft";
+ protected static final String STRUCTURE_PIECE_FIRST_RING = "first_ring";
+ protected static final String STRUCTURE_PIECE_FIRST_RING_AIR = "first_ring_air";
protected static final String STRUCTURE_PIECE_SECOND_RING = "second_ring";
+ protected static final String STRUCTURE_PIECE_SECOND_RING_AIR = "second_ring_air";
protected static final String STRUCTURE_PIECE_THIRD_RING = "third_ring";
- private static final String TOOLTIP_BAR = EnumChatFormatting.BLUE + "--------------------------------------------";
+ protected static final String STRUCTURE_PIECE_THIRD_RING_AIR = "third_ring_air";
+ private static final String SCANNER_INFO_BAR = EnumChatFormatting.BLUE
+ + "--------------------------------------------";
+ private static final String TOOLTIP_BAR = EnumChatFormatting.AQUA
+ + "--------------------------------------------------------------------------";
private static final ItemStack STELLAR_FUEL = Avaritia.isModLoaded() ? getModItem(Avaritia.ID, "Resource", 1, 8)
: GT_OreDictUnificator.get(OrePrefixes.block, Materials.CosmicNeutronium, 1);
@@ -168,8 +185,8 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
if (mMachine) return -1;
int realBudget = elementBudget >= 1000 ? elementBudget : Math.min(1000, elementBudget * 5);
// 1000 blocks max per placement.
- int built = survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 63, 20, 1, realBudget, env, false, true);
- if (isUpgradeActive(26) && stackSize.stackSize > 1) {
+ int built = survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 63, 14, 1, realBudget, env, false, true);
+ if (stackSize.stackSize > 1) {
built += survivialBuildPiece(
STRUCTURE_PIECE_SECOND_RING,
stackSize,
@@ -181,7 +198,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
true);
}
- if (isUpgradeActive(29) && stackSize.stackSize > 2) {
+ if (stackSize.stackSize > 2) {
built += survivialBuildPiece(
STRUCTURE_PIECE_THIRD_RING,
stackSize,
@@ -204,8 +221,13 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
public static final IStructureDefinition<GT_MetaTileEntity_EM_ForgeOfGods> STRUCTURE_DEFINITION = IStructureDefinition
.<GT_MetaTileEntity_EM_ForgeOfGods>builder()
.addShape(STRUCTURE_PIECE_MAIN, ForgeOfGodsStructureString.MAIN_STRUCTURE)
+ .addShape(STRUCTURE_PIECE_SHAFT, ForgeOfGodsStructureString.BEAM_SHAFT)
+ .addShape(STRUCTURE_PIECE_FIRST_RING, ForgeOfGodsStructureString.FIRST_RING)
+ .addShape(STRUCTURE_PIECE_FIRST_RING_AIR, ForgeOfGodsStructureString.FIRST_RING_AIR)
.addShape(STRUCTURE_PIECE_SECOND_RING, ForgeOfGodsRingsStructureString.SECOND_RING)
+ .addShape(STRUCTURE_PIECE_SECOND_RING_AIR, ForgeOfGodsRingsStructureString.SECOND_RING_AIR)
.addShape(STRUCTURE_PIECE_THIRD_RING, ForgeOfGodsRingsStructureString.THIRD_RING)
+ .addShape(STRUCTURE_PIECE_THIRD_RING_AIR, ForgeOfGodsRingsStructureString.THIRD_RING_AIR)
.addElement('A', classicHatches(TEXTURE_INDEX + 3, 1, GodforgeCasings, 3))
.addElement('B', ofBlock(GodforgeCasings, 0))
.addElement('C', ofBlock(GodforgeCasings, 1))
@@ -223,6 +245,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.dot(3)
.buildAndChain(GodforgeCasings, 0))
.addElement('K', ofBlock(GodforgeCasings, 6))
+ .addElement('L', ofBlock(Blocks.air, 0))
.build();
public GT_MetaTileEntity_EM_ForgeOfGods(int aID, String aName, String aNameRegional) {
@@ -250,7 +273,15 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
int colorIndex, boolean aActive, boolean aRedstone) {
if (side == facing) {
return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX + 1),
- new TT_RenderedExtendedFacingTexture(ScreenON) };
+ TextureFactory.builder()
+ .addIcon(ScreenON)
+ .extFacing()
+ .build(),
+ TextureFactory.builder()
+ .addIcon(ScreenON)
+ .extFacing()
+ .glow()
+ .build() };
}
return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX + 1) };
}
@@ -258,10 +289,10 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
@Override
public void construct(ItemStack stackSize, boolean hintsOnly) {
structureBuild_EM(STRUCTURE_PIECE_MAIN, 63, 14, 1, stackSize, hintsOnly);
- if (isUpgradeActive(26) && stackSize.stackSize > 1) {
+ if (stackSize.stackSize > 1) {
buildPiece(STRUCTURE_PIECE_SECOND_RING, stackSize, hintsOnly, 55, 11, -67);
}
- if (isUpgradeActive(29) && stackSize.stackSize > 2) {
+ if (stackSize.stackSize > 2) {
buildPiece(STRUCTURE_PIECE_THIRD_RING, stackSize, hintsOnly, 47, 13, -76);
}
}
@@ -280,36 +311,69 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
moduleHatches.clear();
- // Check structure of multi.
- if (!structureCheck_EM(STRUCTURE_PIECE_MAIN, 63, 14, 1)) {
+ // Check structure of multi
+ if (isRenderActive) {
+ if (!structureCheck_EM(STRUCTURE_PIECE_SHAFT, 63, 14, 1)
+ || !structureCheck_EM(STRUCTURE_PIECE_FIRST_RING_AIR, 63, 14, -59)) {
+ destroyRenderer();
+ return false;
+ }
+ } else if (!structureCheck_EM(STRUCTURE_PIECE_MAIN, 63, 14, 1)) {
return false;
}
- // Check there is 1 input bus.
+ if (internalBattery != 0 && !isRenderActive) {
+ createRenderer();
+ }
+
+ // Check there is 1 input bus
if (mInputBusses.size() != 1) {
return false;
}
- // Make sure there are no energy hatches.
+ // Check there is 1 me output bus
+ {
+ if (mOutputBusses.size() != 1) {
+ return false;
+ }
- if (mEnergyHatches.size() > 0) {
- return false;
+ if (!(mOutputBusses.get(0) instanceof GT_MetaTileEntity_Hatch_OutputBus_ME)) {
+ return false;
+ }
}
- if (mExoticEnergyHatches.size() > 0) {
- return false;
+ // Make sure there are no energy hatches
+ {
+ if (mEnergyHatches.size() > 0) {
+ return false;
+ }
+
+ if (mExoticEnergyHatches.size() > 0) {
+ return false;
+ }
}
- // Make sure there is 1 input hatch.
+ // Make sure there is 1 input hatch
if (mInputHatches.size() != 1) {
return false;
}
- if (isUpgradeActive(26) && checkPiece(STRUCTURE_PIECE_SECOND_RING, 55, 11, -67)) {
- ringAmount = 2;
- if (isUpgradeActive(29) && checkPiece(STRUCTURE_PIECE_THIRD_RING, 47, 13, -76)) {
+ if (isUpgradeActive(26)) {
+ if (checkPiece(STRUCTURE_PIECE_SECOND_RING, 55, 11, -67)) {
+ ringAmount = 2;
+ }
+ if (isRenderActive && ringAmount >= 2 && !checkPiece(STRUCTURE_PIECE_SECOND_RING_AIR, 55, 11, -67)) {
+ destroyRenderer();
+ }
+ }
+
+ if (isUpgradeActive(29)) {
+ if (checkPiece(STRUCTURE_PIECE_THIRD_RING, 47, 13, -76)) {
ringAmount = 3;
}
+ if (isRenderActive && ringAmount == 3 && !checkPiece(STRUCTURE_PIECE_THIRD_RING_AIR, 47, 13, -76)) {
+ destroyRenderer();
+ }
}
return true;
@@ -325,10 +389,12 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
// Check and drain fuel
if (ticker % (5 * SECONDS) == 0) {
ticker = 0;
- FluidStack fluidInHatch = null;
+ startRecipeProcessing();
+ FluidStack[] fluidInHatch = null;
+ boolean fuelDrained = false;
if (mInputHatches != null && mInputHatches.size() != 0) {
- fluidInHatch = mInputHatches.get(0)
- .getFluid();
+ fluidInHatch = this.getStoredFluids()
+ .toArray(new FluidStack[0]);
}
int maxModuleCount = 8;
@@ -338,43 +404,67 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
if (upgrades[29]) {
maxModuleCount += 4;
}
- if (getBaseMetaTileEntity().isAllowedToWork()) {
+ if (mInputBusses.size() != 0) {
if (internalBattery == 0) {
-
- for (ItemStack itemStack : mInputBusses.get(0)
- .getRealInventory()) {
- if (itemStack != null && itemStack.isItemEqual(STELLAR_FUEL)) {
- stellarFuelAmount += itemStack.stackSize;
- itemStack.stackSize = 0;
+ GT_MetaTileEntity_Hatch_InputBus inputBus = mInputBusses.get(0);
+ ItemStack[] inputBusInventory = inputBus.getRealInventory();
+ if (inputBusInventory != null) {
+ for (int i = 0; i < inputBusInventory.length; i++) {
+ ItemStack itemStack = inputBusInventory[i];
+ if (itemStack != null && itemStack.isItemEqual(STELLAR_FUEL)) {
+ int stacksize = itemStack.stackSize;
+ if (inputBus instanceof GT_MetaTileEntity_Hatch_InputBus_ME meBus) {
+ ItemStack realItem = meBus.getRealInventory()[i + 16];
+ if (realItem == null) {
+ break;
+ }
+ stacksize = realItem.stackSize;
+ }
+ inputBus.decrStackSize(i, stacksize);
+ stellarFuelAmount += stacksize;
+ inputBus.updateSlots();
+ }
}
}
neededStartupFuel = calculateStartupFuelConsumption(this);
if (stellarFuelAmount >= neededStartupFuel) {
stellarFuelAmount -= neededStartupFuel;
increaseBattery(neededStartupFuel);
+ createRenderer();
}
} else {
fuelConsumption = (long) calculateFuelConsumption(this) * 5 * (batteryCharging ? 2 : 1);
- if (fluidInHatch != null && fluidInHatch.isFluidEqual(validFuelList.get(selectedFuelType))) {
- FluidStack fluidNeeded = new FluidStack(
- validFuelList.get(selectedFuelType),
- (int) fuelConsumption);
- FluidStack fluidReal = mInputHatches.get(0)
- .drain(fluidNeeded.amount, true);
- if (fluidReal == null || fluidReal.amount < fluidNeeded.amount) {
- reduceBattery(fuelConsumptionFactor);
- } else {
- totalFuelConsumed += getFuelFactor();
- if (batteryCharging) {
- increaseBattery(fuelConsumptionFactor);
+ if (fluidInHatch != null && fuelConsumption < Integer.MAX_VALUE) {
+ for (FluidStack fluid : fluidInHatch) {
+ if (fluid.isFluidEqual(validFuelList.get(selectedFuelType))) {
+ FluidStack fluidNeeded = new FluidStack(
+ validFuelList.get(selectedFuelType),
+ (int) fuelConsumption);
+ FluidStack fluidReal;
+ if (mInputHatches.get(0) instanceof GT_MetaTileEntity_Hatch_Input_ME meHatch) {
+ fluidReal = meHatch.drain(ForgeDirection.UNKNOWN, fluidNeeded, true);
+ } else {
+ fluidReal = mInputHatches.get(0)
+ .drain(fluidNeeded.amount, true);
+ }
+ if (fluidReal == null || fluidReal.amount < fluidNeeded.amount) {
+ reduceBattery(fuelConsumptionFactor);
+ } else {
+ totalFuelConsumed += getFuelFactor();
+ if (batteryCharging) {
+ increaseBattery(fuelConsumptionFactor);
+ }
+ }
+ fuelDrained = true;
}
}
+ if (!fuelDrained) {
+ reduceBattery(fuelConsumptionFactor);
+ }
} else {
reduceBattery(fuelConsumptionFactor);
}
}
- } else {
- reduceBattery(fuelConsumptionFactor);
}
determineCompositionMilestoneLevel();
@@ -383,6 +473,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
if (!debugMode) {
determineGravitonShardAmount();
}
+ if (upgrades[30] && gravitonShardEjection) {
+ ejectGravitonShards();
+ }
// Do module calculations and checks
if (moduleHatches.size() > 0 && internalBattery > 0 && moduleHatches.size() <= maxModuleCount) {
@@ -408,6 +501,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
}
if (mEfficiency < 0) mEfficiency = 0;
+ endRecipeProcessing();
}
}
}
@@ -456,7 +550,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
}
- private void createRenderBlock() {
+ private void createRenderer() {
IGregTechTileEntity gregTechTileEntity = this.getBaseMetaTileEntity();
@@ -464,9 +558,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
int y = gregTechTileEntity.getYCoord();
int z = gregTechTileEntity.getZCoord();
- double xOffset = 16 * getExtendedFacing().getRelativeBackInWorld().offsetX;
- double zOffset = 16 * getExtendedFacing().getRelativeBackInWorld().offsetZ;
- double yOffset = 16 * getExtendedFacing().getRelativeBackInWorld().offsetY;
+ double xOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetX;
+ double zOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetZ;
+ double yOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetY;
this.getBaseMetaTileEntity()
.getWorld()
@@ -480,25 +574,77 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
rendererTileEntity.setRenderSize(20);
rendererTileEntity.setRenderRotationSpeed(5);
+
+ switch (ringAmount) {
+ case 2 -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING_AIR, null, false, 63, 14, -59);
+ buildPiece(STRUCTURE_PIECE_SECOND_RING_AIR, null, false, 55, 11, -67);
+ }
+ case 3 -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING_AIR, null, false, 63, 14, -59);
+ buildPiece(STRUCTURE_PIECE_SECOND_RING_AIR, null, false, 55, 11, -67);
+ buildPiece(STRUCTURE_PIECE_THIRD_RING_AIR, null, false, 47, 13, -76);
+ }
+ default -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING_AIR, null, false, 63, 14, -59);
+ }
+ }
+
+ isRenderActive = true;
+ }
+
+ private void destroyRenderer() {
+
+ IGregTechTileEntity gregTechTileEntity = this.getBaseMetaTileEntity();
+
+ int x = gregTechTileEntity.getXCoord();
+ int y = gregTechTileEntity.getYCoord();
+ int z = gregTechTileEntity.getZCoord();
+
+ double xOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetX;
+ double zOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetZ;
+ double yOffset = 122 * getExtendedFacing().getRelativeBackInWorld().offsetY;
+
+ this.getBaseMetaTileEntity()
+ .getWorld()
+ .setBlock((int) (x + xOffset), (int) (y + yOffset), (int) (z + zOffset), Blocks.air);
+
+ switch (ringAmount) {
+ case 2 -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING, null, false, 63, 14, -59);
+ buildPiece(STRUCTURE_PIECE_SECOND_RING, null, false, 55, 11, -67);
+ }
+ case 3 -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING, null, false, 63, 14, -59);
+ buildPiece(STRUCTURE_PIECE_SECOND_RING, null, false, 55, 11, -67);
+ buildPiece(STRUCTURE_PIECE_THIRD_RING, null, false, 47, 13, -76);
+ }
+ default -> {
+ buildPiece(STRUCTURE_PIECE_FIRST_RING, null, false, 63, 14, -59);
+ }
+ }
+
+ isRenderActive = false;
+ }
+
+ @Override
+ public void onBlockDestroyed() {
+ super.onBlockDestroyed();
+ destroyRenderer();
}
@Override
public String[] getInfoData() {
ArrayList<String> str = new ArrayList<>(Arrays.asList(super.getInfoData()));
- str.add(TOOLTIP_BAR);
+ str.add(SCANNER_INFO_BAR);
str.add("Number of Rings: " + EnumChatFormatting.GOLD + ringAmount);
str.add("Total Upgrades Unlocked: " + EnumChatFormatting.GOLD + getTotalActiveUpgrades());
str.add("Connected Modules: " + EnumChatFormatting.GOLD + moduleHatches.size());
- str.add(TOOLTIP_BAR);
+ str.add(SCANNER_INFO_BAR);
return str.toArray(new String[0]);
}
@Override
- public final void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) {
- createRenderBlock();
- }
-
- @Override
public void onRemoval() {
if (moduleHatches != null && moduleHatches.size() > 0) {
for (GT_MetaTileEntity_EM_BaseModule module : moduleHatches) {
@@ -528,6 +674,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
buildContext.addSyncedWindow(MILESTONE_WINDOW_ID, this::createMilestoneWindow);
buildContext.addSyncedWindow(INDIVIDUAL_MILESTONE_WINDOW_ID, this::createIndividualMilestoneWindow);
buildContext.addSyncedWindow(MANUAL_INSERTION_WINDOW_ID, this::createManualInsertionWindow);
+ buildContext.addSyncedWindow(GENERAL_INFO_WINDOW_ID, this::createGeneralInfoWindow);
builder.widget(
new ButtonWidget().setOnClick(
(clickData, widget) -> {
@@ -571,6 +718,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.setSize(74, 34))
.widget(createPowerSwitchButton())
.widget(createBatteryButton(builder))
+ .widget(createEjectionSwitch(builder))
.widget(new FakeSyncWidget.BooleanSyncer(() -> getBaseMetaTileEntity().isAllowedToWork(), val -> {
if (val) {
getBaseMetaTileEntity().enableWorking();
@@ -605,10 +753,21 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
button.add(TecTechUITextures.BUTTON_CELESTIAL_32x32);
button.add(TecTechUITextures.OVERLAY_BUTTON_FLAG);
return button.toArray(new IDrawable[0]);
+
})
.addTooltip(translateToLocal("fog.button.milestones.tooltip"))
.setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(174, 91));
+ .setPos(174, 91))
+ .widget(
+ new ButtonWidget().setOnClick(
+ (clickData, widget) -> {
+ if (!widget.isClient()) widget.getContext()
+ .openSyncedWindow(GENERAL_INFO_WINDOW_ID);
+ })
+ .setSize(18, 18)
+ .addTooltip(translateToLocal("gt.blockmachines.multimachine.FOG.clickhere"))
+ .setPos(172, 67)
+ .setTooltipShowUpDelay(TOOLTIP_DELAY));
}
@Override
@@ -647,6 +806,40 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
return (ButtonWidget) button;
}
+ protected ButtonWidget createEjectionSwitch(IWidgetBuilder<?> builder) {
+ Widget button = new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (upgrades[30]) {
+ gravitonShardEjection = !gravitonShardEjection;
+ }
+ })
+ .setPlayClickSound(upgrades[30])
+ .setBackground(() -> {
+ List<UITexture> ret = new ArrayList<>();
+ if (!upgrades[30]) {
+ return ret.toArray(new IDrawable[0]);
+ }
+ if (gravitonShardEjection) {
+ ret.add(TecTechUITextures.BUTTON_CELESTIAL_32x32);
+ ret.add(TecTechUITextures.OVERLAY_EJECTION_ON);
+ } else {
+ ret.add(TecTechUITextures.BUTTON_CELESTIAL_32x32);
+ ret.add(TecTechUITextures.OVERLAY_EJECTION_LOCKED);
+ }
+ return ret.toArray(new IDrawable[0]);
+ })
+ .attachSyncer(
+ new FakeSyncWidget.BooleanSyncer(() -> gravitonShardEjection, val -> gravitonShardEjection = val),
+ builder)
+ .setPos(26, 91)
+ .setSize(16, 16)
+ .attachSyncer(new FakeSyncWidget.BooleanSyncer(() -> upgrades[30], val -> upgrades[30] = val), builder);
+ if (upgrades[30]) {
+ button.addTooltip(translateToLocal("fog.button.ejection.tooltip"));
+ button.setTooltipShowUpDelay(TOOLTIP_DELAY);
+ }
+ return (ButtonWidget) button;
+ }
+
protected Widget createBatteryButton(IWidgetBuilder<?> builder) {
Widget button = new ButtonWidget().setOnClick((clickData, widget) -> {
TecTech.proxy.playSound(getBaseMetaTileEntity(), "fx_click");
@@ -750,6 +943,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.addTooltip(translateToLocal("gt.blockmachines.multimachine.FOG.fuelinfo.2"))
.addTooltip(translateToLocal("gt.blockmachines.multimachine.FOG.fuelinfo.3"))
.addTooltip(translateToLocal("gt.blockmachines.multimachine.FOG.fuelinfo.4"))
+ .addTooltip(translateToLocal("gt.blockmachines.multimachine.FOG.fuelinfo.5"))
.setTooltipShowUpDelay(TOOLTIP_DELAY))
.widget(
TextWidget.localised("gt.blockmachines.multimachine.FOG.fueltype")
@@ -922,72 +1116,56 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_RED, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(37, 70)
- .addTooltip(milestoneProgressText(0, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(37, 70))
.widget(
new ProgressBar().setProgress(() -> recipeMilestonePercentage)
.setDirection(ProgressBar.Direction.RIGHT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_PURPLE, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(233, 70)
- .addTooltip(milestoneProgressText(1, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(233, 70))
.widget(
new ProgressBar().setProgress(() -> fuelMilestonePercentage)
.setDirection(ProgressBar.Direction.RIGHT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_BLUE, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(37, 215)
- .addTooltip(milestoneProgressText(2, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(37, 215))
.widget(
new ProgressBar().setProgress(() -> structureMilestonePercentage)
.setDirection(ProgressBar.Direction.RIGHT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_RAINBOW, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(233, 215)
- .addTooltip(milestoneProgressText(3, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(233, 215))
.widget(
new ProgressBar().setProgress(() -> invertedPowerMilestonePercentage)
.setDirection(ProgressBar.Direction.LEFT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_RED_INVERTED, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(37, 70)
- .addTooltip(milestoneProgressText(0, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(37, 70))
.widget(
new ProgressBar().setProgress(() -> invertedRecipeMilestonePercentage)
.setDirection(ProgressBar.Direction.LEFT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_PURPLE_INVERTED, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(233, 70)
- .addTooltip(milestoneProgressText(1, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(233, 70))
.widget(
new ProgressBar().setProgress(() -> invertedFuelMilestonePercentage)
.setDirection(ProgressBar.Direction.LEFT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_BLUE_INVERTED, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(37, 215)
- .addTooltip(milestoneProgressText(2, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(37, 215))
.widget(
new ProgressBar().setProgress(() -> invertedStructureMilestonePercentage)
.setDirection(ProgressBar.Direction.LEFT)
.setTexture(TecTechUITextures.PROGRESSBAR_GODFORGE_MILESTONE_RAINBOW_INVERTED, 130)
.setSynced(true, false)
.setSize(130, 7)
- .setPos(233, 215)
- .addTooltip(milestoneProgressText(3, false))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .setPos(233, 215))
.widget(
ButtonWidget.closeWindowButton(true)
.setPos(382, 6));
@@ -1076,7 +1254,21 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.setScale(0.7f)
.setDefaultColor(EnumChatFormatting.WHITE)
.setSize(140, 30)
- .setPos(5, 90));
+ .setPos(5, 90))
+ .widget(new ButtonWidget().setOnClick((clickData, widget) -> {
+ TecTech.proxy.playSound(getBaseMetaTileEntity(), "fx_click");
+ if (clickData.mouseButton == 0) {
+ noFormatting = !noFormatting;
+ }
+ })
+ .setSize(10, 10)
+ .addTooltip(translateToLocal("fog.button.formatting.tooltip"))
+ .setBackground(TecTechUITextures.OVERLAY_CYCLIC_BLUE)
+ .setPos(5, 135)
+ .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ .attachSyncer(
+ new FakeSyncWidget.BooleanSyncer(() -> noFormatting, val -> noFormatting = val),
+ builder));
return builder.build();
}
@@ -1111,15 +1303,29 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
private int[] followupUpgrades = new int[] {};
private boolean allPrereqRequired = false;
private boolean isUpradeSplitStart = false;
+ private boolean doesCurrentUpgradeRequireExtraMats = false;
private boolean[] upgrades = new boolean[31];
+ private boolean[] materialPaidUpgrades = new boolean[7];
protected ModularWindow createUpgradeTreeWindow(final EntityPlayer player) {
final Scrollable scrollable = new Scrollable().setVerticalScroll();
final int PARENT_WIDTH = 300;
- final int PARENT_HEIGHT = 1000;
+ final int PARENT_HEIGHT = 300;
ModularWindow.Builder builder = ModularWindow.builder(PARENT_WIDTH, PARENT_HEIGHT);
- scrollable.widget(
- createUpgradeBox(0, 0, 3, new int[] {}, false, new int[] { 1 }, false, 0, new Pos2d(126, 56), scrollable))
+ scrollable
+ .widget(
+ createUpgradeBox(
+ 0,
+ 0,
+ 3,
+ new int[] {},
+ false,
+ new int[] { 1 },
+ false,
+ true,
+ 0,
+ new Pos2d(126, 56),
+ scrollable))
.widget(
createUpgradeBox(
1,
@@ -1129,6 +1335,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 2, 3 },
false,
+ false,
1,
new Pos2d(126, 116),
scrollable))
@@ -1141,6 +1348,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 4, 5 },
false,
+ false,
1,
new Pos2d(96, 176),
scrollable))
@@ -1153,6 +1361,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 5, 6 },
false,
+ false,
1,
new Pos2d(156, 176),
scrollable))
@@ -1165,6 +1374,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 8 },
false,
+ false,
1,
new Pos2d(66, 236),
scrollable))
@@ -1177,6 +1387,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 7 },
false,
+ true,
1,
new Pos2d(126, 236),
scrollable))
@@ -1189,6 +1400,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 10 },
false,
+ false,
1,
new Pos2d(186, 236),
scrollable))
@@ -1201,6 +1413,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 8, 9, 10 },
false,
+ true,
2,
new Pos2d(126, 296),
scrollable))
@@ -1213,6 +1426,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
true,
new int[] { 11 },
false,
+ false,
2,
new Pos2d(56, 356),
scrollable))
@@ -1225,6 +1439,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] {},
false,
+ false,
2,
new Pos2d(126, 356),
scrollable))
@@ -1237,6 +1452,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
true,
new int[] { 11 },
false,
+ false,
2,
new Pos2d(196, 356),
scrollable))
@@ -1249,6 +1465,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 12, 13, 14 },
false,
+ true,
2,
new Pos2d(126, 416),
scrollable))
@@ -1261,6 +1478,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 17 },
true,
+ false,
3,
new Pos2d(66, 476),
scrollable))
@@ -1273,6 +1491,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 18 },
true,
+ false,
3,
new Pos2d(126, 476),
scrollable))
@@ -1285,6 +1504,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 15, 19 },
true,
+ false,
3,
new Pos2d(186, 476),
scrollable))
@@ -1297,6 +1517,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] {},
false,
+ false,
4,
new Pos2d(246, 496),
scrollable))
@@ -1309,6 +1530,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] {},
false,
+ false,
4,
new Pos2d(6, 556),
scrollable))
@@ -1321,6 +1543,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 16, 20 },
false,
+ false,
3,
new Pos2d(66, 536),
scrollable))
@@ -1333,6 +1556,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 21 },
false,
+ false,
3,
new Pos2d(126, 536),
scrollable))
@@ -1345,6 +1569,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 22 },
false,
+ false,
3,
new Pos2d(186, 536),
scrollable))
@@ -1357,6 +1582,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 23 },
false,
+ false,
3,
new Pos2d(66, 596),
scrollable))
@@ -1369,6 +1595,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 23 },
false,
+ false,
3,
new Pos2d(126, 596),
scrollable))
@@ -1381,6 +1608,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 23 },
false,
+ false,
3,
new Pos2d(186, 596),
scrollable))
@@ -1393,6 +1621,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 24 },
false,
+ false,
4,
new Pos2d(126, 656),
scrollable))
@@ -1405,6 +1634,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 25 },
false,
+ false,
5,
new Pos2d(126, 718),
scrollable))
@@ -1417,6 +1647,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 26 },
false,
+ false,
6,
new Pos2d(36, 758),
scrollable))
@@ -1429,6 +1660,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 27 },
false,
+ true,
7,
new Pos2d(36, 848),
scrollable))
@@ -1441,6 +1673,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 28 },
false,
+ false,
8,
new Pos2d(126, 888),
scrollable))
@@ -1453,6 +1686,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 29 },
false,
+ false,
9,
new Pos2d(216, 848),
scrollable))
@@ -1465,6 +1699,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] { 30 },
false,
+ true,
10,
new Pos2d(216, 758),
scrollable))
@@ -1477,6 +1712,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
false,
new int[] {},
false,
+ true,
12,
new Pos2d(126, 798),
scrollable))
@@ -1484,55 +1720,54 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
builder.widget(
new DrawableWidget().setDrawable(TecTechUITextures.BACKGROUND_STAR)
- .setPos(0, 350)
+ .setPos(0, 0)
.setSize(300, 300))
.widget(
scrollable.setSize(292, 292)
- .setPos(4, 354))
+ .setPos(4, 4))
.widget(
ButtonWidget.closeWindowButton(true)
- .setPos(282, 354));
+ .setPos(282, 4));
if (debugMode) {
- builder.widget(
- new MultiChildWidget()
- .addChild(
- new ButtonWidget().setOnClick((clickData, widget) -> upgrades = new boolean[31])
- .setSize(40, 15)
- .setBackground(GT_UITextures.BUTTON_STANDARD)
- .addTooltip(translateToLocal("fog.debug.resetbutton.tooltip"))
- .setTooltipShowUpDelay(TOOLTIP_DELAY))
- .addChild(
- new TextWidget(translateToLocal("fog.debug.resetbutton.text"))
- .setTextAlignment(Alignment.Center)
- .setScale(0.57f)
- .setMaxWidth(36)
- .setPos(3, 3))
- .addChild(
- new NumericWidget().setSetter(val -> gravitonShardsAvailable = (int) val)
- .setGetter(() -> gravitonShardsAvailable)
- .setBounds(0, 112)
- .setDefaultValue(0)
- .setScrollValues(1, 4, 64)
- .setTextAlignment(Alignment.Center)
- .setTextColor(Color.WHITE.normal)
- .setSize(25, 18)
- .setPos(4, 16)
- .addTooltip(translateToLocal("fog.debug.gravitonshardsetter.tooltip"))
- .setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD))
- .addChild(
- new ButtonWidget().setOnClick((clickData, widget) -> Arrays.fill(upgrades, true))
- .setSize(40, 15)
- .setBackground(GT_UITextures.BUTTON_STANDARD)
- .addTooltip(translateToLocal("fog.debug.unlockall.text"))
- .setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(0, 35))
- .addChild(
- new TextWidget(translateToLocal("fog.debug.unlockall.text")).setTextAlignment(Alignment.Center)
- .setScale(0.57f)
- .setMaxWidth(36)
- .setPos(3, 38))
- .setPos(4, 354));
+ builder.widget(new MultiChildWidget().addChild(new ButtonWidget().setOnClick((clickData, widget) -> {
+ upgrades = new boolean[31];
+ materialPaidUpgrades = new boolean[7];
+ })
+ .setSize(40, 15)
+ .setBackground(GT_UITextures.BUTTON_STANDARD)
+ .addTooltip(translateToLocal("fog.debug.resetbutton.tooltip"))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY))
+ .addChild(
+ new TextWidget(translateToLocal("fog.debug.resetbutton.text")).setTextAlignment(Alignment.Center)
+ .setScale(0.57f)
+ .setMaxWidth(36)
+ .setPos(3, 3))
+ .addChild(
+ new NumericWidget().setSetter(val -> gravitonShardsAvailable = (int) val)
+ .setGetter(() -> gravitonShardsAvailable)
+ .setBounds(0, 112)
+ .setDefaultValue(0)
+ .setScrollValues(1, 4, 64)
+ .setTextAlignment(Alignment.Center)
+ .setTextColor(Color.WHITE.normal)
+ .setSize(25, 18)
+ .setPos(4, 16)
+ .addTooltip(translateToLocal("fog.debug.gravitonshardsetter.tooltip"))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD))
+ .addChild(
+ new ButtonWidget().setOnClick((clickData, widget) -> Arrays.fill(upgrades, true))
+ .setSize(40, 15)
+ .setBackground(GT_UITextures.BUTTON_STANDARD)
+ .addTooltip(translateToLocal("fog.debug.unlockall.text"))
+ .setTooltipShowUpDelay(TOOLTIP_DELAY)
+ .setPos(0, 35))
+ .addChild(
+ new TextWidget(translateToLocal("fog.debug.unlockall.text")).setTextAlignment(Alignment.Center)
+ .setScale(0.57f)
+ .setMaxWidth(36)
+ .setPos(3, 38))
+ .setPos(4, 4));
}
return builder.build();
@@ -1582,7 +1817,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
int WIDTH = 250;
int HEIGHT = 250;
int LORE_POS = 110;
- if (currentUpgradeID == 0) {
+ if (currentUpgradeID == 0 || currentUpgradeID == 30) {
WIDTH = 300;
HEIGHT = 300;
LORE_POS = 85;
@@ -1611,14 +1846,14 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.addChild(
new TextWidget(translateToLocal("fog.upgrade.text." + (currentUpgradeID)))
.setTextAlignment(Alignment.CenterLeft)
- .setDefaultColor(0x9c9c9c)
+ .setDefaultColor(EnumChatFormatting.WHITE)
.setSize(WIDTH - 15, LORE_POS - 30)
.setPos(9, 30))
.addChild(
new TextWidget(
EnumChatFormatting.ITALIC + translateToLocal("fog.upgrade.lore." + (currentUpgradeID)))
.setTextAlignment(Alignment.Center)
- .setDefaultColor(0x9c9c9c)
+ .setDefaultColor(0xbbbdbd)
.setSize(WIDTH - 15, (int) (HEIGHT * 0.9) - LORE_POS)
.setPos(9, LORE_POS))
.addChild(
@@ -1656,26 +1891,30 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
unlockedPrereqUpgrades++;
}
}
- if (allPrereqRequired) {
- if (unlockedPrereqUpgrades == prereqUpgrades.length
- && gravitonShardsAvailable >= gravitonShardCost) {
- gravitonShardsAvailable -= gravitonShardCost;
- gravitonShardsSpent += gravitonShardCost;
- upgrades[currentUpgradeID] = true;
- }
- } else if (unlockedPrereqUpgrades > 0 || prereqUpgrades.length == 0) {
- if (isUpradeSplitStart) {
- for (int splitUpgrade : FIRST_SPLIT_UPGRADES) {
- if (upgrades[splitUpgrade]) {
- unlockedSplitUpgrades++;
+ if (!doesCurrentUpgradeRequireExtraMats
+ || materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(currentUpgradeID)]) {
+ if (allPrereqRequired) {
+ if (unlockedPrereqUpgrades == prereqUpgrades.length
+ && gravitonShardsAvailable >= gravitonShardCost) {
+ gravitonShardsAvailable -= gravitonShardCost;
+ gravitonShardsSpent += gravitonShardCost;
+ upgrades[currentUpgradeID] = true;
+ }
+ } else if (unlockedPrereqUpgrades > 0 || prereqUpgrades.length == 0) {
+ if (isUpradeSplitStart) {
+ for (int splitUpgrade : FIRST_SPLIT_UPGRADES) {
+ if (upgrades[splitUpgrade]) {
+ unlockedSplitUpgrades++;
+ }
}
+ unlockedSplitUpgrades -= (ringAmount - 1);
+ }
+ if (unlockedSplitUpgrades <= 0 && gravitonShardsAvailable >= gravitonShardCost) {
+ gravitonShardsAvailable -= gravitonShardCost;
+ gravitonShardsSpent += gravitonShardCost;
+ upgrades[currentUpgradeID] = true;
}
- unlockedSplitUpgrades -= (ringAmount - 1);
- }
- if (unlockedSplitUpgrades <= 0 && gravitonShardsAvailable >= gravitonShardCost) {
- gravitonShardsAvailable -= gravitonShardCost;
- gravitonShardsSpent += gravitonShardCost;
- upgrades[currentUpgradeID] = true;
}
}
} else {
@@ -1706,22 +1945,51 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.setScale(0.7f)
.setMaxWidth(36)
.setPos(3, 5))
- .addChild(new ButtonWidget().setOnClick((clickData, widget) -> {
- if (!widget.isClient()) {
- widget.getContext()
- .openSyncedWindow(MANUAL_INSERTION_WINDOW_ID);
- widget.getContext()
- .closeWindow(INDIVIDUAL_UPGRADE_WINDOW_ID);
- widget.getContext()
- .closeWindow(UPGRADE_TREE_WINDOW_ID);
- }
- })
- .setBackground(TecTechUITextures.BUTTON_CELESTIAL_32x32)
- .setPos(50, 50))
.setPos(WIDTH / 2 - 21, (int) (HEIGHT * 0.9)));
+ if (Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .contains(currentUpgradeID)) {
+ builder.widget(createMaterialInputButton(currentUpgradeID, WIDTH / 2 - 40, (int) (HEIGHT * 0.9), builder));
+ }
return builder.build();
}
+ private Widget createMaterialInputButton(int upgradeID, int xCoord, int yCoord, IWidgetBuilder<?> builder) {
+ return new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (!widget.isClient() && doesCurrentUpgradeRequireExtraMats) {
+ widget.getContext()
+ .openSyncedWindow(MANUAL_INSERTION_WINDOW_ID);
+ widget.getContext()
+ .closeWindow(INDIVIDUAL_UPGRADE_WINDOW_ID);
+ widget.getContext()
+ .closeWindow(UPGRADE_TREE_WINDOW_ID);
+ }
+ })
+ .setPlayClickSound(doesCurrentUpgradeRequireExtraMats)
+ .setBackground(() -> {
+ if (doesCurrentUpgradeRequireExtraMats) {
+ if (materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(upgradeID)]) {
+ return new IDrawable[] { TecTechUITextures.BUTTON_BOXED_CHECKMARK_18x18 };
+ } else {
+ return new IDrawable[] { TecTechUITextures.BUTTON_BOXED_EXCLAMATION_POINT_18x18 };
+ }
+ } else {
+ return new IDrawable[] { GT_UITextures.TRANSPARENT };
+ }
+ })
+ .setPos(xCoord, yCoord)
+ .setSize(15, 15)
+ .dynamicTooltip(this::upgradeMaterialRequirements)
+ .addTooltip(EnumChatFormatting.GRAY + translateToLocal("fog.button.materialrequirements.tooltip.clickhere"))
+ .attachSyncer(
+ new FakeSyncWidget.BooleanSyncer(
+ () -> materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(upgradeID)],
+ val -> materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(upgradeID)] = val),
+ builder);
+ }
+
/**
* @param upgradeID ID of the upgrade
* @param colorCode Number deciding which colored background to use, 0 for blue, 1 for purple, 2 for
@@ -1733,12 +2001,13 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
* unlock this one. True means ALL, False means AT LEAST ONE
* @param followingUpgradeIDs IDs of the following upgrades directly connected to the current one
* @param isStartOfSplit Whether this upgrade is one of the initial split upgrades
+ * @param requiresExtraMaterials Whether this upgrade requires materials other than graviton shards to unlock
* @param shardCost How many graviton shards are needed to unlock this upgrade
* @param pos Position of the upgrade inside the scrollableWidget
*/
private Widget createUpgradeBox(int upgradeID, int colorCode, int milestone, int[] prerequisiteUpgradeIDs,
- boolean requireAllPrerequisites, int[] followingUpgradeIDs, boolean isStartOfSplit, int shardCost, Pos2d pos,
- IWidgetBuilder<?> builder) {
+ boolean requireAllPrerequisites, int[] followingUpgradeIDs, boolean isStartOfSplit,
+ boolean requiresExtraMaterials, int shardCost, Pos2d pos, IWidgetBuilder<?> builder) {
return new MultiChildWidget().addChild(new ButtonWidget().setOnClick((clickData, widget) -> {
currentUpgradeID = upgradeID;
currentColorCode = colorCode;
@@ -1748,51 +2017,46 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
allPrereqRequired = requireAllPrerequisites;
followupUpgrades = followingUpgradeIDs;
isUpradeSplitStart = isStartOfSplit;
+ doesCurrentUpgradeRequireExtraMats = requiresExtraMaterials;
if (!widget.isClient()) widget.getContext()
.openSyncedWindow(INDIVIDUAL_UPGRADE_WINDOW_ID);
})
.setSize(40, 15)
.setBackground(() -> {
if (upgrades[upgradeID]) {
- return new IDrawable[] { GT_UITextures.BUTTON_STANDARD_PRESSED };
+ return new IDrawable[] { TecTechUITextures.BUTTON_SPACE_PRESSED_32x16 };
} else {
- return new IDrawable[] { GT_UITextures.BUTTON_STANDARD };
+ return new IDrawable[] { TecTechUITextures.BUTTON_SPACE_32x16 };
}
})
.addTooltip(translateToLocal("fog.upgrade.tt." + upgradeID))
.setTooltipShowUpDelay(TOOLTIP_DELAY))
.addChild(
- new TextWidget(translateToLocal("fog.upgrade.tt." + upgradeID)).setTextAlignment(Alignment.Center)
- .setScale(0.57f)
- .setMaxWidth(36)
- .setPos(3, 3))
+ new TextWidget(translateToLocal("fog.upgrade.tt.short." + upgradeID)).setScale(0.8f)
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.Center)
+ .setSize(34, 9)
+ .setPos(3, 4))
.setPos(pos)
.attachSyncer(
new FakeSyncWidget.BooleanSyncer(() -> upgrades[upgradeID], val -> upgrades[upgradeID] = val),
builder);
}
- List<ItemStack> inputs = new ArrayList<>(
- Arrays.asList(
- ItemList.Electric_Motor_UMV.get(13L),
- ItemList.Electric_Pump_UXV.get(32L),
- ItemList.Electric_Piston_UXV.get(32L),
- ItemList.Robot_Arm_UXV.get(32L),
- ItemList.Superconducting_Magnet_Solenoid_UIV.get(48L),
- ItemList.NaquadriaSupersolid.get(32L),
- CustomItemList.astralArrayFabricator.get(36L),
- CustomItemList.Machine_Multi_EyeOfHarmony.get(2L)));
-
protected ModularWindow createManualInsertionWindow(final EntityPlayer player) {
+ ItemStack[] inputs = godforgeUpgradeMats.get(currentUpgradeID);
final int WIDTH = 189;
- final int HEIGHT = 84;
+ final int HEIGHT = 106;
final int PARENT_WIDTH = getGUIWidth();
final int PARENT_HEIGHT = getGUIHeight();
final MultiChildWidget columns = new MultiChildWidget();
final DynamicPositionedColumn column1 = new DynamicPositionedColumn();
final DynamicPositionedColumn column2 = new DynamicPositionedColumn();
final DynamicPositionedColumn column3 = new DynamicPositionedColumn();
- List<DynamicPositionedColumn> columnList = Arrays.asList(column1, column2, column3);
+ final DynamicPositionedColumn column4 = new DynamicPositionedColumn();
+ final DynamicPositionedColumn column5 = new DynamicPositionedColumn();
+ final DynamicPositionedColumn column6 = new DynamicPositionedColumn();
+ List<DynamicPositionedColumn> columnList = Arrays.asList(column1, column2, column3, column4, column5, column6);
ModularWindow.Builder builder = ModularWindow.builder(WIDTH, HEIGHT);
builder.setBackground(GT_UITextures.BACKGROUND_SINGLEBLOCK_DEFAULT);
builder.setGuiTint(getGUIColorization());
@@ -1809,66 +2073,413 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
.phantom(false)
.background(getGUITextureSet().getItemSlot())
.build()
- .setPos(111, 6));
- for (int i = 0; i < inputs.size(); i++) {
+ .setPos(112, 6));
+ builder.widget(new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (!widget.isClient()) {
+ widget.getWindow()
+ .closeWindow();
+ widget.getContext()
+ .openSyncedWindow(UPGRADE_TREE_WINDOW_ID);
+ widget.getContext()
+ .openSyncedWindow(INDIVIDUAL_UPGRADE_WINDOW_ID);
+ }
+ })
+ .setBackground(ModularUITextures.VANILLA_BACKGROUND, new Text("x"))
+ .setPos(179, 0)
+ .setSize(10, 10));
+ builder.widget(new MultiChildWidget().addChild(new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (!widget.isClient()) {
+ ArrayList<ItemStack> list = new ArrayList<>(inputSlotHandler.getStacks());
+ list.removeIf(Objects::isNull);
+ int foundInputs = 0;
+ int[] foundInputIndices = new int[inputs.length];
+ for (ItemStack inputStack : list) {
+ for (ItemStack requiredStack : inputs) {
+ if (ItemStack.areItemStacksEqual(requiredStack, inputStack)) {
+ foundInputIndices[foundInputs] = inputSlotHandler.getStacks()
+ .indexOf(inputStack);
+ foundInputs++;
+ }
+ }
+ }
+ if (foundInputs == inputs.length) {
+ for (int index : foundInputIndices) {
+ inputSlotHandler.extractItem(index, inputSlotHandler.getStackInSlot(index).stackSize, false);
+ }
+ materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(currentUpgradeID)] = true;
+ }
+ }
+ })
+ .setPlayClickSound(true)
+ .setBackground(GT_UITextures.BUTTON_STANDARD)
+ .setSize(179, 18))
+ .addChild(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.consumeUpgradeMats"))
+ .setTextAlignment(Alignment.Center)
+ .setScale(0.75f)
+ .setPos(0, 1)
+ .setSize(179, 18))
+ .setPos(5, 82)
+ .setSize(179, 16));
+
+ int uniqueItems = inputs.length;
+ for (int i = 0; i < 12; i++) {
int index = i;
int cleanDiv4 = index / 4;
- builder.widget(
- new DrawableWidget().setDrawable(GT_UITextures.BUTTON_STANDARD_PRESSED)
- .setPos(6 + cleanDiv4 * 36, 6 + index % 4 * 18)
- .setSize(18, 18));
- columnList.get(cleanDiv4)
- .addChild(
- new ItemDrawable().setItem(inputs.get(index))
- .asWidget()
- .dynamicTooltip(() -> {
- List<String> tooltip = new ArrayList<>();
- tooltip.add(
- inputs.get(index) != null ? inputs.get(index)
- .getDisplayName() : "");
- return tooltip;
- })
- .setSize(16, 16));
- }
-
- columns.addChild(
- column1.setSpace(2)
- .setAlignment(MainAxisAlignment.SPACE_BETWEEN)
- .setSize(34, 72)
- .setPos(1, 1));
- columns.addChild(
- column2.setSpace(2)
- .setAlignment(MainAxisAlignment.SPACE_BETWEEN)
- .setSize(34, 72)
- .setPos(37, 1));
- columns.addChild(
- column3.setSpace(2)
- .setAlignment(MainAxisAlignment.SPACE_BETWEEN)
- .setSize(34, 72)
- .setPos(73, 1));
+ if (i < uniqueItems) {
+ builder.widget(
+ new DrawableWidget().setDrawable(GT_UITextures.BUTTON_STANDARD_PRESSED)
+ .setPos(5 + cleanDiv4 * 36, 6 + index % 4 * 18)
+ .setSize(18, 18));
+ columnList.get(cleanDiv4)
+ .addChild(
+ new ItemDrawable().setItem(inputs[index])
+ .asWidget()
+ .dynamicTooltip(() -> {
+ List<String> tooltip = new ArrayList<>();
+ tooltip.add(inputs[index] != null ? inputs[index].getDisplayName() : "");
+ return tooltip;
+ })
+ .setSize(16, 16));
+ columnList.get(cleanDiv4 + 3)
+ .addChild(
+ new TextWidget("x" + inputs[i].stackSize).setTextAlignment(Alignment.CenterLeft)
+ .setScale(0.8f)
+ .setSize(18, 8));
+ } else {
+ builder.widget(
+ new DrawableWidget().setDrawable(GT_UITextures.BUTTON_STANDARD_DISABLED)
+ .setPos(5 + cleanDiv4 * 36, 6 + index % 4 * 18)
+ .setSize(18, 18));
+ }
+ }
+
+ int counter = 0;
+ for (DynamicPositionedColumn column : columnList) {
+ int spacing = 2;
+ int xCord = 1 + counter * 36;
+ int yCord = 1;
+ if (counter > 2) {
+ spacing = 10;
+ xCord = 19 + (counter - 3) * 36;
+ yCord = 5;
+ }
+ columns.addChild(
+ column.setSpace(spacing)
+ .setAlignment(MainAxisAlignment.SPACE_BETWEEN)
+ .setSize(16, 72)
+ .setPos(xCord, yCord));
+ counter++;
+ }
+
builder.widget(
- columns.setSize(72, 72)
- .setPos(6, 6));
+ columns.setSize(108, 72)
+ .setPos(5, 6));
+
+ return builder.build();
+ }
+
+ protected ModularWindow createGeneralInfoWindow(final EntityPlayer player) {
+ final Scrollable scrollable = new Scrollable().setVerticalScroll();
+ final int WIDTH = 300;
+ final int HEIGHT = 300;
+ ModularWindow.Builder builder = ModularWindow.builder(WIDTH, HEIGHT);
+
+ builder.setDraggable(true);
+ scrollable.widget(
+ new TextWidget(EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.introduction"))
+ .setDefaultColor(EnumChatFormatting.DARK_PURPLE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(7, 13)
+ .setSize(280, 15))
+ .widget(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.introductioninfotext"))
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 30)
+ .setSize(280, 50))
+ .widget(
+ new TextWidget(
+ EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.tableofcontents"))
+ .setDefaultColor(EnumChatFormatting.AQUA)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 80)
+ .setSize(150, 15))
+ .widget(
+ new ButtonWidget().setOnClick((clickData, widget) -> scrollable.setVerticalScrollOffset(150))
+ .setBackground(
+ new Text(EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.fuel"))
+ .alignment(Alignment.CenterLeft)
+ .color(0x55ffff))
+ .setPos(7, 95)
+ .setSize(150, 15))
+ .widget(
+ new ButtonWidget().setOnClick((clickData, widget) -> scrollable.setVerticalScrollOffset(434))
+ .setBackground(
+ new Text(
+ EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.modules"))
+ .alignment(Alignment.CenterLeft)
+ .color(0x55ffff))
+ .setPos(7, 110)
+ .setSize(150, 15))
+ .widget(
+ new ButtonWidget().setOnClick((clickData, widget) -> scrollable.setVerticalScrollOffset(1088))
+ .setBackground(
+ new Text(
+ EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.upgrades"))
+ .alignment(Alignment.CenterLeft)
+ .color(0x55ffff))
+ .setPos(7, 125)
+ .setSize(150, 15))
+ .widget(
+ new ButtonWidget().setOnClick((clickData, widget) -> scrollable.setVerticalScrollOffset(1412))
+ .setBackground(
+ new Text(
+ EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.milestones"))
+ .alignment(Alignment.CenterLeft)
+ .color(0x55ffff))
+ .setPos(7, 140)
+ .setSize(150, 15))
+ .widget(
+ TextWidget.dynamicText(this::inversionHeaderText)
+ .setDefaultColor(EnumChatFormatting.WHITE)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 155)
+ .setSize(150, 15))
+ .widget(new ButtonWidget().setOnClick((clickData, widget) -> {
+ if (inversion) {
+ scrollable.setVerticalScrollOffset(1766);
+ }
+ })
+ .setPlayClickSound(inversion)
+ .setPos(7, 155)
+ .setSize(150, 15)
+ .attachSyncer(new FakeSyncWidget.BooleanSyncer(() -> inversion, (val) -> inversion = val), scrollable))
+ .widget(
+ new TextWidget(
+ EnumChatFormatting.BOLD + "§N" + translateToLocal("gt.blockmachines.multimachine.FOG.fuel"))
+ .setDefaultColor(EnumChatFormatting.DARK_PURPLE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(127, 160)
+ .setSize(40, 15))
+ .widget(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.fuelinfotext"))
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 177)
+ .setSize(280, 250))
+ .widget(
+ new TextWidget(
+ EnumChatFormatting.BOLD + "§N" + translateToLocal("gt.blockmachines.multimachine.FOG.modules"))
+ .setDefaultColor(EnumChatFormatting.DARK_PURPLE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(7, 440)
+ .setSize(280, 15))
+ .widget(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.moduleinfotext"))
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 461)
+ .setSize(280, 620))
+ .widget(
+ new TextWidget(
+ EnumChatFormatting.BOLD + "§N" + translateToLocal("gt.blockmachines.multimachine.FOG.upgrades"))
+ .setDefaultColor(EnumChatFormatting.DARK_PURPLE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(7, 1098)
+ .setSize(280, 15))
+ .widget(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.upgradeinfotext"))
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 1115)
+ .setSize(280, 290))
+ .widget(
+ new TextWidget(
+ EnumChatFormatting.BOLD + "§N" + translateToLocal("gt.blockmachines.multimachine.FOG.milestones"))
+ .setDefaultColor(EnumChatFormatting.DARK_PURPLE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(7, 1422)
+ .setSize(280, 15))
+ .widget(
+ new TextWidget(translateToLocal("gt.blockmachines.multimachine.FOG.milestoneinfotext"))
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 1439)
+ .setSize(280, 320))
+ .widget(
+ TextWidget.dynamicText(this::inversionHeaderText)
+ .setDefaultColor(EnumChatFormatting.WHITE)
+ .setTextAlignment(Alignment.TopCenter)
+ .setPos(7, 1776)
+ .setSize(280, 15))
+ .widget(
+ TextWidget.dynamicText(this::inversionInfoText)
+ .setDefaultColor(EnumChatFormatting.GOLD)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setPos(7, 1793)
+ .setSize(280, 160))
+ .widget(
+ new TextWidget("").setPos(7, 1965)
+ .setSize(10, 10));
+
+ builder.widget(
+ new DrawableWidget().setDrawable(TecTechUITextures.BACKGROUND_GLOW_WHITE)
+ .setPos(0, 0)
+ .setSize(300, 300))
+ .widget(
+ scrollable.setSize(292, 292)
+ .setPos(4, 4))
+ .widget(
+ ButtonWidget.closeWindowButton(true)
+ .setPos(284, 4));
+
return builder.build();
}
@Override
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
- tt.addMachineType("Material Manipulator") // Machine Type:
- .addInfo("Controller block for the Forge of Gods") // Controller
- .addInfo("Uses a Star to to manipulate metals")
- .addSeparator()
- .beginStructureBlock(1, 4, 2, false)
- .addStructureInfo("Output bus/hatch has to be the ME variant")
- .addStructureInfo("Dot 2 of Input Hatch is the Fuel Input Hatch")
- .addInputHatch("Any Infinite Spacetime Casing", 1)
- .addInputHatch("Any Infinite Spacetime Casing", 2) // Fuel
- // Input
- // Hatch
- .addInputBus("Any Infinite Spacetime Casing", 1)
- .addOutputBus("Any Infinite Spacetime Casing", 1)
- .addOutputHatch("Any Infinite Spacetime Casing", 1)
+ tt.addMachineType("Stellar Forge")
+ .addInfo(EnumChatFormatting.ITALIC + "Also known as Godforge or Gorge for short.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("Controller block for the Godforge, a massive structure harnessing the thermal,")
+ .addInfo("gravitational and kinetic energy of a stabilised neutron star for material processing.")
+ .addInfo(
+ "This multiblock can house " + EnumChatFormatting.RED
+ + "up to 16 modules "
+ + EnumChatFormatting.GRAY
+ + "which utilize the star to energize materials")
+ .addInfo("to varying degrees, ranging from regular smelting to matter degeneration.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo(
+ "This multiblock has an " + EnumChatFormatting.GOLD
+ + "extensive upgrade tree "
+ + EnumChatFormatting.GRAY
+ + "which influences all of its functions,")
+ .addInfo(
+ "such as " + EnumChatFormatting.GOLD
+ + "unlocking new module types, increasing heat levels "
+ + EnumChatFormatting.GRAY
+ + "and "
+ + EnumChatFormatting.GOLD
+ + "granting")
+ .addInfo(
+ EnumChatFormatting.GOLD + "various processing speed bonuses. "
+ + EnumChatFormatting.GRAY
+ + "These upgrades can be unlocked by reaching")
+ .addInfo("certain milestones and/or spending materials.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo(
+ EnumChatFormatting.GREEN
+ + "Clicking on the logo in the controller gui opens an extensive information window,")
+ .addInfo("explaining everything there is to know about this multiblock.")
+ .addInfo(TOOLTIP_BAR)
+ .beginStructureBlock(126, 29, 186, false)
+ .addStructureInfo("The structure is too complex! See schematic for details.")
+ .addStructureInfo(
+ "Total blocks needed for the structure with " + EnumChatFormatting.DARK_PURPLE
+ + "1"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "2"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "3"
+ + EnumChatFormatting.GRAY
+ + " rings:")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "3943"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "7279"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "11005"
+ + EnumChatFormatting.GRAY
+ + " Transcendentally Amplified Magnetic Confinement Casing")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "2819"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "4831"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "6567"
+ + EnumChatFormatting.GRAY
+ + " Singularity Reinforced Stellar Shielding Casing")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "272"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "512"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "824"
+ + EnumChatFormatting.GRAY
+ + " Celestial Matter Guidance Casing")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "130"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "144"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "158"
+ + EnumChatFormatting.GRAY
+ + " Boundless Gravitationally Severed Structure Casing")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "9"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "54"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "155"
+ + EnumChatFormatting.GRAY
+ + " Spatially Transcendent Gravitational Lens Block")
+ .addStructureInfo(
+ EnumChatFormatting.DARK_PURPLE + "345"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "357"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "397"
+ + EnumChatFormatting.DARK_PURPLE
+ + " Remote"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.DARK_GREEN
+ + "Medial"
+ + EnumChatFormatting.GRAY
+ + "/"
+ + EnumChatFormatting.AQUA
+ + "Central"
+ + EnumChatFormatting.GRAY
+ + " Graviton Flow Modulator")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "36" + EnumChatFormatting.GRAY + " Stellar Energy Siphon Casing")
+ .addStructureInfo("--------------------------------------------")
+ .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " Input Hatch")
+ .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " Output Bus")
+ .addStructureInfo("Requires " + EnumChatFormatting.GOLD + 1 + EnumChatFormatting.GRAY + " Input Bus")
+ .addStructureInfo("--------------------------------------------")
.toolTipFinisher(CommonValues.GODFORGE_MARK);
return tt;
}
@@ -1880,7 +2491,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
@Override
public String[] getStructureDescription(ItemStack stackSize) {
- return new String[] { "Forge of Gods multiblock" };
+ return new String[] { EnumChatFormatting.AQUA + translateToLocal("tt.keyphrase.Hint_Details") + ":",
+ translateToLocal("gt.blockmachines.multimachine.FOG.hint.0"),
+ translateToLocal("gt.blockmachines.multimachine.FOG.hint.1") };
}
public int getFuelType() {
@@ -1955,7 +2568,8 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
private Text inversionStatusText() {
String inversionStatus = "";
if (inversion) {
- inversionStatus = EnumChatFormatting.BOLD + translateToLocal("gt.blockmachines.multimachine.FOG.inversion");
+ inversionStatus = EnumChatFormatting.BOLD
+ + translateToLocal("gt.blockmachines.multimachine.FOG.inversionactive");
}
return new Text(inversionStatus);
}
@@ -2072,7 +2686,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
}
- if (milestoneProgress[3] < 7) {
+ if (milestoneProgress[3] <= 7) {
structureMilestonePercentage = totalExtensionsBuilt / 7f;
}
if (inversion) {
@@ -2100,6 +2714,18 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
gravitonShardsAvailable = sum - gravitonShardsSpent;
}
+ private void ejectGravitonShards() {
+ if (mOutputBusses.size() == 1) {
+ while (gravitonShardsAvailable >= 64) {
+ addOutput(GT_OreDictUnificator.get(OrePrefixes.gem, MaterialsUEVplus.GravitonShard, 64));
+ gravitonShardsAvailable -= 64;
+ }
+ addOutput(
+ GT_OreDictUnificator.get(OrePrefixes.gem, MaterialsUEVplus.GravitonShard, gravitonShardsAvailable));
+ gravitonShardsAvailable = 0;
+ }
+ }
+
private Text gravitonShardAmountText(int milestoneID) {
int sum;
int progress = milestoneProgress[milestoneID];
@@ -2115,14 +2741,13 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
long progress;
BigInteger bigProgress;
String suffix;
- boolean shift = Interactable.hasShiftDown();
switch (milestoneID) {
case 1 -> {
suffix = translateToLocal("gt.blockmachines.multimachine.FOG.recipes");
progress = totalRecipesProcessed;
}
case 2 -> {
- suffix = translateToLocal("gt.blockmachines.multimachine.FOG.fuel");
+ suffix = translateToLocal("gt.blockmachines.multimachine.FOG.fuelconsumed");
progress = totalFuelConsumed;
}
case 3 -> {
@@ -2132,7 +2757,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
default -> {
suffix = translateToLocal("gt.blockmachines.multimachine.FOG.power");
bigProgress = totalPowerConsumed;
- if (!shift && (totalPowerConsumed.compareTo(BigInteger.valueOf(1_000L)) > 0)) {
+ if (!noFormatting && (totalPowerConsumed.compareTo(BigInteger.valueOf(1_000L)) > 0)) {
return new Text(
translateToLocal("gt.blockmachines.multimachine.FOG.totalprogress") + ": "
+ EnumChatFormatting.GRAY
@@ -2149,7 +2774,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
}
}
- if (!shift) {
+ if (!noFormatting) {
return new Text(
translateToLocal("gt.blockmachines.multimachine.FOG.totalprogress") + ": "
+ EnumChatFormatting.GRAY
@@ -2180,7 +2805,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
String suffix;
String progressText = translateToLocal("gt.blockmachines.multimachine.FOG.progress");
Text done = new Text(translateToLocal("gt.blockmachines.multimachine.FOG.milestonecomplete"));
- if (Interactable.hasShiftDown()) {
+ if (noFormatting) {
formatting = false;
done = new Text(
translateToLocal("gt.blockmachines.multimachine.FOG.milestonecomplete") + EnumChatFormatting.DARK_RED
@@ -2219,7 +2844,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
case 2:
if (milestoneProgress[2] < 7 || inversion) {
- suffix = translateToLocal("gt.blockmachines.multimachine.FOG.fuel");
+ suffix = translateToLocal("gt.blockmachines.multimachine.FOG.fuelconsumed");
if (inversion) {
max = FUEL_MILESTONE_T7_CONSTANT * (milestoneProgress[2] - 5);
} else {
@@ -2247,10 +2872,37 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
}
+ private Text inversionHeaderText() {
+ return inversion
+ ? new Text(
+ EnumChatFormatting.BOLD + "§k2"
+ + EnumChatFormatting.RESET
+ + EnumChatFormatting.WHITE
+ + EnumChatFormatting.BOLD
+ + translateToLocal("gt.blockmachines.multimachine.FOG.inversion")
+ + EnumChatFormatting.BOLD
+ + "§k2")
+ : new Text("");
+ }
+
+ private Text inversionInfoText() {
+ return inversion ? new Text(translateToLocal("gt.blockmachines.multimachine.FOG.inversioninfotext"))
+ : new Text("");
+ }
+
+ private List<String> upgradeMaterialRequirements() {
+ if (materialPaidUpgrades[Arrays.asList(UPGRADE_MATERIAL_ID_CONVERSION)
+ .indexOf(currentUpgradeID)]) {
+ return ImmutableList.of(translateToLocal("fog.button.materialrequirementsmet.tooltip"));
+ }
+ return ImmutableList.of(translateToLocal("fog.button.materialrequirements.tooltip"));
+ }
+
private void increaseBattery(int amount) {
if ((internalBattery + amount) <= maxBatteryCharge) {
internalBattery += amount;
} else {
+ internalBattery = maxBatteryCharge;
batteryCharging = false;
}
}
@@ -2263,6 +2915,7 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
module.disconnect();
}
}
+ destroyRenderer();
} else {
internalBattery -= amount;
totalFuelConsumed += amount;
@@ -2302,8 +2955,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
NBT.setLong("totalRecipesProcessed", totalRecipesProcessed);
NBT.setLong("totalFuelConsumed", totalFuelConsumed);
NBT.setInteger("starFuelStored", stellarFuelAmount);
+ NBT.setBoolean("gravitonShardEjection", gravitonShardEjection);
- // Store booleanArray of all upgrades
+ // Store booleanArrays of all upgrades
NBTTagCompound upgradeBooleanArrayNBTTag = new NBTTagCompound();
int upgradeIndex = 0;
@@ -2313,6 +2967,16 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
}
NBT.setTag("upgrades", upgradeBooleanArrayNBTTag);
+
+ NBTTagCompound upgradeMaterialBooleanArrayNBTTag = new NBTTagCompound();
+
+ int upgradeMaterialIndex = 0;
+ for (Boolean upgrade : materialPaidUpgrades) {
+ upgradeBooleanArrayNBTTag.setBoolean("upgradeMaterial" + upgradeMaterialIndex, upgrade);
+ upgradeMaterialIndex++;
+ }
+
+ NBT.setTag("upgradeMaterials", upgradeMaterialBooleanArrayNBTTag);
super.saveNBTData(NBT);
}
@@ -2329,17 +2993,30 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
NBT.setLong("totalRecipesProcessed", totalRecipesProcessed);
NBT.setLong("totalFuelConsumed", totalFuelConsumed);
NBT.setInteger("starFuelStored", stellarFuelAmount);
+ NBT.setBoolean("gravitonShardEjection", gravitonShardEjection);
+ NBT.setBoolean("isRenderActive", isRenderActive);
+ NBT.setInteger("ringAmount", ringAmount);
// Store booleanArray of all upgrades
NBTTagCompound upgradeBooleanArrayNBTTag = new NBTTagCompound();
int upgradeIndex = 0;
- for (Boolean upgrade : upgrades) {
+ for (boolean upgrade : upgrades) {
upgradeBooleanArrayNBTTag.setBoolean("upgrade" + upgradeIndex, upgrade);
upgradeIndex++;
}
NBT.setTag("upgrades", upgradeBooleanArrayNBTTag);
+
+ NBTTagCompound upgradeMaterialBooleanArrayNBTTag = new NBTTagCompound();
+
+ int upgradeMaterialIndex = 0;
+ for (boolean upgrade : materialPaidUpgrades) {
+ upgradeMaterialBooleanArrayNBTTag.setBoolean("upgradeMaterial" + upgradeMaterialIndex, upgrade);
+ upgradeMaterialIndex++;
+ }
+
+ NBT.setTag("upgradeMaterials", upgradeMaterialBooleanArrayNBTTag);
super.saveNBTData(NBT);
}
@@ -2356,6 +3033,9 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
totalRecipesProcessed = NBT.getLong("totalRecipesProcessed");
totalFuelConsumed = NBT.getLong("totalFuelConsumed");
stellarFuelAmount = NBT.getInteger("starFuelStored");
+ gravitonShardEjection = NBT.getBoolean("gravitonShardEjection");
+ isRenderActive = NBT.getBoolean("isRenderActive");
+ ringAmount = NBT.getInteger("ringAmount");
NBTTagCompound tempBooleanTag = NBT.getCompoundTag("upgrades");
@@ -2364,6 +3044,13 @@ public class GT_MetaTileEntity_EM_ForgeOfGods extends GT_MetaTileEntity_Multiblo
upgrades[upgradeIndex] = upgrade;
}
+ tempBooleanTag = NBT.getCompoundTag("upgradeMaterials");
+
+ for (int upgradeIndex = 0; upgradeIndex < 7; upgradeIndex++) {
+ boolean upgrade = tempBooleanTag.getBoolean("upgradeMaterial" + upgradeIndex);
+ materialPaidUpgrades[upgradeIndex] = upgrade;
+ }
+
super.loadNBTData(NBT);
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_BaseModule.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_BaseModule.java
index 86e8e97993..16d81c8529 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_BaseModule.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_BaseModule.java
@@ -12,6 +12,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -21,7 +22,6 @@ import net.minecraftforge.common.util.ForgeDirection;
import com.github.technus.tectech.thing.gui.TecTechUITextures;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
-import com.github.technus.tectech.thing.metaTileEntity.multi.base.render.TT_RenderedExtendedFacingTexture;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
@@ -52,6 +52,7 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
+import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_StructureUtility;
public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_MultiblockBase_EM {
@@ -79,37 +80,8 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
private static final String STRUCTURE_PIECE_MAIN = "main";
private static final int VOLTAGE_WINDOW_ID = 9;
private static final int TEXTURE_INDEX = 960;
- private static final IStructureDefinition<GT_MetaTileEntity_EM_BaseModule> STRUCTURE_DEFINITION = StructureDefinition
- .<GT_MetaTileEntity_EM_BaseModule>builder()
- .addShape(
- STRUCTURE_PIECE_MAIN,
- new String[][] { { " ", " BBB ", " BBBBB ", " BB~BB ", " BBBBB ", " BBB ", " " },
- { " CCC ", " CFFFC ", "CFFFFFC", "CFFFFFC", "CFFFFFC", " CFFFC ", " CCC " },
- { " ", " ", " E ", " EAE ", " E ", " ", " " },
- { " ", " ", " E ", " EAE ", " E ", " ", " " },
- { " ", " ", " E ", " EAE ", " E ", " ", " " },
- { " ", " ", " E ", " EAE ", " E ", " ", " " },
- { " ", " ", " ", " D ", " ", " ", " " },
- { " ", " ", " ", " D ", " ", " ", " " },
- { " ", " ", " ", " D ", " ", " ", " " },
- { " ", " ", " ", " D ", " ", " ", " " },
- { " ", " ", " ", " D ", " ", " ", " " },
- { " ", " ", " ", " G ", " ", " ", " " } })
- .addElement('A', ofBlock(GregTech_API.sSolenoidCoilCasings, 9))
- .addElement(
- 'B',
- GT_StructureUtility.ofHatchAdderOptional(
- GT_MetaTileEntity_EM_BaseModule::addClassicToMachineList,
- TEXTURE_INDEX,
- 1,
- GodforgeCasings,
- 0))
- .addElement('C', ofBlock(GodforgeCasings, 0))
- .addElement('D', ofBlock(GodforgeCasings, 1))
- .addElement('E', ofBlock(GodforgeCasings, 2))
- .addElement('F', ofBlock(GodforgeCasings, 3))
- .addElement('G', ofBlock(GodforgeCasings, 4))
- .build();
+ protected static final String TOOLTIP_BAR = EnumChatFormatting.AQUA
+ + "--------------------------------------------------------------------------";
public GT_MetaTileEntity_EM_BaseModule(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -277,7 +249,10 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
@Override
public IStructureDefinition<? extends GT_MetaTileEntity_MultiblockBase_EM> getStructure_EM() {
- return STRUCTURE_DEFINITION;
+ if (this instanceof GT_MetaTileEntity_EM_SmeltingModule) {
+ return getStructureDefinition(GregTech_API.sBlockCasings5, 12);
+ }
+ return getStructureDefinition(GodforgeCasings, 8);
}
@Override
@@ -327,7 +302,8 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
.widget(createInputSeparationButton(builder))
.widget(createBatchModeButton(builder))
.widget(createLockToSingleRecipeButton(builder))
- .widget(createVoltageButton(builder));
+ .widget(createVoltageButton(builder))
+ .widget(createStructureUpdateButton(builder));
}
protected Widget createVoltageButton(IWidgetBuilder<?> builder) {
@@ -352,7 +328,7 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
})
.addTooltip(translateToLocal("fog.button.voltageconfig.tooltip.01"))
.setTooltipShowUpDelay(TOOLTIP_DELAY)
- .setPos(174, 129)
+ .setPos(174, 112)
.setSize(16, 16)
.attachSyncer(
new FakeSyncWidget.BooleanSyncer(() -> isVoltageConfigUnlocked, val -> isVoltageConfigUnlocked = val),
@@ -437,6 +413,41 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
return false;
}
+ private static IStructureDefinition<GT_MetaTileEntity_EM_BaseModule> getStructureDefinition(Block coilBlock,
+ int meta) {
+ return StructureDefinition.<GT_MetaTileEntity_EM_BaseModule>builder()
+ .addShape(
+ STRUCTURE_PIECE_MAIN,
+ new String[][] { { " ", " BBB ", " BBBBB ", " BB~BB ", " BBBBB ", " BBB ", " " },
+ { " CCC ", " CFFFC ", "CFFFFFC", "CFFFFFC", "CFFFFFC", " CFFFC ", " CCC " },
+ { " ", " ", " E ", " EAE ", " E ", " ", " " },
+ { " ", " ", " E ", " EAE ", " E ", " ", " " },
+ { " ", " ", " E ", " EAE ", " E ", " ", " " },
+ { " ", " ", " E ", " EAE ", " E ", " ", " " },
+ { " ", " ", " E ", " EAE ", " E ", " ", " " },
+ { " ", " ", " ", " D ", " ", " ", " " },
+ { " ", " ", " ", " D ", " ", " ", " " },
+ { " ", " ", " ", " D ", " ", " ", " " },
+ { " ", " ", " ", " D ", " ", " ", " " },
+ { " ", " ", " ", " D ", " ", " ", " " },
+ { " ", " ", " ", " G ", " ", " ", " " } })
+ .addElement('A', ofBlock(coilBlock, meta))
+ .addElement(
+ 'B',
+ GT_StructureUtility.ofHatchAdderOptional(
+ GT_MetaTileEntity_EM_BaseModule::addClassicToMachineList,
+ TEXTURE_INDEX,
+ 1,
+ GodforgeCasings,
+ 0))
+ .addElement('C', ofBlock(GodforgeCasings, 0))
+ .addElement('D', ofBlock(GodforgeCasings, 1))
+ .addElement('E', ofBlock(GodforgeCasings, 2))
+ .addElement('F', ofBlock(GodforgeCasings, 3))
+ .addElement('G', ofBlock(GodforgeCasings, 4))
+ .build();
+ }
+
private Text connectionStatus() {
String status = EnumChatFormatting.RED
+ translateToLocal("gt.blockmachines.multimachine.FOG.modulestatus.false");
@@ -478,8 +489,20 @@ public class GT_MetaTileEntity_EM_BaseModule extends GT_MetaTileEntity_Multibloc
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection facing,
int colorIndex, boolean aActive, boolean aRedstone) {
if (side == facing) {
- return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX),
- new TT_RenderedExtendedFacingTexture(aActive ? ScreenON : ScreenOFF) };
+ if (aActive) return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX),
+ TextureFactory.builder()
+ .addIcon(ScreenON)
+ .extFacing()
+ .build(),
+ TextureFactory.builder()
+ .addIcon(ScreenON)
+ .extFacing()
+ .glow()
+ .build() };
+ return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX), TextureFactory.builder()
+ .addIcon(ScreenOFF)
+ .extFacing()
+ .build() };
}
return new ITexture[] { Textures.BlockIcons.getCasingTextureForId(TEXTURE_INDEX) };
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_ExoticModule.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_ExoticModule.java
index 7e5c0d0b94..9c1d5dd8fa 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_ExoticModule.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_ExoticModule.java
@@ -495,12 +495,31 @@ public class GT_MetaTileEntity_EM_ExoticModule extends GT_MetaTileEntity_EM_Base
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Exotic Matter Producer")
- .addInfo("Controller block of the Quark Gluon Plasma Module")
- .addInfo("Uses a Star to to turn Items into Quark Gluon Plasma")
- .addSeparator()
- .beginStructureBlock(1, 4, 2, false)
- .addEnergyHatch("Any Infinite Spacetime Casing", 1)
- .addMaintenanceHatch("Any Infinite Spacetime Casing", 1)
+ .addInfo("Controller block for the Heliofusion Exoticizer, a module of the Godforge.")
+ .addInfo("Must be part of a Godforge to function.")
+ .addInfo("Used for ultra high temperature matter degeneration.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("The fourth and final module of the Godforge, this module breaks apart the very")
+ .addInfo("building blocks of matter, producing exotic mixtures in the process. Quark-Gluon Plasma")
+ .addInfo("can be manufactured right away, but production of Magnetic Monopole Matter (Magmatter)")
+ .addInfo("requires a fully upgraded Godforge.")
+ .addInfo("This module is specialized towards acquisition of unique materials.")
+ .addInfo(TOOLTIP_BAR)
+ .beginStructureBlock(7, 7, 13, false)
+ .addStructureInfo("The structure is too complex! See schematic for details.")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Singularity Reinforced Stellar Shielding Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Boundless Gravitationally Severed Structure Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Harmonic Phonon Transmission Conduit")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Celestial Matter Guidance Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Stellar Energy Siphon Casing")
.toolTipFinisher(CommonValues.GODFORGE_MARK);
return tt;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_MoltenModule.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_MoltenModule.java
index cfd0548f9e..0a2bd27ed5 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_MoltenModule.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_MoltenModule.java
@@ -19,6 +19,7 @@ import java.util.ArrayList;
import javax.annotation.Nonnull;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary;
@@ -213,13 +214,31 @@ public class GT_MetaTileEntity_EM_MoltenModule extends GT_MetaTileEntity_EM_Base
@Override
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
- tt.addMachineType("Blast Furnace")
- .addInfo("Controller block of the Molten Module")
- .addInfo("Uses a Star to to melt Metals")
- .addSeparator()
- .beginStructureBlock(1, 4, 2, false)
- .addEnergyHatch("Any Infinite Spacetime Casing", 1)
- .addMaintenanceHatch("Any Infinite Spacetime Casing", 1)
+ tt.addMachineType("Blast Smelter")
+ .addInfo("Controller block for the Helioflux Meltig Core, a module of the Godforge.")
+ .addInfo("Must be part of a Godforge to function.")
+ .addInfo("Used for high temperature material liquefaction.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("The second module of the Godforge, this module melts materials directly into")
+ .addInfo("their liquid form. If an output material does not have a liquid form, it will be output")
+ .addInfo("as a regular solid instead.")
+ .addInfo("This module is specialized towards parallel processing.")
+ .addInfo(TOOLTIP_BAR)
+ .beginStructureBlock(7, 7, 13, false)
+ .addStructureInfo("The structure is too complex! See schematic for details.")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Singularity Reinforced Stellar Shielding Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Boundless Gravitationally Severed Structure Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Harmonic Phonon Transmission Conduit")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Celestial Matter Guidance Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Stellar Energy Siphon Casing")
.toolTipFinisher(CommonValues.GODFORGE_MARK);
return tt;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_PlasmaModule.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_PlasmaModule.java
index 8143c6fea4..c8f201d003 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_PlasmaModule.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_PlasmaModule.java
@@ -16,6 +16,8 @@ import java.util.Objects;
import javax.annotation.Nonnull;
+import net.minecraft.util.EnumChatFormatting;
+
import org.jetbrains.annotations.NotNull;
import com.github.technus.tectech.util.CommonValues;
@@ -213,12 +215,30 @@ public class GT_MetaTileEntity_EM_PlasmaModule extends GT_MetaTileEntity_EM_Base
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Plasma Fabricator")
- .addInfo("Controller block of the Plasma Module")
- .addInfo("Uses a Star to to turn Metals into Plasma")
- .addSeparator()
- .beginStructureBlock(1, 4, 2, false)
- .addEnergyHatch("Any Infinite Spacetime Casing", 1)
- .addMaintenanceHatch("Any Infinite Spacetime Casing", 1)
+ .addInfo("Controller block for the Heliothermal Plasma Fabricator, a module of the Godforge.")
+ .addInfo("Must be part of a Godforge to function.")
+ .addInfo("Used for extreme temperature matter ionization.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("The third module of the Godforge, this module infuses materials with extreme amounts")
+ .addInfo("of heat, ionizing and turning them into plasma directly. Not all plasmas can be produced")
+ .addInfo("right away, some of them require certain upgrades to be unlocked.")
+ .addInfo("This module is specialized towards energy and overclock efficiency.")
+ .addInfo(TOOLTIP_BAR)
+ .beginStructureBlock(7, 7, 13, false)
+ .addStructureInfo("The structure is too complex! See schematic for details.")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Singularity Reinforced Stellar Shielding Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Boundless Gravitationally Severed Structure Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Harmonic Phonon Transmission Conduit")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Celestial Matter Guidance Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Stellar Energy Siphon Casing")
.toolTipFinisher(CommonValues.GODFORGE_MARK);
return tt;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_SmeltingModule.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_SmeltingModule.java
index ee77d7cc95..5126dbfe60 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_SmeltingModule.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/godforge_modules/GT_MetaTileEntity_EM_SmeltingModule.java
@@ -19,6 +19,7 @@ import java.util.List;
import javax.annotation.Nonnull;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
import org.jetbrains.annotations.NotNull;
@@ -215,12 +216,29 @@ public class GT_MetaTileEntity_EM_SmeltingModule extends GT_MetaTileEntity_EM_Ba
public GT_Multiblock_Tooltip_Builder createTooltip() {
final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
tt.addMachineType("Blast Furnace, Furnace")
- .addInfo("Controller block of the Smelting Module")
- .addInfo("Uses a Star to Smelt Metals")
- .addSeparator()
- .beginStructureBlock(1, 4, 2, false)
- .addEnergyHatch("Any Infinite Spacetime Casing", 1)
- .addMaintenanceHatch("Any Infinite Spacetime Casing", 1)
+ .addInfo("Controller block for the Helioflare Power Forge, a module of the Godforge.")
+ .addInfo("Must be part of a Godforge to function.")
+ .addInfo("Used for basic smelting operations at various temperatures.")
+ .addInfo(TOOLTIP_BAR)
+ .addInfo("As the first of the Godforge modules, this module performs the most basic")
+ .addInfo("thermal processing, namely smelting materials identically to a furnace or blast furnace.")
+ .addInfo("The desired method of processing can be selected in the gui.")
+ .addInfo("This module is specialized towards speed and high heat levels.")
+ .addInfo(TOOLTIP_BAR)
+ .beginStructureBlock(7, 7, 13, false)
+ .addStructureInfo("The structure is too complex! See schematic for details.")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Singularity Reinforced Stellar Shielding Casing")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "20"
+ + EnumChatFormatting.GRAY
+ + " Boundless Gravitationally Severed Structure Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Hypogen Coil Block")
+ .addStructureInfo(
+ EnumChatFormatting.GOLD + "5" + EnumChatFormatting.GRAY + " Celestial Matter Guidance Casing")
+ .addStructureInfo(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Stellar Energy Siphon Casing")
.toolTipFinisher(CommonValues.GODFORGE_MARK);
return tt;
}
diff --git a/src/main/java/com/github/technus/tectech/util/GodforgeMath.java b/src/main/java/com/github/technus/tectech/util/GodforgeMath.java
index 7fda26a29c..94b898a93b 100644
--- a/src/main/java/com/github/technus/tectech/util/GodforgeMath.java
+++ b/src/main/java/com/github/technus/tectech/util/GodforgeMath.java
@@ -139,7 +139,7 @@ public class GodforgeMath {
baseParallel = 512;
}
if (module instanceof GT_MetaTileEntity_EM_PlasmaModule) {
- baseParallel = 256;
+ baseParallel = 384;
}
if (module instanceof GT_MetaTileEntity_EM_ExoticModule) {
baseParallel = 36;
diff --git a/src/main/java/com/github/technus/tectech/util/TT_Utility.java b/src/main/java/com/github/technus/tectech/util/TT_Utility.java
index 1bf7eae552..b0b6a2c396 100644
--- a/src/main/java/com/github/technus/tectech/util/TT_Utility.java
+++ b/src/main/java/com/github/technus/tectech/util/TT_Utility.java
@@ -165,4 +165,24 @@ public final class TT_Utility {
}
return previousValue;
}
+
+ public static String[][] appendStringArrays(String[][] firstArray, String[][] secondArray) {
+ int totalLength = firstArray.length + secondArray.length;
+ String[][] resultArray = new String[totalLength][];
+
+ System.arraycopy(firstArray, 0, resultArray, 0, firstArray.length);
+ System.arraycopy(secondArray, 0, resultArray, firstArray.length, secondArray.length);
+ return resultArray;
+ }
+
+ public static String[][] replaceLetters(String[][] array, String replacement) {
+ String[][] outputArray = new String[array.length][];
+ for (int i = 0; i < array.length; i++) {
+ outputArray[i] = new String[array[i].length];
+ for (int j = 0; j < array[i].length; j++) {
+ outputArray[i][j] = array[i][j].replaceAll("[A-Z]", replacement);
+ }
+ }
+ return outputArray;
+ }
}
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index a11bb7ea6e..74f169681c 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -2554,6 +2554,9 @@ public enum ItemList implements IItemContainer {
BetterJukebox_EV,
BetterJukebox_IV,
WirelessHeadphones,
+ Thermal_Superconductor,
+ Relativistic_Heat_Capacitor,
+ Phononic_Seed_Crystal,
ResearchCompleter, // Populated in EMT
SpaceElevatorController, // Populated in GTNH-Intergalactic
// semicolon after the comment to reduce merge conflicts
diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java
index 2dada8dfb0..3d314c4742 100644
--- a/src/main/java/gregtech/api/enums/Materials.java
+++ b/src/main/java/gregtech/api/enums/Materials.java
@@ -20,6 +20,7 @@ import javax.annotation.Nonnull;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
@@ -37,6 +38,7 @@ import gregtech.common.config.gregtech.ConfigHarvestLevel;
import gregtech.common.render.items.CosmicNeutroniumRenderer;
import gregtech.common.render.items.GT_GeneratedMaterial_Renderer;
import gregtech.common.render.items.GaiaSpiritRenderer;
+import gregtech.common.render.items.GlitchEffectRenderer;
import gregtech.common.render.items.InfinityRenderer;
import gregtech.common.render.items.TranscendentMetalRenderer;
import gregtech.common.render.items.UniversiumRenderer;
@@ -1976,6 +1978,17 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
MaterialsUEVplus.ExcitedDTSC.mChemicalFormula = "[-Stellar-Stellar-]";
MaterialsUEVplus.DimensionallyTranscendentStellarCatalyst.mChemicalFormula = "Stellar";
PolyAluminiumChloride.mChemicalFormula = "Al\u2082(OH)\u2083Cl\u2083";
+ MaterialsUEVplus.QuarkGluonPlasma.mChemicalFormula = EnumChatFormatting.OBFUSCATED + "X"
+ + EnumChatFormatting.RESET
+ + EnumChatFormatting.GRAY
+ + "g"
+ + EnumChatFormatting.OBFUSCATED
+ + "X";
+ MaterialsUEVplus.PhononCrystalSolution.mChemicalFormula = "\u3004";
+ MaterialsUEVplus.PhononMedium.mChemicalFormula = "((Si\u2085O\u2081\u2080Fe)\u2083(Bi\u2082Te\u2083)\u2084ZrO\u2082Fe\u2085\u2080C)\u2085Og*Pr\u2081\u2085((C\u2081\u2084Os\u2081\u2081O\u2087Ag\u2083SpH\u2082O)\u2084?\u2081\u2080(Fs\u26B6)\u2086(\u2318\u262F\u262F\u2318)\u2085)\u2086\u3004\u2084";
+ MaterialsUEVplus.SixPhasedCopper.mChemicalFormula = "\u2722";
+ MaterialsUEVplus.Mellion.mChemicalFormula = "Tn\u2081\u2081Or\u2088Rb\u2081\u2081?\u2087?\u2081\u2083?\u2081\u2083";
+ MaterialsUEVplus.Creon.mChemicalFormula = "\u2E0E";
}
private static void initSubTags() {
@@ -2516,6 +2529,8 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
MaterialsUEVplus.Universium.renderer = new UniversiumRenderer();
MaterialsUEVplus.Eternity.renderer = new InfinityRenderer();
MaterialsUEVplus.MagMatter.renderer = new InfinityRenderer();
+ MaterialsUEVplus.SixPhasedCopper.renderer = new GlitchEffectRenderer();
+ MaterialsUEVplus.GravitonShard.renderer = new InfinityRenderer();
}
private static void fillGeneratedMaterialsMap() {
diff --git a/src/main/java/gregtech/api/enums/MaterialsUEVplus.java b/src/main/java/gregtech/api/enums/MaterialsUEVplus.java
index 1ff8cc2fb0..7542e1f600 100644
--- a/src/main/java/gregtech/api/enums/MaterialsUEVplus.java
+++ b/src/main/java/gregtech/api/enums/MaterialsUEVplus.java
@@ -590,6 +590,166 @@ public class MaterialsUEVplus {
1,
Dyes._NULL);
+ public static Materials PhononMedium = new Materials(
+ 145,
+ TextureSet.SET_FLUID,
+ 1.0F,
+ 0,
+ 2,
+ 16,
+ 255,
+ 255,
+ 255,
+ 0,
+ "PhononMedium",
+ "Lossless Phonon Transfer Medium",
+ -1,
+ -1,
+ 500,
+ 1,
+ false,
+ true,
+ 1,
+ 1,
+ 1,
+ Dyes._NULL);
+
+ public static Materials PhononCrystalSolution = new Materials(
+ 146,
+ TextureSet.SET_FLUID,
+ 1.0F,
+ 0,
+ 2,
+ 16,
+ 255,
+ 255,
+ 255,
+ 0,
+ "PhononCrystalSolution",
+ "Saturated Phononic Crystal Solution",
+ -1,
+ -1,
+ 500,
+ 1,
+ false,
+ true,
+ 1,
+ 1,
+ 1,
+ Dyes._NULL);
+
+ public static Materials SixPhasedCopper = new Materials(
+ 147,
+ TextureSet.SET_SHINY,
+ 1.0F,
+ 8 * 2621440,
+ 26,
+ 1 | 2 | 64 | 128,
+ 255,
+ 120,
+ 20,
+ 0,
+ "SixPhasedCopper",
+ "Six-Phased Copper",
+ -1,
+ -1,
+ 1000,
+ 14000,
+ true,
+ false,
+ 2,
+ 1,
+ 1,
+ Dyes._NULL,
+ Collections.singletonList(new TC_Aspects.TC_AspectStack(TC_Aspects.ITER, 1)))
+ .disableAutoGeneratedBlastFurnaceRecipes()
+ .disableAutoGeneratedVacuumFreezerRecipe()
+ .setProcessingMaterialTierEU(TierEU.RECIPE_UEV);
+
+ public static Materials Mellion = new Materials(
+ 148,
+ TextureSet.SET_SHINY,
+ 1.0F,
+ 8 * 2621440,
+ 26,
+ 1 | 2 | 64 | 128,
+ 60,
+ 5,
+ 5,
+ 0,
+ "Mellion",
+ "Mellion",
+ -1,
+ -1,
+ 1000,
+ 14000,
+ true,
+ false,
+ 2,
+ 1,
+ 1,
+ Dyes._NULL,
+ Collections.singletonList(new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 1)))
+ .disableAutoGeneratedBlastFurnaceRecipes()
+ .disableAutoGeneratedVacuumFreezerRecipe()
+ .setProcessingMaterialTierEU(TierEU.RECIPE_UEV);
+
+ public static Materials Creon = new Materials(
+ 149,
+ TextureSet.SET_SHINY,
+ 1.0F,
+ 8 * 2621440,
+ 26,
+ 1 | 2 | 64 | 128,
+ 70,
+ 0,
+ 70,
+ 0,
+ "Creon",
+ "Creon",
+ -1,
+ -1,
+ 1000,
+ 14000,
+ true,
+ false,
+ 2,
+ 1,
+ 1,
+ Dyes._NULL,
+ Collections.singletonList(new TC_Aspects.TC_AspectStack(TC_Aspects.SENSUS, 1)))
+ .disableAutoGeneratedBlastFurnaceRecipes()
+ .disableAutoGeneratedVacuumFreezerRecipe()
+ .setProcessingMaterialTierEU(TierEU.RECIPE_UEV)
+ .setHasCorrespondingPlasma(true);
+
+ public static Materials GravitonShard = new Materials(
+ 150,
+ new TextureSet("GravitonShard", true),
+ 1.0F,
+ 8 * 2621440,
+ 26,
+ 256,
+ 255,
+ 255,
+ 255,
+ 0,
+ "GravitonShard",
+ "Graviton Shard",
+ -1,
+ -1,
+ 100000,
+ 100000,
+ false,
+ false,
+ 2,
+ 1,
+ 1,
+ Dyes._NULL,
+ Collections.singletonList(new TC_Aspects.TC_AspectStack(TC_Aspects.VACUOS, 150)))
+ .disableAutoGeneratedBlastFurnaceRecipes()
+ .disableAutoGeneratedVacuumFreezerRecipe();
+
/**
* called by Materials. Can be safely called multiple times. exists to allow Materials ensure this class is
* initialized
diff --git a/src/main/java/gregtech/api/enums/OrePrefixes.java b/src/main/java/gregtech/api/enums/OrePrefixes.java
index d0c9399980..8e80f41a05 100644
--- a/src/main/java/gregtech/api/enums/OrePrefixes.java
+++ b/src/main/java/gregtech/api/enums/OrePrefixes.java
@@ -701,6 +701,8 @@ public enum OrePrefixes {
dustSmall.mNotGeneratedItems.add(MaterialsUEVplus.MagnetohydrodynamicallyConstrainedStarMatter);
dustTiny.mNotGeneratedItems.add(MaterialsUEVplus.MagnetohydrodynamicallyConstrainedStarMatter);
+ cell.disableComponent(MaterialsUEVplus.GravitonShard);
+
// ingot.mNotGeneratedItems.add(Materials.Ichorium);
nugget.mNotGeneratedItems.add(Materials.Gold);
plate.mNotGeneratedItems.add(Materials.Paper);
@@ -780,6 +782,7 @@ public enum OrePrefixes {
nanite.mGeneratedItems.add(MaterialsUEVplus.BlackDwarfMatter);
nanite.mGeneratedItems.add(Materials.Glowstone);
nanite.mGeneratedItems.add(MaterialsUEVplus.Eternity);
+ nanite.mGeneratedItems.add(MaterialsUEVplus.SixPhasedCopper);
// -----
gear.mGeneratedItems.add(MaterialsUEVplus.MagnetohydrodynamicallyConstrainedStarMatter);
@@ -788,6 +791,8 @@ public enum OrePrefixes {
frame.mGeneratedItems.add(MaterialsUEVplus.MagnetohydrodynamicallyConstrainedStarMatter);
frameGt.mGeneratedItems.add(MaterialsUEVplus.MagnetohydrodynamicallyConstrainedStarMatter);
+ gem.mGeneratedItems.add(MaterialsUEVplus.GravitonShard);
+
dust.mGeneratedItems.addAll(dustPure.mGeneratedItems);
dust.mGeneratedItems.addAll(dustImpure.mGeneratedItems);
dust.mGeneratedItems.addAll(dustRefined.mGeneratedItems);
@@ -1001,7 +1006,8 @@ public enum OrePrefixes {
OrePrefixes.gemExquisite,
OrePrefixes.gearGt,
OrePrefixes.itemCasing,
- OrePrefixes.nanite));
+ OrePrefixes.nanite,
+ OrePrefixes.cell));
/**
* Yes this Value can be changed to add Bits for the MetaGenerated-Item-Check.
*/
diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java
index 4a5142138a..7caa8f41e5 100644
--- a/src/main/java/gregtech/api/enums/Textures.java
+++ b/src/main/java/gregtech/api/enums/Textures.java
@@ -1161,6 +1161,7 @@ public class Textures {
BLOCK_UNIVERSIUM,
BLOCK_ETERNITY,
BLOCK_MAGMATTER,
+ BLOCK_SIXPHASEDCOPPER,
BLOCK_ORIHARUKON,
@@ -1573,7 +1574,7 @@ public class Textures {
BLOCK_BLAZE },
STORAGE_BLOCKS12 = { BLOCK_CRYOLITE, BLOCK_SILICONSG, BLOCK_NICKELALUMINIUM, BLOCK_SPACETIME,
BLOCK_TRANSCENDENTMETAL, BLOCK_ORIHARUKON, BLOCK_WHITEDWARFMATTER, BLOCK_BLACKDWARFMATTER,
- BLOCK_UNIVERSIUM, BLOCK_ETERNITY, BLOCK_MAGMATTER };
+ BLOCK_UNIVERSIUM, BLOCK_ETERNITY, BLOCK_MAGMATTER, BLOCK_SIXPHASEDCOPPER };
public static final ITexture[] HIDDEN_TEXTURE = { TextureFactory.builder()
.addIcon(HIDDEN_FACE)
diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
index a5301179c2..7d24a9e339 100644
--- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_03.java
@@ -204,6 +204,7 @@ import static gregtech.common.items.ID_MetaItem_03.NuclearStar;
import static gregtech.common.items.ID_MetaItem_03.Optical_Cpu_Containment_Housing;
import static gregtech.common.items.ID_MetaItem_03.Optically_Compatible_Memory;
import static gregtech.common.items.ID_MetaItem_03.Optically_Perfected_CPU;
+import static gregtech.common.items.ID_MetaItem_03.Phononic_Seed_Crystal;
import static gregtech.common.items.ID_MetaItem_03.Quark_Catalyst_Housing;
import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Bottom;
import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Charm;
@@ -212,7 +213,9 @@ import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Stran
import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Top;
import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Unaligned;
import static gregtech.common.items.ID_MetaItem_03.Quark_Creation_Catalyst_Up;
+import static gregtech.common.items.ID_MetaItem_03.Relativistic_Heat_Capacitor;
import static gregtech.common.items.ID_MetaItem_03.Spinneret;
+import static gregtech.common.items.ID_MetaItem_03.Thermal_Superconductor;
import static gregtech.common.items.ID_MetaItem_03.Timepiece;
import static gregtech.common.items.ID_MetaItem_03.Transdimensional_Alignment_Matrix;
import static gregtech.common.items.ID_MetaItem_03.Tube_Wires;
@@ -1186,6 +1189,13 @@ public class GT_MetaGenerated_Item_03 extends GT_MetaGenerated_Item_X32 {
"Enables Dimensional Convergence on the DTPF."),
o));
+ ItemList.Thermal_Superconductor
+ .set(addItem(Thermal_Superconductor.ID, "Thermal Superconductor", "With the power of second sound!", o));
+ ItemList.Relativistic_Heat_Capacitor
+ .set(addItem(Relativistic_Heat_Capacitor.ID, "Relativistic Heat Capacitor", "Thermal Resonance?", o));
+ ItemList.Phononic_Seed_Crystal
+ .set(addItem(Phononic_Seed_Crystal.ID, "Phononic Seed Crystal", "Perfect Thermal Conductance", o));
+
ItemList.White_Dwarf_Shape_Extruder_Plate.set(
addItem(
White_Dwarf_Shape_Extruder_Plate.ID,
diff --git a/src/main/java/gregtech/common/items/ID_MetaItem_03.java b/src/main/java/gregtech/common/items/ID_MetaItem_03.java
index fea5a687df..64b3f07249 100644
--- a/src/main/java/gregtech/common/items/ID_MetaItem_03.java
+++ b/src/main/java/gregtech/common/items/ID_MetaItem_03.java
@@ -229,7 +229,10 @@ public enum ID_MetaItem_03 {
White_Dwarf_Shape_Extruder_Turbine_Blade(755),
White_Dwarf_Shape_Extruder_ToolHeadDrill(756),
Timepiece(757),
- Transdimensional_Alignment_Matrix(758);
+ Transdimensional_Alignment_Matrix(758),
+ Thermal_Superconductor(759),
+ Relativistic_Heat_Capacitor(760),
+ Phononic_Seed_Crystal(761);
public final int ID;
diff --git a/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java b/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java
new file mode 100644
index 0000000000..f7e4413c97
--- /dev/null
+++ b/src/main/java/gregtech/common/render/items/GlitchEffectRenderer.java
@@ -0,0 +1,124 @@
+package gregtech.common.render.items;
+
+import java.util.Random;
+
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.fluids.FluidStack;
+
+import org.lwjgl.opengl.GL11;
+
+import codechicken.lib.render.TextureUtils;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
+import gregtech.api.util.GT_Utility;
+
+public class GlitchEffectRenderer extends GT_GeneratedMaterial_Renderer {
+
+ public Random rand = new Random();
+ int[] red = new int[] { 255, 50, 50, 192 };
+ int[] cyan = new int[] { 0, 220, 220, 160 };
+ int counter = 0;
+ double offsetRed = 0;
+ double offsetCyan = 0;
+
+ private void applyGlitchEffect(ItemRenderType type, boolean shouldModulateColor, int[] color, IIcon... icons) {
+ double offset;
+ for (IIcon icon : icons) {
+ if (icon == null) continue;
+ if (counter % 2 == 0) {
+ offset = offsetRed;
+ } else {
+ offset = offsetCyan;
+ }
+ GL11.glPushMatrix();
+ GL11.glEnable(GL11.GL_BLEND);
+
+ Tessellator t = Tessellator.instance;
+
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ t.startDrawingQuads();
+ if (shouldModulateColor) {
+ t.setColorRGBA_F(color[0] / 255.0F, color[1] / 255.0F, color[2] / 255.0F, color[3] / 255.0F);
+ } else {
+ t.setColorRGBA_F(1f, 1f, 1f, 0.75f);
+ }
+ t.addVertexWithUV(0 + offset, 0 + offset, 0, icon.getMinU(), icon.getMinV());
+ t.addVertexWithUV(0 + offset, 16 + offset, 0, icon.getMinU(), icon.getMaxV());
+ t.addVertexWithUV(16 + offset, 16 + offset, 0, icon.getMaxU(), icon.getMaxV());
+ t.addVertexWithUV(16 + offset, 0 + offset, 0, icon.getMaxU(), icon.getMinV());
+ t.draw();
+ }
+
+ GL11.glDisable(GL11.GL_BLEND);
+ GL11.glPopMatrix();
+ }
+ counter++;
+ }
+
+ @Override
+ protected void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor,
+ int pass, Object... data) {
+ short metaData = (short) item.getItemDamage();
+ if (!(item.getItem() instanceof IGT_ItemWithMaterialRenderer itemRenderer)) return;
+
+ int currentFrame = (int) ((System.nanoTime() % 4_000_000_000L) / 20_000_000L);
+ boolean timing = currentFrame <= 20;
+
+ if (timing && currentFrame % 5 == 0) {
+ offsetRed = rand.nextDouble() * 1.7 * Math.signum(rand.nextGaussian());
+ offsetCyan = rand.nextDouble() * 1.7 * Math.signum(rand.nextGaussian());
+ }
+
+ IIcon itemIcon = itemRenderer.getIcon(metaData, pass);
+ IIcon overlay = itemRenderer.getOverlayIcon(metaData, pass);
+ FluidStack aFluid = GT_Utility.getFluidForFilledItem(item, true);
+
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+
+ if (shouldModulateColor) {
+ short[] modulation = itemRenderer.getRGBa(item);
+ GL11.glColor4f(
+ modulation[0] / 255.0F,
+ modulation[1] / 255.0F,
+ modulation[2] / 255.0F,
+ modulation[3] / 255.0F);
+ }
+
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+
+ if (itemIcon != null) {
+ markNeedsAnimationUpdate(itemIcon);
+ renderRegularItem(type, item, itemIcon, aFluid == null);
+ }
+
+ if (overlay != null && aFluid != null && aFluid.getFluid() != null) {
+ IIcon fluidIcon = aFluid.getFluid()
+ .getIcon(aFluid);
+ if (fluidIcon != null) {
+ markNeedsAnimationUpdate(fluidIcon);
+ // Adds colour to a cells fluid. Does not colour full fluid icons as shown in NEI etc.
+ renderContainedFluid(type, aFluid, fluidIcon);
+ }
+ }
+
+ if (overlay != null) {
+ GL11.glColor3f(1.0F, 1.0F, 1.0F);
+ TextureUtils.bindAtlas(itemRenderer.getSpriteNumber());
+ markNeedsAnimationUpdate(overlay);
+ renderItemOverlay(type, overlay);
+ }
+
+ if (type == ItemRenderType.INVENTORY && timing) {
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ applyGlitchEffect(type, shouldModulateColor, cyan, itemIcon, overlay);
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ applyGlitchEffect(type, shouldModulateColor, red, itemIcon, overlay);
+
+ }
+ GL11.glDisable(GL11.GL_BLEND);
+ }
+}
diff --git a/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java b/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java
index 1b3802306c..836756a18a 100644
--- a/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java
+++ b/src/main/java/gregtech/loaders/postload/chains/GT_NaniteChain.java
@@ -163,6 +163,23 @@ public class GT_NaniteChain {
.eut(1_000_000_000)
.addTo(nanoForgeRecipes);
+ // Six-Phased Copper Nanites - Used in Phononic Crystal production for the godforge
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ aUIVTierLens,
+ MaterialsUEVplus.SixPhasedCopper.getBlocks(16),
+ ItemList.Circuit_Chip_SoC2.get(64),
+ ItemList.Circuit_Chip_SoC2.get(64),
+ ItemList.Circuit_Chip_SoC2.get(64))
+ .itemOutputs(MaterialsUEVplus.SixPhasedCopper.getNanite(8))
+ .fluidInputs(
+ Materials.UUMatter.getFluid(500_000),
+ MaterialsUEVplus.DimensionallyTranscendentResidue.getFluid(50_000))
+ .metadata(NANO_FORGE_TIER, 3)
+ .duration(100 * SECONDS)
+ .eut(2_000_000_000)
+ .addTo(nanoForgeRecipes);
+
// White Dwarf Matter Nanites. Used to make Magnetohydrodynamically constrained star matter.
GT_Values.RA.stdBuilder()
.itemInputs(
diff --git a/src/main/java/gregtech/loaders/postload/recipes/AssemblerRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/AssemblerRecipes.java
index c2631632c6..217be9082a 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/AssemblerRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/AssemblerRecipes.java
@@ -48,6 +48,7 @@ import gregtech.api.util.ExternalMaterials;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.material.ALLOY;
public class AssemblerRecipes implements Runnable {
@@ -3532,6 +3533,31 @@ public class AssemblerRecipes implements Runnable {
}
}
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.pipeHuge, MaterialsUEVplus.TranscendentMetal, 1),
+ GT_OreDictUnificator.get(OrePrefixes.foil, Materials.SuperconductorUIVBase, 64),
+ ALLOY.QUANTUM.getPlate(8),
+ ItemList.Electric_Pump_UIV.get(1))
+ .fluidInputs(MaterialsUEVplus.PhononMedium.getFluid(100))
+ .itemOutputs(ItemList.Thermal_Superconductor.get(1))
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_UIV)
+ .addTo(assemblerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ ItemList.Thermal_Superconductor.get(2),
+ ALLOY.QUANTUM.getPlate(12),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.SuperconductorUIVBase, 8),
+ GT_OreDictUnificator.get(OrePrefixes.rotor, MaterialsUEVplus.SixPhasedCopper, 3),
+ ItemList.Field_Generator_UEV.get(1))
+ .fluidInputs(MaterialsUEVplus.PhononMedium.getFluid(500))
+ .itemOutputs(ItemList.Relativistic_Heat_Capacitor.get(1))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_UIV)
+ .addTo(assemblerRecipes);
}
/**
diff --git a/src/main/java/gregtech/loaders/postload/recipes/AutoclaveRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/AutoclaveRecipes.java
index 519d584136..311c5b1941 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/AutoclaveRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/AutoclaveRecipes.java
@@ -10,6 +10,7 @@ import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsUEVplus;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.TierEU;
import gregtech.api.util.GT_ModHandler;
@@ -230,5 +231,23 @@ public class AutoclaveRecipes implements Runnable {
.duration(60 * SECONDS)
.eut(TierEU.RECIPE_LV)
.addTo(autoclaveRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.nanite, MaterialsUEVplus.TranscendentMetal, 1L),
+ GT_OreDictUnificator.get(OrePrefixes.dust, MaterialsUEVplus.Mellion, 32L))
+ .itemOutputs(ItemList.Phononic_Seed_Crystal.get(8L))
+ .fluidInputs(Materials.Grade8PurifiedWater.getFluid(32_000L))
+ .duration(15 * SECONDS)
+ .eut(TierEU.RECIPE_UMV)
+ .addTo(autoclaveRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_OreDictUnificator.get(OrePrefixes.round, MaterialsUEVplus.MagMatter, 1))
+ .itemOutputs(ItemList.Phononic_Seed_Crystal.get(5))
+ .fluidInputs(MaterialsUEVplus.PhononCrystalSolution.getFluid(250))
+ .duration(2 * SECONDS + 10 * TICKS)
+ .eut(TierEU.RECIPE_UXV)
+ .addTo(autoclaveRecipes);
}
}
diff --git a/src/main/java/gregtech/loaders/postload/recipes/BenderRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/BenderRecipes.java
index 192422437a..33149b2ff3 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/BenderRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/BenderRecipes.java
@@ -7,6 +7,7 @@ import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
+import goodgenerator.items.MyMaterial;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
@@ -315,6 +316,13 @@ public class BenderRecipes implements Runnable {
.eut(8)
.addTo(benderRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(MyMaterial.tairitsu.get(OrePrefixes.ingot, 9), GT_Utility.getIntegratedCircuit(9))
+ .itemOutputs(MyMaterial.tairitsu.get(OrePrefixes.plateDense, 1))
+ .duration(5 * SECONDS)
+ .eut(TierEU.RECIPE_ZPM)
+ .addTo(benderRecipes);
+
if (GT_OreDictUnificator.get(OrePrefixes.itemCasing, Materials.Tin, 1L) != null) {
GT_Values.RA.stdBuilder()
.itemInputs(
diff --git a/src/main/java/gregtech/loaders/postload/recipes/BlastFurnaceRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/BlastFurnaceRecipes.java
index 6a95493f8c..84833c933d 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/BlastFurnaceRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/BlastFurnaceRecipes.java
@@ -651,6 +651,28 @@ public class BlastFurnaceRecipes implements Runnable {
.eut(TierEU.RECIPE_HV)
.metadata(COIL_HEAT, 573)
.addTo(blastFurnaceRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ ItemList.Phononic_Seed_Crystal.get(1),
+ MaterialsUEVplus.SixPhasedCopper.getNanite(1),
+ Materials.Dilithium.getDust(16),
+ GT_Utility.getIntegratedCircuit(2))
+ .fluidInputs(MaterialsUEVplus.Mellion.getMolten(128 * 144L))
+ .fluidOutputs(MaterialsUEVplus.PhononCrystalSolution.getFluid(1000))
+ .duration(300 * SECONDS)
+ .eut((int) TierEU.RECIPE_UIV)
+ .metadata(COIL_HEAT, 17000)
+ .addTo(blastFurnaceRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(MaterialsUEVplus.Mellion.getDust(1), GT_Utility.getIntegratedCircuit(11))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.ingotHot, MaterialsUEVplus.Mellion, 1))
+ .fluidInputs(Materials.Radon.getGas(1000))
+ .duration(50 * SECONDS)
+ .eut((int) TierEU.RECIPE_UXV)
+ .metadata(COIL_HEAT, 14000)
+ .addTo(blastFurnaceRecipes);
}
public void registerPrimitiveBlastFurnaceRecipes() {
diff --git a/src/main/java/gregtech/loaders/postload/recipes/ChemicalBathRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/ChemicalBathRecipes.java
index 8ca67db192..7be13ecbe4 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/ChemicalBathRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/ChemicalBathRecipes.java
@@ -10,6 +10,10 @@ import static gregtech.api.util.GT_RecipeBuilder.TICKS;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Dyes;
@@ -311,6 +315,14 @@ public class ChemicalBathRecipes implements Runnable {
.eut(TierEU.RECIPE_LV)
.addTo(chemicalBathRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(WerkstoffLoader.CubicZirconia.get(OrePrefixes.gemExquisite, 1))
+ .itemOutputs(Materials.Firestone.getGems(1))
+ .fluidInputs(new FluidStack(FluidRegistry.getFluid("ic2hotcoolant"), 250))
+ .duration(2 * SECONDS)
+ .eut(TierEU.RECIPE_ZPM)
+ .addTo(chemicalBathRecipes);
+
// Na + H2O = NaOH + H
GT_Values.RA.stdBuilder()
.itemInputs(Materials.Sodium.getDust(1))
diff --git a/src/main/java/gregtech/loaders/postload/recipes/CompressorRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/CompressorRecipes.java
index 78d8319907..a5144260c2 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/CompressorRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/CompressorRecipes.java
@@ -11,6 +11,8 @@ import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
+import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
+
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
@@ -247,6 +249,13 @@ public class CompressorRecipes implements Runnable {
.eut(4)
.addTo(compressorRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(WerkstoffLoader.MagnetoResonaticDust.get(OrePrefixes.gem, 9))
+ .itemOutputs(WerkstoffLoader.MagnetoResonaticDust.get(OrePrefixes.block, 1))
+ .duration(15 * SECONDS)
+ .eut(2)
+ .addTo(compressorRecipes);
+
if (Railcraft.isModLoaded()) {
GT_Values.RA.stdBuilder()
.itemInputs(RailcraftToolItems.getCoalCoke(9))
diff --git a/src/main/java/gregtech/loaders/postload/recipes/FusionReactorRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/FusionReactorRecipes.java
index 88c07e365e..3d53de7d2a 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/FusionReactorRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/FusionReactorRecipes.java
@@ -8,6 +8,7 @@ import static gregtech.api.util.GT_RecipeConstants.FUSION_THRESHOLD;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.TierEU;
+import gtPlusPlus.core.material.ELEMENT;
public class FusionReactorRecipes implements Runnable {
@@ -270,6 +271,14 @@ public class FusionReactorRecipes implements Runnable {
.addTo(fusionRecipes); // FT3
GT_Values.RA.stdBuilder()
+ .fluidInputs(Materials.Cobalt.getMolten(144), ELEMENT.getInstance().NEON.getFluidStack(144))
+ .fluidOutputs(Materials.Rubidium.getMolten(144))
+ .duration(1 * SECONDS + 4 * TICKS)
+ .eut(98304)
+ .metadata(FUSION_THRESHOLD, 500000000)
+ .addTo(fusionRecipes); // FT3
+
+ GT_Values.RA.stdBuilder()
.fluidInputs(Materials.Lutetium.getMolten(288), Materials.Vanadium.getMolten(288))
.fluidOutputs(Materials.Plutonium241.getPlasma(288))
.duration(4 * TICKS)
diff --git a/src/main/java/gregtech/loaders/postload/recipes/MixerRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/MixerRecipes.java
index 9e0d3e4780..1b8cbb4dcd 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/MixerRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/MixerRecipes.java
@@ -20,6 +20,7 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import goodgenerator.items.MyMaterial;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
@@ -1718,5 +1719,20 @@ public class MixerRecipes implements Runnable {
.duration(5 * SECONDS)
.eut(100)
.addTo(mixerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ Materials.Tritanium.getDust(11),
+ MyMaterial.orundum.get(OrePrefixes.dust, 8),
+ Materials.Rubidium.getDust(11),
+ Materials.FierySteel.getDust(7),
+ Materials.Firestone.getDust(13),
+ MyMaterial.atomicSeparationCatalyst.get(OrePrefixes.dust, 13),
+ GT_Utility.getIntegratedCircuit(6))
+ .itemOutputs(MaterialsUEVplus.Mellion.getDust(63))
+ .fluidInputs(MaterialsUEVplus.DimensionallyTranscendentResidue.getFluid(5000))
+ .duration(15 * SECONDS)
+ .eut((int) TierEU.RECIPE_UMV)
+ .addTo(mixerRecipes);
}
}
diff --git a/src/main/java/gregtech/loaders/postload/recipes/PlasmaForgeRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/PlasmaForgeRecipes.java
index 2763bb8d77..e648205b7a 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/PlasmaForgeRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/PlasmaForgeRecipes.java
@@ -1,6 +1,7 @@
package gregtech.loaders.postload.recipes;
import static goodgenerator.loader.Loaders.huiCircuit;
+import static gregtech.api.enums.Mods.Avaritia;
import static gregtech.api.enums.Mods.NewHorizonsCoreMod;
import static gregtech.api.recipe.RecipeMaps.plasmaForgeRecipes;
import static gregtech.api.util.GT_ModHandler.getModItem;
@@ -15,6 +16,7 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.MaterialsUEVplus;
import gregtech.api.enums.TierEU;
import gtPlusPlus.core.item.ModItems;
+import gtPlusPlus.core.material.ELEMENT;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
public class PlasmaForgeRecipes implements Runnable {
@@ -49,5 +51,23 @@ public class PlasmaForgeRecipes implements Runnable {
.eut((int) TierEU.RECIPE_UEV)
.metadata(COIL_HEAT, 10800)
.addTo(plasmaForgeRecipes);
+
+ if (Avaritia.isModLoaded()) {
+ // Six-Phased Copper
+ GT_Values.RA.stdBuilder()
+ .itemInputs(getModItem(Avaritia.ID, "Singularity", 8, 5))
+ .fluidInputs(
+ ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.getFluidStack(72 * 144),
+ ELEMENT.STANDALONE.ASTRAL_TITANIUM.getFluidStack(4 * 72 * 144),
+ ELEMENT.STANDALONE.HYPOGEN.getFluidStack(36 * 144),
+ ELEMENT.STANDALONE.CHRONOMATIC_GLASS.getFluidStack(8 * 72 * 144),
+ ELEMENT.STANDALONE.RHUGNOR.getFluidStack(18 * 144),
+ MaterialsUEVplus.Mellion.getMolten(72 * 144))
+ .fluidOutputs(MaterialsUEVplus.SixPhasedCopper.getMolten(72 * 144L))
+ .duration(60 * SECONDS)
+ .eut((int) TierEU.RECIPE_UMV)
+ .metadata(COIL_HEAT, 12600)
+ .addTo(plasmaForgeRecipes);
+ }
}
}
diff --git a/src/main/java/gregtech/loaders/postload/recipes/TranscendentPlasmaMixerRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/TranscendentPlasmaMixerRecipes.java
index 123f9903ea..b1cd1b76f3 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/TranscendentPlasmaMixerRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/TranscendentPlasmaMixerRecipes.java
@@ -2,10 +2,14 @@ package gregtech.loaders.postload.recipes;
import static gregtech.api.recipe.RecipeMaps.transcendentPlasmaMixerRecipes;
+import net.minecraftforge.fluids.FluidStack;
+
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.MaterialsUEVplus;
+import gregtech.api.enums.TierEU;
import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.material.ELEMENT;
public class TranscendentPlasmaMixerRecipes implements Runnable {
@@ -138,5 +142,19 @@ public class TranscendentPlasmaMixerRecipes implements Runnable {
.noOptimize()
.addTo(transcendentPlasmaMixerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.getIntegratedCircuit(24))
+ .fluidInputs(
+ new FluidStack(ELEMENT.getInstance().FERMIUM.getPlasma(), 1000),
+ Materials.Thorium.getPlasma(1000L),
+ new FluidStack(ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.getPlasma(), 1000),
+ Materials.Calcium.getPlasma(1000L),
+ MaterialsUEVplus.DimensionallyTranscendentResidue.getFluid(1000L))
+ .fluidOutputs(MaterialsUEVplus.Creon.getPlasma(5000L))
+ .duration(100)
+ .eut(TierEU.RECIPE_UMV)
+ .noOptimize()
+ .addTo(transcendentPlasmaMixerRecipes);
+
}
}
diff --git a/src/main/java/gregtech/loaders/postload/recipes/VacuumFreezerRecipes.java b/src/main/java/gregtech/loaders/postload/recipes/VacuumFreezerRecipes.java
index b3fd9a392b..a5150948ce 100644
--- a/src/main/java/gregtech/loaders/postload/recipes/VacuumFreezerRecipes.java
+++ b/src/main/java/gregtech/loaders/postload/recipes/VacuumFreezerRecipes.java
@@ -409,5 +409,14 @@ public class VacuumFreezerRecipes implements Runnable {
.duration(1 * SECONDS)
.eut(TierEU.RECIPE_UIV)
.addTo(vacuumFreezerRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_OreDictUnificator.get(OrePrefixes.ingotHot, MaterialsUEVplus.Mellion, 9L))
+ .fluidInputs(MaterialsUEVplus.Creon.getPlasma(1296L))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.ingot, MaterialsUEVplus.Mellion, 9L))
+ .fluidOutputs(MaterialsUEVplus.Creon.getMolten(1296L))
+ .duration(40 * SECONDS)
+ .eut(TierEU.RECIPE_UMV)
+ .addTo(vacuumFreezerRecipes);
}
}
diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
index fda6c4c9e8..f4c682d848 100644
--- a/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
+++ b/src/main/java/gregtech/loaders/preload/GT_Loader_Item_Block_And_Fluid.java
@@ -666,7 +666,7 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable {
new Materials[] { Materials.Cryolite, Materials.SiliconSG, MaterialsKevlar.NickelAluminide,
MaterialsUEVplus.SpaceTime, MaterialsUEVplus.TranscendentMetal, Materials.Oriharukon,
MaterialsUEVplus.WhiteDwarfMatter, MaterialsUEVplus.BlackDwarfMatter, MaterialsUEVplus.Universium,
- MaterialsUEVplus.Eternity, MaterialsUEVplus.MagMatter },
+ MaterialsUEVplus.Eternity, MaterialsUEVplus.MagMatter, MaterialsUEVplus.SixPhasedCopper },
OrePrefixes.block,
gregtech.api.enums.Textures.BlockIcons.STORAGE_BLOCKS12);
@@ -1276,6 +1276,24 @@ public class GT_Loader_Item_Block_And_Fluid implements Runnable {
GT_OreDictUnificator.get(OrePrefixes.cell, MaterialsUEVplus.QuarkGluonPlasma, 1L),
ItemList.Cell_Empty.get(1L));
+ GT_FluidFactory.builder("PhononMedium")
+ .withLocalizedName(MaterialsUEVplus.PhononMedium.mLocalizedName)
+ .withStateAndTemperature(LIQUID, 500)
+ .buildAndRegister()
+ .configureMaterials(MaterialsUEVplus.PhononMedium)
+ .registerBContainers(
+ GT_OreDictUnificator.get(OrePrefixes.cell, MaterialsUEVplus.PhononMedium, 1L),
+ ItemList.Cell_Empty.get(1L));
+
+ GT_FluidFactory.builder("PhononCrystalSolution")
+ .withLocalizedName(MaterialsUEVplus.PhononCrystalSolution.mLocalizedName)
+ .withStateAndTemperature(LIQUID, 500)
+ .buildAndRegister()
+ .configureMaterials(MaterialsUEVplus.PhononCrystalSolution)
+ .registerBContainers(
+ GT_OreDictUnificator.get(OrePrefixes.cell, MaterialsUEVplus.PhononCrystalSolution, 1L),
+ ItemList.Cell_Empty.get(1L));
+
GT_FluidFactory.builder("fieryblood")
.withLocalizedName("Fiery Blood")
.withStateAndTemperature(LIQUID, 6400)
diff --git a/src/main/java/gtPlusPlus/core/item/ModItems.java b/src/main/java/gtPlusPlus/core/item/ModItems.java
index c276a31be8..2253b024a7 100644
--- a/src/main/java/gtPlusPlus/core/item/ModItems.java
+++ b/src/main/java/gtPlusPlus/core/item/ModItems.java
@@ -341,7 +341,7 @@ public final class ModItems {
MaterialGenerator.generate(ELEMENT.STANDALONE.WHITE_METAL);
MaterialGenerator.generateOreMaterialWithAllExcessComponents(ELEMENT.STANDALONE.GRANITE);
MaterialGenerator.generateOreMaterialWithAllExcessComponents(ELEMENT.STANDALONE.RUNITE);
- MaterialGenerator.generate(ELEMENT.STANDALONE.DRAGON_METAL, false);
+ MaterialGenerator.generate(ELEMENT.STANDALONE.DRAGON_METAL);
MISC_MATERIALS.run();
@@ -941,6 +941,9 @@ public final class ModItems {
MaterialUtils.generateComponentAndAssignToAMaterial(ComponentTypes.FOIL, ALLOY.TRINIUM_REINFORCED_STEEL);
MaterialUtils.generateComponentAndAssignToAMaterial(ComponentTypes.FOIL, ELEMENT.STANDALONE.CHRONOMATIC_GLASS);
+ // Gear
+ MaterialUtils.generateComponentAndAssignToAMaterial(ComponentTypes.GEAR, ELEMENT.STANDALONE.RHUGNOR);
+
// Special Sillyness
if (true) {
diff --git a/src/main/java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/main/java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
index 9cc82b2f1d..5da803b392 100644
--- a/src/main/java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
+++ b/src/main/java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java
@@ -50,10 +50,14 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader;
+
import cpw.mods.fml.common.Loader;
+import goodgenerator.items.MyMaterial;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsUEVplus;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.TierEU;
import gregtech.api.util.GT_ModHandler;
@@ -856,6 +860,20 @@ public class RECIPES_GREGTECH {
.eut(TierEU.RECIPE_UEV)
.duration(9 * MINUTES)
.addTo(alloyBlastSmelterRecipes);
+
+ // lossless phonon transfer medium
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_Utility.getIntegratedCircuit(5),
+ WerkstoffLoader.MagnetoResonaticDust.get(OrePrefixes.dust, 5),
+ MyMaterial.metastableOganesson.get(OrePrefixes.dust, 1),
+ Materials.Praseodymium.getDust(15),
+ Materials.SuperconductorUIVBase.getDust(6))
+ .fluidInputs(MaterialsUEVplus.PhononCrystalSolution.getFluid(4000L))
+ .fluidOutputs(MaterialsUEVplus.PhononMedium.getFluid(1000L))
+ .eut(TierEU.RECIPE_UIV)
+ .duration(2 * MINUTES)
+ .addTo(alloyBlastSmelterRecipes);
}
private static void dehydratorRecipes() {