aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore11
-rw-r--r--build.gradle23
-rw-r--r--dependencies.gradle12
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin62076 -> 63375 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties3
-rwxr-xr-xgradlew5
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java4
-rw-r--r--src/main/java/com/github/technus/tectech/loader/MainLoader.java3
-rw-r--r--src/main/java/com/github/technus/tectech/nei/IMCForNEI.java45
-rw-r--r--src/main/java/com/github/technus/tectech/nei/NEI_TT_Config.java35
-rw-r--r--src/main/java/com/github/technus/tectech/nei/TT_NEI_EyeOfHarmonyHandler.java33
-rw-r--r--src/main/java/com/github/technus/tectech/nei/TT_NEI_ResearchHandler.java358
-rw-r--r--src/main/java/com/github/technus/tectech/nei/TT_NEI_ScannerHandler.java358
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyFrontend.java202
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java4
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/ResearchStationFrontend.java94
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/TT_recipe.java403
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java13
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/TecTechRecipeMaps.java49
-rw-r--r--src/main/java/com/github/technus/tectech/thing/gui/TecTechUITextures.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java75
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java3
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java9
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/multimachines/ResearchFake.pngbin1972 -> 0 bytes
-rw-r--r--src/main/resources/assets/tectech/lang/en_US.lang12
-rw-r--r--src/main/resources/assets/tectech/textures/gui/picture/rack_large.pngbin166 -> 332 bytes
-rw-r--r--src/main/resources/assets/tectech/textures/gui/progressbar/research_station_1.pngbin0 -> 114 bytes
-rw-r--r--src/main/resources/assets/tectech/textures/gui/progressbar/research_station_2.pngbin0 -> 172 bytes
-rw-r--r--src/main/resources/assets/tectech/textures/gui/progressbar/research_station_3.pngbin0 -> 281 bytes
30 files changed, 418 insertions, 1352 deletions
diff --git a/.gitignore b/.gitignore
index 3274a536d2..27a8ae0f17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
.gradle
.settings
/.idea/
+/.vscode/
/run/
/build/
/eclipse/
@@ -25,7 +26,13 @@ whitelist.json
*.iml
*.ipr
*.iws
-src/main/resources/mixins.*.json
+src/main/resources/mixins.*([!.]).json
*.bat
-.vscode/settings.json
+*.DS_Store
+!gradlew.bat
.factorypath
+addon.local.gradle
+addon.local.gradle.kts
+addon.late.local.gradle
+addon.late.local.gradle.kts
+layout.json \ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 4e31dc883b..8507c7dfbd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,4 @@
-//version: 1700844281
+//version: 1701530445
/*
DO NOT CHANGE THIS FILE!
Also, you may replace this file at any time if there is an update available.
@@ -28,27 +28,12 @@ import java.util.concurrent.TimeUnit
buildscript {
repositories {
- mavenCentral()
-
- maven {
- name 'forge'
- url 'https://maven.minecraftforge.net'
- }
maven {
// GTNH RetroFuturaGradle and ASM Fork
name "GTNH Maven"
url "http://jenkins.usrv.eu:8081/nexus/content/groups/public/"
allowInsecureProtocol = true
}
- maven {
- name 'sonatype'
- url 'https://oss.sonatype.org/content/repositories/snapshots/'
- }
- maven {
- name 'Scala CI dependencies'
- url 'https://repo1.maven.org/maven2/'
- }
-
mavenLocal()
}
}
@@ -793,12 +778,12 @@ ext.java17PatchDependenciesCfg = configurations.create("java17PatchDependencies"
}
dependencies {
- def lwjgl3ifyVersion = '1.5.1'
+ def lwjgl3ifyVersion = '1.5.7'
if (modId != 'lwjgl3ify') {
java17Dependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}")
}
if (modId != 'hodgepodge') {
- java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.17')
+ java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.35')
}
java17PatchDependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}:forgePatches") {transitive = false}
@@ -1310,7 +1295,7 @@ def addCurseForgeRelation(String type, String name) {
// Updating
-def buildscriptGradleVersion = "8.2.1"
+def buildscriptGradleVersion = "8.5"
tasks.named('wrapper', Wrapper).configure {
gradleVersion = buildscriptGradleVersion
diff --git a/dependencies.gradle b/dependencies.gradle
index 82674050a5..d546b37260 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -2,14 +2,14 @@
dependencies {
shadowImplementation('com.github.GTNewHorizons:AVRcore:1.0.1')
- api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.90:dev')
+ api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.96:dev')
api('com.github.GTNewHorizons:Yamcl:0.5.86:dev')
implementation('com.github.GTNewHorizons:GTNEIOrePlugin:1.1.3:dev')
compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.23:deobf") {transitive=false}
- compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.10.11-GTNH:dev') {transitive=false}
+ compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.10.12-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.9.19-GTNH:dev') {transitive=false}
- compileOnly('com.github.GTNewHorizons:GTplusplus:1.10.32:dev') {transitive=false}
+ compileOnly('com.github.GTNewHorizons:GTplusplus:1.10.34:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Avaritia:1.46:dev') {transitive=false}
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive=false}
@@ -17,9 +17,9 @@ dependencies {
// for testing EOH recipes
//runtimeOnlyNonPublishable("TGregworks:TGregworks:1.7.10-GTNH-1.0.23:deobf")
- //runtimeOnlyNonPublishable('com.github.GTNewHorizons:TinkersConstruct:1.10.11-GTNH:dev')
- //runtimeOnlyNonPublishable('com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.40:dev')
- //runtimeOnlyNonPublishable('com.github.GTNewHorizons:GoodGenerator:0.7.6:dev') {
+ //runtimeOnlyNonPublishable('com.github.GTNewHorizons:TinkersConstruct:1.10.12-GTNH:dev')
+ //runtimeOnlyNonPublishable('com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.43:dev')
+ //runtimeOnlyNonPublishable('com.github.GTNewHorizons:GoodGenerator:0.7.9:dev') {
// exclude group: "com.github.GTNewHorizons", module: "TecTech"
//}
//runtimeOnlyNonPublishable("curse.maven:extra-utilities-225561:2264384") {transitive=false}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index c1962a79e2..033e24c4cd 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 17a8ddce2d..1af9e0930b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index aeb74cbb43..fcb6fca147 100755
--- a/gradlew
+++ b/gradlew
@@ -130,10 +130,13 @@ location of your Java installation."
fi
else
JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+ if ! command -v java >/dev/null 2>&1
+ then
+ die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
+ fi
fi
# Increase the maximum file descriptors if we can.
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java
index 292ebeb7e3..0845e02736 100644
--- a/src/main/java/com/github/technus/tectech/TecTech.java
+++ b/src/main/java/com/github/technus/tectech/TecTech.java
@@ -9,9 +9,9 @@ import com.github.technus.tectech.loader.MainLoader;
import com.github.technus.tectech.loader.TecTechConfig;
import com.github.technus.tectech.loader.gui.CreativeTabTecTech;
import com.github.technus.tectech.mechanics.enderStorage.EnderWorldSavedData;
-import com.github.technus.tectech.nei.IMCForNEI;
import com.github.technus.tectech.proxy.CommonProxy;
import com.github.technus.tectech.recipe.EyeOfHarmonyRecipeStorage;
+import com.github.technus.tectech.recipe.TecTechRecipeMaps;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
@@ -85,6 +85,7 @@ public class TecTech {
FMLCommonHandler.instance().bus().register(enderWorldSavedData);
MinecraftForge.EVENT_BUS.register(enderWorldSavedData);
+ TecTechRecipeMaps.init();
MainLoader.preLoad();
}
@@ -95,7 +96,6 @@ public class TecTech {
MainLoader.load();
MainLoader.addAfterGregTechPostLoadRunner();
- IMCForNEI.IMCSender();
}
@Mod.EventHandler
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 cacf236134..5681a2128e 100644
--- a/src/main/java/com/github/technus/tectech/loader/MainLoader.java
+++ b/src/main/java/com/github/technus/tectech/loader/MainLoader.java
@@ -28,6 +28,7 @@ import cpw.mods.fml.common.ProgressManager;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.util.GT_Recipe;
@SuppressWarnings("deprecation")
@@ -146,7 +147,7 @@ public final class MainLoader {
}
}
}
- for (GT_Recipe r : GT_Recipe.GT_Recipe_Map.sFusionRecipes.mRecipeList) {
+ for (GT_Recipe r : RecipeMaps.fusionRecipes.getAllRecipes()) {
Fluid fluid = binds.get(r.mFluidOutputs[0].getFluid());
if (fluid != null) {
if (DEBUG_MODE) {
diff --git a/src/main/java/com/github/technus/tectech/nei/IMCForNEI.java b/src/main/java/com/github/technus/tectech/nei/IMCForNEI.java
deleted file mode 100644
index 033882609b..0000000000
--- a/src/main/java/com/github/technus/tectech/nei/IMCForNEI.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.github.technus.tectech.nei;
-
-import static com.github.technus.tectech.Reference.MODID;
-import static gregtech.api.enums.Mods.NotEnoughItems;
-
-import net.minecraft.nbt.NBTTagCompound;
-
-import cpw.mods.fml.common.event.FMLInterModComms;
-
-public class IMCForNEI {
-
- public static void IMCSender() {
- if (!NotEnoughItems.isModLoaded()) {
- return;
- }
- sendHandler("gt.recipe.eyeofharmony", "gregtech:gt.blockmachines:15410", 1);
- sendCatalyst("gt.recipe.eyeofharmony", "gregtech:gt.blockmachines:15410");
- }
-
- private static void sendHandler(String aName, String aBlock, int aMaxRecipesPerPage) {
- NBTTagCompound aNBT = new NBTTagCompound();
- aNBT.setString("handler", aName);
- aNBT.setString("modName", MODID);
- aNBT.setString("modId", MODID);
- aNBT.setBoolean("modRequired", true);
- aNBT.setString("itemName", aBlock);
- aNBT.setInteger("handlerHeight", 135);
- aNBT.setInteger("handlerWidth", 166);
- aNBT.setInteger("maxRecipesPerPage", aMaxRecipesPerPage);
- aNBT.setInteger("yShift", 6);
- FMLInterModComms.sendMessage("NotEnoughItems", "registerHandlerInfo", aNBT);
- }
-
- private static void sendCatalyst(String aName, String aStack, int aPriority) {
- NBTTagCompound aNBT = new NBTTagCompound();
- aNBT.setString("handlerID", aName);
- aNBT.setString("itemName", aStack);
- aNBT.setInteger("priority", aPriority);
- FMLInterModComms.sendMessage("NotEnoughItems", "registerCatalystInfo", aNBT);
- }
-
- private static void sendCatalyst(String aName, String aStack) {
- sendCatalyst(aName, aStack, 0);
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/nei/NEI_TT_Config.java b/src/main/java/com/github/technus/tectech/nei/NEI_TT_Config.java
deleted file mode 100644
index 1523302a24..0000000000
--- a/src/main/java/com/github/technus/tectech/nei/NEI_TT_Config.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.github.technus.tectech.nei;
-
-import com.github.technus.tectech.recipe.TT_recipe;
-
-import codechicken.nei.api.IConfigureNEI;
-import cpw.mods.fml.common.FMLCommonHandler;
-
-public class NEI_TT_Config implements IConfigureNEI { // must be NEI*Config
-
- public static boolean sIsAdded = true;
- public static TT_NEI_ResearchHandler TT_RH;
- public static TT_NEI_ScannerHandler TT_SH;
- public static TT_NEI_EyeOfHarmonyHandler TT_EOH;
-
- @Override
- public void loadConfig() {
- sIsAdded = false;
- if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
- TT_RH = new TT_NEI_ResearchHandler(TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes);
- TT_SH = new TT_NEI_ScannerHandler(TT_recipe.GT_Recipe_MapTT.sScannableFakeRecipes);
- TT_EOH = new TT_NEI_EyeOfHarmonyHandler(TT_recipe.GT_Recipe_MapTT.sEyeofHarmonyRecipes);
- }
- sIsAdded = true;
- }
-
- @Override
- public String getName() {
- return "TecTech NEI Plugin";
- }
-
- @Override
- public String getVersion() {
- return "(1.0)";
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/nei/TT_NEI_EyeOfHarmonyHandler.java b/src/main/java/com/github/technus/tectech/nei/TT_NEI_EyeOfHarmonyHandler.java
deleted file mode 100644
index 7d8e982443..0000000000
--- a/src/main/java/com/github/technus/tectech/nei/TT_NEI_EyeOfHarmonyHandler.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.github.technus.tectech.nei;
-
-import static com.github.technus.tectech.Reference.MODID;
-
-import codechicken.nei.recipe.GuiCraftingRecipe;
-import codechicken.nei.recipe.GuiUsageRecipe;
-import codechicken.nei.recipe.TemplateRecipeHandler;
-import cpw.mods.fml.common.event.FMLInterModComms;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.util.GT_Recipe;
-import gregtech.nei.GT_NEI_DefaultHandler;
-
-public class TT_NEI_EyeOfHarmonyHandler extends GT_NEI_DefaultHandler {
-
- public TT_NEI_EyeOfHarmonyHandler(final GT_Recipe.GT_Recipe_Map tMap) {
- super(tMap);
- if (!NEI_TT_Config.sIsAdded) {
-
- FMLInterModComms.sendRuntimeMessage(
- GT_Values.GT,
- "NEIPlugins",
- "register-crafting-handler",
- MODID + "@" + this.getRecipeName() + "@" + this.getOverlayIdentifier());
- GuiCraftingRecipe.craftinghandlers.add(this);
- GuiUsageRecipe.usagehandlers.add(this);
- }
- }
-
- @Override
- public TemplateRecipeHandler newInstance() {
- return new TT_NEI_EyeOfHarmonyHandler(this.mRecipeMap);
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/nei/TT_NEI_ResearchHandler.java b/src/main/java/com/github/technus/tectech/nei/TT_NEI_ResearchHandler.java
deleted file mode 100644
index e87350b2b9..0000000000
--- a/src/main/java/com/github/technus/tectech/nei/TT_NEI_ResearchHandler.java
+++ /dev/null
@@ -1,358 +0,0 @@
-package com.github.technus.tectech.nei;
-
-import static com.github.technus.tectech.recipe.TT_recipeAdder.nullItem;
-import static gregtech.api.enums.ItemList.Display_Fluid;
-
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.init.Blocks;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.FluidContainerRegistry;
-import net.minecraftforge.fluids.FluidStack;
-
-import org.lwjgl.opengl.GL11;
-
-import com.github.technus.tectech.Reference;
-import com.github.technus.tectech.TecTech;
-import com.github.technus.tectech.recipe.TT_recipe;
-
-import codechicken.lib.gui.GuiDraw;
-import codechicken.nei.ItemList;
-import codechicken.nei.PositionedStack;
-import codechicken.nei.recipe.GuiCraftingRecipe;
-import codechicken.nei.recipe.GuiRecipe;
-import codechicken.nei.recipe.GuiUsageRecipe;
-import codechicken.nei.recipe.TemplateRecipeHandler;
-import cpw.mods.fml.common.event.FMLInterModComms;
-import gregtech.api.enums.OrePrefixes;
-import gregtech.api.objects.ItemData;
-import gregtech.api.util.GT_LanguageManager;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-
-public class TT_NEI_ResearchHandler extends TemplateRecipeHandler {
-
- protected final TT_recipe.GT_Recipe_MapTT mRecipeMap;
-
- public TT_NEI_ResearchHandler(TT_recipe.GT_Recipe_MapTT aRecipeMap) {
- mRecipeMap = aRecipeMap;
- transferRects.add(
- new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(65, 13, 36, 18), getOverlayIdentifier()));
- if (!NEI_TT_Config.sIsAdded) {
- FMLInterModComms.sendRuntimeMessage(
- TecTech.instance,
- "NEIPlugins",
- "register-crafting-handler",
- Reference.MODID + '@' + getRecipeName() + '@' + getOverlayIdentifier());
- GuiCraftingRecipe.craftinghandlers.add(this);
- GuiUsageRecipe.usagehandlers.add(this);
- }
- }
-
- public List<GT_Recipe> getSortedRecipes() {
- List<GT_Recipe> result = new ArrayList<>(mRecipeMap.mRecipeList);
- Collections.sort(result);
- return result;
- }
-
- public static void drawText(int aX, int aY, String aString, int aColor) {
- Minecraft.getMinecraft().fontRenderer.drawString(aString, aX, aY, aColor);
- }
-
- @Override
- public TemplateRecipeHandler newInstance() {
- NEI_TT_Config.TT_RH = new TT_NEI_ResearchHandler(mRecipeMap);
- return NEI_TT_Config.TT_RH;
- }
-
- @Override
- public void loadCraftingRecipes(String outputId, Object... results) {
- if (outputId.equals(getOverlayIdentifier())) {
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- arecipes.add(new CachedDefaultRecipe(tRecipe));
- }
- }
- } else {
- super.loadCraftingRecipes(outputId, results);
- }
- }
-
- @Override
- public void loadCraftingRecipes(ItemStack aResult) {
- ItemData tPrefixMaterial = GT_OreDictUnificator.getAssociation(aResult);
-
- ArrayList<ItemStack> tResults = new ArrayList<>();
- tResults.add(aResult);
- tResults.add(GT_OreDictUnificator.get(true, aResult));
- if (tPrefixMaterial != null && !tPrefixMaterial.mBlackListed
- && !tPrefixMaterial.mPrefix.mFamiliarPrefixes.isEmpty()) {
- for (OrePrefixes tPrefix : tPrefixMaterial.mPrefix.mFamiliarPrefixes) {
- tResults.add(GT_OreDictUnificator.get(tPrefix, tPrefixMaterial.mMaterial.mMaterial, 1L));
- }
- }
- FluidStack tFluid = GT_Utility.getFluidForFilledItem(aResult, true);
- if (tFluid != null) {
- tResults.add(GT_Utility.getFluidDisplayStack(tFluid, false));
- for (FluidContainerRegistry.FluidContainerData tData : FluidContainerRegistry
- .getRegisteredFluidContainerData()) {
- if (tData.fluid.isFluidEqual(tFluid)) {
- tResults.add(GT_Utility.copy(tData.filledContainer));
- }
- }
- }
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- CachedDefaultRecipe tNEIRecipe = new CachedDefaultRecipe(tRecipe);
- for (ItemStack tStack : tResults) {
- if (tNEIRecipe.contains(tNEIRecipe.mOutputs, tStack)) {
- arecipes.add(tNEIRecipe);
- break;
- }
- }
- }
- }
- }
-
- @Override
- public void loadUsageRecipes(ItemStack aInput) {
- ItemData tPrefixMaterial = GT_OreDictUnificator.getAssociation(aInput);
-
- ArrayList<ItemStack> tInputs = new ArrayList<>();
- tInputs.add(aInput);
- tInputs.add(GT_OreDictUnificator.get(false, aInput));
- if (tPrefixMaterial != null && !tPrefixMaterial.mPrefix.mFamiliarPrefixes.isEmpty()) {
- for (OrePrefixes tPrefix : tPrefixMaterial.mPrefix.mFamiliarPrefixes) {
- tInputs.add(GT_OreDictUnificator.get(tPrefix, tPrefixMaterial.mMaterial.mMaterial, 1L));
- }
- }
- FluidStack tFluid = GT_Utility.getFluidForFilledItem(aInput, true);
- if (tFluid != null) {
- tInputs.add(GT_Utility.getFluidDisplayStack(tFluid, false));
- for (FluidContainerRegistry.FluidContainerData tData : FluidContainerRegistry
- .getRegisteredFluidContainerData()) {
- if (tData.fluid.isFluidEqual(tFluid)) {
- tInputs.add(GT_Utility.copy(tData.filledContainer));
- }
- }
- }
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- CachedDefaultRecipe tNEIRecipe = new CachedDefaultRecipe(tRecipe);
- for (ItemStack tStack : tInputs) {
- if (tNEIRecipe.contains(tNEIRecipe.mInputs, tStack)) {
- arecipes.add(tNEIRecipe);
- break;
- }
- }
- }
- }
- }
-
- @Override
- public String getOverlayIdentifier() {
- return mRecipeMap.mNEIName;
- }
-
- @Override
- public void drawBackground(int recipe) {
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- GuiDraw.changeTexture(getGuiTexture());
- GuiDraw.drawTexturedModalRect(-4, -8, 1, 3, 174, 78);
- }
-
- @Override
- public int recipiesPerPage() {
- return 1;
- }
-
- @Override
- public String getRecipeName() {
- return GT_LanguageManager.getTranslation(mRecipeMap.mUnlocalizedName);
- }
-
- @Override
- public String getGuiTexture() {
- return mRecipeMap.mNEIGUIPath;
- }
-
- @Override
- public List<String> handleItemTooltip(GuiRecipe<?> gui, ItemStack aStack, List<String> currenttip,
- int aRecipeIndex) {
- TemplateRecipeHandler.CachedRecipe tObject = arecipes.get(aRecipeIndex);
- if (tObject instanceof CachedDefaultRecipe tRecipe) {
- for (PositionedStack tStack : tRecipe.mOutputs) {
- if (aStack == tStack.item) {
- if (!(tStack instanceof FixedPositionedStack) || ((FixedPositionedStack) tStack).mChance <= 0
- || ((FixedPositionedStack) tStack).mChance == 10000) {
- break;
- }
- currenttip.add(
- trans("150", "Chance: ") + ((FixedPositionedStack) tStack).mChance / 100
- + '.'
- + (((FixedPositionedStack) tStack).mChance % 100 < 10
- ? "0" + ((FixedPositionedStack) tStack).mChance % 100
- : Integer.valueOf(((FixedPositionedStack) tStack).mChance % 100))
- + '%');
- break;
- }
- }
- for (PositionedStack tStack : tRecipe.mInputs) {
- if (aStack == tStack.item) {
- if (Display_Fluid.isStackEqual(tStack.item, true, true) || tStack.item.stackSize != 0) {
- break;
- }
- currenttip.add(trans("151", "Does not get consumed in the process"));
- break;
- }
- }
- }
- return currenttip;
- }
-
- @Override
- public void drawExtras(int aRecipeIndex) {
- int tEUt = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mEUt;
- int computation = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mDuration;
- String[] recipeDesc = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.getNeiDesc();
- if (recipeDesc == null) {
- int tSpecial = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mSpecialValue;
- short ampere = (short) (tSpecial & 0xFFFF), minComputationPerSec = (short) (tSpecial >>> 16);
- if (tEUt != 0) {
- drawText(
- 10,
- 73,
- trans("152.1", "Max EU: ") + GT_Utility.formatNumbers(
- (1 + (computation - minComputationPerSec) / minComputationPerSec) * (long) tEUt
- * ampere
- * 20)
- + " EU",
- -16777216);
- drawText(
- 10,
- 83,
- trans("153", "Usage: ") + GT_Utility.formatNumbers((long) tEUt * ampere) + " EU/t",
- -16777216);
- if (mRecipeMap.mShowVoltageAmperageInNEI) {
- drawText(10, 93, trans("154", "Voltage: ") + GT_Utility.formatNumbers(tEUt) + " EU", -16777216);
- drawText(10, 103, trans("155", "Amperage: ") + GT_Utility.formatNumbers(ampere), -16777216);
- } else {
- drawText(10, 93, trans("156", "Voltage: unspecified"), -16777216);
- drawText(10, 103, trans("157", "Amperage: unspecified"), -16777216);
- }
- }
- drawText(10, 113, "Computation: " + GT_Utility.formatNumbers(computation), -16777216);
- drawText(10, 123, "Min Computation: " + GT_Utility.formatNumbers(minComputationPerSec) + " /s", -16777216);
- } else {
- int i = 0;
- for (String descLine : recipeDesc) {
- drawText(10, 73 + 10 * i, descLine, -16777216);
- i++;
- }
- }
- }
-
- public static class FixedPositionedStack extends PositionedStack {
-
- public final int mChance;
- public boolean permutated = false;
-
- public FixedPositionedStack(Object object, int x, int y) {
- this(object, x, y, 0);
- }
-
- public FixedPositionedStack(Object object, int x, int y, int aChance) {
- super(object, x, y, true);
- mChance = aChance;
- }
-
- @Override
- public void generatePermutations() {
- if (permutated) {
- return;
- }
- ArrayList<ItemStack> tDisplayStacks = new ArrayList<>();
- for (ItemStack tStack : items) {
- if (GT_Utility.isStackValid(tStack)) {
- if (tStack.getItemDamage() == 32767) {
- List<ItemStack> permutations = ItemList.itemMap.get(tStack.getItem());
- if (!permutations.isEmpty()) {
- ItemStack stack;
- for (Iterator<ItemStack> iterator = permutations.iterator(); iterator
- .hasNext(); tDisplayStacks.add(GT_Utility.copyAmount(tStack.stackSize, stack))) {
- stack = iterator.next();
- }
- } else {
- ItemStack base = new ItemStack(tStack.getItem(), tStack.stackSize);
- base.stackTagCompound = tStack.stackTagCompound;
- tDisplayStacks.add(base);
- }
- } else {
- tDisplayStacks.add(GT_Utility.copy(tStack));
- }
- }
- }
- items = tDisplayStacks.toArray(nullItem);
- if (items.length == 0) {
- items = new ItemStack[] { new ItemStack(Blocks.fire) };
- }
- permutated = true;
- setPermutationToRender(0);
- }
- }
-
- public class CachedDefaultRecipe extends TemplateRecipeHandler.CachedRecipe {
-
- public final GT_Recipe mRecipe;
- public final List<PositionedStack> mOutputs;
- public final List<PositionedStack> mInputs;
-
- public CachedDefaultRecipe(GT_Recipe aRecipe) {
- mRecipe = aRecipe;
-
- mOutputs = new ArrayList<>();
- mInputs = new ArrayList<>();
-
- int tStartIndex = 0;
- if (aRecipe.getRepresentativeInput(tStartIndex) != null) {
- mInputs.add(new FixedPositionedStack(aRecipe.getRepresentativeInput(tStartIndex), 48, 14 + 9));
- }
- if (aRecipe.mSpecialItems != null) {
- mInputs.add(new FixedPositionedStack(aRecipe.mSpecialItems, 120, 52));
- }
- if (aRecipe.getOutput(tStartIndex) != null) {
- mOutputs.add(
- new FixedPositionedStack(
- aRecipe.getOutput(tStartIndex),
- 102,
- 14 + 9,
- aRecipe.getOutputChance(tStartIndex)));
- }
- }
-
- @Override
- public List<PositionedStack> getIngredients() {
- return getCycledIngredients(cycleticks / 10, mInputs);
- }
-
- @Override
- public PositionedStack getResult() {
- return null;
- }
-
- @Override
- public List<PositionedStack> getOtherStacks() {
- return mOutputs;
- }
- }
-
- public String trans(String aKey, String aEnglish) {
- return GT_LanguageManager.addStringLocalization("Interaction_DESCRIPTION_Index_" + aKey, aEnglish, false);
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/nei/TT_NEI_ScannerHandler.java b/src/main/java/com/github/technus/tectech/nei/TT_NEI_ScannerHandler.java
deleted file mode 100644
index 04558efad8..0000000000
--- a/src/main/java/com/github/technus/tectech/nei/TT_NEI_ScannerHandler.java
+++ /dev/null
@@ -1,358 +0,0 @@
-package com.github.technus.tectech.nei;
-
-import static com.github.technus.tectech.recipe.TT_recipeAdder.nullItem;
-import static gregtech.api.enums.ItemList.Display_Fluid;
-
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.init.Blocks;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.FluidContainerRegistry;
-import net.minecraftforge.fluids.FluidStack;
-
-import org.lwjgl.opengl.GL11;
-
-import com.github.technus.tectech.Reference;
-import com.github.technus.tectech.TecTech;
-import com.github.technus.tectech.recipe.TT_recipe;
-
-import codechicken.lib.gui.GuiDraw;
-import codechicken.nei.ItemList;
-import codechicken.nei.PositionedStack;
-import codechicken.nei.recipe.GuiCraftingRecipe;
-import codechicken.nei.recipe.GuiRecipe;
-import codechicken.nei.recipe.GuiUsageRecipe;
-import codechicken.nei.recipe.TemplateRecipeHandler;
-import cpw.mods.fml.common.event.FMLInterModComms;
-import gregtech.api.enums.OrePrefixes;
-import gregtech.api.objects.ItemData;
-import gregtech.api.util.GT_LanguageManager;
-import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Utility;
-
-public class TT_NEI_ScannerHandler extends TemplateRecipeHandler {
-
- protected final TT_recipe.GT_Recipe_MapTT mRecipeMap;
-
- public TT_NEI_ScannerHandler(TT_recipe.GT_Recipe_MapTT aRecipeMap) {
- mRecipeMap = aRecipeMap;
- transferRects.add(new RecipeTransferRect(new Rectangle(65, 13, 36, 18), getOverlayIdentifier()));
- if (!NEI_TT_Config.sIsAdded) {
- FMLInterModComms.sendRuntimeMessage(
- TecTech.instance,
- "NEIPlugins",
- "register-crafting-handler",
- Reference.MODID + '@' + getRecipeName() + '@' + getOverlayIdentifier());
- GuiCraftingRecipe.craftinghandlers.add(this);
- GuiUsageRecipe.usagehandlers.add(this);
- }
- }
-
- public List<GT_Recipe> getSortedRecipes() {
- List<GT_Recipe> result = new ArrayList<>(mRecipeMap.mRecipeList);
- Collections.sort(result);
- return result;
- }
-
- public static void drawText(int aX, int aY, String aString, int aColor) {
- Minecraft.getMinecraft().fontRenderer.drawString(aString, aX, aY, aColor);
- }
-
- @Override
- public TemplateRecipeHandler newInstance() {
- NEI_TT_Config.TT_SH = new TT_NEI_ScannerHandler(mRecipeMap);
- return NEI_TT_Config.TT_SH;
- }
-
- @Override
- public void loadCraftingRecipes(String outputId, Object... results) {
- if (outputId.equals(getOverlayIdentifier())) {
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- arecipes.add(new CachedDefaultRecipe(tRecipe));
- }
- }
- } else {
- super.loadCraftingRecipes(outputId, results);
- }
- }
-
- @Override
- public void loadCraftingRecipes(ItemStack aResult) {
- ItemData tPrefixMaterial = GT_OreDictUnificator.getAssociation(aResult);
-
- ArrayList<ItemStack> tResults = new ArrayList<>();
- tResults.add(aResult);
- tResults.add(GT_OreDictUnificator.get(true, aResult));
- if (tPrefixMaterial != null && !tPrefixMaterial.mBlackListed
- && !tPrefixMaterial.mPrefix.mFamiliarPrefixes.isEmpty()) {
- for (OrePrefixes tPrefix : tPrefixMaterial.mPrefix.mFamiliarPrefixes) {
- tResults.add(GT_OreDictUnificator.get(tPrefix, tPrefixMaterial.mMaterial.mMaterial, 1L));
- }
- }
- FluidStack tFluid = GT_Utility.getFluidForFilledItem(aResult, true);
- if (tFluid != null) {
- tResults.add(GT_Utility.getFluidDisplayStack(tFluid, false));
- for (FluidContainerRegistry.FluidContainerData tData : FluidContainerRegistry
- .getRegisteredFluidContainerData()) {
- if (tData.fluid.isFluidEqual(tFluid)) {
- tResults.add(GT_Utility.copy(tData.filledContainer));
- }
- }
- }
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- CachedDefaultRecipe tNEIRecipe = new CachedDefaultRecipe(tRecipe);
- for (ItemStack tStack : tResults) {
- if (tNEIRecipe.contains(tNEIRecipe.mOutputs, tStack)) {
- arecipes.add(tNEIRecipe);
- break;
- }
- }
- }
- }
- }
-
- @Override
- public void loadUsageRecipes(ItemStack aInput) {
- ItemData tPrefixMaterial = GT_OreDictUnificator.getAssociation(aInput);
-
- ArrayList<ItemStack> tInputs = new ArrayList<>();
- tInputs.add(aInput);
- tInputs.add(GT_OreDictUnificator.get(false, aInput));
- if (tPrefixMaterial != null && !tPrefixMaterial.mPrefix.mFamiliarPrefixes.isEmpty()) {
- for (OrePrefixes tPrefix : tPrefixMaterial.mPrefix.mFamiliarPrefixes) {
- tInputs.add(GT_OreDictUnificator.get(tPrefix, tPrefixMaterial.mMaterial.mMaterial, 1L));
- }
- }
- FluidStack tFluid = GT_Utility.getFluidForFilledItem(aInput, true);
- if (tFluid != null) {
- tInputs.add(GT_Utility.getFluidDisplayStack(tFluid, false));
- for (FluidContainerRegistry.FluidContainerData tData : FluidContainerRegistry
- .getRegisteredFluidContainerData()) {
- if (tData.fluid.isFluidEqual(tFluid)) {
- tInputs.add(GT_Utility.copy(tData.filledContainer));
- }
- }
- }
- for (GT_Recipe tRecipe : getSortedRecipes()) {
- if (!tRecipe.mHidden) {
- CachedDefaultRecipe tNEIRecipe = new CachedDefaultRecipe(tRecipe);
- for (ItemStack tStack : tInputs) {
- if (tNEIRecipe.contains(tNEIRecipe.mInputs, tStack)) {
- arecipes.add(tNEIRecipe);
- break;
- }
- }
- }
- }
- }
-
- @Override
- public String getOverlayIdentifier() {
- return mRecipeMap.mNEIName;
- }
-
- @Override
- public void drawBackground(int recipe) {
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- GuiDraw.changeTexture(getGuiTexture());
- GuiDraw.drawTexturedModalRect(-4, -8, 1, 3, 174, 78);
- }
-
- @Override
- public int recipiesPerPage() {
- return 1;
- }
-
- @Override
- public String getRecipeName() {
- return GT_LanguageManager.getTranslation(mRecipeMap.mUnlocalizedName);
- }
-
- @Override
- public String getGuiTexture() {
- // return "gregtech:textures/gui/" + this.mRecipeMap.mUnlocalizedName + ".png";
- return mRecipeMap.mNEIGUIPath;
- }
-
- @Override
- public List<String> handleItemTooltip(GuiRecipe<?> gui, ItemStack aStack, List<String> currenttip,
- int aRecipeIndex) {
- TemplateRecipeHandler.CachedRecipe tObject = arecipes.get(aRecipeIndex);
- if (tObject instanceof CachedDefaultRecipe tRecipe) {
- for (PositionedStack tStack : tRecipe.mOutputs) {
- if (aStack == tStack.item) {
- if (!(tStack instanceof FixedPositionedStack) || ((FixedPositionedStack) tStack).mChance <= 0
- || ((FixedPositionedStack) tStack).mChance == 10000) {
- break;
- }
- currenttip.add(
- trans("150", "Chance: ") + ((FixedPositionedStack) tStack).mChance / 100
- + '.'
- + (((FixedPositionedStack) tStack).mChance % 100 < 10
- ? "0" + ((FixedPositionedStack) tStack).mChance % 100
- : Integer.valueOf(((FixedPositionedStack) tStack).mChance % 100))
- + '%');
- break;
- }
- }
- for (PositionedStack tStack : tRecipe.mInputs) {
- if (aStack == tStack.item) {
- if (Display_Fluid.isStackEqual(tStack.item, true, true) || tStack.item.stackSize != 0) {
- break;
- }
- currenttip.add(trans("151", "Does not get consumed in the process"));
- break;
- }
- }
- }
- return currenttip;
- }
-
- @Override
- public void drawExtras(int aRecipeIndex) {
- int tEUt = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mEUt;
- int computation = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mDuration;
- String[] recipeDesc = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.getNeiDesc();
- if (recipeDesc == null) {
- int tSpecial = ((CachedDefaultRecipe) arecipes.get(aRecipeIndex)).mRecipe.mSpecialValue;
- short ampere = (short) (tSpecial & 0xFFFF), minComputationPerSec = (short) (tSpecial >>> 16);
- if (tEUt != 0) {
- drawText(
- 10,
- 73,
- trans("152.1", "Max EU: ") + GT_Utility.formatNumbers(
- (1 + (computation - minComputationPerSec) / minComputationPerSec) * (long) tEUt
- * ampere
- * 20)
- + " EU",
- -16777216);
- drawText(
- 10,
- 83,
- trans("153", "Usage: ") + GT_Utility.formatNumbers((long) tEUt * ampere) + " EU/t",
- -16777216);
- if (mRecipeMap.mShowVoltageAmperageInNEI) {
- drawText(10, 93, trans("154", "Voltage: ") + GT_Utility.formatNumbers(tEUt) + " EU", -16777216);
- drawText(10, 103, trans("155", "Amperage: ") + GT_Utility.formatNumbers(ampere), -16777216);
- } else {
- drawText(10, 93, trans("156", "Voltage: unspecified"), -16777216);
- drawText(10, 103, trans("157", "Amperage: unspecified"), -16777216);
- }
- }
- drawText(10, 113, "Computation: " + GT_Utility.formatNumbers(computation), -16777216);
- drawText(10, 123, "Min Computation: " + GT_Utility.formatNumbers(minComputationPerSec) + " /s", -16777216);
- } else {
- int i = 0;
- for (String descLine : recipeDesc) {
- drawText(10, 73 + 10 * i, descLine, -16777216);
- i++;
- }
- }
- }
-
- public static class FixedPositionedStack extends PositionedStack {
-
- public final int mChance;
- public boolean permutated = false;
-
- public FixedPositionedStack(Object object, int x, int y) {
- this(object, x, y, 0);
- }
-
- public FixedPositionedStack(Object object, int x, int y, int aChance) {
- super(object, x, y, true);
- mChance = aChance;
- }
-
- @Override
- public void generatePermutations() {
- if (permutated) {
- return;
- }
- ArrayList<ItemStack> tDisplayStacks = new ArrayList<>();
- for (ItemStack tStack : items) {
- if (GT_Utility.isStackValid(tStack)) {
- if (tStack.getItemDamage() == 32767) {
- List<ItemStack> permutations = ItemList.itemMap.get(tStack.getItem());
- if (!permutations.isEmpty()) {
- ItemStack stack;
- for (Iterator<ItemStack> iterator = permutations.iterator(); iterator
- .hasNext(); tDisplayStacks.add(GT_Utility.copyAmount(tStack.stackSize, stack))) {
- stack = iterator.next();
- }
- } else {
- ItemStack base = new ItemStack(tStack.getItem(), tStack.stackSize);
- base.stackTagCompound = tStack.stackTagCompound;
- tDisplayStacks.add(base);
- }
- } else {
- tDisplayStacks.add(GT_Utility.copy(tStack));
- }
- }
- }
- items = tDisplayStacks.toArray(nullItem);
- if (items.length == 0) {
- items = new ItemStack[] { new ItemStack(Blocks.fire) };
- }
- permutated = true;
- setPermutationToRender(0);
- }
- }
-
- public class CachedDefaultRecipe extends TemplateRecipeHandler.CachedRecipe {
-
- public final GT_Recipe mRecipe;
- public final List<PositionedStack> mOutputs;
- public final List<PositionedStack> mInputs;
-
- public CachedDefaultRecipe(GT_Recipe aRecipe) {
- mRecipe = aRecipe;
-
- mOutputs = new ArrayList<>();
- mInputs = new ArrayList<>();
-
- int tStartIndex = 0;
- if (aRecipe.getRepresentativeInput(tStartIndex) != null) {
- mInputs.add(new FixedPositionedStack(aRecipe.getRepresentativeInput(tStartIndex), 48, 14 + 9));
- }
- if (aRecipe.mSpecialItems != null) {
- mInputs.add(new FixedPositionedStack(aRecipe.mSpecialItems, 120, 52));
- }
- if (aRecipe.getOutput(tStartIndex) != null) {
- mOutputs.add(
- new FixedPositionedStack(
- aRecipe.getOutput(tStartIndex),
- 102,
- 14 + 9,
- aRecipe.getOutputChance(tStartIndex)));
- }
- }
-
- @Override
- public List<PositionedStack> getIngredients() {
- return getCycledIngredients(cycleticks / 10, mInputs);
- }
-
- @Override
- public PositionedStack getResult() {
- return null;
- }
-
- @Override
- public List<PositionedStack> getOtherStacks() {
- return mOutputs;
- }
- }
-
- public String trans(String aKey, String aEnglish) {
- return GT_LanguageManager.addStringLocalization("Interaction_DESCRIPTION_Index_" + aKey, aEnglish, false);
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyFrontend.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyFrontend.java
new file mode 100644
index 0000000000..b2070f22bf
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyFrontend.java
@@ -0,0 +1,202 @@
+package com.github.technus.tectech.recipe;
+
+import static com.github.technus.tectech.util.CommonValues.EOH_TIER_FANCY_NAMES;
+import static com.google.common.math.LongMath.pow;
+import static gregtech.api.util.GT_Utility.formatNumbers;
+import static java.lang.Math.min;
+import static net.minecraft.util.EnumChatFormatting.BOLD;
+import static net.minecraft.util.EnumChatFormatting.DARK_RED;
+import static net.minecraft.util.EnumChatFormatting.RESET;
+import static net.minecraft.util.StatCollector.translateToLocal;
+import static net.minecraft.util.StatCollector.translateToLocalFormatted;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+
+import com.gtnewhorizons.modularui.api.math.Alignment;
+import com.gtnewhorizons.modularui.api.math.Pos2d;
+import com.gtnewhorizons.modularui.api.math.Size;
+
+import appeng.util.ReadableNumberConverter;
+import codechicken.nei.PositionedStack;
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.common.gui.modularui.UIHelper;
+import gregtech.nei.GT_NEI_DefaultHandler;
+import gregtech.nei.RecipeDisplayInfo;
+import gregtech.nei.formatter.INEISpecialInfoFormatter;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class EyeOfHarmonyFrontend extends RecipeMapFrontend {
+
+ private static final int xDirMaxCount = 9;
+ private static final int itemRows = 9, fluidRows = 2;
+ public static final int maxItemInputs = 1, maxItemOutputs = xDirMaxCount * itemRows, maxFluidInputs = 0,
+ maxFluidOutputs = xDirMaxCount * fluidRows;
+ private static final int yOrigin = 8;
+ private static final long TRILLION = pow(10, 12);
+
+ public EyeOfHarmonyFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(
+ uiPropertiesBuilder.logoPos(new Pos2d(8, yOrigin)),
+ neiPropertiesBuilder.recipeBackgroundSize(new Size(170, 117 + (itemRows + fluidRows - 4) * 18))
+ .neiSpecialInfoFormatter(new EyeOfHarmonySpecialValueFormatter()));
+ }
+
+ @Override
+ public List<Pos2d> getItemInputPositions(int itemInputCount) {
+ return UIHelper.getGridPositions(itemInputCount, 79, yOrigin, 1, 1);
+ }
+
+ public static final int maxItemsToRender = 80;
+
+ @Override
+ public List<Pos2d> getItemOutputPositions(int itemOutputCount) {
+ return UIHelper.getGridPositions(min(itemOutputCount, maxItemsToRender + 1), 7, yOrigin + 36, xDirMaxCount, 12);
+ }
+
+ @Override
+ public List<Pos2d> getFluidInputPositions(int fluidInputCount) {
+ return UIHelper.getGridPositions(fluidInputCount, 0, 0, 0, 0);
+ }
+
+ @Override
+ public List<Pos2d> getFluidOutputPositions(int fluidOutputCount) {
+ return UIHelper.getGridPositions(fluidOutputCount, 7, yOrigin + 13 * 17 - 7 - 16, xDirMaxCount, 3);
+ }
+
+ @Override
+ public List<String> handleNEIItemTooltip(ItemStack stack, List<String> currentTip,
+ GT_NEI_DefaultHandler.CachedDefaultRecipe neiCachedRecipe) {
+ super.handleNEIItemTooltip(stack, currentTip, neiCachedRecipe);
+ EyeOfHarmonyRecipe currentRecipe = (EyeOfHarmonyRecipe) neiCachedRecipe.mRecipe.mSpecialItems;
+
+ // Draw tooltip on planet item.
+ if (stack.isItemEqual(currentRecipe.getRecipeTriggerItem())) {
+ currentTip.add(
+ EnumChatFormatting.GRAY + translateToLocalFormatted(
+ "tt.nei.eoh.total_items",
+ formatNumbers(currentRecipe.getSumOfItems())));
+ return currentTip;
+ }
+
+ // Draw tooltip on other items.
+ double percentage = currentRecipe.getItemStackToProbabilityMap().getOrDefault(stack, -1.0);
+
+ if (percentage != -1.0) {
+ currentTip.add(EnumChatFormatting.GRAY + translateToLocalFormatted("tt.nei.eoh.solid_mass", percentage));
+ currentTip.add(
+ EnumChatFormatting.GRAY + translateToLocalFormatted(
+ "tt.nei.eoh.item_count",
+ formatNumbers(currentRecipe.getItemStackToTrueStackSizeMap().get(stack))));
+ }
+
+ return currentTip;
+ }
+
+ @Override
+ public void drawNEIOverlays(GT_NEI_DefaultHandler.CachedDefaultRecipe neiCachedRecipe) {
+ EyeOfHarmonyRecipe EOHRecipe = (EyeOfHarmonyRecipe) neiCachedRecipe.mRecipe.mSpecialItems;
+ for (PositionedStack stack : neiCachedRecipe.mInputs) {
+ if (stack instanceof GT_NEI_DefaultHandler.FixedPositionedStack) {
+ if (stack.item.isItemEqual(EOHRecipe.getRecipeTriggerItem())) {
+ drawNEIOverlayText(translateToLocal("NC"), stack);
+ }
+ }
+ }
+ for (PositionedStack stack : neiCachedRecipe.mOutputs) {
+ if (stack instanceof GT_NEI_DefaultHandler.FixedPositionedStack) {
+ if (EOHRecipe.getItemStackToTrueStackSizeMap().containsKey(stack.item)) {
+ long stackSize = EOHRecipe.getItemStackToTrueStackSizeMap().get(stack.item);
+ String displayString;
+ if (stackSize > 9999) {
+ displayString = ReadableNumberConverter.INSTANCE.toWideReadableForm(stackSize);
+ } else {
+ displayString = String.valueOf(stackSize);
+ }
+
+ drawNEIOverlayText(displayString, stack, 0xffffff, 0.5f, true, Alignment.BottomRight);
+ }
+ }
+ }
+ }
+
+ private static class EyeOfHarmonySpecialValueFormatter implements INEISpecialInfoFormatter {
+
+ @Override
+ public List<String> format(RecipeDisplayInfo recipeInfo) {
+ EyeOfHarmonyRecipe recipe = (EyeOfHarmonyRecipe) recipeInfo.recipe.mSpecialItems;
+ List<String> result = new ArrayList<>();
+
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.Hydrogen.In", "Hydrogen") + ": "
+ + formatNumbers(recipe.getHydrogenRequirement())
+ + " L");
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.Helium.In", "Helium") + ": "
+ + formatNumbers(recipe.getHydrogenRequirement())
+ + " L");
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.SpacetimeTier", "Spacetime Tier") + ": "
+ + EOH_TIER_FANCY_NAMES[(int) recipe.getSpacetimeCasingTierRequired()]);
+
+ if (recipe.getEUOutput() < TRILLION) {
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.Out", "EU Output") + ": "
+ + formatNumbers(recipe.getEUOutput())
+ + " EU");
+ } else {
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.Out", "EU Output") + ": "
+ + ReadableNumberConverter.INSTANCE.toWideReadableForm(recipe.getEUOutput())
+ + " EU");
+ }
+
+ if (recipe.getEUOutput() < TRILLION) {
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.In", "EU Input") + ": "
+ + formatNumbers(recipe.getEUStartCost())
+ + " EU");
+ } else {
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.In", "EU Input") + ": "
+ + ReadableNumberConverter.INSTANCE.toWideReadableForm(recipe.getEUStartCost())
+ + " EU");
+ }
+
+ result.add(
+ GT_LanguageManager.addStringLocalization("EOH.Recipe.BaseRecipeChance", "Base Recipe Chance") + ": "
+ + formatNumbers(100 * recipe.getBaseRecipeSuccessChance())
+ + "%");
+ result.add(
+ GT_LanguageManager
+ .addStringLocalization("EOH.Recipe.RecipeEnergyEfficiency", "Recipe Energy Efficiency")
+ + ": "
+ + formatNumbers(100 * recipe.getRecipeEnergyEfficiency())
+ + "%");
+
+ if (recipe.getOutputItems().size() > maxItemsToRender) {
+ result.add(
+ "" + DARK_RED
+ + BOLD
+ + GT_LanguageManager.addStringLocalization("EOH.Recipe.Warning.0", "Warning")
+ + RESET
+ + ": "
+ + GT_LanguageManager
+ .addStringLocalization("EOH.Recipe.Warning.1", "Not all items displayed."));
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
index 8aa801e153..1ef3955a06 100644
--- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
@@ -1,7 +1,7 @@
package com.github.technus.tectech.recipe;
import static com.github.technus.tectech.recipe.EyeOfHarmonyRecipe.processHelper;
-import static com.github.technus.tectech.recipe.TT_recipe.GT_Recipe_MapTT.sEyeofHarmonyRecipes;
+import static com.github.technus.tectech.recipe.TecTechRecipeMaps.eyeOfHarmonyRecipes;
import static java.lang.Math.pow;
import java.util.ArrayList;
@@ -109,7 +109,7 @@ public class EyeOfHarmonyRecipeStorage {
ItemStack planetItem = recipe.getRecipeTriggerItem().copy();
planetItem.stackSize = 0;
- sEyeofHarmonyRecipes.addRecipe(
+ eyeOfHarmonyRecipes.addRecipe(
false,
new ItemStack[] { planetItem },
outputItems.toArray(new ItemStack[0]),
diff --git a/src/main/java/com/github/technus/tectech/recipe/ResearchStationFrontend.java b/src/main/java/com/github/technus/tectech/recipe/ResearchStationFrontend.java
new file mode 100644
index 0000000000..130a75c0cf
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/recipe/ResearchStationFrontend.java
@@ -0,0 +1,94 @@
+package com.github.technus.tectech.recipe;
+
+import static gregtech.api.util.GT_Utility.trans;
+import static net.minecraft.util.StatCollector.translateToLocalFormatted;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Supplier;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import com.github.technus.tectech.thing.gui.TecTechUITextures;
+import com.gtnewhorizons.modularui.api.math.Pos2d;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.ProgressBar;
+
+import gregtech.api.recipe.BasicUIPropertiesBuilder;
+import gregtech.api.recipe.NEIRecipePropertiesBuilder;
+import gregtech.api.recipe.RecipeMapFrontend;
+import gregtech.api.util.GT_Utility;
+import gregtech.api.util.MethodsReturnNonnullByDefault;
+import gregtech.nei.RecipeDisplayInfo;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class ResearchStationFrontend extends RecipeMapFrontend {
+
+ public ResearchStationFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
+ NEIRecipePropertiesBuilder neiPropertiesBuilder) {
+ super(uiPropertiesBuilder, neiPropertiesBuilder);
+ }
+
+ @Override
+ public List<Pos2d> getItemInputPositions(int itemInputCount) {
+ return Collections.singletonList(new Pos2d(52, 33));
+ }
+
+ @Override
+ public List<Pos2d> getItemOutputPositions(int itemOutputCount) {
+ return Collections.singletonList(new Pos2d(106, 33));
+ }
+
+ @Override
+ public Pos2d getSpecialItemPosition() {
+ return new Pos2d(124, 62);
+ }
+
+ @Override
+ protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {
+ long eut = recipeInfo.recipe.mEUt;
+ int computation = recipeInfo.recipe.mDuration;
+ short ampere = (short) (recipeInfo.recipe.mSpecialValue & 0xFFFF);
+ short minComputationPerSec = (short) (recipeInfo.recipe.mSpecialValue >>> 16);
+ recipeInfo.drawText(
+ translateToLocalFormatted(
+ "tt.nei.research.max_eu",
+ GT_Utility.formatNumbers(
+ (1 + (computation - minComputationPerSec) / minComputationPerSec) * eut
+ * ampere
+ * 20)));
+ recipeInfo.drawText(trans("153", "Usage: ") + GT_Utility.formatNumbers(eut * ampere) + " EU/t");
+ recipeInfo.drawText(trans("154", "Voltage: ") + GT_Utility.formatNumbers(eut) + " EU/t");
+ recipeInfo.drawText(trans("155", "Amperage: ") + GT_Utility.formatNumbers(ampere));
+ recipeInfo.drawText(
+ translateToLocalFormatted("tt.nei.research.computation", GT_Utility.formatNumbers(computation)));
+ recipeInfo.drawText(
+ translateToLocalFormatted(
+ "tt.nei.research.min_computation",
+ GT_Utility.formatNumbers(minComputationPerSec)));
+ }
+
+ @Override
+ protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {}
+
+ @Override
+ public void addProgressBar(ModularWindow.Builder builder, Supplier<Float> progressSupplier, Pos2d windowOffset) {
+ int bar1Width = 25;
+ int bar2Width = 11;
+ int bar3Height = 18;
+ List<Supplier<Float>> splitProgress = splitProgress(progressSupplier, bar1Width, bar2Width, bar3Height);
+ builder.widget(
+ new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_1, bar1Width)
+ .setDirection(ProgressBar.Direction.RIGHT).setProgress(splitProgress.get(0))
+ .setSynced(false, false).setPos(new Pos2d(81, 40).add(windowOffset)).setSize(bar1Width, 5));
+ builder.widget(
+ new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_2, bar2Width)
+ .setDirection(ProgressBar.Direction.RIGHT).setProgress(splitProgress.get(1))
+ .setSynced(false, false).setPos(new Pos2d(124, 40).add(windowOffset)).setSize(bar2Width, 5));
+ builder.widget(
+ new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_3, bar3Height)
+ .setDirection(ProgressBar.Direction.DOWN).setProgress(splitProgress.get(2))
+ .setSynced(false, false).setPos(new Pos2d(128, 44).add(windowOffset)).setSize(10, bar3Height));
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/recipe/TT_recipe.java b/src/main/java/com/github/technus/tectech/recipe/TT_recipe.java
deleted file mode 100644
index e044dccacc..0000000000
--- a/src/main/java/com/github/technus/tectech/recipe/TT_recipe.java
+++ /dev/null
@@ -1,403 +0,0 @@
-package com.github.technus.tectech.recipe;
-
-import static com.github.technus.tectech.util.CommonValues.EOH_TIER_FANCY_NAMES;
-import static com.google.common.math.LongMath.pow;
-import static gregtech.api.util.GT_Utility.formatNumbers;
-import static java.lang.Math.min;
-import static net.minecraft.util.EnumChatFormatting.BOLD;
-import static net.minecraft.util.EnumChatFormatting.DARK_RED;
-import static net.minecraft.util.EnumChatFormatting.RESET;
-import static net.minecraft.util.StatCollector.translateToLocal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.function.Supplier;
-
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraftforge.fluids.FluidStack;
-
-import com.gtnewhorizons.modularui.api.forge.IItemHandlerModifiable;
-import com.gtnewhorizons.modularui.api.math.Alignment;
-import com.gtnewhorizons.modularui.api.math.Pos2d;
-import com.gtnewhorizons.modularui.api.screen.ModularWindow;
-import com.gtnewhorizons.modularui.common.widget.ProgressBar;
-
-import appeng.util.ReadableNumberConverter;
-import codechicken.nei.PositionedStack;
-import cpw.mods.fml.common.registry.GameRegistry;
-import gregtech.api.gui.modularui.GT_UITextures;
-import gregtech.api.util.GT_LanguageManager;
-import gregtech.api.util.GT_Recipe;
-import gregtech.common.gui.modularui.UIHelper;
-import gregtech.nei.GT_NEI_DefaultHandler;
-import gregtech.nei.NEIRecipeInfo;
-
-@SuppressWarnings("SpellCheckingInspection")
-public class TT_recipe extends GT_Recipe {
-
- public static final String E_RECIPE_ID = "eRecipeID";
-
- public TT_recipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances,
- FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
- super(
- aOptimize,
- aInputs,
- aOutputs,
- aSpecialItems,
- aChances,
- aFluidInputs,
- aFluidOutputs,
- aDuration,
- aEUt,
- aSpecialValue);
- }
-
- public static class TT_Recipe_Map<T extends GT_Recipe> {
-
- public static TT_Recipe_Map<TT_assLineRecipe> sCrafterRecipes = new TT_Recipe_Map<>();
- public static TT_Recipe_Map<TT_assLineRecipe> sMachineRecipes = new TT_Recipe_Map<>();
-
- private final HashMap<String, T> mRecipeMap;
-
- public TT_Recipe_Map() {
- mRecipeMap = new HashMap<>(16);
- }
-
- public T findRecipe(String identifier) {
- return mRecipeMap.get(identifier);
- }
-
- public T findRecipe(ItemStack dataHandler) {
- if (dataHandler == null || dataHandler.stackTagCompound == null) {
- return null;
- }
- return mRecipeMap.get(dataHandler.stackTagCompound.getString(E_RECIPE_ID));
- }
-
- public void add(T recipe) {
- GameRegistry.UniqueIdentifier uid = GameRegistry.findUniqueIdentifierFor(recipe.mOutputs[0].getItem());
- mRecipeMap.put(uid + ":" + recipe.mOutputs[0].getItemDamage(), recipe);
- }
-
- public Collection<T> recipeList() {
- return mRecipeMap.values();
- }
- }
-
- public static class GT_Recipe_MapTT extends GT_Recipe.GT_Recipe_Map {
-
- public static final GT_Recipe_Map sEyeofHarmonyRecipes = new Eye_Of_Harmony_Recipe_Map(
- new HashSet<>(250),
- "gt.recipe.eyeofharmony",
- "Eye of Harmony",
- null,
- "gregtech:textures/gui/basicmachines/Extractor",
- 1,
- 9 * 9,
- 1,
- 0,
- 1,
- "",
- 1,
- "",
- true,
- false) // Custom NEI handler means this must be false.
- .setProgressBar(GT_UITextures.PROGRESSBAR_HAMMER, ProgressBar.Direction.DOWN)
- .setProgressBarPos(78, 24 + 2).setUsualFluidOutputCount(18).setLogoPos(10, 10);
-
- public static GT_Recipe_MapTT sResearchableFakeRecipes = new GT_Recipe_MapTT(
- new HashSet<>(32),
- "gt.recipe.researchStation",
- "Research station",
- null,
- "gregtech:textures/gui/multimachines/ResearchFake",
- 1,
- 1,
- 1,
- 0,
- 1,
- "",
- 1,
- "",
- true,
- false); // nei to false - using custom handler
- public static GT_Recipe_MapTT sScannableFakeRecipes = new GT_Recipe_MapTT(
- new HashSet<>(32),
- "gt.recipe.em_scanner",
- "EM Scanner Research",
- null,
- "gregtech:textures/gui/multimachines/ResearchFake",
- 1,
- 1,
- 1,
- 0,
- 1,
- "",
- 1,
- "",
- true,
- false);
- public static ArrayList<GT_Recipe_AssemblyLine> sAssemblylineRecipes = new ArrayList<>();
-
- public GT_Recipe_MapTT(Collection<GT_Recipe> aRecipeList, String aUnlocalizedName, String aLocalName,
- String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount,
- int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre,
- int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI,
- boolean aNEIAllowed) {
- super(
- aRecipeList,
- aUnlocalizedName,
- aLocalName,
- aNEIName,
- aNEIGUIPath,
- aUsualInputCount,
- aUsualOutputCount,
- aMinimalInputItems,
- aMinimalInputFluids,
- aAmperage,
- aNEISpecialValuePre,
- aNEISpecialValueMultiplier,
- aNEISpecialValuePost,
- aShowVoltageAmperageInNEI,
- aNEIAllowed);
- }
- }
-
- public static class TT_assLineRecipe extends GT_Recipe {
-
- public final ItemStack mResearchItem;
-
- public TT_assLineRecipe(boolean aOptimize, ItemStack researchItem, ItemStack[] aInputs, ItemStack[] aOutputs,
- Object aSpecialItems, FluidStack[] aFluidInputs, int aDuration, int aEUt, int aSpecialValue) {
- super(
- aOptimize,
- aInputs,
- aOutputs,
- aSpecialItems,
- null,
- aFluidInputs,
- null,
- aDuration,
- aEUt,
- aSpecialValue);
- mResearchItem = researchItem;
- }
-
- }
-
- public static class Eye_Of_Harmony_Recipe_Map extends GT_Recipe_Map {
-
- private static final int xDirMaxCount = 9;
- private static final int yOrigin = 8;
- private static final long TRILLION = pow(10, 12);
-
- public Eye_Of_Harmony_Recipe_Map(Collection<GT_Recipe> aRecipeList, String aUnlocalizedName, String aLocalName,
- String aNEIName, String aNEIGUIPath, int aUsualInputCount, int aUsualOutputCount,
- int aMinimalInputItems, int aMinimalInputFluids, int aAmperage, String aNEISpecialValuePre,
- int aNEISpecialValueMultiplier, String aNEISpecialValuePost, boolean aShowVoltageAmperageInNEI,
- boolean aNEIAllowed) {
- super(
- aRecipeList,
- aUnlocalizedName,
- aLocalName,
- aNEIName,
- aNEIGUIPath,
- aUsualInputCount,
- aUsualOutputCount,
- aMinimalInputItems,
- aMinimalInputFluids,
- aAmperage,
- aNEISpecialValuePre,
- aNEISpecialValueMultiplier,
- aNEISpecialValuePost,
- aShowVoltageAmperageInNEI,
- aNEIAllowed);
- useModularUI(true);
- setLogoPos(8, yOrigin);
- setNEISpecialInfoFormatter((recipeInfo, applyPrefixAndSuffix) -> {
- EyeOfHarmonyRecipe recipe = (EyeOfHarmonyRecipe) recipeInfo.recipe.mSpecialItems;
- List<String> result = new ArrayList<>();
-
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.Hydrogen.In", "Hydrogen") + ": "
- + formatNumbers(recipe.getHydrogenRequirement())
- + " L");
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.Helium.In", "Helium") + ": "
- + formatNumbers(recipe.getHydrogenRequirement())
- + " L");
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.SpacetimeTier", "Spacetime Tier") + ": "
- + EOH_TIER_FANCY_NAMES[(int) recipe.getSpacetimeCasingTierRequired()]);
-
- if (recipe.getEUOutput() < TRILLION) {
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.Out", "EU Output") + ": "
- + formatNumbers(recipe.getEUOutput())
- + " EU");
- } else {
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.Out", "EU Output") + ": "
- + ReadableNumberConverter.INSTANCE.toWideReadableForm(recipe.getEUOutput())
- + " EU");
- }
-
- if (recipe.getEUOutput() < TRILLION) {
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.In", "EU Input") + ": "
- + formatNumbers(recipe.getEUStartCost())
- + " EU");
- } else {
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.EU.In", "EU Input") + ": "
- + ReadableNumberConverter.INSTANCE.toWideReadableForm(recipe.getEUStartCost())
- + " EU");
- }
-
- result.add(
- GT_LanguageManager.addStringLocalization("EOH.Recipe.BaseRecipeChance", "Base Recipe Chance")
- + ": "
- + formatNumbers(100 * recipe.getBaseRecipeSuccessChance())
- + "%");
- result.add(
- GT_LanguageManager
- .addStringLocalization("EOH.Recipe.RecipeEnergyEfficiency", "Recipe Energy Efficiency")
- + ": "
- + formatNumbers(100 * recipe.getRecipeEnergyEfficiency())
- + "%");
-
- if (recipe.getOutputItems().size() > maxItemsToRender) {
- result.add(
- "" + DARK_RED
- + BOLD
- + GT_LanguageManager.addStringLocalization("EOH.Recipe.Warning.0", "Warning")
- + RESET
- + ": "
- + GT_LanguageManager
- .addStringLocalization("EOH.Recipe.Warning.1", "Not all items displayed."));
- }
-
- return result;
- });
- }
-
- @Override
- public boolean usesSpecialSlot() {
- return false;
- }
-
- @Override
- public List<Pos2d> getItemInputPositions(int itemInputCount) {
- return UIHelper.getGridPositions(itemInputCount, 79, yOrigin, 1, 1);
- }
-
- public static final int maxItemsToRender = 80;
-
- @Override
- public List<Pos2d> getItemOutputPositions(int itemOutputCount) {
- return UIHelper
- .getGridPositions(min(itemOutputCount, maxItemsToRender + 1), 7, yOrigin + 36, xDirMaxCount, 12);
- }
-
- @Override
- public List<Pos2d> getFluidInputPositions(int fluidInputCount) {
- return UIHelper.getGridPositions(fluidInputCount, 0, 0, 0, 0);
- }
-
- @Override
- public List<Pos2d> getFluidOutputPositions(int fluidOutputCount) {
- return UIHelper.getGridPositions(fluidOutputCount, 7, yOrigin + 13 * 17 - 7 - 16, xDirMaxCount, 3);
- }
-
- @Override
- public ModularWindow.Builder createNEITemplate(IItemHandlerModifiable itemInputsInventory,
- IItemHandlerModifiable itemOutputsInventory, IItemHandlerModifiable specialSlotInventory,
- IItemHandlerModifiable fluidInputsInventory, IItemHandlerModifiable fluidOutputsInventory,
- Supplier<Float> progressSupplier, Pos2d windowOffset) {
- // Delay setter so that calls to #setUsualFluidInputCount and #setUsualFluidOutputCount are considered
- setNEIBackgroundSize(172, 117 + (Math.max(getItemRowCount() + getFluidRowCount() - 4, 0)) * 18);
- return super.createNEITemplate(
- itemInputsInventory,
- itemOutputsInventory,
- specialSlotInventory,
- fluidInputsInventory,
- fluidOutputsInventory,
- progressSupplier,
- windowOffset);
- }
-
- private int getItemRowCount() {
- return (Math.max(mUsualInputCount, mUsualOutputCount) - 1) / xDirMaxCount + 1;
- }
-
- private int getFluidRowCount() {
- return (Math.max(getUsualFluidInputCount(), getUsualFluidOutputCount()) - 1) / xDirMaxCount + 1;
- }
-
- @Override
- protected void drawNEIText(NEIRecipeInfo recipeInfo, String text, int yShift) {
- drawNEIText(recipeInfo, text, 7, yShift);
- }
-
- @Override
- public List<String> handleNEIItemTooltip(ItemStack stack, List<String> currentTip,
- GT_NEI_DefaultHandler.CachedDefaultRecipe neiCachedRecipe) {
- super.handleNEIItemTooltip(stack, currentTip, neiCachedRecipe);
- if (stack == null) return currentTip;
-
- EyeOfHarmonyRecipe currentRecipe = (EyeOfHarmonyRecipe) neiCachedRecipe.mRecipe.mSpecialItems;
-
- // Draw tooltip on planet item.
- if (stack.isItemEqual(currentRecipe.getRecipeTriggerItem())) {
- currentTip.add(
- EnumChatFormatting.GRAY + translateToLocal("Total Items: ")
- + formatNumbers(currentRecipe.getSumOfItems()));
- return currentTip;
- }
-
- // Draw tooltip on other items.
- double percentage = currentRecipe.getItemStackToProbabilityMap().getOrDefault(stack, -1.0);
-
- if (percentage != -1.0) {
- currentTip.add(
- EnumChatFormatting.GRAY + translateToLocal("Percentage of Solid Mass: ") + percentage + "%");
- currentTip.add(
- EnumChatFormatting.GRAY + translateToLocal("Item Count: ")
- + formatNumbers(currentRecipe.getItemStackToTrueStackSizeMap().get(stack)));
- }
-
- return currentTip;
- }
-
- @Override
- public void drawNEIOverlays(GT_NEI_DefaultHandler.CachedDefaultRecipe neiCachedRecipe) {
- EyeOfHarmonyRecipe EOHRecipe = (EyeOfHarmonyRecipe) neiCachedRecipe.mRecipe.mSpecialItems;
- for (PositionedStack stack : neiCachedRecipe.mInputs) {
- if (stack instanceof GT_NEI_DefaultHandler.FixedPositionedStack) {
- if (stack.item.isItemEqual(EOHRecipe.getRecipeTriggerItem())) {
- drawNEIOverlayText(translateToLocal("NC"), stack);
- }
- }
- }
- for (PositionedStack stack : neiCachedRecipe.mOutputs) {
- if (stack instanceof GT_NEI_DefaultHandler.FixedPositionedStack) {
- if (EOHRecipe.getItemStackToTrueStackSizeMap().containsKey(stack.item)) {
- long stackSize = EOHRecipe.getItemStackToTrueStackSizeMap().get(stack.item);
- String displayString;
- if (stackSize > 9999) {
- displayString = ReadableNumberConverter.INSTANCE.toWideReadableForm(stackSize);
- } else {
- displayString = String.valueOf(stackSize);
- }
-
- drawNEIOverlayText(displayString, stack, 0xffffff, 0.5f, true, Alignment.BottomRight);
- }
- }
- }
- }
- }
-}
diff --git a/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java b/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java
index 083897cc2d..366ee0ebb0 100644
--- a/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java
+++ b/src/main/java/com/github/technus/tectech/recipe/TT_recipeAdder.java
@@ -14,6 +14,7 @@ import com.github.technus.tectech.thing.CustomItemList;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.ItemList;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_AssemblyLine;
@@ -48,7 +49,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
}
researchAmperage = GT_Utility.clamp(researchAmperage, 1, Short.MAX_VALUE);
computationRequiredPerSec = GT_Utility.clamp(computationRequiredPerSec, 1, Short.MAX_VALUE);
- TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.addFakeRecipe(
+ TecTechRecipeMaps.researchStationFakeRecipes.addFakeRecipe(
false,
new ItemStack[] { aResearchItem },
new ItemStack[] { aOutput },
@@ -58,7 +59,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
totalComputationRequired,
researchEUt,
researchAmperage | computationRequiredPerSec << 16);
- GT_Recipe.GT_Recipe_Map.sAssemblylineVisualRecipes.addFakeRecipe(
+ RecipeMaps.assemblylineVisualRecipes.addFakeRecipe(
false,
aInputs,
new ItemStack[] { aOutput },
@@ -78,7 +79,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
aOutput,
assDuration,
assEUt));
- TT_recipe.GT_Recipe_MapTT.sAssemblylineRecipes.add(
+ TecTechRecipeMaps.researchableALRecipeList.add(
new GT_Recipe.GT_Recipe_AssemblyLine(
aResearchItem,
totalComputationRequired / computationRequiredPerSec,
@@ -179,7 +180,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
tPersistentHash = tPersistentHash * 31 + researchEUt;
tPersistentHash = tPersistentHash * 31 + assDuration;
tPersistentHash = tPersistentHash * 31 + assEUt;
- TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.addFakeRecipe(
+ TecTechRecipeMaps.researchStationFakeRecipes.addFakeRecipe(
false,
new ItemStack[] { aResearchItem },
new ItemStack[] { aOutput },
@@ -189,7 +190,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
totalComputationRequired,
researchEUt,
researchAmperage | computationRequiredPerSec << 16);
- GT_Recipe.GT_Recipe_Map.sAssemblylineVisualRecipes.addFakeRecipe(
+ RecipeMaps.assemblylineVisualRecipes.addFakeRecipe(
false,
tInputs,
new ItemStack[] { aOutput },
@@ -222,7 +223,7 @@ public class TT_recipeAdder extends GT_RecipeAdder {
assEUt,
tAlts);
recipeTT.setPersistentHash(tPersistentHash);
- TT_recipe.GT_Recipe_MapTT.sAssemblylineRecipes.add(recipeTT);
+ TecTechRecipeMaps.researchableALRecipeList.add(recipeTT);
return true;
}
diff --git a/src/main/java/com/github/technus/tectech/recipe/TecTechRecipeMaps.java b/src/main/java/com/github/technus/tectech/recipe/TecTechRecipeMaps.java
new file mode 100644
index 0000000000..da60084e3e
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/recipe/TecTechRecipeMaps.java
@@ -0,0 +1,49 @@
+package com.github.technus.tectech.recipe;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.github.technus.tectech.thing.CustomItemList;
+import com.github.technus.tectech.thing.gui.TecTechUITextures;
+import com.gtnewhorizons.modularui.common.widget.ProgressBar;
+
+import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMapBackend;
+import gregtech.api.recipe.RecipeMapBuilder;
+import gregtech.api.util.GT_Recipe;
+
+public class TecTechRecipeMaps {
+
+ public static void init() {}
+
+ public static final List<GT_Recipe.GT_Recipe_AssemblyLine> researchableALRecipeList = new ArrayList<>();
+
+ public static final RecipeMap<RecipeMapBackend> eyeOfHarmonyRecipes = RecipeMapBuilder.of("gt.recipe.eyeofharmony")
+ .maxIO(
+ EyeOfHarmonyFrontend.maxItemInputs,
+ EyeOfHarmonyFrontend.maxItemOutputs,
+ EyeOfHarmonyFrontend.maxFluidInputs,
+ EyeOfHarmonyFrontend.maxFluidOutputs)
+ .minInputs(1, 0).progressBar(GT_UITextures.PROGRESSBAR_HAMMER, ProgressBar.Direction.DOWN)
+ .progressBarPos(78, 24 + 2).logoPos(10, 10)
+ .neiHandlerInfo(
+ builder -> builder.setDisplayStack(CustomItemList.Machine_Multi_EyeOfHarmony.get(1))
+ .setMaxRecipesPerPage(1))
+ .frontend(EyeOfHarmonyFrontend::new).build();
+ public static final RecipeMap<RecipeMapBackend> researchStationFakeRecipes = RecipeMapBuilder
+ .of("gt.recipe.researchStation").maxIO(1, 1, 0, 0).useSpecialSlot()
+ .slotOverlays((index, isFluid, isOutput, isSpecial) -> {
+ if (isSpecial) {
+ return GT_UITextures.OVERLAY_SLOT_DATA_ORB;
+ }
+ if (isOutput) {
+ return TecTechUITextures.OVERLAY_SLOT_MESH;
+ }
+ return GT_UITextures.OVERLAY_SLOT_MICROSCOPE;
+ }).addSpecialTexture(19, 12, 84, 60, TecTechUITextures.PICTURE_HEAT_SINK)
+ .addSpecialTexture(41, 22, 40, 40, TecTechUITextures.PICTURE_RACK_LARGE)
+ .logo(TecTechUITextures.PICTURE_TECTECH_LOGO).logoSize(18, 18).logoPos(151, 63)
+ .neiTransferRect(81, 33, 25, 18).neiTransferRect(124, 33, 18, 29).frontend(ResearchStationFrontend::new)
+ .neiHandlerInfo(builder -> builder.setDisplayStack(CustomItemList.Machine_Multi_Research.get(1))).build();
+}
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 5f61ad59ac..95dc85429b 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
@@ -8,6 +8,7 @@ import java.util.stream.IntStream;
import com.gtnewhorizons.modularui.api.drawable.AdaptableUITexture;
import com.gtnewhorizons.modularui.api.drawable.UITexture;
+@SuppressWarnings("SimplifyStreamApiCallChains")
public class TecTechUITextures {
public static final AdaptableUITexture BACKGROUND_SCREEN_BLUE = AdaptableUITexture
@@ -64,6 +65,13 @@ public class TecTechUITextures {
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");
+ public static final UITexture PROGRESSBAR_RESEARCH_STATION_1 = UITexture
+ .fullImage(MODID, "gui/progressbar/research_station_1");
+ public static final UITexture PROGRESSBAR_RESEARCH_STATION_2 = UITexture
+ .fullImage(MODID, "gui/progressbar/research_station_2");
+ public static final UITexture PROGRESSBAR_RESEARCH_STATION_3 = UITexture
+ .fullImage(MODID, "gui/progressbar/research_station_3");
+
public static final UITexture PICTURE_TECTECH_LOGO = UITexture.fullImage(MODID, "gui/picture/tectech_logo");
public static final UITexture PICTURE_TECTECH_LOGO_DARK = UITexture
.fullImage(MODID, "gui/picture/tectech_logo_dark");
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
index 94a1fe352e..2b7b7d7087 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
@@ -52,6 +52,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.jetbrains.annotations.NotNull;
import com.github.technus.tectech.recipe.EyeOfHarmonyRecipe;
+import com.github.technus.tectech.recipe.TecTechRecipeMaps;
import com.github.technus.tectech.thing.block.TileEyeOfHarmony;
import com.github.technus.tectech.thing.casing.TT_Container_Casings;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
@@ -77,6 +78,7 @@ 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.recipe.RecipeMap;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
@@ -1102,6 +1104,12 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
}
}
+ @Override
+ public RecipeMap<?> getRecipeMap() {
+ // Only for visual
+ return TecTechRecipeMaps.eyeOfHarmonyRecipes;
+ }
+
private EyeOfHarmonyRecipe currentRecipe;
// Counter for lag prevention.
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
index b6e5c16292..d7a4efb19c 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
@@ -1,6 +1,5 @@
package com.github.technus.tectech.thing.metaTileEntity.multi;
-import static com.github.technus.tectech.recipe.TT_recipe.E_RECIPE_ID;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage;
import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sBlockCasingsTT;
@@ -37,7 +36,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.jetbrains.annotations.NotNull;
-import com.github.technus.tectech.recipe.TT_recipe;
+import com.github.technus.tectech.recipe.TecTechRecipeMaps;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_Holder;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
@@ -47,7 +46,6 @@ import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructa
import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
-import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IHatchElement;
@@ -80,7 +78,6 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
// region variables
private final ArrayList<GT_MetaTileEntity_Hatch_Holder> eHolders = new ArrayList<>();
private GT_Recipe.GT_Recipe_AssemblyLine tRecipe;
- private TT_recipe.TT_assLineRecipe aRecipe;
private String machineType;
private static final String assembly = "Assembly line";
private ItemStack holdItem;
@@ -308,7 +305,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
}
private boolean iterateRecipes() {
- for (GT_Recipe ttRecipe : TT_recipe.GT_Recipe_MapTT.sResearchableFakeRecipes.mRecipeList) {
+ for (GT_Recipe ttRecipe : TecTechRecipeMaps.researchStationFakeRecipes.getAllRecipes()) {
if (GT_Utility.areStacksEqual(ttRecipe.mInputs[0], holdItem, true)) {
computationRequired = computationRemaining = ttRecipe.mDuration * 20L;
mMaxProgresstime = 20;
@@ -350,11 +347,10 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
protected CheckRecipeResult checkProcessing_EM() {
ItemStack controllerStack = getControllerSlot();
tRecipe = null;
- aRecipe = null;
if (!eHolders.isEmpty() && eHolders.get(0).mInventory[0] != null) {
holdItem = eHolders.get(0).mInventory[0].copy();
if (ItemList.Tool_DataStick.isStackEqual(controllerStack, false, true)) {
- for (GT_Recipe.GT_Recipe_AssemblyLine assRecipe : TT_recipe.GT_Recipe_MapTT.sAssemblylineRecipes) {
+ for (GT_Recipe.GT_Recipe_AssemblyLine assRecipe : TecTechRecipeMaps.researchableALRecipeList) {
if (GT_Utility.areStacksEqual(assRecipe.mResearchItem, holdItem, true)) {
machineType = assembly;
tRecipe = assRecipe;
@@ -362,23 +358,6 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
}
}
- } else if (ItemList.Tool_DataOrb.isStackEqual(controllerStack, false, true)) {
- for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sMachineRecipes.recipeList()) {
- if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
- aRecipe = assRecipeTT;
- machineType = machine;
- // if found
- if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
- }
- }
- for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sCrafterRecipes.recipeList()) {
- if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
- aRecipe = assRecipeTT;
- machineType = crafter;
- // if found
- if (iterateRecipes()) return SimpleCheckRecipeResult.ofSuccess("researching");
- }
- }
} else {
return CheckRecipeResultRegistry.NO_DATA_STICKS;
}
@@ -406,33 +385,10 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
makeStick();
}
}
- } else if (aRecipe != null && ItemList.Tool_DataOrb.isStackEqual(mInventory[1], false, true)) {
- eHolders.get(0).getBaseMetaTileEntity().setActive(false);
- eHolders.get(0).mInventory[0] = null;
-
- mInventory[1].setStackDisplayName(
- GT_LanguageManager.getTranslation(aRecipe.mOutputs[0].getDisplayName()) + ' '
- + machineType
- + " Construction Data");
- NBTTagCompound tNBT = mInventory[1].getTagCompound(); // code above makes it not null
-
- tNBT.setString("eMachineType", machineType);
- GameRegistry.UniqueIdentifier uid = GameRegistry.findUniqueIdentifierFor(aRecipe.mOutputs[0].getItem());
- tNBT.setString(E_RECIPE_ID, uid + ":" + aRecipe.mOutputs[0].getItemDamage());
- tNBT.setString(
- "author",
- EnumChatFormatting.BLUE + "Tec"
- + EnumChatFormatting.DARK_BLUE
- + "Tech"
- + EnumChatFormatting.WHITE
- + ' '
- + machineType
- + " Recipe Generator");
}
}
computationRequired = computationRemaining = 0;
tRecipe = null;
- aRecipe = null;
holdItem = null;
}
@@ -622,7 +578,6 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
}
computationRequired = computationRemaining = 0;
tRecipe = null;
- aRecipe = null;
holdItem = null;
}
@@ -630,39 +585,19 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
public void onFirstTick_EM(IGregTechTileEntity aBaseMetaTileEntity) {
if (aBaseMetaTileEntity.isServerSide()) {
if (computationRemaining > 0) {
- aRecipe = null;
tRecipe = null;
if (holdItem != null) {
if (ItemList.Tool_DataStick.isStackEqual(mInventory[1], false, true)) {
- for (GT_Recipe.GT_Recipe_AssemblyLine tRecipe : TT_recipe.GT_Recipe_MapTT.sAssemblylineRecipes) {
+ for (GT_Recipe.GT_Recipe_AssemblyLine tRecipe : TecTechRecipeMaps.researchableALRecipeList) {
if (GT_Utility.areStacksEqual(tRecipe.mResearchItem, holdItem, true)) {
this.tRecipe = tRecipe;
machineType = assembly;
break;
}
}
- } else if (ItemList.Tool_DataOrb.isStackEqual(mInventory[1], false, true)) {
- for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sMachineRecipes
- .recipeList()) {
- if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
- aRecipe = assRecipeTT;
- machineType = machine;
- break;
- }
- }
- if (aRecipe == null) {
- for (TT_recipe.TT_assLineRecipe assRecipeTT : TT_recipe.TT_Recipe_Map.sCrafterRecipes
- .recipeList()) {
- if (GT_Utility.areStacksEqual(assRecipeTT.mResearchItem, holdItem, true)) {
- aRecipe = assRecipeTT;
- machineType = crafter;
- break;
- }
- }
- }
}
}
- if (tRecipe == null && aRecipe == null) {
+ if (tRecipe == null) {
holdItem = null;
computationRequired = computationRemaining = 0;
mMaxProgresstime = 0;
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java
index 291bdd1691..e366327b66 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_TM_microwave.java
@@ -42,6 +42,7 @@ import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.recipe.RecipeMaps;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.SimpleCheckRecipeResult;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
@@ -179,7 +180,7 @@ public class GT_MetaTileEntity_TM_microwave extends GT_MetaTileEntity_Multiblock
if (entity instanceof Entity) {
if (tickedStuff.add((Entity) entity)) {
if (inside && entity instanceof EntityItem) {
- GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMicrowaveRecipes.findRecipe(
+ GT_Recipe tRecipe = RecipeMaps.microwaveRecipes.findRecipe(
mte,
null,
true,
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
index f47b55b6d1..12136371cf 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
@@ -99,7 +99,6 @@ import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GT_HatchElementBuilder;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
-import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.IGT_HatchAdder;
import gregtech.common.GT_Pollution;
@@ -859,14 +858,6 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM
}
/**
- * If you want to use GT recipe maps.
- */
- @Override
- public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return null;
- }
-
- /**
* Override if needed but usually call super method at start! On machine stop - NOT called directly when soft
* hammered to offline state! - it SHOULD cause a full stop like power failure does
*/
diff --git a/src/main/resources/assets/gregtech/textures/gui/multimachines/ResearchFake.png b/src/main/resources/assets/gregtech/textures/gui/multimachines/ResearchFake.png
deleted file mode 100644
index b80e150877..0000000000
--- a/src/main/resources/assets/gregtech/textures/gui/multimachines/ResearchFake.png
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/assets/tectech/lang/en_US.lang b/src/main/resources/assets/tectech/lang/en_US.lang
index f5ccf9bcbc..ea7e870d6c 100644
--- a/src/main/resources/assets/tectech/lang/en_US.lang
+++ b/src/main/resources/assets/tectech/lang/en_US.lang
@@ -988,6 +988,18 @@ GT5U.gui.text.invalid_time_setting=§7Invalid time setting
GT5U.gui.text.invalid_overdrive_setting=§7Invalid overdrive setting
GT5U.gui.text.insufficient_power_no_val=§7Insufficient power
+# RecipeMaps
+gt.recipe.eyeofharmony=Eye of Harmony
+gt.recipe.researchStation=Research Station
+
+# NEI
+tt.nei.eoh.total_items=Total Items: %s
+tt.nei.eoh.solid_mass=Percentage of Solid Mass: %s%%
+tt.nei.eoh.item_count=Item Count: %s
+tt.nei.research.max_eu=Max EU: %s EU
+tt.nei.research.computation=Computation: %s
+tt.nei.research.min_computation=Min Computation: %s /s
+
#Keywords and phrases
#Example: ID:3
tt.keyword.ID=ID
diff --git a/src/main/resources/assets/tectech/textures/gui/picture/rack_large.png b/src/main/resources/assets/tectech/textures/gui/picture/rack_large.png
index b57e9267aa..89b957b19a 100644
--- a/src/main/resources/assets/tectech/textures/gui/picture/rack_large.png
+++ b/src/main/resources/assets/tectech/textures/gui/picture/rack_large.png
Binary files differ
diff --git a/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_1.png b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_1.png
new file mode 100644
index 0000000000..e1c451f81a
--- /dev/null
+++ b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_1.png
Binary files differ
diff --git a/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_2.png b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_2.png
new file mode 100644
index 0000000000..974a02f281
--- /dev/null
+++ b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_2.png
Binary files differ
diff --git a/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_3.png b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_3.png
new file mode 100644
index 0000000000..f1ba80dec7
--- /dev/null
+++ b/src/main/resources/assets/tectech/textures/gui/progressbar/research_station_3.png
Binary files differ