Compare commits

...
Author SHA1 Message Date
GTNH-Colen 678a5ac00d Add controller for many-to-many fusion reactor. 2022-06-09 06:53:58 +01:00
GTNH-Colen 4e8687184d Add support for plasma forge. 2022-06-08 18:46:10 +01:00
glowredman fe4566901a Update handlers and catalysts (#259)
New:
- Ex Astris
- Ex Compressum
- RFTools
- Steves Carts
- Thaumcraft NEI Plugin
- TC NEI Additions
- Bibliocraft
- ComputerCraft

Updated:
- Thermal Expansion
- Project Red
2022-06-08 16:12:47 +02:00
embeddedt de2b2ece69 Fix minor memory leaks (#258)
* Fix memory leak caused by mob spawner items

* Use a weak hash map instead of manually clearing the map

* Clear manager reference to prevent holding a WorldClient reference through the GUI

* Revert "Use a weak hash map instead of manually clearing the map"

This reverts commit 91bb997250.
2022-06-06 17:05:02 +02:00
Kiwiand[Kiwi233] d20a80a77c Update zh_CN.lang (#257)
* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

Co-authored-by: [Kiwi233] <[[email protected]]>
2022-06-04 22:57:15 +02:00
Jerome226 6cced8dea0 Added compat for TFC+, IE and other mods 2022-05-31 21:16:48 -07:00
miozune 68b9453328 Add config to ignore overlap with potion effect HUD (#255) 2022-05-31 16:38:14 +02:00
embeddedt ae21012ea2 Use a proper key implementation for the search cache (#254)
* Use a proper key implementation for the search cache
* Synchronize itemSearchNames accesses to prevent CMEs
* Use a ConcurrentHashMap instead of synchronizing
  This allows multiple threads to read at the same time, which is the more common scenario.
2022-05-29 12:25:39 -07:00
miozune 2b31129ef9 Use OverlayIdentifier for GT4 2022-05-29 11:32:49 -07:00
Raven Szewczyk ba77a63545 Make sure to use utf-8 for bookmark reading as well as writing (#253) 2022-05-27 19:38:54 +02:00
embeddedt 8f7d698e7d Add option to cache item grid rendering (#250)
* Add option to cache item grid rendering

* Fix highlighting for bookmarks

* Tweak GL state slightly

* Fix focus box being in the wrong place

* Fix flickering for one frame when searching

* Prevent potion effects from rendering over NEI slots

Fixes #231

* Invalidate the buffer if `invalidSlotMap` changes

* Clean up imports

* Delay blitting until after the buffer is refreshed

but still avoid waiting for the next frame

* Refactor slot focus logic to handle highlighting multiple slots

* Refresh grid when sorting bookmarks

* Minor code cleanup, fix some more hovering issues

* Remove `slotNeedsOutline`, it is now redundant

* Remove focus parameter from drawItem
2022-05-27 13:42:41 +02:00
glowredman 72d44fd711 Fix AppleCore's reflection
AppleCore accesses `getStackMouseOver` via reflection but it has been moved to the `PanelWidget` class -> the reflection fails
2022-05-16 10:40:12 -07:00
MuXiu1997 d735cc2a38 Use shortcut key to trigger overlay recipe (#248)
* Use shortcut key to trigger overlay recipe

* Add a way to remove overlay renderer

* Change of implementation

* Fix crash
2022-05-16 17:57:00 +02:00
slprimeandSerghei Borovetchi 91e9b2a5ae Panel settings (#240)
* panel settings

* Highlight hidden items; mark item with recipe

* open gui usage with recipeId

* small  changes

* restore gl after draw item

Co-authored-by: Serghei Borovetchi <[email protected]>
2022-05-06 21:41:45 +02:00
miozune 96e4fe55e8 Send chat to player when recipe loading was errored (#241) 2022-05-03 20:42:09 +02:00
miozune 8717df0cbb Fix scrolling recipes when hovering over ingredients changes stack size (#237) 2022-04-28 15:46:01 +02:00
miozune d6a6551561 Allow GuiRecipe to back to general GuiScreen (#236) 2022-04-25 15:31:50 +02:00
Jason Mitchell 995ed24056 Fix catalysts for gt6 2022-04-20 08:19:47 -07:00
Kiwiand[Kiwi233] 2917f2a4c9 Update zh_CN.lang (#235)
* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

* Update zh_CN.lang

Co-authored-by: [Kiwi233] <[[email protected]]>
2022-04-14 20:04:31 +02:00
NoXъ 5b2ff42d4f typo correction, russification (#234) 2022-04-09 18:11:15 +02:00
miozune 6f2782b06e Add way to register catalysts via IMC (#232) 2022-04-08 21:15:24 +02:00
Glease f17bf6e8e2 fix weird cme (#230) 2022-03-12 15:03:44 +01:00
Glease 10ee4d17ef super unlikely NPE fix (#229) 2022-03-12 12:22:17 +01:00
miozune f6acd768f3 Fix not being able to scroll recipes when hovering over ingredients (#228) 2022-03-05 11:05:26 +01:00
miozune 8a5146b672 Workaround for issue where GT++ registers Chemical Plant handler twice 2022-03-03 08:23:55 -08:00
miozune 1632a90d15 Add support for Natura and Campfire Backport (#226) 2022-03-01 11:28:25 +01:00
39 changed files with 2544 additions and 1152 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# NotEnoughItems Unofficial - By the GTNH Team
A continuation of NotEnoughItems for 1.7.10 by the developers of Gregtech: New Horizons modpack, with features either inspired and/or backported from JustEnoughItems
A continuation of NotEnoughItems for 1.7.10 by the developers of Gregtech: New Horizons modpack, with features either inspired and/or backported from JustEnoughItems.
We've tested this against all of the mods included in GTNH, as well as a limited set of other mods (like Reika's mods). Every effort has been made to maintain backwards compatibility, however the focus is on the mods contained in the GTNH modpack.
+3
View File
@@ -0,0 +1,3 @@
compileJava {
options.encoding = "UTF-8"
}
+68 -49
View File
@@ -1,4 +1,4 @@
//version: 1644510936
//version: 1652851397
/*
DO NOT CHANGE THIS FILE!
@@ -6,12 +6,11 @@ Also, you may replace this file at any time if there is an update available.
Please check https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/build.gradle for updates.
*/
import org.gradle.internal.logging.text.StyledTextOutput
import org.gradle.internal.logging.text.StyledTextOutputFactory
import org.gradle.internal.logging.text.StyledTextOutput.Style
import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.internal.logging.text.StyledTextOutput.Style
import org.gradle.internal.logging.text.StyledTextOutputFactory
import java.util.concurrent.TimeUnit
@@ -45,18 +44,21 @@ plugins {
id 'eclipse'
id 'scala'
id 'maven-publish'
id('org.jetbrains.kotlin.jvm') version ('1.6.10') apply false
id('org.ajoberstar.grgit') version('4.1.1')
id('com.github.johnrengelman.shadow') version('4.0.4')
id('com.palantir.git-version') version('0.13.0') apply false
id('de.undercouch.download') version('5.0.1')
id 'org.jetbrains.kotlin.jvm' version '1.5.30' apply false
id 'org.jetbrains.kotlin.kapt' version '1.5.30' apply false
id 'com.google.devtools.ksp' version '1.5.30-1.0.0' apply false
id 'org.ajoberstar.grgit' version '4.1.1'
id 'com.github.johnrengelman.shadow' version '4.0.4'
id 'com.palantir.git-version' version '0.13.0' apply false
id 'de.undercouch.download' version '5.0.1'
id 'com.github.gmazzo.buildconfig' version '3.0.3' apply false
}
if (project.file('.git/HEAD').isFile()) {
apply plugin: 'com.palantir.git-version'
}
def out = services.get(StyledTextOutputFactory).create("an-output")
def out = services.get(StyledTextOutputFactory).create('an-output')
apply plugin: 'forge'
@@ -102,6 +104,7 @@ checkPropertyExists("usesShadowedDependencies")
checkPropertyExists("developmentEnvironmentUserName")
boolean noPublishedSources = project.findProperty("noPublishedSources") ? project.noPublishedSources.toBoolean() : false
boolean usesMixinDebug = project.findProperty('usesMixinDebug') ?: project.usesMixins.toBoolean()
String javaSourceDir = "src/main/java/"
String scalaSourceDir = "src/main/scala/"
@@ -173,7 +176,7 @@ configurations.all {
try {
'git config core.fileMode false'.execute()
}
catch (Exception e) {
catch (Exception ignored) {
out.style(Style.Failure).println("git isn't installed at all")
}
@@ -183,19 +186,21 @@ String versionOverride = System.getenv("VERSION") ?: null
try {
identifiedVersion = versionOverride == null ? gitVersion() : versionOverride
}
catch (Exception e) {
catch (Exception ignored) {
out.style(Style.Failure).text(
'This mod must be version controlled by Git AND the repository must provide at least one tag,\n' +
'or the VERSION override must be set! ').style(Style.SuccessHeader).text('(Do NOT download from GitHub using the ZIP option, instead\n' +
'or the VERSION override must be set! ').style(Style.SuccessHeader).text('(Do NOT download from GitHub using the ZIP option, instead\n' +
'clone the repository, see ').style(Style.Info).text('https://gtnh.miraheze.org/wiki/Development').style(Style.SuccessHeader).println(' for details.)'
)
versionOverride = 'NO-GIT-TAG-SET'
identifiedVersion = versionOverride
}
version = minecraftVersion + '-' + identifiedVersion
String modVersion = identifiedVersion
ext {
modVersion = identifiedVersion
}
if( identifiedVersion.equals(versionOverride) ) {
if(identifiedVersion == versionOverride) {
out.style(Style.Failure).text('Override version to ').style(Style.Identifier).text(modVersion).style(Style.Failure).println('!\7')
}
@@ -207,22 +212,25 @@ else {
archivesBaseName = modId
}
def arguments = []
def jvmArguments = []
if(usesMixins.toBoolean()) {
if (usesMixins.toBoolean()) {
arguments += [
"--tweakClass org.spongepowered.asm.launch.MixinTweaker"
]
jvmArguments += [
"-Dmixin.debug.countInjections=true", "-Dmixin.debug.verbose=true", "-Dmixin.debug.export=true"
"--tweakClass org.spongepowered.asm.launch.MixinTweaker"
]
if (usesMixinDebug.toBoolean()) {
jvmArguments += [
"-Dmixin.debug.countInjections=true",
"-Dmixin.debug.verbose=true",
"-Dmixin.debug.export=true"
]
}
}
minecraft {
version = minecraftVersion + "-" + forgeVersion + "-" + minecraftVersion
runDir = "run"
version = minecraftVersion + '-' + forgeVersion + '-' + minecraftVersion
runDir = 'run'
if (replaceGradleTokenInFile) {
replaceIn replaceGradleTokenInFile
@@ -255,8 +263,8 @@ minecraft {
}
}
if(file("addon.gradle").exists()) {
apply from: "addon.gradle"
if(file('addon.gradle').exists()) {
apply from: 'addon.gradle'
}
apply from: 'repositories.gradle'
@@ -304,23 +312,28 @@ dependencies {
apply from: 'dependencies.gradle'
def mixingConfigRefMap = "mixins." + modId + ".refmap.json"
def mixingConfigRefMap = 'mixins.' + modId + '.refmap.json'
def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap
def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg"
task generateAssets {
if(usesMixins.toBoolean()) {
getFile("/src/main/resources/mixins." + modId + ".json").text = """{
if (usesMixins.toBoolean()) {
def mixinConfigFile = getFile("/src/main/resources/mixins." + modId + ".json");
if (!mixinConfigFile.exists()) {
mixinConfigFile.text = """{
"required": true,
"minVersion": "0.7.11",
"package": "${modGroup}.${mixinsPackage}",
"plugin": "${modGroup}.${mixinPlugin}",
"refmap": "${mixingConfigRefMap}",
"target": "@env(DEFAULT)",
"compatibilityLevel": "JAVA_8"
"compatibilityLevel": "JAVA_8",
"mixins": [],
"client": [],
"server": []
}
"""
}
}
}
@@ -408,12 +421,11 @@ tasks.withType(JavaExec).configureEach {
)
}
processResources
{
processResources {
// this will ensure that this task is redone when the versions change.
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
@@ -437,7 +449,7 @@ processResources
def getManifestAttributes() {
def manifestAttributes = [:]
if(containsMixinsAndOrCoreModOnly.toBoolean() == false && (usesMixins.toBoolean() || coreModClass)) {
if(!containsMixinsAndOrCoreModOnly.toBoolean() && (usesMixins.toBoolean() || coreModClass)) {
manifestAttributes += ["FMLCorePluginContainsFMLMod": true]
}
@@ -453,14 +465,14 @@ def getManifestAttributes() {
manifestAttributes += [
"TweakClass" : "org.spongepowered.asm.launch.MixinTweaker",
"MixinConfigs" : "mixins." + modId + ".json",
"ForceLoadAsMod" : containsMixinsAndOrCoreModOnly.toBoolean() == false
"ForceLoadAsMod" : !containsMixinsAndOrCoreModOnly.toBoolean()
]
}
return manifestAttributes
}
task sourcesJar(type: Jar) {
from (sourceSets.main.allJava)
from (sourceSets.main.allSource)
from (file("$projectDir/LICENSE"))
getArchiveClassifier().set('sources')
}
@@ -515,7 +527,7 @@ task devJar(type: Jar) {
}
task apiJar(type: Jar) {
from (sourceSets.main.allJava) {
from (sourceSets.main.allSource) {
include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + '/**'
}
@@ -540,12 +552,15 @@ artifacts {
}
}
// The gradle metadata includes all of the additional deps that we disabled from POM generation (including forgeBin with no groupID),
// The gradle metadata includes all of the additional deps that we disabled from POM generation (including forgeBin with no groupID),
// and isn't strictly needed with the POM so just disable it.
tasks.withType(GenerateModuleMetadata) {
enabled = false
}
// workaround variable hiding in pom processing
def projectConfigs = project.configurations
publishing {
publications {
maven(MavenPublication) {
@@ -554,7 +569,7 @@ publishing {
artifact source: shadowJar, classifier: ""
}
if(!noPublishedSources) {
artifact source: sourcesJar, classifier: "src"
artifact source: sourcesJar, classifier: "sources"
}
artifact source: usesShadowedDependencies.toBoolean() ? shadowDevJar : devJar, classifier: "dev"
if (apiPackage) {
@@ -565,17 +580,21 @@ publishing {
artifactId = System.getenv("ARTIFACT_ID") ?: project.name
// Using the identified version, not project.version as it has the prepended 1.7.10
version = System.getenv("RELEASE_VERSION") ?: identifiedVersion
// remove extra garbage from who knows where
// remove extra garbage from minecraft and minecraftDeps configuration
pom.withXml {
def badPomGroup = ['net.minecraft', 'com.google.code.findbugs', 'org.ow2.asm', 'com.typesafe.akka', 'com.typesafe', 'org.scala-lang',
'org.scala-lang.plugins', 'net.sf.jopt-simple', 'lzma', 'com.mojang', 'org.apache.commons', 'org.apache.httpcomponents',
'commons-logging', 'java3d', 'net.sf.trove4j', 'com.ibm.icu', 'com.paulscode', 'io.netty', 'com.google.guava',
'commons-io', 'commons-codec', 'net.java.jinput', 'net.java.jutils', 'com.google.code.gson', 'org.apache.logging.log4j',
'org.lwjgl.lwjgl', 'tv.twitch', '']
def badArtifacts = [:].withDefault {[] as Set<String>}
for (configuration in [projectConfigs.minecraft, projectConfigs.minecraftDeps]) {
for (dependency in configuration.allDependencies) {
badArtifacts[dependency.group == null ? "" : dependency.group] += dependency.name
}
}
// example for specifying extra stuff to ignore
// badArtifacts["org.example.group"] += "artifactName"
Node pomNode = asNode()
pomNode.dependencies.'*'.findAll() {
badPomGroup.contains(it.groupId.text())
badArtifacts[it.groupId.text()].contains(it.artifactId.text())
}.each() {
it.parent().remove(it)
}
@@ -688,7 +707,7 @@ def deobf(String sourceURL, String fileName) {
String bon2File = bon2Dir + "/BON2-2.5.0.jar"
String obfFile = cacheDir + "modules-2/files-2.1/" + fileName + ".jar"
String deobfFile = cacheDir + "modules-2/files-2.1/" + fileName + "-deobf.jar"
if(file(deobfFile).exists()) {
return files(deobfFile)
}
@@ -719,7 +738,7 @@ def deobf(String sourceURL, String fileName) {
// Helper methods
def checkPropertyExists(String propertyName) {
if (project.hasProperty(propertyName) == false) {
if (!project.hasProperty(propertyName)) {
throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/gradle.properties")
}
}
+186 -77
View File
@@ -5,15 +5,21 @@ import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.util.NBTJson;
import codechicken.nei.recipe.StackInfo;
import codechicken.nei.recipe.BookmarkRecipeId;
import codechicken.nei.ItemPanel.ItemPanelSlot;
import codechicken.nei.guihook.GuiContainerManager;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import org.apache.commons.io.IOUtils;
import org.lwjgl.opengl.GL11;
import javax.annotation.Nullable;
import static codechicken.lib.gui.GuiDraw.getMousePosition;
import static codechicken.lib.gui.GuiDraw.drawRect;
@@ -26,12 +32,13 @@ import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
public class BookmarkPanel extends ItemPanel
public class BookmarkPanel extends PanelWidget
{
protected File bookmarkFile;
@@ -46,7 +53,7 @@ public class BookmarkPanel extends ItemPanel
protected ArrayList<BookmarkGrid> namespaces = new ArrayList<>();
public int activeNamespaceIndex = 0;
protected int activeNamespaceIndex = 0;
protected static class BookmarkStackMeta
@@ -54,13 +61,15 @@ public class BookmarkPanel extends ItemPanel
public int factor;
public BookmarkRecipeId recipeId;
public boolean ingredient = false;
public boolean fluidDisplay = false;
public BookmarkStackMeta(BookmarkRecipeId recipeId, int count, boolean ingredient)
public BookmarkStackMeta(BookmarkRecipeId recipeId, int count, boolean ingredient, boolean fluidDisplay)
{
this.recipeId = recipeId;
this.factor = count;
this.ingredient = ingredient;
this.fluidDisplay = fluidDisplay;
}
}
@@ -92,11 +101,13 @@ public class BookmarkPanel extends ItemPanel
{
realItems.add(stackA);
metadata.add(meta);
refreshBuffer = true;
}
public void replaceItem(int idx, ItemStack stack)
{
realItems.set(idx, stack);
refreshBuffer = true;
}
public void removeRecipe(int idx, boolean removeFullRecipe)
@@ -118,7 +129,7 @@ public class BookmarkPanel extends ItemPanel
for (int slotIndex = metadata.size() - 1; slotIndex >= 0; slotIndex--) {
recipeIdB = getRecipeId(slotIndex);
if (recipeIdB != null && recipeIdA.equals(recipeIdB)) {
if (recipeIdB != null && recipeIdB.equals(recipeIdA)) {
removeItem(slotIndex);
}
@@ -130,6 +141,7 @@ public class BookmarkPanel extends ItemPanel
{
realItems.remove(idx);
metadata.remove(idx);
refreshBuffer = true;
return true;
}
@@ -155,33 +167,61 @@ public class BookmarkPanel extends ItemPanel
{
realItems.add(dst, realItems.remove(src));
metadata.add(dst, metadata.remove(src));
refreshBuffer = true;
}
private boolean isPartOfFocusedRecipe(ItemPanelSlot focused, int myIdx) {
return (NEIClientUtils.shiftKey()
&& LayoutManager.bookmarkPanel.sortedStackIndex == -1
&& focused != null
&& getRecipeId(focused.slotIndex) != null
&& getRecipeId(myIdx) != null
&& getRecipeId(focused.slotIndex).equals(getRecipeId(myIdx)));
}
@Override
protected void drawItem(Rectangle4i rect, int idx, ItemPanelSlot focus)
{
if (LayoutManager.bookmarkPanel.sortedNamespaceIndex == LayoutManager.bookmarkPanel.activeNamespaceIndex && LayoutManager.bookmarkPanel.sortedStackIndex == idx) {
protected void drawSlotOutline(@Nullable ItemPanelSlot focus, int idx, Rectangle4i rect) {
if(LayoutManager.bookmarkPanel.sortedNamespaceIndex == LayoutManager.bookmarkPanel.activeNamespaceIndex && LayoutManager.bookmarkPanel.sortedStackIndex == idx) {
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);//highlight
} else {
if (focus != null) {
if (focus.slotIndex == idx) {
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);//highlight
} else if (
LayoutManager.bookmarkPanel.sortedStackIndex == -1 && //disabled when sorting
NEIClientUtils.shiftKey() && //show only with shift key
getRecipeId(focus.slotIndex) != null && getRecipeId(idx) != null && getRecipeId(focus.slotIndex).equals(getRecipeId(idx))//is some recipeId
) {
drawRect(rect.x, rect.y, rect.w, rect.h, getMetadata(idx).ingredient? 0x88b3b300: 0x88009933);//highlight recipe
}
} else if(focus != null) {
BookmarkStackMeta meta = getMetadata(idx);
if (isPartOfFocusedRecipe(focus, idx)) {
drawRect(rect.x, rect.y, rect.w, rect.h, meta.ingredient? 0x88b3b300: 0x88009933);//highlight recipe
} else if(focus.slotIndex == idx) {
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);//highlight
}
GuiContainerManager.drawItem(rect.x + 1, rect.y + 1, getItem(idx), true);
}
}
@Override
protected void drawItem(Rectangle4i rect, int idx)
{
if (LayoutManager.bookmarkPanel.sortedNamespaceIndex != LayoutManager.bookmarkPanel.activeNamespaceIndex || LayoutManager.bookmarkPanel.sortedStackIndex != idx) {
final ItemStack stack = getItem(idx);
final BookmarkStackMeta meta = getMetadata(idx);
GuiContainerManager.drawItem(rect.x + 1, rect.y + 1, stack, true, meta.factor < 0 || meta.fluidDisplay? "": String.valueOf(stack.stackSize));
if (meta.recipeId != null && !meta.ingredient && NEIClientConfig.showRecipeMarker()) {
drawRecipeMarker(rect.x, rect.y, GuiContainerManager.getFontRenderer(stack));
}
}
}
protected void drawRecipeMarker(int offsetX, int offsetY, FontRenderer fontRenderer )
{
final float scaleFactor = fontRenderer.getUnicodeFlag() ? 0.85f : 0.5f;
final float inverseScaleFactor = 1.0f / scaleFactor;
GuiContainerManager.enable2DRender();
GL11.glScaled(scaleFactor, scaleFactor, scaleFactor);
final int X = (int) ( ( (float) offsetX + 1.0f) * inverseScaleFactor );
final int Y = (int) ( ( (float) offsetY + 1.0f) * inverseScaleFactor );
fontRenderer.drawStringWithShadow("R", X, Y, 0xA0A0A0);
GL11.glScaled(inverseScaleFactor, inverseScaleFactor, inverseScaleFactor);
GuiContainerManager.enable3DRender();
}
}
@@ -192,6 +232,7 @@ public class BookmarkPanel extends ItemPanel
grid = new BookmarkGrid();
}
@Override
public void init()
{
super.init();
@@ -242,9 +283,10 @@ public class BookmarkPanel extends ItemPanel
@Override
public String getLabelText()
{
return super.getLabelText() + " [" + grid.size() + "]";
return String.format("(%d/%d) [%d]", getPage(), Math.max(1, getNumPages()), grid.size());
}
public void addOrRemoveItem(ItemStack stackA)
{
addOrRemoveItem(stackA, "", null);
@@ -267,7 +309,7 @@ public class BookmarkPanel extends ItemPanel
final ItemStack normalizedA = StackInfo.loadFromNBT(nbTagA);
BookmarkRecipeId recipeId = null;
if (NEIClientConfig.saveCurrentRecipeInBookmarksEnabled() && handlerName != "" && ingredients != null && ingredients.size() > 0) {
if (NEIClientConfig.saveCurrentRecipeInBookmarksEnabled() && handlerName != "" && ingredients != null && !ingredients.isEmpty()) {
recipeId = new BookmarkRecipeId(handlerName, ingredients);
}
@@ -277,7 +319,7 @@ public class BookmarkPanel extends ItemPanel
BGrid.removeRecipe(idx, addFullRecipe);
} else {
if (addFullRecipe && handlerName != "" && ingredients != null) {
if (addFullRecipe && handlerName != "" && ingredients != null && !ingredients.isEmpty()) {
final Map<NBTTagCompound, Integer> unique = new HashMap<>();
final ArrayList<NBTTagCompound> sorted = new ArrayList<>();
@@ -297,12 +339,12 @@ public class BookmarkPanel extends ItemPanel
for (NBTTagCompound nbTag : sorted) {
nbTag.setInteger("Count", nbTag.getInteger("Count") * unique.get(nbTag));
BGrid.addItem(StackInfo.loadFromNBT(nbTag), new BookmarkStackMeta(recipeId, nbTag.getInteger("Count"), true));
BGrid.addItem(StackInfo.loadFromNBT(nbTag), new BookmarkStackMeta(recipeId, (saveStackSize ? 1: -1) * nbTag.getInteger("Count"), true, nbTag.hasKey("gtFluidName")));
}
}
BGrid.addItem(normalizedA, new BookmarkStackMeta(recipeId, nbTagA.getInteger("Count"), false));
BGrid.addItem(normalizedA, new BookmarkStackMeta(recipeId, (saveStackSize ? 1: -1) * nbTagA.getInteger("Count"), false, nbTagA.hasKey("gtFluidName")));
}
@@ -315,12 +357,8 @@ public class BookmarkPanel extends ItemPanel
public BookmarkRecipeId getBookmarkRecipeId(ItemStack stackA)
{
final Point mousePos = getMousePosition();
final ItemPanelSlot slot = getSlotMouseOver(mousePos.x, mousePos.y);
if (slot != null && StackInfo.equalItemAndNBT(slot.item, stackA, true)) {
return ((BookmarkGrid) grid).getRecipeId(slot.slotIndex);
}
BookmarkRecipeId mouseOverRecipeId = getBookmarkMouseOverRecipeId(stackA);
if (mouseOverRecipeId != null) return mouseOverRecipeId;
BookmarkRecipeId recipeId = ((BookmarkGrid) grid).findRecipeId(stackA);
@@ -336,6 +374,25 @@ public class BookmarkPanel extends ItemPanel
return recipeId;
}
public BookmarkRecipeId getBookmarkMouseOverRecipeId(ItemStack stackA)
{
final Point mousePos = getMousePosition();
final ItemPanelSlot slot = getSlotMouseOver(mousePos.x, mousePos.y);
if (slot != null) {
if (stackA == null || StackInfo.equalItemAndNBT(slot.item, stackA, true)) {
return ((BookmarkGrid) grid).getRecipeId(slot.slotIndex);
}
}
return null;
}
public BookmarkRecipeId getBookmarkMouseOverRecipeId()
{
return getBookmarkMouseOverRecipeId(null);
}
protected String getNamespaceLabelText(boolean shortFormat)
{
String activePage = String.valueOf(activeNamespaceIndex + 1);
@@ -491,7 +548,7 @@ public class BookmarkPanel extends ItemPanel
}
try (FileOutputStream output = new FileOutputStream(bookmarkFile)) {
IOUtils.writeLines(strings, "\n", output, "UTF-8");
IOUtils.writeLines(strings, "\n", output, StandardCharsets.UTF_8);
} catch (IOException e) {
NEIClientConfig.logger.error("Filed to save bookmarks list to file {}", bookmarkFile, e);
}
@@ -512,9 +569,9 @@ public class BookmarkPanel extends ItemPanel
}
List<String> itemStrings;
try (FileReader reader = new FileReader(bookmarkFile)) {
try (FileInputStream reader = new FileInputStream(bookmarkFile)) {
NEIClientConfig.logger.info("Loading bookmarks from file {}", bookmarkFile);
itemStrings = IOUtils.readLines(reader);
itemStrings = IOUtils.readLines(reader, StandardCharsets.UTF_8);
} catch (IOException e) {
NEIClientConfig.logger.error("Failed to load bookmarks from file {}", bookmarkFile, e);
return;
@@ -560,8 +617,9 @@ public class BookmarkPanel extends ItemPanel
if (itemStack != null) {
namespaces.get(activeNamespaceIndex).addItem(itemStack, new BookmarkStackMeta(
recipeId,
jsonObject.has("factor")? jsonObject.get("factor").getAsInt(): 1,
jsonObject.has("ingredient")? jsonObject.get("ingredient").getAsBoolean(): false
jsonObject.has("factor")? jsonObject.get("factor").getAsInt(): 0,
jsonObject.has("ingredient")? jsonObject.get("ingredient").getAsBoolean(): false,
itemStackNBT.hasKey("gtFluidName")
));
} else {
NEIClientConfig.logger.warn("Failed to load bookmarked ItemStack from json string, the item no longer exists:\n{}", itemStr);
@@ -585,19 +643,38 @@ public class BookmarkPanel extends ItemPanel
{
loadBookmarksIfNeeded();
super.resize(gui);
}
final int buttonHeight = 16;
final int buttonWidth = 16;
final int buttonTop = gui.height - buttonHeight - 2;
final int leftBorder = LayoutManager.bookmarksButton.x + LayoutManager.bookmarksButton.w + 2;
@Override
protected int resizeHeader(GuiContainer gui)
{
final LayoutStyleMinecraft layout = (LayoutStyleMinecraft) LayoutManager.getLayoutStyle();
final int rows = (int) Math.ceil((double) layout.buttonCount / layout.numButtons);
final int diff = rows * 18 + getMarginTop(gui) - y;
if (diff > 0) {
y += diff;
h -= diff;
}
return super.resizeHeader(gui);
}
@Override
protected int resizeFooter(GuiContainer gui)
{
final int BUTTON_SIZE = 16;
final ButtonCycled button = LayoutManager.bookmarksButton;
final int leftBorder = y + h > button.y? button.x + button.w + 2: x;
final int rightBorder = x + w;
final int center = leftBorder + (rightBorder - leftBorder) / 2;
final int center = leftBorder + Math.max(0, (rightBorder - leftBorder) / 2);
int labelWidth = 2;
namespacePrev.h = namespaceNext.h = buttonHeight;
namespacePrev.w = namespaceNext.w = buttonWidth;
namespacePrev.y = namespaceNext.y = buttonTop;
namespacePrev.h = namespaceNext.h = BUTTON_SIZE;
namespacePrev.w = namespaceNext.w = BUTTON_SIZE;
namespacePrev.y = namespaceNext.y = y + h - BUTTON_SIZE;
if (rightBorder - leftBorder >= 70) {
@@ -608,12 +685,13 @@ public class BookmarkPanel extends ItemPanel
namespaceLabel.text = getNamespaceLabelText(true);
}
namespaceLabel.y = buttonTop + 5;
namespaceLabel.y = namespacePrev.y + 5;
namespaceLabel.x = center;
namespacePrev.x = center - labelWidth / 2 - 2 - namespacePrev.w;
namespaceNext.x = center + labelWidth / 2 + 2;
return BUTTON_SIZE + 2;
}
@Override
@@ -621,38 +699,62 @@ public class BookmarkPanel extends ItemPanel
{
super.setVisible();
LayoutManager.addWidget(namespacePrev);
LayoutManager.addWidget(namespaceNext);
LayoutManager.addWidget(namespaceLabel);
if (grid.getPerPage() > 0) {
LayoutManager.addWidget(namespacePrev);
LayoutManager.addWidget(namespaceNext);
LayoutManager.addWidget(namespaceLabel);
}
}
protected String getPositioningSettingName()
{
return "world.panels.bookmarks";
}
@Override
public int getMarginLeft(GuiContainer gui)
{
return 5;
return PADDING;
}
@Override
public int getMarginTop(GuiContainer gui)
{
LayoutStyleMinecraft layout = (LayoutStyleMinecraft)LayoutManager.getLayoutStyle();
return 2 + (((int)Math.ceil((double)layout.buttonCount / layout.numButtons)) * 18);
return PADDING;
}
@Override
public int getWidth(GuiContainer gui)
{
return LayoutManager.getLeftSize(gui) - ((gui.xSize + gui.width) / 2 + 3) - 16;
return gui.width - (gui.xSize + gui.width) / 2 - PADDING * 2;
}
@Override
public int getHeight(GuiContainer gui)
{
// - 19 = 22 + 1 -> input in bottom
return gui.height - getMarginTop(gui) - 23;
return gui.height - getMarginTop(gui) - PADDING;
}
protected ItemStack getDraggedStackWithQuantity(int mouseDownSlot)
{
final ItemStack stack = grid.getItem(mouseDownSlot);
if (stack == null) {
return null;
}
final BookmarkStackMeta meta = ((BookmarkGrid) grid).getMetadata(mouseDownSlot);
int amount = stack.stackSize;
if (meta.factor < 0 && !meta.fluidDisplay) {
amount = NEIClientConfig.getItemQuantity();
if (amount == 0) {
amount = stack.getMaxStackSize();
}
}
return NEIServerUtils.copyStack(stack, amount);
}
@Override
public void mouseDragged(int mousex, int mousey, int button, long heldTime)
{
@@ -666,6 +768,7 @@ public class BookmarkPanel extends ItemPanel
if (stack != null && (mouseOverSlot == null || mouseOverSlot.slotIndex != mouseDownSlot || heldTime > 250)) {
sortedNamespaceIndex = activeNamespaceIndex;
sortedStackIndex = mouseDownSlot;
grid.refreshBuffer = true;
}
} else {
@@ -737,13 +840,6 @@ public class BookmarkPanel extends ItemPanel
super.postDraw(mousex, mousey);
}
@Override
protected ItemStack getDraggedStackWithQuantity(int mouseDownSlot)
{
ItemStack stack = grid.getItem(mouseDownSlot);
return stack != null? stack.copy(): null;
}
@Override
public void mouseUp(int mousex, int mousey, int button)
@@ -753,6 +849,7 @@ public class BookmarkPanel extends ItemPanel
sortedNamespaceIndex = -1;
sortedStackIndex = -1;
mouseDownSlot = -1;
grid.refreshBuffer = true; /* make sure grid redraws the new item */
saveBookmarks();
} else {
super.mouseUp(mousex, mousey, button);
@@ -784,7 +881,6 @@ public class BookmarkPanel extends ItemPanel
if (slot != null) {
final BookmarkGrid BGrid = (BookmarkGrid)grid;
final BookmarkRecipeId recipeId = BGrid.getRecipeId(slot.slotIndex);
final BookmarkStackMeta meta = BGrid.getMetadata(slot.slotIndex);
final boolean addFullRecipe = NEIClientUtils.shiftKey();
if (addFullRecipe) {
@@ -793,19 +889,15 @@ public class BookmarkPanel extends ItemPanel
for (int slotIndex = grid.size() - 1; slotIndex >= 0; slotIndex--) {
iMeta = BGrid.getMetadata(slotIndex);
if (iMeta.recipeId != null && iMeta.recipeId.equals(recipeId)) {
NBTTagCompound nbTag = StackInfo.itemStackToNBT(BGrid.getItem(slotIndex), true);
nbTag.setInteger("Count", Math.max(nbTag.getInteger("Count") + iMeta.factor * shift, iMeta.factor));
BGrid.replaceItem(slotIndex, StackInfo.loadFromNBT(nbTag));
if (iMeta.recipeId != null && iMeta.recipeId.equals(recipeId) && slotIndex != slot.slotIndex) {
shiftStackSize(slotIndex, shift);
}
}
}
NBTTagCompound nbTag = StackInfo.itemStackToNBT(slot.item, true);
nbTag.setInteger("Count", Math.max(nbTag.getInteger("Count") + meta.factor * shift, meta.factor));
BGrid.replaceItem(slot.slotIndex, StackInfo.loadFromNBT(nbTag));
shiftStackSize(slot.slotIndex, shift);
saveBookmarks();
@@ -817,4 +909,21 @@ public class BookmarkPanel extends ItemPanel
return super.onMouseWheel(shift, mousex, mousey);
}
protected void shiftStackSize(int slotIndex, int shift)
{
final BookmarkGrid BGrid = (BookmarkGrid)grid;
final NBTTagCompound nbTag = StackInfo.itemStackToNBT(BGrid.getItem(slotIndex), true);
final BookmarkStackMeta meta = BGrid.getMetadata(slotIndex);
final int factor = Math.abs(meta.factor);
if (nbTag.getInteger("Count") == factor && meta.factor < 0 && shift > 0) {
meta.factor = factor;
} else {
meta.factor = nbTag.getInteger("Count") == factor && shift < 0? -1 * factor: factor;
nbTag.setInteger("Count", Math.max(nbTag.getInteger("Count") + factor * shift, factor));
BGrid.replaceItem(slotIndex, StackInfo.loadFromNBT(nbTag));
}
}
}
@@ -299,6 +299,10 @@ public class ClientHandler
lastworld = null;
else if (gui instanceof GuiSelectWorld)
NEIClientConfig.reloadSaves();
else if(gui == null) {
/* prevent WorldClient reference being held in the Gui */
NEIController.manager = null;
}
}
lastGui = gui;
}
@@ -328,6 +332,8 @@ public class ClientHandler
if (!Minecraft.getMinecraft().isSingleplayer())//wait for server to initiate in singleplayer
NEIClientConfig.loadWorld("remote/" + ClientUtils.getServerIP().replace(':', '~'));
ItemMobSpawner.clearEntityReferences(world);
}
lastworld = world;
@@ -1,10 +1,12 @@
package codechicken.nei;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.api.INEIGuiHandler;
import codechicken.nei.api.TaggedInventoryArea;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
@@ -50,7 +52,21 @@ public class GuiExtendedCreativeInv extends GuiContainer implements INEIGuiHandl
}
@Override
public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h) {
return false;
public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h)
{
return (new Rectangle4i(guiLeft - 15, guiTop + 18, 18, 18 * 4 + 4)).intersects(new Rectangle4i(x, y, w, h));
}
@Override
protected void handleMouseClick(Slot p_146984_1_, int p_146984_2_, int p_146984_3_, int p_146984_4_)
{
//Hack for armor slots, because they are outside the container
if (p_146984_1_ != null && p_146984_4_ == 4 && p_146984_1_.xDisplayPosition < 0) {
p_146984_4_ = 0;
}
super.handleMouseClick(p_146984_1_, p_146984_2_, p_146984_3_, p_146984_4_);
}
}
@@ -96,6 +96,10 @@ public class ItemMobSpawner extends ItemBlock
return e;
}
public static void clearEntityReferences(World newWorld) {
entityHashMap.values().removeIf(e -> e.worldObj != newWorld);
}
private void setDefaultTag(ItemStack itemstack) {
if (!IDtoNameMap.containsKey(itemstack.getItemDamage()))
itemstack.setItemDamage(idPig);
+100 -432
View File
@@ -1,40 +1,22 @@
package codechicken.nei;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.api.GuiInfo;
import codechicken.nei.api.INEIGuiHandler;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.recipe.GuiCraftingRecipe;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.GuiUsageRecipe;
import codechicken.nei.recipe.StackInfo;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiContainerCreative;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;
import javax.annotation.Nullable;
import static codechicken.lib.gui.GuiDraw.drawRect;
import static codechicken.nei.LayoutManager.searchField;
import java.util.ArrayList;
import java.util.regex.Pattern;
public class ItemPanel extends Widget
public class ItemPanel extends PanelWidget
{
public ItemStack draggedStack;
public int mouseDownSlot = -1;
public Button pagePrev;
public Button pageNext;
public Label pageLabel;
/**
* Backwards compat :-/
*/
@SuppressWarnings("unused")
@Deprecated
private int itemsPerPage = 0;
@@ -43,8 +25,15 @@ public class ItemPanel extends Widget
@Deprecated
public ArrayList<ItemStack> realItems = new ArrayList<>();
public ItemStack getStackMouseOver(int mousex, int mousey) {
// *looks angrily at AppleCore*
return super.getStackMouseOver(mousex, mousey);
};
protected Pattern SPECIAL_REGEX_CHARS = Pattern.compile("[{}()\\[\\].+*?^$\\\\|]");
public Button more;
public Button less;
public ItemQuantityField quantity;
public static class ItemPanelSlot
{
@@ -80,30 +69,26 @@ public class ItemPanel extends Widget
if (newItems != null) {
realItems = newItems;
newItems = null;
refreshBuffer = true;
}
super.refresh(gui);
}
@Override
protected void drawItem(Rectangle4i rect, int idx, ItemPanelSlot focus)
{
if (PresetsWidget.inEditMode() && !PresetsWidget.isHidden(getItem(idx))) {
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);
protected void drawSlotOutline(@Nullable ItemPanelSlot focused, int slotIdx, Rectangle4i rect) {
if (PresetsWidget.inEditMode()) {
if(!PresetsWidget.isHidden(getItem(slotIdx)))
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);
} else {
super.drawSlotOutline(focused, slotIdx, rect);
}
super.drawItem(rect, idx, PresetsWidget.inEditMode()? null: focus);
}
}
protected ItemsGrid grid = new ItemPanelGrid();
public ArrayList<ItemStack> getItems()
public ItemPanel()
{
return grid.getItems();
grid = new ItemPanelGrid();
}
public static void updateItemList(ArrayList<ItemStack> newItems)
@@ -112,149 +97,116 @@ public class ItemPanel extends Widget
ItemPanels.itemPanel.realItems = newItems;
}
@Override
public void init()
{
super.init();
more = new Button("+")
{
@Override
public boolean onButtonPress(boolean rightclick) {
if (rightclick)
return false;
int modifier = NEIClientUtils.controlKey() ? 64 : NEIClientUtils.shiftKey() ? 10 : 1;
int quantity = NEIClientConfig.getItemQuantity() + modifier;
if (quantity < 0) {
quantity = 0;
}
ItemPanels.itemPanel.quantity.setText(Integer.toString(quantity));
return true;
}
};
less = new Button("-")
{
@Override
public boolean onButtonPress(boolean rightclick) {
if (rightclick)
return false;
int modifier = NEIClientUtils.controlKey() ? -64 : NEIClientUtils.shiftKey() ? -10 : -1;
int quantity = NEIClientConfig.getItemQuantity() + modifier;
if (quantity < 0) {
quantity = 0;
}
ItemPanels.itemPanel.quantity.setText(Integer.toString(quantity));
return true;
}
};
quantity = new ItemQuantityField("quantity");
}
@Deprecated
public void scroll(int i)
{
grid.shiftPage(i);
}
public ItemsGrid getGrid()
public String getLabelText()
{
return grid;
return String.format("(%d/%d)", getPage(), Math.max(1, getNumPages()));
}
public void init() {
pageLabel = new Label("(0/0)", true);
pagePrev = new Button("Prev")
{
public boolean onButtonPress(boolean rightclick) {
if (!rightclick) {
grid.shiftPage(-1);
return true;
}
return false;
}
@Override
public String getRenderLabel() {
return "<";
}
};
pageNext = new Button("Next")
{
public boolean onButtonPress(boolean rightclick) {
if (!rightclick) {
grid.shiftPage(1);
return true;
}
return false;
}
@Override
public String getRenderLabel() {
return ">";
}
};
protected String getPositioningSettingName()
{
return "world.panels.items";
}
public int getMarginLeft(GuiContainer gui)
{
if (gui instanceof GuiContainerCreative && NEIClientUtils.getGamemode() == 2) {
//then activate creative+ first render creative gui and oly then creative+
return (gui.width + 176) / 2 + 2;
}
return (gui.width + gui.xSize) / 2 + 2;
return (gui.width + gui.xSize) / 2 + PADDING;
}
public int getMarginTop(GuiContainer gui)
{
return 2;
return PADDING;
}
public int getWidth(GuiContainer gui)
{
return LayoutManager.getSideWidth(gui) - getMarginLeft(gui);
return gui.width - (gui.xSize + gui.width) / 2 - PADDING * 2;
}
public int getHeight(GuiContainer gui)
{
// - 19 = 2 + 16 + 1 -> input in bottom
return gui.height - getMarginTop(gui) - 19;
return gui.height - getMarginTop(gui) - PADDING;
}
public String getLabelText()
protected int resizeFooter(GuiContainer gui)
{
return "(" + getPage() + "/" + Math.max(1, getNumPages()) + ")";
}
public void resize(GuiContainer gui)
{
final int marginLeft = getMarginLeft(gui);
final int marginTop = getMarginTop(gui);
final int width = getWidth(gui);
final int height = getHeight(gui);
final int buttonHeight = 16;
final int buttonWidth = 16;
pagePrev.w = pageNext.w = buttonWidth;
pagePrev.h = pageNext.h = buttonHeight;
pagePrev.y = pageNext.y = marginTop;
pagePrev.x = marginLeft;
pageNext.x = marginLeft + width - buttonWidth;
pageLabel.x = marginLeft + width / 2;
pageLabel.y = marginTop + 5;
pageLabel.text = getLabelText();
y = marginTop + buttonHeight + 2;
x = marginLeft;
w = width;
h = height - buttonHeight - 2;
grid.setGridSize(x, y, w, h);
grid.refresh(gui);
final int BUTTON_SIZE = 16;
more.w = less.w = BUTTON_SIZE;
more.h = less.h = quantity.h = BUTTON_SIZE;
less.x = x;
more.x = x + w - BUTTON_SIZE;
more.y = less.y = quantity.y = y + h - BUTTON_SIZE;
quantity.x = x + BUTTON_SIZE + 2;
quantity.w = more.x - quantity.x - 2;
return BUTTON_SIZE + 2;
}
@Override
public void setVisible()
{
LayoutManager.addWidget(pagePrev);
LayoutManager.addWidget(pageNext);
LayoutManager.addWidget(pageLabel);
}
@Override
public void draw(int mousex, int mousey)
{
grid.draw(mousex, mousey);
}
@Override
public void postDraw(int mousex, int mousey) {
if (draggedStack != null) {
GuiContainerManager.drawItems.zLevel += 100;
GuiContainerManager.drawItem(mousex - 8, mousey - 8, draggedStack, true);
GuiContainerManager.drawItems.zLevel -= 100;
}
}
@Override
public void mouseDragged(int mousex, int mousey, int button, long heldTime) {
if (mouseDownSlot >= 0 && draggedStack == null && NEIClientUtils.getHeldItem() == null &&
NEIClientConfig.hasSMPCounterPart() && !GuiInfo.hasCustomSlots(NEIClientUtils.getGuiContainer())) {
ItemPanelSlot mouseOverSlot = getSlotMouseOver(mousex, mousey);
if (mouseOverSlot == null || mouseOverSlot.slotIndex != mouseDownSlot || heldTime > 500) {
draggedStack = getDraggedStackWithQuantity(mouseDownSlot);
mouseDownSlot = -1;
}
super.setVisible();
if (grid.getPerPage() > 0) {
LayoutManager.addWidget(more);
LayoutManager.addWidget(less);
LayoutManager.addWidget(quantity);
}
}
protected ItemStack getDraggedStackWithQuantity(int mouseDownSlot)
@@ -274,288 +226,4 @@ public class ItemPanel extends Widget
return null;
}
@Override
public boolean handleClick(int mousex, int mousey, int button)
{
if (handleClickExt(mousex, mousey, button))
return true;
if (NEIClientUtils.getHeldItem() != null) {
if (!grid.contains(mousex, mousey)) {
return false;
}
if (NEIClientConfig.canPerformAction("delete") && NEIClientConfig.canPerformAction("item"))
if (button == 1)
NEIClientUtils.decreaseSlotStack(-999);
else
NEIClientUtils.deleteHeldItem();
else
NEIClientUtils.dropHeldItem();
return true;
}
ItemPanelSlot hoverSlot = getSlotMouseOver(mousex, mousey);
if (hoverSlot != null) {
if (button == 2) {
if (hoverSlot.item != null) {
draggedStack = getDraggedStackWithQuantity(hoverSlot.slotIndex);
}
} else {
mouseDownSlot = hoverSlot.slotIndex;
}
return true;
}
return false;
}
@Override
public boolean handleClickExt(int mouseX, int mouseY, int button)
{
if (ItemPanels.itemPanel.draggedStack != null) {
return ItemPanels.itemPanel.handleDraggedClick(mouseX, mouseY, button);
}
if (ItemPanels.bookmarkPanel.draggedStack != null) {
return ItemPanels.bookmarkPanel.handleDraggedClick(mouseX, mouseY, button);
}
return false;
}
protected boolean handleDraggedClick(int mouseX, int mouseY, int button)
{
if (draggedStack == null) {
return false;
}
if (handleFillFluidContainerClick(mouseX, mouseY, button)) {
return true;
}
if (handleSearchInputClick(mouseX, mouseY, button)) {
return true;
}
if (handleGUIContainerClick(mouseX, mouseY, button)) {
return true;
}
if (handleCheatItemClick(mouseX, mouseY, button)) {
return true;
}
final GuiContainer gui = NEIClientUtils.getGuiContainer();
if (mouseX < gui.guiLeft || mouseY < gui.guiTop || mouseX >= gui.guiLeft + gui.xSize || mouseY >= gui.guiTop + gui.ySize) {
draggedStack = null;
}
return true;
}
protected boolean handleFillFluidContainerClick(int mouseX, int mouseY, int button)
{
if (button == 2) {
return false;
}
ItemPanelSlot mouseOverSlot = ItemPanels.itemPanel.getSlotMouseOver(mouseX, mouseY);
if (mouseOverSlot == null) {
mouseOverSlot = ItemPanels.bookmarkPanel.getSlotMouseOver(mouseX, mouseY);
}
if (mouseOverSlot != null && draggedStack.getItem() instanceof IFluidContainerItem) {
FluidStack fluidStack = StackInfo.getFluid(mouseOverSlot.item);
if (fluidStack != null) {
final int stackSize = draggedStack.stackSize;
fluidStack = fluidStack.copy();
if (fluidStack.amount == 0) {
fluidStack.amount = 1000;
}
if (mouseOverSlot.item.stackSize > 1) {
fluidStack.amount *= mouseOverSlot.item.stackSize;
}
draggedStack.stackSize = 1;
((IFluidContainerItem) draggedStack.getItem()).fill(draggedStack, fluidStack, true);
draggedStack.stackSize = stackSize;
if (button == 1 && ((IFluidContainerItem) draggedStack.getItem()).getFluid(draggedStack) != null) {
ItemPanels.bookmarkPanel.addOrRemoveItem(draggedStack.copy());
}
}
return true;
}
return false;
}
protected boolean handleGUIContainerClick(int mouseX, int mouseY, int button)
{
final GuiContainer gui = NEIClientUtils.getGuiContainer();
boolean handled = false;
try {
GuiInfo.readLock.lock();
for (INEIGuiHandler handler : GuiInfo.guiHandlers) {
if (handler.handleDragNDrop(gui, mouseX, mouseY, draggedStack, button)) {
handled = true;
break;
}
}
} finally {
GuiInfo.readLock.unlock();
}
if (draggedStack.stackSize == 0) {
draggedStack = null;
}
return handled;
}
protected boolean handleCheatItemClick(int mouseX, int mouseY, int button)
{
final GuiContainer gui = NEIClientUtils.getGuiContainer();
final Slot overSlot = gui.getSlotAtPosition(mouseX, mouseY);
if (overSlot != null && overSlot.isItemValid(draggedStack)) {
if (NEIClientConfig.canCheatItem(draggedStack)) {
int contents = overSlot.getHasStack() ? overSlot.getStack().stackSize : 0;
final int add = button == 0 ? draggedStack.stackSize : 1;
if (overSlot.getHasStack() && !NEIServerUtils.areStacksSameType(draggedStack, overSlot.getStack())) {
contents = 0;
}
final int total = Math.min(contents + add, Math.min(overSlot.getSlotStackLimit(), draggedStack.getMaxStackSize()));
if (total > contents) {
NEIClientUtils.setSlotContents(overSlot.slotNumber, NEIServerUtils.copyStack(draggedStack, total), true);
NEICPH.sendGiveItem(NEIServerUtils.copyStack(draggedStack, total), false, false);
draggedStack.stackSize -= total - contents;
}
if (draggedStack.stackSize == 0) {
draggedStack = null;
}
} else {
draggedStack = null;
}
return true;
}
return false;
}
protected boolean handleSearchInputClick(int mouseX, int mouseY, int button)
{
if (searchField.contains(mouseX, mouseY)) {
final FluidStack fluidStack = StackInfo.getFluid(draggedStack);
if (fluidStack != null) {
searchField.setText(SPECIAL_REGEX_CHARS.matcher(EnumChatFormatting.getTextWithoutFormattingCodes(fluidStack.getLocalizedName())).replaceAll("\\\\$0"));
} else {
searchField.setText(SPECIAL_REGEX_CHARS.matcher(EnumChatFormatting.getTextWithoutFormattingCodes(draggedStack.getDisplayName())).replaceAll("\\\\$0"));
}
return true;
}
return false;
}
@Override
public void mouseUp(int mousex, int mousey, int button) {
ItemPanelSlot hoverSlot = getSlotMouseOver(mousex, mousey);
if (hoverSlot != null && hoverSlot.slotIndex == mouseDownSlot && draggedStack == null) {
ItemStack item = hoverSlot.item;
if (NEIController.manager.window instanceof GuiRecipe || !NEIClientConfig.canCheatItem(item)) {
if (button == 0)
GuiCraftingRecipe.openRecipeGui("item", item);
else if (button == 1)
GuiUsageRecipe.openRecipeGui("item", item);
mouseDownSlot = -1;
return;
}
NEIClientUtils.cheatItem(getDraggedStackWithQuantity(hoverSlot.slotIndex), button, -1);
}
mouseDownSlot = -1;
}
@Override
public boolean onMouseWheel(int i, int mousex, int mousey) {
if (!contains(mousex, mousey))
return false;
grid.shiftPage(-i);
return true;
}
@Override
public boolean handleKeyPress(int keyID, char keyChar) {
if (keyID == NEIClientConfig.getKeyBinding("gui.next")) {
grid.shiftPage(1);
return true;
}
if (keyID == NEIClientConfig.getKeyBinding("gui.prev")) {
grid.shiftPage(-1);
return true;
}
return false;
}
@Override
public ItemStack getStackMouseOver(int mousex, int mousey) {
ItemPanelSlot slot = getSlotMouseOver(mousex, mousey);
return slot == null ? null : slot.item;
}
public ItemPanelSlot getSlotMouseOver(int mousex, int mousey)
{
return grid.getSlotMouseOver(mousex, mousey);
}
public int getPage() {
return grid.page + 1;
}
public int getNumPages() {
return grid.numPages;
}
@Override
public boolean contains(int px, int py)
{
return grid.contains(px, py);
}
}
+97 -32
View File
@@ -5,10 +5,18 @@ import codechicken.nei.api.GuiInfo;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.recipe.StackInfo;
import codechicken.nei.ItemPanel.ItemPanelSlot;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.shader.Framebuffer;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import static codechicken.lib.gui.GuiDraw.drawRect;
@@ -22,6 +30,8 @@ public class ItemsGrid
protected int marginLeft;
protected int marginTop;
protected int paddingLeft;
protected ArrayList<ItemStack> realItems = new ArrayList<>();
protected int page;
@@ -36,6 +46,10 @@ public class ItemsGrid
protected boolean[] validSlotMap;
protected boolean[] invalidSlotMap;
@Nullable
private Framebuffer framebuffer = null;
protected boolean refreshBuffer = true;
public ArrayList<ItemStack> getItems()
{
return realItems;
@@ -90,6 +104,8 @@ public class ItemsGrid
public void setGridSize(int mleft, int mtop, int w, int h)
{
if(width != w || height != h || mleft != marginLeft || mtop != marginTop)
refreshBuffer = true;
marginLeft = mleft;
marginTop = mtop;
@@ -100,6 +116,7 @@ public class ItemsGrid
columns = width / SLOT_SIZE;
rows = height / SLOT_SIZE;
paddingLeft = (width % SLOT_SIZE) / 2;
}
public void shiftPage(int shift)
@@ -123,6 +140,8 @@ public class ItemsGrid
}
page = Math.max(0, Math.min(page, numPages - 1));
if(shift != 0)
refreshBuffer = true;
}
public void refresh(GuiContainer gui)
@@ -133,12 +152,15 @@ public class ItemsGrid
private void updateGuiOverlapSlots(GuiContainer gui)
{
boolean[] oldSlotMap = invalidSlotMap;
invalidSlotMap = new boolean[rows * columns];
perPage = columns * rows;
checkGuiOverlap(gui, 0, columns - 2, 1);
checkGuiOverlap(gui, columns - 1, 1, -1);
if(NEIClientConfig.shouldCacheItemRendering() && !Arrays.equals(oldSlotMap, invalidSlotMap)) {
refreshBuffer = true;
}
}
private void checkGuiOverlap(GuiContainer gui, int start, int end, int dir)
@@ -150,7 +172,7 @@ public class ItemsGrid
for (int r = 0; r < rows; r++) {
final int idx = columns * r + c;
if (!slotValid(gui, r, c) && idx >= 0 && idx < invalidSlotMap.length && !invalidSlotMap[idx]) {
if (GuiInfo.hideItemPanelSlot(gui, getSlotRect(r, c)) && idx >= 0 && idx < invalidSlotMap.length && !invalidSlotMap[idx]) {
invalidSlotMap[idx] = true;
validColumn = false;
perPage--;
@@ -162,22 +184,6 @@ public class ItemsGrid
}
private boolean slotValid(GuiContainer gui, int row, int column)
{
Rectangle4i rect = getSlotRect(row, column);
try {
GuiInfo.readLock.lock();
if (GuiInfo.guiHandlers.stream().anyMatch(handler -> handler.hideItemPanelSlot(gui, rect.x, rect.y, rect.w, rect.h))) {
return false;
}
} finally {
GuiInfo.readLock.unlock();
}
return true;
}
public Rectangle4i getSlotRect(int i)
{
return getSlotRect(i / columns, i % columns);
@@ -185,7 +191,7 @@ public class ItemsGrid
public Rectangle4i getSlotRect(int row, int column)
{
return new Rectangle4i(marginLeft + (width % SLOT_SIZE) / 2 + column * SLOT_SIZE, marginTop + row * SLOT_SIZE, SLOT_SIZE, SLOT_SIZE);
return new Rectangle4i(marginLeft + paddingLeft + column * SLOT_SIZE, marginTop + row * SLOT_SIZE, SLOT_SIZE, SLOT_SIZE);
}
public boolean isInvalidSlot(int idx)
@@ -193,36 +199,95 @@ public class ItemsGrid
return invalidSlotMap[idx];
}
private void drawSlotOutlines(int mousex, int mousey)
{
ItemPanelSlot focused = getSlotMouseOver(mousex, mousey);
int idx = page * perPage;
for (int i = 0; i < rows * columns && idx < size(); i++) {
if(!invalidSlotMap[i]) {
drawSlotOutline(focused, idx, getSlotRect(i));
idx++;
}
}
}
protected void drawSlotOutline(@Nullable ItemPanelSlot focused, int slotIdx, Rectangle4i rect) {
if(focused != null && focused.slotIndex == slotIdx)
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);//highlight
}
private void blitExistingBuffer() {
Minecraft minecraft = Minecraft.getMinecraft();
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
framebuffer.bindFramebufferTexture();
GL11.glEnable(GL11.GL_TEXTURE_2D);
ScaledResolution res = new ScaledResolution(minecraft, minecraft.displayWidth, minecraft.displayHeight);
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV(0, res.getScaledHeight_double(), 0.0, 0, 0);
tessellator.addVertexWithUV(res.getScaledWidth_double(), res.getScaledHeight_double(), 0.0, 1, 0);
tessellator.addVertexWithUV(res.getScaledWidth_double(), 0, 0.0, 1, 1);
tessellator.addVertexWithUV(0, 0, 0, 0, 1);
tessellator.draw();
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
}
public void draw(int mousex, int mousey)
{
if (getPerPage() == 0) {
return;
}
ItemPanelSlot slot = getSlotMouseOver(mousex, mousey);
boolean shouldCache = NEIClientConfig.shouldCacheItemRendering() && !PresetsWidget.inEditMode();
if(shouldCache) {
Minecraft minecraft = Minecraft.getMinecraft();
if (framebuffer == null) {
framebuffer = new Framebuffer(minecraft.displayWidth, minecraft.displayHeight, true);
framebuffer.framebufferColor[0] = 0.0F;
framebuffer.framebufferColor[1] = 0.0F;
framebuffer.framebufferColor[2] = 0.0F;
}
drawSlotOutlines(mousex, mousey);
if (refreshBuffer) {
framebuffer.createBindFramebuffer(minecraft.displayWidth, minecraft.displayHeight);
framebuffer.framebufferClear();
framebuffer.bindFramebuffer(false);
/* Set up some rendering state needed for items to work correctly */
GL11.glDisable(GL11.GL_BLEND);
GL11.glDepthMask(true);
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
} else {
blitExistingBuffer();
return;
}
} else {
drawSlotOutlines(mousex, mousey);
}
GuiContainerManager.enableMatrixStackLogging();
int idx = page * perPage;
for (int i = 0; i < rows * columns && idx < size(); i++) {
if (!invalidSlotMap[i]) {
drawItem(getSlotRect(i), idx, slot);
drawItem(getSlotRect(i), idx);
idx ++;
}
}
GuiContainerManager.disableMatrixStackLogging();
if (refreshBuffer && shouldCache) {
refreshBuffer = false;
Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
blitExistingBuffer();
}
}
protected void drawItem(Rectangle4i rect, int idx, ItemPanelSlot focus)
protected void drawItem(Rectangle4i rect, int idx)
{
if (focus != null && focus.slotIndex == idx) {
drawRect(rect.x, rect.y, rect.w, rect.h, 0xee555555);//highlight
}
GuiContainerManager.drawItem(rect.x + 1, rect.y + 1, getItem(idx));
}
@@ -233,7 +298,7 @@ public class ItemsGrid
}
final int overRow = (int) ((mousey - marginTop) / SLOT_SIZE);
final int overColumn = (int) ((mousex - marginLeft - (width % SLOT_SIZE) / 2) / SLOT_SIZE);
final int overColumn = (int) ((mousex - marginLeft - paddingLeft) / SLOT_SIZE);
final int slt = columns * overRow + overColumn;
int idx = page * perPage + slt;
@@ -253,12 +318,12 @@ public class ItemsGrid
public boolean contains(int px, int py)
{
if (!(new Rectangle4i(marginLeft, marginTop, width, height)).contains(px, py)) {
if (!(new Rectangle4i(marginLeft + paddingLeft, marginTop, columns * SLOT_SIZE, height)).contains(px, py)) {
return false;
}
final int r = (int) ((py - marginTop) / SLOT_SIZE);
final int c = (int) ((px - marginLeft - (width % SLOT_SIZE) / 2) / SLOT_SIZE);
final int c = (int) ((px - marginLeft - paddingLeft) / SLOT_SIZE);
final int slt = columns * r + c;
return r >= rows || c >= columns || !invalidSlotMap[slt];
@@ -37,7 +37,6 @@ import static codechicken.lib.gui.GuiDraw.drawRect;
import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect;
import static codechicken.nei.NEIClientConfig.canPerformAction;
import static codechicken.nei.NEIClientConfig.disabledActions;
import static codechicken.nei.NEIClientConfig.getItemQuantity;
import static codechicken.nei.NEIClientConfig.getKeyBinding;
import static codechicken.nei.NEIClientConfig.getOptionList;
import static codechicken.nei.NEIClientConfig.getSearchExpression;
@@ -49,7 +48,6 @@ import static codechicken.nei.NEIClientConfig.isHidden;
import static codechicken.nei.NEIClientConfig.showIDs;
import static codechicken.nei.NEIClientConfig.toggleBooleanSetting;
import static codechicken.nei.NEIClientConfig.world;
import static codechicken.nei.NEIClientUtils.controlKey;
import static codechicken.nei.NEIClientUtils.cycleGamemode;
import static codechicken.nei.NEIClientUtils.decreaseSlotStack;
import static codechicken.nei.NEIClientUtils.deleteEverything;
@@ -77,11 +75,11 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
/**
* Sorted bottom first
*/
private static TreeSet<Widget> drawWidgets;
private static TreeSet<Widget> drawWidgets = new TreeSet<>(new WidgetZOrder(false));
/**
* Sorted top first
*/
private static TreeSet<Widget> controlWidgets;
private static TreeSet<Widget> controlWidgets = new TreeSet<>(new WidgetZOrder(true));
public static ItemPanel itemPanel;
public static BookmarkPanel bookmarkPanel;
@@ -92,8 +90,11 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
public static ButtonCycled options;
public static ButtonCycled bookmarksButton;
@Deprecated
public static Button more;
@Deprecated
public static Button less;
@Deprecated
public static ItemQuantityField quantity;
public static Button delete;
@@ -142,9 +143,12 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
}
}
@Deprecated
public static int getSideWidth(GuiContainer gui) {
return gui.width - 3;
}
@Deprecated
public static int getLeftSize(GuiContainer gui) {
return getSideWidth(gui);
}
@@ -307,6 +311,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
public static void layout(GuiContainer gui) {
VisiblityData visiblity = new VisiblityData();
if (isHidden())
visiblity.showNEI = false;
@@ -324,6 +329,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
if (gui.guiLeft - 4 < 76)
visiblity.showWidgets = false;
try {
GuiInfo.readLock.lock();
GuiInfo.guiHandlers.forEach(handler -> handler.modifyVisiblity(gui, visiblity));
@@ -419,43 +425,10 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
return translate("bookmark.toggle");
}
};
more = new Button("+")
{
@Override
public boolean onButtonPress(boolean rightclick) {
if (rightclick)
return false;
int modifier = controlKey() ? 64 : shiftKey() ? 10 : 1;
int quantity = getItemQuantity() + modifier;
if (quantity < 0)
quantity = 0;
LayoutManager.quantity.setText(Integer.toString(quantity));
return true;
}
};
less = new Button("-")
{
@Override
public boolean onButtonPress(boolean rightclick) {
if (rightclick)
return false;
int modifier = controlKey() ? -64 : shiftKey() ? -10 : -1;
int quantity = getItemQuantity() + modifier;
if (quantity < 0)
quantity = 0;
LayoutManager.quantity.setText(Integer.toString(quantity));
return true;
}
};
quantity = new ItemQuantityField("quantity");
more = ItemPanels.itemPanel.more;
less = ItemPanels.itemPanel.less;
quantity = ItemPanels.itemPanel.quantity;
delete = new Button()
{
@Override
@@ -687,10 +660,6 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
}
itemPanel.setVisible();
addWidget(more);
addWidget(less);
addWidget(quantity);
}
if (visiblity.showBookmarkPanel) {
@@ -805,7 +774,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
@Override
public void renderSlotOverlay(GuiContainer window, Slot slot) {
ItemStack item = slot.getStack();
if (world.nbt.getBoolean("searchinventories") && (item == null ? !getSearchExpression().equals("") : !ItemList.getItemListFilter().matches(item))) {
if (world.nbt.getBoolean("searchinventories") && (item == null ? !getSearchExpression().equals("") : !((SearchField) searchField).getFilter().matches(item))) {
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glTranslatef(0, 0, 150);
drawRect(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, 0x80000000);
@@ -10,15 +10,13 @@ import static codechicken.nei.LayoutManager.bookmarkPanel;
import static codechicken.nei.LayoutManager.bookmarksButton;
import static codechicken.nei.LayoutManager.delete;
import static codechicken.nei.LayoutManager.dropDown;
import static codechicken.nei.LayoutManager.presetsPanel;
import static codechicken.nei.LayoutManager.gamemode;
import static codechicken.nei.LayoutManager.heal;
import static codechicken.nei.LayoutManager.itemPanel;
import static codechicken.nei.LayoutManager.itemPresenceOverlays;
import static codechicken.nei.LayoutManager.less;
import static codechicken.nei.LayoutManager.magnet;
import static codechicken.nei.LayoutManager.more;
import static codechicken.nei.LayoutManager.options;
import static codechicken.nei.LayoutManager.quantity;
import static codechicken.nei.LayoutManager.rain;
import static codechicken.nei.LayoutManager.searchField;
import static codechicken.nei.LayoutManager.timeButtons;
@@ -118,16 +116,6 @@ public class LayoutStyleMinecraft extends LayoutStyle
itemPanel.resize(gui);
bookmarkPanel.resize(gui);
more.w = more.h = less.w = less.h = 16;
less.x = itemPanel.pagePrev.x;
more.x = gui.width - less.w - 2;
more.y = less.y = gui.height - more.h - 2;
quantity.x = less.x + less.w + 2;
quantity.y = less.y;
quantity.w = more.x - quantity.x - 2;
quantity.h = less.h;
options.x = isEnabled() ? 0 : 6;
options.y = isEnabled() ? gui.height - 22 : gui.height - 28;
options.w = 22;
@@ -138,15 +126,20 @@ public class LayoutStyleMinecraft extends LayoutStyle
bookmarksButton.w = 22;
bookmarksButton.h = 22;
searchField.y = gui.height - searchField.h - 2;
dropDown.h = 18;
dropDown.w = 150;
dropDown.y = 0;
dropDown.x = (gui.width - gui.xSize) / 2 + gui.xSize - dropDown.w;
dropDown.x = Math.min(numButtons, buttonCount) * 20 + 3;
dropDown.h = 20;
dropDown.w = itemPanel.x - dropDown.x - 3;
presetsPanel.h = 16;
presetsPanel.w = 150;
presetsPanel.y = 2;
presetsPanel.x = (gui.width - gui.xSize) / 2 + gui.xSize - presetsPanel.w;
searchField.h = 20;
searchField.w = 150;
searchField.x = (gui.width - searchField.w) / 2;
searchField.y = gui.height - searchField.h - 2;
if (!visiblity.showItemSection) {
searchField.setFocus(false);
@@ -155,8 +148,8 @@ public class LayoutStyleMinecraft extends LayoutStyle
}
public void layoutButton(Button button) {
button.x = 2 + (buttonCount % numButtons) * 20;
button.y = (buttonCount / numButtons) * 18;
button.x = 2 + (buttonCount % numButtons) * 19;
button.y = 2 + (buttonCount / numButtons) * 18;
button.h = 17;
button.w = button.contentWidth() + 6;
@@ -16,6 +16,7 @@ import codechicken.nei.config.ConfigSet;
import codechicken.nei.config.GuiHighlightTips;
import codechicken.nei.config.GuiNEIOptionList;
import codechicken.nei.config.GuiOptionList;
import codechicken.nei.config.GuiPanelSettings;
import codechicken.nei.config.OptionCycled;
import codechicken.nei.config.OptionGamemodes;
import codechicken.nei.config.OptionList;
@@ -33,6 +34,7 @@ import codechicken.obfuscator.ObfuscationRun;
import com.google.common.base.Objects;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -154,6 +156,20 @@ public class NEIClientConfig {
tag.getTag("world.highlight_tips.y").getIntValue(100);
API.addOption(new OptionOpenGui("world.highlight_tips", GuiHighlightTips.class));
tag.getTag("world.panels.bookmarks.left").getIntValue(0);
tag.getTag("world.panels.bookmarks.right").getIntValue(0);
tag.getTag("world.panels.bookmarks.top").getIntValue(0);
tag.getTag("world.panels.bookmarks.bottom").getIntValue(0);
tag.getTag("world.panels.items.left").getIntValue(0);
tag.getTag("world.panels.items.right").getIntValue(0);
tag.getTag("world.panels.items.top").getIntValue(0);
tag.getTag("world.panels.items.bottom").getIntValue(0);
API.addOption(new OptionOpenGui("world.panels", GuiPanelSettings.class));
tag.getTag("inventory.profileRecipes").getBooleanValue(false);
API.addOption(new OptionToggleButton("inventory.profileRecipes", true));
@@ -167,6 +183,9 @@ public class NEIClientConfig {
return isMouseScrollTransferEnabled();
}
});
tag.getTag("inventory.cacheItemRendering").getBooleanValue(false);
API.addOption(new OptionToggleButton("inventory.cacheItemRendering", true));
tag.getTag("itemLoadingTimeout").getIntValue(500);
@@ -207,6 +226,8 @@ public class NEIClientConfig {
API.addOption(new OptionToggleButton("inventory.saveCurrentRecipeInBookmarksEnabled", true));
tag.getTag("inventory.useNBTInBookmarks").setComment("Use NBT in Bookmarks").getBooleanValue(true);
API.addOption(new OptionToggleButton("inventory.useNBTInBookmarks", true));
tag.getTag("inventory.showRecipeMarker").setComment("Show Recipe Marker").getBooleanValue(false);
API.addOption(new OptionToggleButton("inventory.showRecipeMarker", true));
tag.getTag("inventory.jei_style_tabs").setComment("Enable/disable JEI Style Tabs").getBooleanValue(true);
API.addOption(new OptionToggleButtonBoubs("inventory.jei_style_tabs", true));
@@ -219,6 +240,9 @@ public class NEIClientConfig {
tag.getTag("inventory.creative_tab_style").setComment("Creative or JEI style tabs").getBooleanValue(false);
API.addOption(new OptionToggleButton("inventory.creative_tab_style", true));
tag.getTag("inventory.ignore_potion_overlap").setComment("Ignore overlap with potion effect HUD").getBooleanValue(false);
API.addOption(new OptionToggleButton("inventory.ignore_potion_overlap", true));
tag.getTag("tools.handler_load_from_config").setComment("ADVANCED: Load handlers from config").getBooleanValue(false);
API.addOption(new OptionToggleButton("tools.handler_load_from_config", true) {
@Override
@@ -282,6 +306,7 @@ public class NEIClientConfig {
API.addKeyBind("gui.hide", Keyboard.KEY_O);
API.addKeyBind("gui.search", Keyboard.KEY_F);
API.addKeyBind("gui.bookmark", Keyboard.KEY_A);
API.addKeyBind("gui.overlay", Keyboard.KEY_S);
API.addKeyBind("gui.hide_bookmarks", Keyboard.KEY_B);
API.addKeyBind("world.chunkoverlay", Keyboard.KEY_F9);
API.addKeyBind("world.moboverlay", Keyboard.KEY_F7);
@@ -325,7 +350,7 @@ public class NEIClientConfig {
setWorldDefaults();
creativeInv = new ItemStack[54];
LayoutManager.searchField.setText(getSearchExpression());
LayoutManager.quantity.setText(Integer.toString(getItemQuantity()));
ItemPanels.itemPanel.quantity.setText(Integer.toString(getItemQuantity()));
SubsetWidget.loadHidden();
if (newWorld && Minecraft.getMinecraft().isSingleplayer())
@@ -434,6 +459,9 @@ public class NEIClientConfig {
public static boolean useNBTInBookmarks() {
return getBooleanSetting("inventory.useNBTInBookmarks");
}
public static boolean showRecipeMarker() {
return getBooleanSetting("inventory.showRecipeMarker");
}
public static boolean areJEIStyleTabsVisible() {
return getBooleanSetting("inventory.jei_style_tabs");
}
@@ -446,6 +474,9 @@ public class NEIClientConfig {
public static boolean useCreativeTabStyle() {
return getBooleanSetting("inventory.creative_tab_style");
}
public static boolean ignorePotionOverlap() {
return getBooleanSetting("inventory.ignore_potion_overlap");
}
public static boolean isEnabled() {
return enabledOverride && getBooleanSetting("inventory.widgetsenabled");
}
@@ -529,6 +560,10 @@ public class NEIClientConfig {
return !getBooleanSetting("inventory.invertMouseScrollTransfer");
}
public static boolean shouldCacheItemRendering() {
return getBooleanSetting("inventory.cacheItemRendering") && OpenGlHelper.framebufferSupported;
}
public static boolean getMagnetMode() {
return enabledActions.contains("magnet");
}
@@ -8,6 +8,7 @@ import codechicken.nei.api.ItemInfo;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.guihook.IContainerInputHandler;
import codechicken.nei.guihook.IContainerSlotClickHandler;
import codechicken.nei.recipe.GuiRecipe;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiContainerCreative;
import net.minecraft.entity.player.InventoryPlayer;
@@ -228,6 +229,11 @@ public class NEIController implements IContainerSlotClickHandler, IContainerInpu
if (!NEIClientConfig.isEnabled() || GuiInfo.hasCustomSlots(gui) || !NEIClientConfig.isMouseScrollTransferEnabled())
return false;
// slot in GuiRecipe does not contain actual stack
// and scroll should be handled by GuiRecipe, not here
if (gui instanceof GuiRecipe)
return false;
Point mousePos = getMousePosition();
Slot mouseover = manager.window.getSlotAtPosition(mousePos.x, mousePos.y);
if (mouseover != null && mouseover.getHasStack()) {
@@ -115,7 +115,6 @@ public class NEIModContainer extends DummyModContainer
public void postInit(FMLPostInitializationEvent event) {
if (CommonUtils.isClient()) {
GuiRecipeTab.loadHandlerInfo();
RecipeCatalysts.loadCatalystInfo();
ClientHandler.postInit();
}
}
@@ -0,0 +1,52 @@
package codechicken.nei;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.api.INEIGuiAdapter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.InventoryEffectRenderer;
import net.minecraft.potion.PotionEffect;
import java.util.Collection;
/**
* Inspired by InventoryEffectRendererGuiHandler.java in JEI
*/
public class NEIPotionGuiHandler extends INEIGuiAdapter {
@Override
public boolean hideItemPanelSlot(GuiContainer guiContainer, int slotX, int slotY, int slotW, int slotH) {
if (NEIClientConfig.ignorePotionOverlap()) {
return false;
}
if(guiContainer instanceof InventoryEffectRenderer) {
int x = guiContainer.guiLeft - 124;
int y = guiContainer.guiTop;
Minecraft minecraft = guiContainer.mc;
if (minecraft == null) {
return false;
}
EntityPlayerSP player = minecraft.thePlayer;
if (player == null) {
return false;
}
Collection<PotionEffect> activePotionEffects = player.getActivePotionEffects();
if (activePotionEffects.isEmpty()) {
return false;
}
int height = 33;
if (activePotionEffects.size() > 5) {
height = 132 / (activePotionEffects.size() - 1);
}
Rectangle4i slotRect = new Rectangle4i(slotX, slotY, slotW, slotH);
for (PotionEffect potioneffect : activePotionEffects) {
Rectangle4i box = new Rectangle4i(x, y, 140, 32);
if(box.intersects(slotRect))
return true;
y += height;
}
}
return false;
}
}
@@ -0,0 +1,375 @@
package codechicken.nei;
import codechicken.nei.api.GuiInfo;
import codechicken.nei.api.INEIGuiHandler;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.recipe.GuiCraftingRecipe;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.GuiUsageRecipe;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.ItemPanel.ItemPanelSlot;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
public abstract class PanelWidget extends Widget
{
protected static final int PADDING = 2;
public ItemStack draggedStack;
public int mouseDownSlot = -1;
public Button pagePrev;
public Button pageNext;
public Label pageLabel;
protected ItemsGrid grid;
public ArrayList<ItemStack> getItems()
{
return grid.getItems();
}
public ItemsGrid getGrid()
{
return grid;
}
public void init() {
pageLabel = new Label("0/0", true);
pagePrev = new Button("Prev")
{
public boolean onButtonPress(boolean rightclick) {
if (!rightclick) {
grid.shiftPage(-1);
return true;
}
return false;
}
@Override
public String getRenderLabel() {
return "<";
}
};
pageNext = new Button("Next")
{
public boolean onButtonPress(boolean rightclick) {
if (!rightclick) {
grid.shiftPage(1);
return true;
}
return false;
}
@Override
public String getRenderLabel() {
return ">";
}
};
}
public abstract String getLabelText();
protected abstract String getPositioningSettingName();
public abstract int getMarginLeft(GuiContainer gui);
public abstract int getMarginTop(GuiContainer gui);
public abstract int getWidth(GuiContainer gui);
public abstract int getHeight(GuiContainer gui);
public void resize(GuiContainer gui)
{
final Rectangle4i margin = new Rectangle4i(getMarginLeft(gui), getMarginTop(gui), getWidth(gui), getHeight(gui));
final int minWidth = 5 * ItemsGrid.SLOT_SIZE;
final int minHeight = 9 * ItemsGrid.SLOT_SIZE;
final String settingName = getPositioningSettingName();
int paddingLeft = (int)Math.ceil(margin.w * NEIClientConfig.getSetting(settingName + ".left").getIntValue() / 100000.0);
int paddingTop = (int)Math.ceil(margin.h * NEIClientConfig.getSetting(settingName + ".top").getIntValue() / 100000.0);
int paddingRight = (int)Math.ceil(margin.w * NEIClientConfig.getSetting(settingName + ".right").getIntValue()/ 100000.0);
int paddingBottom = (int)Math.ceil(margin.h * NEIClientConfig.getSetting(settingName + ".bottom").getIntValue() / 100000.0);
int deltaHeight = Math.min(0, margin.h - paddingTop - paddingBottom - minHeight) / 2;
paddingLeft = Math.min(paddingLeft, Math.max(0, margin.w - paddingRight - minWidth));
paddingRight = Math.min(paddingRight, Math.max(0, margin.w - paddingLeft - minWidth));
paddingTop = Math.min(margin.h - minHeight, Math.max(0, paddingTop + deltaHeight));
paddingBottom = Math.min(margin.h - paddingTop - minHeight, Math.max(0, paddingBottom - deltaHeight));
x = margin.x + paddingLeft;
y = margin.y + paddingTop;
w = margin.w - paddingLeft - paddingRight;
h = margin.h - paddingTop - paddingBottom;
final int header = resizeHeader(gui);
final int footer = resizeFooter(gui);
grid.setGridSize(x, y + header, w, h - header - footer);
grid.refresh(gui);
}
protected int resizeHeader(GuiContainer gui)
{
final int BUTTON_SIZE = 16;
int paddingLeft = 0;
int paddingRight = 0;
while (paddingLeft < w && GuiInfo.hideItemPanelSlot(gui, new Rectangle4i(x + paddingLeft, y, ItemsGrid.SLOT_SIZE, ItemsGrid.SLOT_SIZE))) {
paddingLeft += ItemsGrid.SLOT_SIZE;
}
while (paddingRight < w && GuiInfo.hideItemPanelSlot(gui, new Rectangle4i(x + w - paddingRight - ItemsGrid.SLOT_SIZE, y, ItemsGrid.SLOT_SIZE, ItemsGrid.SLOT_SIZE))) {
paddingRight += ItemsGrid.SLOT_SIZE;
}
if (paddingLeft + paddingRight >= w) {
return 0;
}
pagePrev.w = pageNext.w = BUTTON_SIZE;
pagePrev.h = pageNext.h = BUTTON_SIZE;
pagePrev.y = pageNext.y = y;
pagePrev.x = x + paddingLeft;
pageNext.x = x + w - pageNext.w - paddingRight;
pageLabel.x = x + paddingLeft + (w - paddingLeft - paddingRight) / 2;
pageLabel.y = y + 5;
pageLabel.text = getLabelText();
return BUTTON_SIZE + 2;
}
protected abstract int resizeFooter(GuiContainer gui);
public void setVisible()
{
if (grid.getPerPage() > 0) {
LayoutManager.addWidget(pagePrev);
LayoutManager.addWidget(pageNext);
LayoutManager.addWidget(pageLabel);
}
}
@Override
public void draw(int mousex, int mousey)
{
grid.draw(mousex, mousey);
}
@Override
public void postDraw(int mousex, int mousey)
{
if (draggedStack != null) {
GuiContainerManager.drawItems.zLevel += 100;
GuiContainerManager.drawItem(mousex - 8, mousey - 8, draggedStack);
GuiContainerManager.drawItems.zLevel -= 100;
}
}
@Override
public void mouseDragged(int mousex, int mousey, int button, long heldTime)
{
if (mouseDownSlot >= 0 && draggedStack == null && NEIClientUtils.getHeldItem() == null &&
NEIClientConfig.hasSMPCounterPart() && !GuiInfo.hasCustomSlots(NEIClientUtils.getGuiContainer())) {
ItemPanelSlot mouseOverSlot = getSlotMouseOver(mousex, mousey);
if (mouseOverSlot == null || mouseOverSlot.slotIndex != mouseDownSlot || heldTime > 500) {
draggedStack = getDraggedStackWithQuantity(mouseDownSlot);
mouseDownSlot = -1;
}
}
}
protected abstract ItemStack getDraggedStackWithQuantity(int mouseDownSlot);
@Override
public boolean handleClick(int mousex, int mousey, int button)
{
if (handleClickExt(mousex, mousey, button))
return true;
if (NEIClientUtils.getHeldItem() != null) {
if (!grid.contains(mousex, mousey)) {
return false;
}
if (NEIClientConfig.canPerformAction("delete") && NEIClientConfig.canPerformAction("item"))
if (button == 1)
NEIClientUtils.decreaseSlotStack(-999);
else
NEIClientUtils.deleteHeldItem();
else
NEIClientUtils.dropHeldItem();
return true;
}
ItemPanelSlot hoverSlot = getSlotMouseOver(mousex, mousey);
if (hoverSlot != null) {
if (button == 2) {
if (hoverSlot.item != null) {
draggedStack = getDraggedStackWithQuantity(hoverSlot.slotIndex);
}
} else {
mouseDownSlot = hoverSlot.slotIndex;
}
return true;
}
return false;
}
@Override
public boolean handleClickExt(int mouseX, int mouseY, int button)
{
if (ItemPanels.itemPanel.draggedStack != null) {
return ItemPanels.itemPanel.handleDraggedClick(mouseX, mouseY, button);
}
if (ItemPanels.bookmarkPanel.draggedStack != null) {
return ItemPanels.bookmarkPanel.handleDraggedClick(mouseX, mouseY, button);
}
return false;
}
protected boolean handleDraggedClick(int mouseX, int mouseY, int button)
{
if (draggedStack == null) {
return false;
}
if (handleGUIContainerClick(mouseX, mouseY, button)) {
return true;
}
final GuiContainer gui = NEIClientUtils.getGuiContainer();
if (mouseX < gui.guiLeft || mouseY < gui.guiTop || mouseX >= gui.guiLeft + gui.xSize || mouseY >= gui.guiTop + gui.ySize) {
draggedStack = null;
}
return true;
}
protected boolean handleGUIContainerClick(int mouseX, int mouseY, int button)
{
final GuiContainer gui = NEIClientUtils.getGuiContainer();
boolean handled = false;
try {
GuiInfo.readLock.lock();
for (INEIGuiHandler handler : GuiInfo.guiHandlers) {
if (handler.handleDragNDrop(gui, mouseX, mouseY, draggedStack, button)) {
handled = true;
break;
}
}
} finally {
GuiInfo.readLock.unlock();
}
if (draggedStack.stackSize == 0) {
draggedStack = null;
}
return handled;
}
@Override
public void mouseUp(int mousex, int mousey, int button)
{
ItemPanelSlot hoverSlot = getSlotMouseOver(mousex, mousey);
if (hoverSlot != null && hoverSlot.slotIndex == mouseDownSlot && draggedStack == null) {
ItemStack item = hoverSlot.item;
if (NEIController.manager.window instanceof GuiRecipe || !NEIClientConfig.canCheatItem(item)) {
if (button == 0) {
GuiCraftingRecipe.openRecipeGui("item", item);
} else if (button == 1) {
GuiUsageRecipe.openRecipeGui("item", item);
}
mouseDownSlot = -1;
return;
}
NEIClientUtils.cheatItem(getDraggedStackWithQuantity(hoverSlot.slotIndex), button, -1);
}
mouseDownSlot = -1;
}
@Override
public boolean onMouseWheel(int i, int mousex, int mousey)
{
if (!contains(mousex, mousey))
return false;
grid.shiftPage(-i);
return true;
}
@Override
public boolean handleKeyPress(int keyID, char keyChar)
{
if (keyID == NEIClientConfig.getKeyBinding("gui.next")) {
grid.shiftPage(1);
return true;
}
if (keyID == NEIClientConfig.getKeyBinding("gui.prev")) {
grid.shiftPage(-1);
return true;
}
return false;
}
@Override
public ItemStack getStackMouseOver(int mousex, int mousey)
{
ItemPanelSlot slot = getSlotMouseOver(mousex, mousey);
return slot == null ? null : slot.item;
}
public ItemPanelSlot getSlotMouseOver(int mousex, int mousey)
{
return grid.getSlotMouseOver(mousex, mousey);
}
public int getPage() {
return grid.page + 1;
}
public int getNumPages() {
return grid.numPages;
}
@Override
public boolean contains(int px, int py)
{
return grid.contains(px, py);
}
}
@@ -4,11 +4,7 @@ import codechicken.core.CommonUtils;
import codechicken.core.gui.GuiScrollSlot;
import codechicken.lib.gui.GuiDraw;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.ItemList.AllMultiItemFilter;
import codechicken.nei.ItemList.EverythingItemFilter;
import codechicken.nei.ItemPanel.ItemPanelSlot;
import codechicken.nei.api.API;
import codechicken.nei.api.ItemFilter.ItemFilterProvider;
import codechicken.nei.api.ItemFilter;
import codechicken.nei.recipe.GuiRecipe;
import codechicken.nei.recipe.StackInfo;
@@ -36,7 +32,7 @@ import org.apache.commons.io.IOUtils;
import org.lwjgl.input.Keyboard;
import static codechicken.nei.NEIClientUtils.translate;
public class PresetsWidget extends Widget// implements ItemFilterProvider
public class PresetsWidget extends Widget
{
public static class PresetTag implements ItemFilter
@@ -511,7 +507,7 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
@Override
public List<String> handleTooltip(int mx, int my, List<String> tooltip)
{
if (contains(mx, my)) {
if (contains(mx, my) && listbox.getSelected().size() <= 1) {
tooltip.add(translate("presets.label.tooltip"));
}
@@ -631,17 +627,16 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
public static boolean isHidden(final ItemStack item)
{
if (edit != null || listbox.getSelected().isEmpty()) {
if (edit != null) {
if (edit != null) {
if (mouseSelection != null && mouseSelection.items.contains(item)) {
return mouseSelection.append != edit.whitelist;
}
return !edit.matches(item);
if (mouseSelection != null && mouseSelection.items.contains(item)) {
return mouseSelection.append != edit.whitelist;
}
return !edit.matches(item);
}
if (!listbox.getSelected().isEmpty()) {
final List<PresetTag> selected = listbox.getSelected();
for (int idx = 0; idx < selected.size(); idx++) {
@@ -736,33 +731,21 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
ItemList.updateFilter.restart();
}
// public PresetsWidget()
// {
// API.addItemFilter(this);
// }
@Override
public void draw(int mx, int my)
{
final int panelHeight = 16;
final int panelWidth = 153;
w = panelWidth;
h = panelHeight;
y = 2;
x = ItemPanels.itemPanel.x - 4 - w;
if (edit != null) {
selectedState.x = x;
selectedState.y = y;
selectedState.w = selectedState.h = panelHeight;
selectedState.w = selectedState.h = h;
selectedState.draw(mx, my);
selectedDisplayName.y = y;
selectedDisplayName.h = h;
selectedDisplayName.x = selectedState.x + selectedState.w + 1;
selectedDisplayName.w = w - panelHeight * 2 - 5;
selectedDisplayName.w = w - h * 2 - 5;
selectedDisplayName.draw(mx, my);
} else {
@@ -772,7 +755,7 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
selectedValue.text = size> 1? translate("presets.label.selected", size): (size == 1? selected.get(0).displayName: "");
selectedValue.y = y;
selectedValue.h = h;
selectedValue.w = w - panelHeight - 4;
selectedValue.w = w - h - 4;
selectedValue.x = x;
selectedValue.draw(mx, my);
@@ -780,7 +763,7 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
dropdown.y = y;
dropdown.w = dropdown.h = panelHeight;
dropdown.w = dropdown.h = h;
dropdown.x = x + w - dropdown.w;
dropdown.state = edit != null || listbox.getNumSlots() == 0? 2: 0;
dropdown.draw(mx, my);
@@ -1018,6 +1001,11 @@ public class PresetsWidget extends Widget// implements ItemFilterProvider
public static boolean matches(ItemStack stack)
{
if (edit != null) {
return true;
}
final List<PresetTag> selected = listbox.getSelected();
for (int idx = 0; idx < selected.size(); idx++) {
@@ -217,6 +217,7 @@ public class SubsetWidget extends Button implements ItemFilterProvider, ItemsLoa
for(SubsetTag tag : sorted)
tag.cacheState();
}
public void addFiltersWithItem(List<ItemFilter> filters, String itemSearch) {
if(itemSearch == null) {
addFilters(filters);
@@ -229,6 +230,7 @@ public class SubsetWidget extends Button implements ItemFilterProvider, ItemsLoa
}
}
public void addFilters(List<ItemFilter> filters) {
if(filter != null)
filters.add(filter);
@@ -1,9 +1,15 @@
package codechicken.nei.api;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.NEIChestGuiHandler;
import codechicken.nei.NEICreativeGuiHandler;
import codechicken.nei.NEIDummySlotHandler;
import codechicken.nei.NEIPotionGuiHandler;
import codechicken.nei.recipe.GuiRecipeCatalyst;
import codechicken.nei.recipe.SearchInputDropHandler;
import codechicken.nei.recipe.FillFluidContainerHandler;
import codechicken.nei.recipe.CheatItemHandler;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiContainerCreative;
@@ -25,6 +31,10 @@ public class GuiInfo {
API.registerNEIGuiHandler(new NEIChestGuiHandler());
API.registerNEIGuiHandler(new NEIDummySlotHandler());
API.registerNEIGuiHandler(new GuiRecipeCatalyst(null));
API.registerNEIGuiHandler(new SearchInputDropHandler());
API.registerNEIGuiHandler(new FillFluidContainerHandler());
API.registerNEIGuiHandler(new CheatItemHandler());
API.registerNEIGuiHandler(new NEIPotionGuiHandler());
customSlotGuis.add(GuiContainerCreative.class);
}
@@ -40,4 +50,28 @@ public class GuiInfo {
public static boolean hasCustomSlots(GuiContainer gui) {
return customSlotGuis.contains(gui.getClass());
}
public static boolean hideItemPanelSlot(GuiContainer gui, Rectangle4i rect)
{
try {
readLock.lock();
if (guiHandlers.stream().anyMatch(handler -> handler.hideItemPanelSlot(gui, rect.x, rect.y, rect.w, rect.h))) {
return true;
}
} finally {
readLock.unlock();
}
for (Object item : gui.buttonList) {
GuiButton button = (GuiButton) item;
if ((new Rectangle4i(button.xPosition, button.yPosition, button.width, button.height)).intersects(rect)) {
return true;
}
}
return false;
}
}
@@ -1,8 +1,13 @@
package codechicken.nei.api;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
public interface IGuiContainerOverlay
{
public GuiContainer getFirstScreen();
GuiContainer getFirstScreen();
default GuiScreen getFirstScreenGeneral() {
return getFirstScreen();
}
}
@@ -58,6 +58,7 @@ import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
/**
* This is an internal class for storing information about items, to be accessed by the API
@@ -82,8 +83,36 @@ public class ItemInfo
public static final HashMap<Item, String> itemOwners = new HashMap<>();
private static class ItemStackKey {
public final ItemStack stack;
public ItemStackKey(ItemStack stack) {
this.stack = stack;
}
@Override
public int hashCode() {
if(this.stack == null)
return 1;
int hashCode = 1;
hashCode = 31 * hashCode + stack.stackSize;
hashCode = 31 * hashCode + Item.getIdFromItem(stack.getItem());
hashCode = 31 * hashCode + stack.getItemDamage();
hashCode = 31 * hashCode + (!stack.hasTagCompound() ? 0 : stack.getTagCompound().hashCode());
return hashCode;
}
@Override
public boolean equals(Object o) {
if(o == this)
return true;
if(!(o instanceof ItemStackKey))
return false;
return ItemStack.areItemStacksEqual(this.stack, ((ItemStackKey)o).stack);
}
}
//lookup optimisation
public static final HashMap<ItemStack, String> itemSearchNames = new HashMap<>();
public static final ConcurrentHashMap<ItemStackKey, String> itemSearchNames = new ConcurrentHashMap<>();
public static boolean isHidden(ItemStack stack) {
return hiddenItems.contains(stack);
@@ -129,7 +158,18 @@ public class ItemInfo
}
private static void addSearchOptimisation() {
ItemList.loadCallbacks.add(itemSearchNames::clear);
ItemList.loadCallbacks.add(ItemInfo::populateSearchMap);
}
private static void populateSearchMap() {
/* Create a snapshot of the current keys in the cache */
HashSet<ItemStackKey> oldItems = new HashSet<>(itemSearchNames.keySet());
for(ItemStack stack : ItemList.items) {
/* Populate each entry and remove it from the snapshot */
getSearchName(stack);
oldItems.remove(new ItemStackKey(stack));
}
itemSearchNames.keySet().removeAll(oldItems);
}
private static void addHiddenItemFilter() {
@@ -517,11 +557,8 @@ public class ItemInfo
}
public static String getSearchName(ItemStack stack) {
String s = itemSearchNames.get(stack);
if(s == null) {
s = EnumChatFormatting.getTextWithoutFormattingCodes(GuiContainerManager.concatenatedDisplayName(stack, true).toLowerCase());
itemSearchNames.put(stack, s);
}
return s;
return itemSearchNames.computeIfAbsent(new ItemStackKey(stack), key ->
EnumChatFormatting.getTextWithoutFormattingCodes(GuiContainerManager.concatenatedDisplayName(key.stack, true).toLowerCase())
);
}
}
@@ -0,0 +1,317 @@
package codechicken.nei.config;
import codechicken.core.gui.GuiScreenWidget;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.ItemPanels;
import codechicken.nei.ItemsGrid;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.ItemStack;
import codechicken.nei.guihook.GuiContainerManager;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import java.awt.Point;
import java.util.ArrayList;
import static codechicken.lib.gui.GuiDraw.getMousePosition;
public class GuiPanelSettings extends GuiScreenWidget
{
private final Option opt;
private PanelPlaceholder bookmarksPanel;
private PanelPlaceholder itemsPanel;
protected static class PanelResizeButton
{
private int x;
private int y;
private int w;
private int h;
public PanelResizeButton(int w, int h)
{
this.w = w;
this.h = h;
}
public void draw(int mousex, int mousey)
{
drawRect(x, y, x + w, y + h, 0xbbaaaaaa);
drawRect(x + 2, y + 2, x + w - 2, y + h - 2, contains(mousex, mousey)? 0xFF000000: 0xbb000000);
}
public boolean contains(int pointX, int pointY)
{
return (new Rectangle4i(x, y, w, h)).contains(pointX, pointY);
}
}
protected static class PanelPlaceholder
{
protected static int PANEL_SIZE = 16;
private final Option opt;
private final String name;
private Rectangle4i margin;
private Point dragDown;
private String dragDir;
private int x = 0;
private int y = 0;
private int w = 0;
private int h = 0;
private PanelResizeButton leftButton = new PanelResizeButton(PANEL_SIZE, PANEL_SIZE * 2);
private PanelResizeButton topButton = new PanelResizeButton(PANEL_SIZE * 2, PANEL_SIZE);
private PanelResizeButton rightButton = new PanelResizeButton(PANEL_SIZE, PANEL_SIZE * 2);
private PanelResizeButton bottomButton = new PanelResizeButton(PANEL_SIZE * 2, PANEL_SIZE);
public PanelPlaceholder(Option opt, String name)
{
this.opt = opt;
this.name = name;
}
public void resize(Rectangle4i margin)
{
this.margin = margin;
int[] padding = getPaddings();
x = margin.x + padding[0];
y = margin.y + padding[1];
w = margin.w - padding[2] - padding[0];
h = margin.h - padding[3] - padding[1];
leftButton.x = x;
leftButton.y = y + h / 2 - PANEL_SIZE;
rightButton.x = x + w - PANEL_SIZE;
rightButton.y = y + h / 2 - PANEL_SIZE;
topButton.x = x + w / 2 - PANEL_SIZE;
topButton.y = y;
bottomButton.x = x + w / 2 - PANEL_SIZE;
bottomButton.y = y + h - PANEL_SIZE;
}
public void draw(int mousex, int mousey)
{
drawRect(x, y, x + w, y + PANEL_SIZE, 0xbbaaaaaa); //top-panel
drawRect(x, y + h - PANEL_SIZE, x + w, y + h, 0xbbaaaaaa); //bottom-panel
drawRect(x, y, x + 2, y + h, 0xbbaaaaaa); //border left
drawRect(x + w, y, x + w - 2, y + h, 0xbbaaaaaa); //border right
drawRect(x, y, x + w, y + 2, 0xbbaaaaaa); //border top
drawRect(x, y + h, x + w, y + h - 2, 0xbbaaaaaa); //border bottom
drawItems();
leftButton.draw(mousex, mousey);
rightButton.draw(mousex, mousey);
topButton.draw(mousex, mousey);
bottomButton.draw(mousex, mousey);
}
protected int[] getPaddings()
{
final int minWidth = 5 * ItemsGrid.SLOT_SIZE;
final int minHeight = 9 * ItemsGrid.SLOT_SIZE;
int paddingLeft = (int)Math.ceil(margin.w * opt.renderTag(name + ".left").getIntValue() / 100000.0);
int paddingTop = (int)Math.ceil(margin.h * opt.renderTag(name + ".top").getIntValue() / 100000.0);
int paddingRight = (int)Math.ceil(margin.w * opt.renderTag(name + ".right").getIntValue() / 100000.0);
int paddingBottom = (int)Math.ceil(margin.h * opt.renderTag(name + ".bottom").getIntValue() / 100000.0);
if (dragDir != null) {
final Point mouse = getMousePosition();
Point drag = new Point(mouse.x - dragDown.x, mouse.y - dragDown.y);
if (dragDir == "left") {
paddingLeft = Math.min(Math.max(0, margin.w - paddingRight - minWidth), Math.max(0, paddingLeft + drag.x));
} else if (dragDir == "right") {
paddingRight = Math.min(Math.max(0, margin.w - paddingLeft - minWidth), Math.max(0, paddingRight - drag.x));
} else if (dragDir == "top") {
paddingTop = Math.min(Math.max(0, margin.h - paddingBottom - minHeight), Math.max(0, paddingTop + drag.y));
} else if (dragDir == "bottom") {
paddingBottom = Math.min(Math.max(0, margin.h - paddingTop - minHeight), Math.max(0, paddingBottom - drag.y));
} else if (dragDir == "move") {
int width = margin.w - paddingRight - paddingLeft;
int height = margin.h - paddingTop - paddingBottom;
paddingLeft = Math.min(Math.max(0, margin.w - width), Math.max(0, paddingLeft + drag.x));
paddingTop = Math.min(Math.max(0, margin.h - height), Math.max(0, paddingTop + drag.y));
paddingRight = margin.w - paddingLeft - width;
paddingBottom = margin.h - paddingTop - height;
}
}
int deltaHeight = Math.min(0, margin.h - paddingTop - paddingBottom - minHeight) / 2;
paddingLeft = Math.min(paddingLeft, Math.max(0, margin.w - paddingRight - minWidth));
paddingRight = Math.min(paddingRight, Math.max(0, margin.w - paddingLeft - minWidth));
paddingTop = Math.min(margin.h - minHeight, Math.max(0, paddingTop + deltaHeight));
paddingBottom = Math.min(margin.h - paddingTop - minHeight, Math.max(0, paddingBottom - deltaHeight));
return new int[]{ paddingLeft, paddingTop, paddingRight, paddingBottom };
}
protected void drawItems()
{
final int columns = w / ItemsGrid.SLOT_SIZE;
final int rows = (h - (PANEL_SIZE + 2) * 2) / ItemsGrid.SLOT_SIZE;
final int paddingLeft = (w % ItemsGrid.SLOT_SIZE) / 2;
final ArrayList<ItemStack> items = ItemPanels.itemPanel.getItems();
for (int r = 0; r < rows; r ++) {
for (int c = 0; c < columns; c++) {
GuiContainerManager.drawItem(
x + paddingLeft + ItemsGrid.SLOT_SIZE * c + 1,
y + PANEL_SIZE + 2 + ItemsGrid.SLOT_SIZE * r + 1,
items.get((r * columns + c) % items.size())
);
}
}
}
public boolean contains(int pointX, int pointY)
{
return (new Rectangle4i(x, y, w, h)).contains(pointX, pointY);
}
protected void mouseClicked(int x, int y, int button)
{
if (contains(x, y)) {
dragDown = getMousePosition();
if (leftButton.contains(x, y)) {
dragDir = "left";
} else if (rightButton.contains(x, y)) {
dragDir = "right";
} else if (topButton.contains(x, y)) {
dragDir = "top";
} else if (bottomButton.contains(x, y)) {
dragDir = "bottom";
} else {
dragDir = "move";
}
}
}
protected void mouseMovedOrUp(int x, int y, int button)
{
if (button == 0 && dragDown != null) {
int[] padding = getPaddings();
opt.renderTag(name + ".left").setIntValue(padding[0] * 100000 / margin.w);
opt.renderTag(name + ".top").setIntValue(padding[1] * 100000 / margin.h);
opt.renderTag(name + ".right").setIntValue(padding[2] * 100000 / margin.w);
opt.renderTag(name + ".bottom").setIntValue(padding[3] * 100000 / margin.h);
dragDir = null;
dragDown = null;
}
}
}
public GuiPanelSettings(Option opt) {
super(176, 198);
this.opt = opt;
bookmarksPanel = new PanelPlaceholder(opt, opt.name + ".bookmarks");
itemsPanel = new PanelPlaceholder(opt, opt.name + ".items");
}
@Override
public boolean doesGuiPauseGame()
{
return true;
}
@Override
public void keyTyped(char c, int keycode)
{
if (keycode == Keyboard.KEY_ESCAPE || keycode == Keyboard.KEY_BACK) {
Minecraft.getMinecraft().displayGuiScreen(opt.slot.getGui());
return;
}
super.keyTyped(c, keycode);
}
protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
GL11.glColor4f(1, 1, 1, 1);
CCRenderState.changeTexture("nei:textures/gui/inv.png");
int x = guiLeft;
int y = guiTop - 4;
drawTexturedModalRect(x - 23, y, 0, 0, 199, 204);
}
@Override
public void drawScreen(int mousex, int mousey, float f)
{
drawGuiContainerBackgroundLayer(f, mousex, mousey);
drawDefaultBackground();
RenderHelper.enableGUIStandardItemLighting();
GL11.glPushMatrix();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
bookmarksPanel.resize(getBookmarkDefaultSize());
itemsPanel.resize(getItemsDefaultSize());
bookmarksPanel.draw(mousex, mousey);
itemsPanel.draw(mousex, mousey);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
RenderHelper.enableStandardItemLighting();
}
private Rectangle4i getBookmarkDefaultSize()
{
return new Rectangle4i(2, 2, guiLeft - 4, height - 4);
}
protected Rectangle4i getItemsDefaultSize()
{
return new Rectangle4i(guiLeft + xSize + 2, 2, width - (guiLeft + xSize + 4), height - 4);
}
@Override
protected void mouseClicked(int x, int y, int button)
{
bookmarksPanel.mouseClicked(x, y, button);
itemsPanel.mouseClicked(x, y, button);
}
@Override
protected void mouseMovedOrUp(int x, int y, int button)
{
bookmarksPanel.mouseMovedOrUp(x, y, button);
itemsPanel.mouseMovedOrUp(x, y, button);
}
}
@@ -2,17 +2,26 @@ package codechicken.nei.config;
import codechicken.core.CommonUtils;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIServerUtils;
import codechicken.nei.recipe.CatalystInfo;
import codechicken.nei.recipe.GuiRecipeTab;
import codechicken.nei.recipe.HandlerInfo;
import codechicken.nei.recipe.RecipeCatalysts;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class IMCHandler {
private static final Set<String> processedCatalystSenders = new HashSet<>();
private IMCHandler() {}
public static void processIMC(List<FMLInterModComms.IMCMessage> messages) {
@@ -20,10 +29,19 @@ public class IMCHandler {
String type = message.key;
if (type == null || type.isEmpty()) continue;
if (CommonUtils.isClient()) {
if (type.equals("registerHandlerInfo")) {
handleRegisterHandlerInfo(message);
} else if (type.equals("removeHandlerInfo")) {
handleRemoveHandlerInfo(message);
switch (type) {
case "registerHandlerInfo":
handleRegisterHandlerInfo(message);
break;
case "removeHandlerInfo":
handleRemoveHandlerInfo(message);
break;
case "registerCatalystInfo":
handleRegisterCatalystInfo(message);
break;
case "removeCatalystInfo":
handleRemoveCatalystInfo(message);
break;
}
}
@@ -91,6 +109,72 @@ public class IMCHandler {
GuiRecipeTab.handlerRemoverFromIMC.add(handler);
}
private static void handleRegisterCatalystInfo(IMCMessage message) {
if (!message.isNBTMessage()) {
logInvalidMessage(message, "NBT");
return;
}
if (!processedCatalystSenders.contains(message.getSender())) {
NEIClientConfig.logger.info("Processing registerCatalystInfo from " + message.getSender());
processedCatalystSenders.add(message.getSender());
}
final NBTTagCompound tag = message.getNBTValue();
final String handlerID = tag.getString("handlerID");
if (handlerID.isEmpty()) {
NEIClientConfig.logger.warn("Missing handlerID for registerCatalystInfo!");
return;
}
final String itemName = tag.getString("itemName");
final String nbtInfo = tag.hasKey("nbtInfo") ? tag.getString("nbtInfo") : null;
if (itemName.isEmpty()) {
NEIClientConfig.logger.warn(String.format("Missing itemName for registerCatalystInfo in `%s`!", handlerID));
return;
}
final ItemStack itemStack = NEIServerUtils.getModdedItem(itemName, nbtInfo);
if (itemStack == null) {
NEIClientConfig.logger.warn(String.format("Cannot find item `%s`!", itemName));
return;
}
final int priority = tag.getInteger("priority");
RecipeCatalysts.addOrPut(RecipeCatalysts.catalystsAdderFromIMC, handlerID, new CatalystInfo(itemStack, priority));
NEIClientConfig.logger.info(String.format("Added catalyst `%s` to handler %s", itemStack.getDisplayName(), handlerID));
}
private static void handleRemoveCatalystInfo(IMCMessage message) {
if (!message.isNBTMessage()) {
logInvalidMessage(message, "NBT");
return;
}
NEIClientConfig.logger.info("Processing removeCatalystInfo from " + message.getSender());
final NBTTagCompound tag = message.getNBTValue();
final String handlerID = tag.getString("handlerID");
if (handlerID.isEmpty()) {
NEIClientConfig.logger.warn("Missing handlerID for registerCatalystInfo!");
return;
}
final String itemName = tag.getString("itemName");
final String nbtInfo = tag.hasKey("nbtInfo") ? tag.getString("nbtInfo") : null;
if (itemName.isEmpty()) {
NEIClientConfig.logger.warn(String.format("Missing itemName for registerCatalystInfo in `%s`!", handlerID));
return;
}
final ItemStack itemStack = NEIServerUtils.getModdedItem(itemName, nbtInfo);
if (itemStack == null) {
NEIClientConfig.logger.warn(String.format("Cannot find item `%s`!", itemName));
return;
}
if (RecipeCatalysts.catalystsRemoverFromIMC.containsKey(handlerID)) {
RecipeCatalysts.catalystsRemoverFromIMC.get(handlerID).add(itemStack);
} else {
RecipeCatalysts.catalystsRemoverFromIMC.put(handlerID, new ArrayList<>(Collections.singletonList(itemStack)));
}
NEIClientConfig.logger.info(String.format("Removed catalyst `%s` from handler %s", itemStack.getDisplayName(), handlerID));
}
private static void logInvalidMessage(FMLInterModComms.IMCMessage message, String type) {
FMLLog.bigWarning(String.format("Received invalid IMC '%s' from %s. Not a %s Message.", message.key, message.getSender(), type));
@@ -4,8 +4,6 @@ import codechicken.nei.Image;
import codechicken.nei.LayoutManager;
import codechicken.nei.drawable.DrawableBuilder;
import codechicken.nei.drawable.DrawableResource;
import org.lwjgl.opengl.GL11;
import java.awt.Rectangle;
public class OptionToggleButtonBoubs extends OptionButton {
@@ -14,6 +14,7 @@ import net.minecraft.util.EnumChatFormatting;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import java.awt.Point;
import java.io.PrintWriter;
@@ -179,30 +180,47 @@ public class GuiContainerManager
}
public static void drawItem(int i, int j, ItemStack itemstack) {
drawItem(i, j, itemstack, getFontRenderer(itemstack));
drawItem(i, j, itemstack, false);
}
public static void drawItem(int i, int j, ItemStack itemstack, boolean smallAmount) {
drawItem(i, j, itemstack, getFontRenderer(itemstack), smallAmount);
drawItem(i, j, itemstack, smallAmount, null);
}
public static void drawItem(int i, int j, ItemStack itemstack, boolean smallAmount, String stackSize) {
drawItem(i, j, itemstack, getFontRenderer(itemstack), smallAmount, stackSize);
}
public static void drawItem(int i, int j, ItemStack itemstack, FontRenderer fontRenderer) {
drawItem(i, j, itemstack, fontRenderer, false);
drawItem(i, j, itemstack, fontRenderer, false, null);
}
private static int modelviewDepth = -1;
private static final HashSet<String> stackTraces = new HashSet<>();
public static void drawItem(int i, int j, ItemStack itemstack, FontRenderer fontRenderer, boolean smallAmount) {
public static void drawItem(int i, int j, ItemStack itemstack, FontRenderer fontRenderer, boolean smallAmount, String stackSize) {
enable3DRender();
//for lighting correction
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
float zLevel = drawItems.zLevel += 100F;
try {
drawItems.renderItemAndEffectIntoGUI(fontRenderer, renderEngine, itemstack, i, j);
if (!smallAmount) {
drawItems.renderItemOverlayIntoGUI(fontRenderer, renderEngine, itemstack, i, j);
} else if (itemstack.stackSize > 1) {
drawBigStackSize(i, j, itemstack.stackSize);
if (stackSize == null) {
stackSize = itemstack.stackSize > 1? String.valueOf(itemstack.stackSize): "";
}
if (smallAmount) {
if (!stackSize.isEmpty()) {
drawBigStackSize(i, j, stackSize);
}
// stackSize = "". it needed for correct draw item with alpha and blend
drawItems.renderItemOverlayIntoGUI(fontRenderer, renderEngine, itemstack, i, j, "");
} else {
drawItems.renderItemOverlayIntoGUI(fontRenderer, renderEngine, itemstack, i, j, stackSize);
}
if (!checkMatrixStack())
@@ -227,29 +245,27 @@ public class GuiContainerManager
drawItems.renderItemIntoGUI(fontRenderer, renderEngine, new ItemStack(Blocks.fire), i, j);
}
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
enable2DRender();
drawItems.zLevel = zLevel - 100;
}
//copy from appeng.client.render.AppEngRenderItem
protected static void drawBigStackSize(int offsetX, int offsetY, int amount)
protected static void drawBigStackSize(int offsetX, int offsetY, String stackSize)
{
final float scaleFactor = fontRenderer.getUnicodeFlag() ? 0.85f : 0.5f;
final float inverseScaleFactor = 1.0f / scaleFactor;
final String stackSize = String.valueOf( amount );
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glPushMatrix();
enable2DRender();
GL11.glScaled(scaleFactor, scaleFactor, scaleFactor);
final int X = (int) ( ( (float) offsetX + 16.0f - fontRenderer.getStringWidth( stackSize ) * scaleFactor ) * inverseScaleFactor );
final int Y = (int) ( ( (float) offsetY + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor );
fontRenderer.drawStringWithShadow(stackSize, X, Y, 16777215);
GL11.glScaled(inverseScaleFactor, inverseScaleFactor, inverseScaleFactor);
enable3DRender();
GL11.glPopMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
public static void enableMatrixStackLogging() {
@@ -5,7 +5,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonArray;
import com.google.gson.JsonPrimitive;
import codechicken.nei.util.NBTJson;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.PositionedStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.item.ItemStack;
@@ -25,15 +24,24 @@ public class BookmarkRecipeId
public List<NBTTagCompound> ingredients = new ArrayList<>();
public BookmarkRecipeId(String handlerName, List<PositionedStack> stacks)
public BookmarkRecipeId(String handlerName, List<?> stacks)
{
this.handlerName = handlerName;
for (PositionedStack pos : stacks) {
final NBTTagCompound nbt = StackInfo.itemStackToNBT(getItemStackWithMinimumDamage(pos.items));
if (nbt != null) {
ingredients.add(nbt);
for (Object pos : stacks) {
if (pos instanceof PositionedStack) {
pos = getItemStackWithMinimumDamage(((PositionedStack) pos).items);
}
if (pos instanceof ItemStack) {
pos = StackInfo.itemStackToNBT((ItemStack) pos);
}
if (pos instanceof NBTTagCompound) {
ingredients.add((NBTTagCompound) pos);
}
}
}
@@ -57,6 +65,11 @@ public class BookmarkRecipeId
}
public BookmarkRecipeId()
{
}
public boolean equalsIngredients(List<PositionedStack> stacks)
{
@@ -70,7 +83,7 @@ public class BookmarkRecipeId
final NBTTagCompound tagCompoundA = StackInfo.itemStackToNBT(getItemStackWithMinimumDamage(pStack.items));
final NBTTagCompound tagCompoundB = ingredients.get(idx);
if (tagCompoundB == null || !tagCompoundA.equals(tagCompoundB)) {
if (tagCompoundB == null || !tagCompoundB.equals(tagCompoundA)) {
return false;
}
@@ -166,4 +179,9 @@ public class BookmarkRecipeId
return false;
}
public BookmarkRecipeId copy()
{
return new BookmarkRecipeId(handlerName, ingredients);
}
}
@@ -0,0 +1,50 @@
package codechicken.nei.recipe;
import codechicken.nei.NEICPH;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.NEIServerUtils;
import codechicken.nei.api.INEIGuiAdapter;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class CheatItemHandler extends INEIGuiAdapter
{
@Override
public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button)
{
final Slot overSlot = gui.getSlotAtPosition(mouseX, mouseY);
if (overSlot != null && overSlot.isItemValid(draggedStack)) {
if (NEIClientConfig.canCheatItem(draggedStack)) {
int contents = overSlot.getHasStack() ? overSlot.getStack().stackSize : 0;
final int add = button == 0 ? draggedStack.stackSize : 1;
if (overSlot.getHasStack() && !NEIServerUtils.areStacksSameType(draggedStack, overSlot.getStack())) {
contents = 0;
}
final int total = Math.min(contents + add, Math.min(overSlot.getSlotStackLimit(), draggedStack.getMaxStackSize()));
if (total > contents) {
NEIClientUtils.setSlotContents(overSlot.slotNumber, NEIServerUtils.copyStack(draggedStack, total), true);
NEICPH.sendGiveItem(NEIServerUtils.copyStack(draggedStack, total), false, false);
draggedStack.stackSize -= total - contents;
}
} else {
draggedStack.stackSize = 0;
}
return true;
}
return false;
}
}
@@ -0,0 +1,94 @@
package codechicken.nei.recipe;
import codechicken.nei.ItemPanel.ItemPanelSlot;
import codechicken.nei.ItemPanels;
import codechicken.nei.api.INEIGuiAdapter;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;
public class FillFluidContainerHandler extends INEIGuiAdapter
{
@Override
public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button)
{
if (button == 2) {
return false;
}
if (draggedStack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(draggedStack)) {
ItemPanelSlot mouseOverSlot = ItemPanels.itemPanel.getSlotMouseOver(mouseX, mouseY);
if (mouseOverSlot == null) {
mouseOverSlot = ItemPanels.bookmarkPanel.getSlotMouseOver(mouseX, mouseY);
}
if (mouseOverSlot != null) {
FluidStack fluidStack = StackInfo.getFluid(mouseOverSlot.item);
if (fluidStack != null) {
ItemStack container = fillContainer(draggedStack, fluidStack);
if (container != null) {
container.stackSize = draggedStack.stackSize;
if (ItemPanels.itemPanel.draggedStack != null) {
ItemPanels.itemPanel.draggedStack = container;
} else {
ItemPanels.bookmarkPanel.draggedStack = container;
}
}
if (button == 1 && StackInfo.getFluid(container != null? container: draggedStack) != null) {
ItemPanels.bookmarkPanel.addOrRemoveItem((container != null? container: draggedStack).copy());
}
}
return true;
}
}
return false;
}
protected ItemStack fillContainer(ItemStack draggedStack, FluidStack fluidStack)
{
fluidStack = fluidStack.copy();
draggedStack = draggedStack.copy();
draggedStack.stackSize = 1;
if (fluidStack.amount == 0) {
fluidStack.amount = 1000;
}
if (FluidContainerRegistry.isContainer(draggedStack)) {
if (FluidContainerRegistry.getContainerCapacity(draggedStack) > 0) {
draggedStack = FluidContainerRegistry.drainFluidContainer(draggedStack);
}
return FluidContainerRegistry.fillFluidContainer(fluidStack, draggedStack);
} else if (draggedStack.getItem() instanceof IFluidContainerItem) {
IFluidContainerItem item = (IFluidContainerItem) draggedStack.getItem();
if (item.getCapacity(draggedStack) > 0) {
item.drain(draggedStack, item.getCapacity(draggedStack), true);
}
if (item.fill(draggedStack, fluidStack, true) > 0) {
return draggedStack;
}
}
return null;
}
}
@@ -2,41 +2,57 @@ package codechicken.nei.recipe;
import codechicken.core.TaskProfiler;
import codechicken.nei.ItemList;
import codechicken.nei.ItemPanels;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.PositionedStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import codechicken.nei.ItemPanels;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
public class GuiCraftingRecipe extends GuiRecipe
{
public class GuiCraftingRecipe extends GuiRecipe {
public static boolean openRecipeGui(String outputId, Object... results) {
return openRecipeGui(outputId, false, results);
}
public static boolean openRecipeGui(String outputId, Boolean overlay, Object... results) {
Minecraft mc = NEIClientUtils.mc();
GuiScreen prevscreen = mc.currentScreen;// instanceof GuiContainer ? (GuiContainer) mc.currentScreen : null;
ArrayList<ICraftingHandler> handlers;
TaskProfiler profiler = ProfilerRecipeHandler.getProfiler();
profiler.start("recipe.concurrent.crafting");
// Pre-find the fuels so we're not fighting over it
FuelRecipeHandler.findFuelsOnceParallel();
try {
handlers = serialCraftingHandlers.stream().map(h -> h.getRecipeHandler(outputId, results))
.filter(h -> h.numRecipes() > 0)
.collect(Collectors.toCollection(ArrayList::new));
.filter(h -> h.numRecipes() > 0)
.collect(Collectors.toCollection(ArrayList::new));
handlers.addAll(ItemList.forkJoinPool.submit(() -> craftinghandlers.parallelStream()
.map(h -> h.getRecipeHandler(outputId, results))
.filter(h -> h.numRecipes() > 0)
.collect(Collectors.toCollection(ArrayList::new))).get());
.map(h -> h.getRecipeHandler(outputId, results))
.filter(h -> h.numRecipes() > 0)
.collect(Collectors.toCollection(ArrayList::new))).get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player != null) {
IChatComponent chat = new ChatComponentTranslation("nei.chat.recipe.error");
chat.getChatStyle().setColor(EnumChatFormatting.RED);
player.addChatComponentMessage(chat);
}
return false;
} finally {
profiler.end();
@@ -47,18 +63,49 @@ public class GuiCraftingRecipe extends GuiRecipe
handlers.sort(NEIClientConfig.HANDLER_COMPARATOR);
mc.displayGuiScreen(new GuiCraftingRecipe(prevscreen, handlers));
if (NEIClientConfig.saveCurrentRecipeInBookmarksEnabled() && !NEIClientUtils.shiftKey() && outputId.equals("item") && mc.currentScreen instanceof GuiRecipe) {
GuiCraftingRecipe.openTargetRecipe((GuiRecipe)mc.currentScreen, (ItemStack)results[0]);
BookmarkRecipeId recipeId = null;
if ("item".equals(outputId)) {
recipeId = getRecipeId(prevscreen, (ItemStack) results[0]);
}
GuiCraftingRecipe gui = new GuiCraftingRecipe(prevscreen, handlers, recipeId);
mc.displayGuiScreen(gui);
if (NEIClientConfig.saveCurrentRecipeInBookmarksEnabled())
if (!NEIClientUtils.shiftKey() || overlay) {
gui.openTargetRecipe(gui.recipeId);
}
if (overlay) {
if (!NEIClientConfig.saveCurrentRecipeInBookmarksEnabled() || gui.recipeId == null) {
mc.displayGuiScreen(prevscreen);
return false;
}
gui.overlayRecipe(gui.recipeId.position);
}
return true;
}
protected static void openTargetRecipe(GuiRecipe currentScreen, ItemStack stackover)
{
currentScreen.openTargetRecipe(ItemPanels.bookmarkPanel.getBookmarkRecipeId(stackover));
protected static BookmarkRecipeId getRecipeId(GuiScreen gui, ItemStack stackover) {
if (gui instanceof GuiRecipe) {
final List<PositionedStack> ingredients = ((GuiRecipe) gui).getFocusedRecipeIngredients();
final String handlerName = ((GuiRecipe) gui).getHandlerName();
if (ingredients != null && !ingredients.isEmpty()) {
return new BookmarkRecipeId(handlerName, ingredients);
}
}
return ItemPanels.bookmarkPanel.getBookmarkRecipeId(stackover);
}
private GuiCraftingRecipe(GuiScreen prevgui, ArrayList<ICraftingHandler> handlers, BookmarkRecipeId recipeId) {
this(prevgui, handlers);
this.recipeId = recipeId;
}
private GuiCraftingRecipe(GuiScreen prevgui, ArrayList<ICraftingHandler> handlers) {
@@ -68,10 +115,10 @@ public class GuiCraftingRecipe extends GuiRecipe
public static void registerRecipeHandler(ICraftingHandler handler) {
final String handlerId = handler.getHandlerId();
if(craftinghandlers.stream().anyMatch(h -> h.getHandlerId().equals(handlerId)) || serialCraftingHandlers.stream().anyMatch(h -> h.getHandlerId().equals(handlerId)))
if (craftinghandlers.stream().anyMatch(h -> h.getHandlerId().equals(handlerId)) || serialCraftingHandlers.stream().anyMatch(h -> h.getHandlerId().equals(handlerId)))
return;
if(NEIClientConfig.serialHandlers.contains(handlerId))
if (NEIClientConfig.serialHandlers.contains(handlerId))
serialCraftingHandlers.add(handler);
else
craftinghandlers.add(handler);
@@ -63,8 +63,10 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
public int page;
public int recipetype;
public BookmarkRecipeId recipeId;
public ContainerRecipe slotcontainer;
public GuiContainer firstGui;
public GuiScreen firstGuiGeneral;
public GuiScreen prevGui;
public GuiButton nextpage;
public GuiButton prevpage;
@@ -89,12 +91,15 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
slotcontainer = (ContainerRecipe) inventorySlots;
this.prevGui = prevgui;
this.firstGuiGeneral = prevgui;
if(prevgui instanceof GuiContainer)
this.firstGui = (GuiContainer)prevgui;
if (prevgui instanceof IGuiContainerOverlay)
if (prevgui instanceof IGuiContainerOverlay) {
this.firstGui = ((IGuiContainerOverlay) prevgui).getFirstScreen();
this.firstGuiGeneral = ((IGuiContainerOverlay) prevgui).getFirstScreenGeneral();
}
}
/**
@@ -311,7 +316,7 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
public void keyTyped(char c, int i) {
if (i == Keyboard.KEY_ESCAPE) //esc
{
mc.displayGuiScreen(firstGui);
mc.displayGuiScreen(firstGuiGeneral);
return;
}
if (GuiContainerManager.getManager(this).lastKeyTyped(i, c))
@@ -324,7 +329,7 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
}
if (i == mc.gameSettings.keyBindInventory.getKeyCode())
mc.displayGuiScreen(firstGui);
mc.displayGuiScreen(firstGuiGeneral);
else if (i == NEIClientConfig.getKeyBinding("gui.back"))
mc.displayGuiScreen(prevGui);
else if (i == NEIClientConfig.getKeyBinding("gui.prev_machine"))
@@ -441,16 +446,19 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
setRecipePage(--recipetype);
}
private void overlayRecipe(int recipe) {
protected void overlayRecipe(int recipe) {
if (handler == null || !handler.hasOverlay(firstGui, firstGui.inventorySlots, recipe)) {
mc.displayGuiScreen(firstGui);
return;
}
final IRecipeOverlayRenderer renderer = handler.getOverlayRenderer(firstGui, recipe);
final IOverlayHandler overlayHandler = handler.getOverlayHandler(firstGui, recipe);
final boolean shift = NEIClientUtils.shiftKey();
if (handler != null && (renderer == null || shift)) {
mc.displayGuiScreen(firstGui);
mc.displayGuiScreen(firstGui);
if (renderer == null || shift) {
overlayHandler.overlayRecipe(firstGui, currenthandlers.get(recipetype), recipe, shift);
} else if (renderer != null) {
mc.displayGuiScreen(firstGui);
} else {
LayoutManager.overlayRenderer = renderer;
}
}
@@ -644,6 +652,11 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
return firstGui;
}
@Override
public GuiScreen getFirstScreenGeneral() {
return firstGuiGeneral;
}
public boolean isMouseOver(PositionedStack stack, int recipe) {
Slot stackSlot = slotcontainer.getSlotWithStack(stack, getRecipePosition(recipe).x, getRecipePosition(recipe).y);
Point mousepos = GuiDraw.getMousePosition();
@@ -6,6 +6,10 @@ import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
@@ -35,6 +39,12 @@ public class GuiUsageRecipe extends GuiRecipe
.collect(Collectors.toCollection(ArrayList::new))).get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player != null) {
IChatComponent chat = new ChatComponentTranslation("nei.chat.recipe.error");
chat.getChatStyle().setColor(EnumChatFormatting.RED);
player.addChatComponentMessage(chat);
}
return false;
} finally {
profiler.end();
@@ -45,10 +55,29 @@ public class GuiUsageRecipe extends GuiRecipe
handlers.sort(NEIClientConfig.HANDLER_COMPARATOR);
mc.displayGuiScreen(new GuiUsageRecipe(prevscreen, handlers));
BookmarkRecipeId recipeId = null;
if (prevscreen instanceof GuiRecipe && ((GuiRecipe) prevscreen).recipeId != null) {
recipeId = (((GuiRecipe) prevscreen).recipeId).copy();
}
GuiUsageRecipe gui = new GuiUsageRecipe(prevscreen, handlers, recipeId);
mc.displayGuiScreen(gui);
if (!NEIClientUtils.shiftKey()) {
gui.openTargetRecipe(recipeId);
}
return true;
}
private GuiUsageRecipe(GuiContainer prevgui, ArrayList<IUsageHandler> handlers, BookmarkRecipeId recipeId)
{
this(prevgui, handlers);
this.recipeId = recipeId;
}
private GuiUsageRecipe(GuiContainer prevgui, ArrayList<IUsageHandler> handlers) {
super(prevgui);
currenthandlers = handlers;
@@ -29,6 +29,8 @@ import java.util.Map;
public class RecipeCatalysts {
private static final Map<String, CatalystInfoList> catalystsAdderFromAPI = new HashMap<>();
private static final Map<String, List<ItemStack>> catalystsRemoverFromAPI = new HashMap<>();
public static final Map<String, CatalystInfoList> catalystsAdderFromIMC = new HashMap<>();
public static final Map<String, List<ItemStack>> catalystsRemoverFromIMC = new HashMap<>();
private static final Map<String, CatalystInfoList> recipeCatalystMap = new HashMap<>();
private static Map<String, List<PositionedStack>> positionedRecipeCatalystMap = new HashMap<>();
private static final List<String> forceClassNameList = new ArrayList<>();
@@ -161,6 +163,7 @@ public class RecipeCatalysts {
// todo
final String minVersion = record.get("minVersion");
final String maxVersion = record.get("maxVersion");
//
final boolean forceClassName = Boolean.parseBoolean(record.get("forceClassName"));
if (requiresMod && !Loader.isModLoaded(modId)) continue;
@@ -209,6 +212,13 @@ public class RecipeCatalysts {
}
}
for (Map.Entry<String, CatalystInfoList> entry : catalystsAdderFromIMC.entrySet()) {
String handlerID = entry.getKey();
for (CatalystInfo catalyst : entry.getValue()) {
addOrPut(recipeCatalystMap, handlerID, catalyst);
}
}
for (Map.Entry<String, List<ItemStack>> entry : catalystsRemoverFromAPI.entrySet()) {
String handlerID = entry.getKey();
if (recipeCatalystMap.containsKey(handlerID)) {
@@ -217,6 +227,14 @@ public class RecipeCatalysts {
}
}
for (Map.Entry<String, List<ItemStack>> entry : catalystsRemoverFromIMC.entrySet()) {
String handlerID = entry.getKey();
if (recipeCatalystMap.containsKey(handlerID)) {
CatalystInfoList catalysts = recipeCatalystMap.get(handlerID);
entry.getValue().forEach(catalysts::remove);
}
}
updatePosition(getHeight(), true);
}
@@ -234,7 +252,7 @@ public class RecipeCatalysts {
handler.getHandlerId());
}
private static void addOrPut(Map<String, CatalystInfoList> map, String handlerID, CatalystInfo catalyst) {
public static void addOrPut(Map<String, CatalystInfoList> map, String handlerID, CatalystInfo catalyst) {
if (map.containsKey(handlerID)) {
map.get(handlerID).add(catalyst);
} else {
@@ -1,29 +1,29 @@
package codechicken.nei.recipe;
import codechicken.lib.gui.GuiDraw;
import codechicken.nei.ItemPanels;
import codechicken.nei.LayoutManager;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.PositionedStack;
import codechicken.nei.guihook.GuiContainerManager;
import codechicken.nei.guihook.IContainerInputHandler;
import codechicken.nei.PositionedStack;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import java.awt.*;
import java.util.List;
public class RecipeItemInputHandler implements IContainerInputHandler
{
public class RecipeItemInputHandler implements IContainerInputHandler {
@Override
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyCode)
{
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyCode) {
ItemStack stackover = GuiContainerManager.getStackMouseOver(gui);
if(stackover == null)
return false;
if (stackover == null) return false;
if(keyCode == NEIClientConfig.getKeyBinding("gui.recipe"))
if (keyCode == NEIClientConfig.getKeyBinding("gui.recipe"))
return GuiCraftingRecipe.openRecipeGui("item", stackover.copy());
if(keyCode == NEIClientConfig.getKeyBinding("gui.usage"))
if (keyCode == NEIClientConfig.getKeyBinding("gui.usage"))
return GuiUsageRecipe.openRecipeGui("item", stackover.copy());
if (keyCode == NEIClientConfig.getKeyBinding("gui.bookmark")) {
@@ -39,68 +39,68 @@ public class RecipeItemInputHandler implements IContainerInputHandler
ItemPanels.bookmarkPanel.addOrRemoveItem(stackover.copy(), handlerName, ingredients);
}
if (keyCode == NEIClientConfig.getKeyBinding("gui.overlay")) {
if (NEIClientUtils.controlKey()) {
LayoutManager.overlayRenderer = null;
return true;
}
if (!NEIClientConfig.saveCurrentRecipeInBookmarksEnabled()) return false;
final BookmarkRecipeId mouseOverRecipeId = ItemPanels.bookmarkPanel.getBookmarkMouseOverRecipeId();
if (mouseOverRecipeId == null || mouseOverRecipeId.ingredients == null || mouseOverRecipeId.ingredients.isEmpty())
return false;
return GuiCraftingRecipe.openRecipeGui("item", true, stackover.copy());
}
return false;
}
@Override
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button)
{
public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button) {
ItemStack stackover = GuiContainerManager.getStackMouseOver(gui);
if(stackover == null)
return false;
if (stackover == null) return false;
if (!(gui instanceof GuiRecipe))
return false;
if (!(gui instanceof GuiRecipe)) return false;
//disabled open recipe gui if hold shift (player have move recipe)
if (button == 0 && ItemPanels.bookmarkPanel.getStackMouseOver(mousex, mousey) != null && NEIClientUtils.shiftKey()) {
return false;
}
if(button == 0)
return GuiCraftingRecipe.openRecipeGui("item", stackover.copy());
if (button == 0) return GuiCraftingRecipe.openRecipeGui("item", stackover.copy());
if(button == 1)
return GuiUsageRecipe.openRecipeGui("item", stackover.copy());
if (button == 1) return GuiUsageRecipe.openRecipeGui("item", stackover.copy());
return false;
}
@Override
public void onKeyTyped(GuiContainer gui, char keyChar, int keyID)
{
public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) {
}
@Override
public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button)
{
public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button) {
}
@Override
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button)
{
public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {
}
@Override
public boolean keyTyped(GuiContainer gui, char keyChar, int keyID)
{
public boolean keyTyped(GuiContainer gui, char keyChar, int keyID) {
return false;
}
@Override
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled)
{
public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {
return false;
}
@Override
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled)
{
public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {
}
@Override
public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime)
{
public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime) {
}
}
@@ -0,0 +1,41 @@
package codechicken.nei.recipe;
import codechicken.nei.api.INEIGuiAdapter;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
import net.minecraft.util.EnumChatFormatting;
import java.util.regex.Pattern;
import static codechicken.nei.LayoutManager.searchField;
public class SearchInputDropHandler extends INEIGuiAdapter
{
protected static final Pattern SPECIAL_REGEX_CHARS = Pattern.compile("[{}()\\[\\].+*?^$\\\\|]");
@Override
public boolean handleDragNDrop(GuiContainer gui, int mouseX, int mouseY, ItemStack draggedStack, int button)
{
if (searchField.contains(mouseX, mouseY)) {
final FluidStack fluidStack = StackInfo.getFluid(draggedStack);
if (fluidStack != null) {
searchField.setText(formattingText(fluidStack.getLocalizedName()));
} else {
searchField.setText(formattingText(draggedStack.getDisplayName()));
}
return true;
}
return false;
}
protected String formattingText(String displayName)
{
return SPECIAL_REGEX_CHARS.matcher(EnumChatFormatting.getTextWithoutFormattingCodes(displayName)).replaceAll("\\\\$0");
}
}
+543 -332
View File
@@ -1,8 +1,9 @@
handler,itemName,nbtInfo,modId,modRequired,excludedModId,priority,minVersion,maxVersion,forceClassName,itemNotes
crafting,minecraft:crafting_table,,minecraft,FALSE,,100,,,,
smelting,minecraft:furnace,,minecraft,FALSE,,100,,,,
codechicken.nei.recipe.BrewingRecipeHandler,minecraft:brewing_stand,,minecraft,FALSE,,100,,,,
codechicken.nei.recipe.FuelRecipeHandler,minecraft:furnace,,minecraft,FALSE,,100,,,,
crafting,minecraft:crafting_table,,minecraft,FALSE,terrafirmacraftplus,100,,,,
smelting,minecraft:furnace,,minecraft,FALSE,terrafirmacraftplus,100,,,,
codechicken.nei.recipe.BrewingRecipeHandler,minecraft:brewing_stand,,minecraft,FALSE,terrafirmacraftplus,100,,,,
codechicken.nei.recipe.FuelRecipeHandler,minecraft:furnace,,minecraft,FALSE,terrafirmacraftplus,100,,,,
crafting,terrafirmacraftplus:Workbench,,terrafirmacraftplus,TRUE,,100,,,,TFC workbench
advsolar.client.nei.MTRecipeHandler,AdvancedSolarPanel:BlockMolecularTransformer,,AdvancedSolarPanel,TRUE,,,,,,
crafting,appliedenergistics2:item.ItemMultiPart:360,,appliedenergistics2,TRUE,,,,,,
appeng.integration.modules.NEIHelpers.NEIGrinderRecipeHandler,appliedenergistics2:tile.BlockGrinder,,appliedenergistics2,TRUE,dreamcraft,,,,,
@@ -243,27 +244,170 @@ vazkii.botania.client.integration.nei.recipe.RecipeHandlerManaPool,Botania:pool:
vazkii.botania.client.integration.nei.recipe.RecipeHandlerElvenTrade,Botania:alfheimPortal,,Botania,TRUE,,,,,,
vazkii.botania.client.integration.nei.recipe.RecipeHandlerBrewery,Botania:brewery,,Botania,TRUE,,,,,,
vazkii.botania.client.integration.nei.recipe.RecipeHandlerPureDaisy,Botania:specialFlower,"{type:puredaisy}",Botania,TRUE,,,,,,"todo: when I look up usage or crafting for flower, other flowers also show up."
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil,,terrafirmacraftplus,TRUE,,,,,,All TFC catalysts listed below are automatically converted from handlers.csv and untested. Feel free to make changes and submit PRs.
ieArcFurnace,ImmersiveEngineering:metalMultiblock:8,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIShaderBagHandler,ImmersiveEngineering:shaderBag,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlueprintHandler,ImmersiveEngineering:woodenDevice:5,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEICokeOvenHandler,ImmersiveEngineering:stoneDecoration:1,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler,ImmersiveEngineering:stoneDecoration:2,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler,ImmersiveEngineering:stoneDecoration:6,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEISqueezerHandler,ImmersiveEngineering:metalMultiblock:2,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIFermenterHandler,ImmersiveEngineering:metalMultiblock:3,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIRefineryHandler,ImmersiveEngineering:metalMultiblock:4,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEIMetalPressHandler,ImmersiveEngineering:metalMultiblock:13,,ImmersiveEngineering,TRUE,,,,,,
blusunrize.immersiveengineering.client.nei.NEICrusherHandler,ImmersiveEngineering:metalMultiblock:5,,ImmersiveEngineering,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.CrystallizerNEI,advancedRocketry:crystallizer,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.PrecisionAssemberNEI,advancedRocketry:precisionassemblingmachine,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.CuttingMachineNEI,advancedRocketry:tile.cuttingMachine,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.BlastFurnaceNEI,advancedRocketry:tile.electricArcFurnace,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.ElectrolyserNEI,advancedRocketry:tile.electrolyser,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.LatheNEI,advancedRocketry:tile.lathe,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.ChemicalReactorNEI,advancedRocketry:tile.chemreactor,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.PlatePresserNEI,advancedRocketry:tile.blockHandPress,,advancedRocketry,TRUE,,,,,,
zmaster587.advancedRocketry.integration.nei.RollingMachineNEI,advancedRocketry:tile.rollingMachine,,advancedRocketry,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:3,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:4,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:5,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:6,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil:7,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil2:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,terrafirmacraftplus:Anvil2:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler,terrafirmacraftplus:item.Quern,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler,terrafirmacraftplus:Quern,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KilnRecipeHandler,,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:3,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:4,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:5,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:6,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:7,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:8,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:9,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:10,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:11,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:12,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:13,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:14,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:15,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:16,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:17,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:18,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:19,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:20,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:21,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:22,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:23,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:24,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:25,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:26,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:27,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:28,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:29,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:30,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:31,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler,terrafirmacraftplus:Loom:32,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:3,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:4,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:5,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:6,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:7,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:9,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:10,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:11,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:12,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:13,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:14,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:15,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:16,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:17,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:18,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:19,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LooseRock:20,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Clay,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Clay:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Straw,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.CottonCloth,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.WoolCloth,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.LinenCloth,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.SilkCloth,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.BurlapCloth,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.TFC Leather,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Hide,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Hide:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Hide:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Wolf Fur,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Wolf Fur:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Wolf Fur:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Fur,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Fur:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Fur:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Bear Fur,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Bear Fur:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler,terrafirmacraftplus:item.Bear Fur:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.ClothingRecipeHandler,terrafirmacraftplus:item.Bone Needle Thread,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.ClothingRecipeHandler,terrafirmacraftplus:item.Iron Needle Thread,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:2,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:3,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:4,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:5,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:6,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:7,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:8,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:9,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:10,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:11,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:12,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:13,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:14,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:15,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:16,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:17,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:18,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:19,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:20,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:21,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:22,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:23,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:24,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:25,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:26,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:27,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:28,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:29,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:30,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:31,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Barrel:32,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,terrafirmacraftplus:Vessel:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,terrafirmacraftplus:Firepit,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,terrafirmacraftplus:Grill,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,terrafirmacraftplus:Forge,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,terrafirmacraftplus:Crucible,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,terrafirmacraftplus:Firepit,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,terrafirmacraftplus:item.Small Vessel:1,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,terrafirmacraftplus:Crucible,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,terrafirmacraftplus:Firepit,,terrafirmacraftplus,TRUE,,,,,,TFC end
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,terrafirmacraftplus:EarlyBloomery,,terrafirmacraftplus,TRUE,,,,,,
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,terrafirmacraftplus:Bloomery,,terrafirmacraftplus,TRUE,,,,,,TFC End
minechem.nei.DecomposerNEIRecipeHandler,minechem:tile.chemicalDecomposer,,minechem,TRUE,,,,,,
minechem.nei.SynthesisNEIRecipeHandler,minechem:tile.chemicalSynthesizer,,minechem,TRUE,,,,,,
exter.fodc.nei.ODCRecipeHandler,fodc:oreConverter,,fodc,TRUE,,,,,,
exter.fodc.nei.ODCRecipeHandler,fodc:oreConvTable,,fodc,TRUE,,,,,,
exter.fodc.nei.ODCRecipeHandler,fodc:oreAutoconverter,,fodc,TRUE,,,,,,
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerCharger,ThermalExpansion:Machine:10,,ThermalExpansion,TRUE,,,,,,this and below are not working well
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerCharger,ThermalExpansion:Machine:10,,ThermalExpansion,TRUE,,,,,,"this and below are not working well, ReSiever mod fixes it"
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerCrucible,ThermalExpansion:Machine:4,,ThermalExpansion,TRUE,,,,,,
crafting,ThermalExpansion:Workbench:1,,ThermalExpansion,TRUE,,,,,,
crafting,ThermalExpansion:Workbench:2,,ThermalExpansion,TRUE,,,,,,
crafting,ThermalExpansion:Workbench:3,,ThermalExpansion,TRUE,,,,,,
crafting,ThermalExpansion:Workbench:4,,ThermalExpansion,TRUE,,,,,,
smelting,ThermalExpansion:Machine:0,,ThermalExpansion,TRUE,,,,,,
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerFurnace,ThermalExpansion:Machine,,ThermalExpansion,TRUE,,,,,,
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerInsolator,ThermalExpansion:Machine:11,,ThermalExpansion,TRUE,,,,,,
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerPulverizer,ThermalExpansion:Machine:1,,ThermalExpansion,TRUE,,,,,,
cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerSawmill,ThermalExpansion:Machine:2,,ThermalExpansion,TRUE,,,,,,
@@ -312,7 +456,7 @@ mekanism.client.nei.PurificationChamberRecipeHandler,Mekanism:MachineBlock:7,"{r
mekanism.client.nei.RotaryCondensentratorRecipeHandler,Mekanism:MachineBlock2:0,,Mekanism,TRUE,,,,,,
mekanism.client.nei.SolarNeutronRecipeHandler,Mekanism:MachineBlock3:1,,Mekanism,TRUE,,,,,,
mekanism.client.nei.ThermalEvaporationRecipeHandler,Mekanism:BasicBlock:14,,Mekanism,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exnihilo:hammer_wood,,exnihilo,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exnihilo:hammer_wood,,exnihilo,TRUE,,,,,,"Ex Nihilo does not really work out of the box, use the ReSiever mod to fix this"
exnihilo.compatibility.nei.RecipeHandlerHammer,exnihilo:hammer_stone,,exnihilo,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exnihilo:hammer_iron,,exnihilo,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exnihilo:hammer_gold,,exnihilo,TRUE,,,,,,
@@ -323,19 +467,19 @@ exnihilo.compatibility.nei.RecipeHandlerSieve,exnihilo:sifting_table:2,,exnihilo
exnihilo.compatibility.nei.RecipeHandlerSieve,exnihilo:sifting_table:3,,exnihilo,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,exnihilo:sifting_table:4,,exnihilo,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,exnihilo:sifting_table:5,,exnihilo,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler,gregtech_addon:machine:56,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler,gregtech_addon:machine:60,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler,gregtech_addon:machine:59,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler,gregtech_addon:machine:29,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.BronzeBlastRecipeHandler,gregtech_addon:machine:136,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.CannerRecipeHandler,gregtech_addon:machine:57,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.CentrifugeRecipeHandler,gregtech_addon:machine:62,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.ChemicalRecipeHandler,gregtech_addon:machine:41,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.CutterRecipeHandler,gregtech_addon:machine:113,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.DistillationRecipeHandler,gregtech_addon:machine:44,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.ElectrolyzerRecipeHandler,gregtech_addon:machine:25,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.ExtruderRecipeHandler,gregtech_addon:machine:115,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.FusionRecipeHandler,gregtech_addon:machine:80,,gregtech_addon,TRUE,,,,,,
gregtech.Alloy,gregtech_addon:machine:56,,gregtech_addon,TRUE,,,,,,
gregtech.Assembler,gregtech_addon:machine:60,,gregtech_addon,TRUE,,,,,,
gregtech.Bender,gregtech_addon:machine:59,,gregtech_addon,TRUE,,,,,,
gregtech.Blast,gregtech_addon:machine:29,,gregtech_addon,TRUE,,,,,,
gregtech.BronzeBlast,gregtech_addon:machine:136,,gregtech_addon,TRUE,,,,,,
gregtech.Canner,gregtech_addon:machine:57,,gregtech_addon,TRUE,,,,,,
gregtech.centrifuge,gregtech_addon:machine:62,,gregtech_addon,TRUE,,,,,,
gregtech.chemicalreactor,gregtech_addon:machine:41,,gregtech_addon,TRUE,,,,,,
gregtech.Cutter,gregtech_addon:machine:113,,gregtech_addon,TRUE,,,,,,
gregtech.Distillation,gregtech_addon:machine:44,,gregtech_addon,TRUE,,,,,,
gregtech.electrolyzer,gregtech_addon:machine:25,,gregtech_addon,TRUE,,,,,,
gregtech.extruder,gregtech_addon:machine:115,,gregtech_addon,TRUE,,,,,,
gregtech.fusion,gregtech_addon:machine:80,,gregtech_addon,TRUE,,,,,,
gregtech.thermal_generator,gregtech_addon:machine:35,,gregtech_addon,TRUE,,,,,,
gregtech.diesel_generator,gregtech_addon:machine:33,,gregtech_addon,TRUE,,,,,,
gregtech.gas_turbine,gregtech_addon:machine:34,,gregtech_addon,TRUE,,,,,,
@@ -344,12 +488,12 @@ gregtech.semifluid_generator,gregtech_addon:machine:36,,gregtech_addon,TRUE,,,,,
gregtech.plasma_generator,gregtech_addon:machine:37,,gregtech_addon,TRUE,,,,,,
gregtech.plasma_generator,gregtech_addon:machine:117,,gregtech_addon,TRUE,,,,,,
gregtech.magic_generator,gregtech_addon:machine:42,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.GrinderRecipeHandler,gregtech_addon:machine:28,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.ImplosionRecipeHandler,gregtech_addon:machine:31,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.LatheRecipeHandler,gregtech_addon:machine:111,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.SawmillRecipeHandler,gregtech_addon:machine:32,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler,gregtech_addon:machine:38,,gregtech_addon,TRUE,,,,,,
gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler,gregtech_addon:machine:55,,gregtech_addon,TRUE,,,,,,
gregtech.Grinder,gregtech_addon:machine:28,,gregtech_addon,TRUE,,,,,,
gregtech.Implosion,gregtech_addon:machine:31,,gregtech_addon,TRUE,,,,,,
gregtech.Lathe,gregtech_addon:machine:111,,gregtech_addon,TRUE,,,,,,
gregtech.Sawmill,gregtech_addon:machine:32,,gregtech_addon,TRUE,,,,,,
gregtech.VacuumFreezer,gregtech_addon:machine:38,,gregtech_addon,TRUE,,,,,,
gregtech.Wiremill,gregtech_addon:machine:55,,gregtech_addon,TRUE,,,,,,
wanion.biggercraftingtables.nei.BigShapedRecipeHandler,biggercraftingtables:BiggerCraftingTables,,biggercraftingtables,TRUE,,,,,,this and below are not tested
wanion.biggercraftingtables.nei.BigShapedRecipeHandler,biggercraftingtables:AutoBiggerCraftingTables,,biggercraftingtables,TRUE,,,,,,
wanion.biggercraftingtables.nei.BigShapelessRecipeHandler,biggercraftingtables:BiggerCraftingTables,,biggercraftingtables,TRUE,,,,,,
@@ -363,6 +507,8 @@ crafting,LogisticsPipes:logisticsSolidBlock:3,,LogisticsPipes,TRUE,,,,,,
crafting,LogisticsPipes:logisticsSolidBlock:4,,LogisticsPipes,TRUE,,,,,,
crafting,DraconicEvolution:draconiumChest,,DraconicEvolution,TRUE,,-50,,,,
smelting,DraconicEvolution:draconiumChest,,DraconicEvolution,TRUE,,-50,,,,
smelting,ProjRed|Expansion:projectred.expansion.machine1,,ProjRed|Expansion,TRUE,,,,,,
crafting,ProjRed|Expansion:projectred.expansion.machine2:10,,ProjRed|Expansion,TRUE,,,,,,
crafting,ProjRed|Expansion:projectred.expansion.machine2:11,,ProjRed|Expansion,TRUE,,,,,,
crafting,TwilightForest:tile.TFUncraftingTable,,TwilightForest,TRUE,,,,,,
com.teammetallurgy.metallurgy.nei.CrusherHandler,Metallurgy:crusher,,Metallurgy,TRUE,,,,,,
@@ -383,306 +529,311 @@ nc.crafting.nei.RecyclerRecipeHandler,NuclearCraft:recyclerIdle,,NuclearCraft,TR
nc.crafting.nei.NuclearWorkspaceRecipeHandler,NuclearCraft:nuclearWorkspace,,NuclearCraft,TRUE,,,,,,
ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_Smoker,etfuturum:smoker,,etfuturum,TRUE,,,,,,not working well
ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_BlastFurnace,etfuturum:blast_furnace,,etfuturum,TRUE,,,,,,not working well
crafting,gregtech:gt.metaitem.01:32744,,gregtech,TRUE,,,,,,"GT5 start: for readability, keep all GTNH-related catalysts below"
gt.recipe.primitiveblastfurnace,gregtech:gt.blockmachines:140,,gregtech,TRUE,,,,,,
gt.recipe.primitiveblastfurnace,gregtech:gt.blockmachines:108,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:103,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:104,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:106,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:107,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:109,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:110,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:112,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:113,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:115,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:116,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:118,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:119,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:201,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:202,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:203,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:204,,gregtech,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:205,,gregtech,TRUE,,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:211,,gregtech,TRUE,,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:212,,gregtech,TRUE,,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:213,,gregtech,TRUE,,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:214,,gregtech,TRUE,,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:215,,gregtech,TRUE,,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:221,,gregtech,TRUE,,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:222,,gregtech,TRUE,,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:223,,gregtech,TRUE,,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:224,,gregtech,TRUE,,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:225,,gregtech,TRUE,,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:231,,gregtech,TRUE,,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:232,,gregtech,TRUE,,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:233,,gregtech,TRUE,,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:234,,gregtech,TRUE,,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:235,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:241,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:242,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:243,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:244,,gregtech,TRUE,,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:245,,gregtech,TRUE,,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:251,,gregtech,TRUE,,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:252,,gregtech,TRUE,,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:253,,gregtech,TRUE,,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:254,,gregtech,TRUE,,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:255,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:261,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:262,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:263,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:264,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:265,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:271,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:272,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:273,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:274,,gregtech,TRUE,,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:275,,gregtech,TRUE,,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:281,,gregtech,TRUE,,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:282,,gregtech,TRUE,,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:283,,gregtech,TRUE,,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:284,,gregtech,TRUE,,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:285,,gregtech,TRUE,,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:291,,gregtech,TRUE,,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:292,,gregtech,TRUE,,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:293,,gregtech,TRUE,,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:294,,gregtech,TRUE,,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:295,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:301,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:302,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:303,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:304,,gregtech,TRUE,,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:305,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:311,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:312,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:313,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:314,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:315,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:321,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:322,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:323,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:324,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:325,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:326,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:327,,gregtech,TRUE,,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:328,,gregtech,TRUE,,,,,,
ic2.recycler,gregtech:gt.blockmachines:331,,gregtech,TRUE,,,,,,
ic2.recycler,gregtech:gt.blockmachines:332,,gregtech,TRUE,,,,,,
ic2.recycler,gregtech:gt.blockmachines:333,,gregtech,TRUE,,,,,,
ic2.recycler,gregtech:gt.blockmachines:334,,gregtech,TRUE,,,,,,
ic2.recycler,gregtech:gt.blockmachines:335,,gregtech,TRUE,,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:341,,gregtech,TRUE,,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:342,,gregtech,TRUE,,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:343,,gregtech,TRUE,,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:344,,gregtech,TRUE,,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:345,,gregtech,TRUE,,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:351,,gregtech,TRUE,,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:352,,gregtech,TRUE,,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:353,,gregtech,TRUE,,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:354,,gregtech,TRUE,,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:355,,gregtech,TRUE,,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:361,,gregtech,TRUE,,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:362,,gregtech,TRUE,,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:363,,gregtech,TRUE,,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:364,,gregtech,TRUE,,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:365,,gregtech,TRUE,,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:371,,gregtech,TRUE,,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:372,,gregtech,TRUE,,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:373,,gregtech,TRUE,,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:374,,gregtech,TRUE,,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:375,,gregtech,TRUE,,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:381,,gregtech,TRUE,,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:382,,gregtech,TRUE,,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:383,,gregtech,TRUE,,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:384,,gregtech,TRUE,,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:385,,gregtech,TRUE,,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:391,,gregtech,TRUE,,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:392,,gregtech,TRUE,,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:393,,gregtech,TRUE,,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:394,,gregtech,TRUE,,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:395,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:401,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:402,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:403,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:404,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:405,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:406,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:407,,gregtech,TRUE,,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:408,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:411,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:412,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:413,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:414,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:415,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:416,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:417,,gregtech,TRUE,,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:418,,gregtech,TRUE,,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:421,,gregtech,TRUE,,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:422,,gregtech,TRUE,,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:423,,gregtech,TRUE,,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:424,,gregtech,TRUE,,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:425,,gregtech,TRUE,,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:431,,gregtech,TRUE,,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:432,,gregtech,TRUE,,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:433,,gregtech,TRUE,,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:434,,gregtech,TRUE,,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:435,,gregtech,TRUE,,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:441,,gregtech,TRUE,,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:442,,gregtech,TRUE,,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:443,,gregtech,TRUE,,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:444,,gregtech,TRUE,,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:445,,gregtech,TRUE,,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:461,,gregtech,TRUE,,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:462,,gregtech,TRUE,,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:463,,gregtech,TRUE,,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:464,,gregtech,TRUE,,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:465,,gregtech,TRUE,,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:471,,gregtech,TRUE,,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:472,,gregtech,TRUE,,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:473,,gregtech,TRUE,,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:474,,gregtech,TRUE,,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:475,,gregtech,TRUE,,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:481,,gregtech,TRUE,,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:482,,gregtech,TRUE,,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:483,,gregtech,TRUE,,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:484,,gregtech,TRUE,,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:485,,gregtech,TRUE,,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:491,,gregtech,TRUE,,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:492,,gregtech,TRUE,,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:493,,gregtech,TRUE,,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:494,,gregtech,TRUE,,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:495,,gregtech,TRUE,,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:501,,gregtech,TRUE,,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:502,,gregtech,TRUE,,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:503,,gregtech,TRUE,,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:504,,gregtech,TRUE,,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:505,,gregtech,TRUE,,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:511,,gregtech,TRUE,,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:512,,gregtech,TRUE,,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:513,,gregtech,TRUE,,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:514,,gregtech,TRUE,,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:515,,gregtech,TRUE,,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:521,,gregtech,TRUE,,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:522,,gregtech,TRUE,,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:523,,gregtech,TRUE,,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:524,,gregtech,TRUE,,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:525,,gregtech,TRUE,,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:531,,gregtech,TRUE,,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:532,,gregtech,TRUE,,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:533,,gregtech,TRUE,,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:534,,gregtech,TRUE,,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:535,,gregtech,TRUE,,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:541,,gregtech,TRUE,,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:542,,gregtech,TRUE,,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:543,,gregtech,TRUE,,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:544,,gregtech,TRUE,,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:545,,gregtech,TRUE,,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:551,,gregtech,TRUE,,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:552,,gregtech,TRUE,,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:553,,gregtech,TRUE,,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:554,,gregtech,TRUE,,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:555,,gregtech,TRUE,,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:561,,gregtech,TRUE,,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:562,,gregtech,TRUE,,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:563,,gregtech,TRUE,,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:564,,gregtech,TRUE,,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:565,,gregtech,TRUE,,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:571,,gregtech,TRUE,,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:572,,gregtech,TRUE,,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:573,,gregtech,TRUE,,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:574,,gregtech,TRUE,,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:575,,gregtech,TRUE,,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:581,,gregtech,TRUE,,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:582,,gregtech,TRUE,,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:583,,gregtech,TRUE,,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:584,,gregtech,TRUE,,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:585,,gregtech,TRUE,,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:591,,gregtech,TRUE,,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:592,,gregtech,TRUE,,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:593,,gregtech,TRUE,,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:594,,gregtech,TRUE,,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:595,,gregtech,TRUE,,,,,,
gt.recipe.press,gregtech:gt.blockmachines:601,,gregtech,TRUE,,,,,,
gt.recipe.press,gregtech:gt.blockmachines:602,,gregtech,TRUE,,,,,,
gt.recipe.press,gregtech:gt.blockmachines:603,,gregtech,TRUE,,,,,,
gt.recipe.press,gregtech:gt.blockmachines:604,,gregtech,TRUE,,,,,,
gt.recipe.press,gregtech:gt.blockmachines:605,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:611,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:612,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:613,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:614,,gregtech,TRUE,,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:615,,gregtech,TRUE,,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:621,,gregtech,TRUE,,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:622,,gregtech,TRUE,,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:623,,gregtech,TRUE,,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:624,,gregtech,TRUE,,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:625,,gregtech,TRUE,,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:631,,gregtech,TRUE,,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:632,,gregtech,TRUE,,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:633,,gregtech,TRUE,,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:634,,gregtech,TRUE,,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:635,,gregtech,TRUE,,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:641,,gregtech,TRUE,,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:642,,gregtech,TRUE,,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:643,,gregtech,TRUE,,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:644,,gregtech,TRUE,,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:645,,gregtech,TRUE,,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:651,,gregtech,TRUE,,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:652,,gregtech,TRUE,,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:653,,gregtech,TRUE,,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:654,,gregtech,TRUE,,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:655,,gregtech,TRUE,,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:661,,gregtech,TRUE,,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:662,,gregtech,TRUE,,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:663,,gregtech,TRUE,,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:664,,gregtech,TRUE,,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:665,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:671,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:672,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:673,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:674,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:675,,gregtech,TRUE,,,,,,
gt.recipe.blastfurnace,gregtech:gt.blockmachines:1000,,gregtech,TRUE,,,,,,
gt.recipe.implosioncompressor,gregtech:gt.blockmachines:1001,,gregtech,TRUE,,,,,,
gt.recipe.vacuumfreezer,gregtech:gt.blockmachines:1002,,gregtech,TRUE,,,,,,
smelting,gregtech:gt.blockmachines:1003,,gregtech,TRUE,,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1110,,gregtech,TRUE,,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1111,,gregtech,TRUE,,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1112,,gregtech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1115,,gregtech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1116,,gregtech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1117,,gregtech,TRUE,,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1190,,gregtech,TRUE,,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1191,,gregtech,TRUE,,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1192,,gregtech,TRUE,,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1188,,gregtech,TRUE,,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1189,,gregtech,TRUE,,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1123,,gregtech,TRUE,,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1124,,gregtech,TRUE,,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1125,,gregtech,TRUE,,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1193,,gregtech,TRUE,,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1194,,gregtech,TRUE,,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1195,,gregtech,TRUE,,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1196,,gregtech,TRUE,,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1197,,gregtech,TRUE,,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1198,,gregtech,TRUE,,,,,,
gt.recipe.distillationtower,gregtech:gt.blockmachines:1126,,gregtech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1151,,gregtech,TRUE,,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1153,,gregtech,TRUE,,-10,,,,
gt.recipe.pyro,gregtech:gt.blockmachines:1159,,gregtech,TRUE,,,,,,
gt.recipe.craker,gregtech:gt.blockmachines:1160,,gregtech,TRUE,,,,,,
gt.recipe.fakeAssemblylineProcess,gregtech:gt.blockmachines:1170,,gregtech,TRUE,,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1171,,gregtech,TRUE,,-5,,,,
gt.recipe.extremedieselgeneratorfuel,gregtech:gt.blockmachines:2105,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1180,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1181,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1182,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1183,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1184,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1185,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1186,,gregtech,TRUE,,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1187,,gregtech,TRUE,,,,,,
gt.recipe.largechemicalreactor,gregtech:gt.blockmachines:1169,,gregtech,TRUE,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler,campfirebackport:campfire,,campfirebackport,TRUE,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler,campfirebackport:soul_campfire,,campfirebackport,TRUE,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler,campfirebackport:campfire,,campfirebackport,TRUE,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler,campfirebackport:soul_campfire,,campfirebackport,TRUE,,,,,,
smelting,Natura:NetherFurnace,,Natura,TRUE,,,,,,
crafting,gregtech:gt.metaitem.01:32744,,gregtech,TRUE,gregapi_post,,,,,"GT5 start: for readability, keep all GTNH-related catalysts below"
gt.recipe.primitiveblastfurnace,gregtech:gt.blockmachines:140,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.primitiveblastfurnace,gregtech:gt.blockmachines:108,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:103,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:104,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:106,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:107,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:109,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:110,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:112,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:113,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:115,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:116,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:118,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:119,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:201,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:202,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:203,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:204,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:205,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:211,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:212,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:213,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:214,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.assembler,gregtech:gt.blockmachines:215,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:221,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:222,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:223,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:224,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.metalbender,gregtech:gt.blockmachines:225,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:231,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:232,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:233,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:234,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.canner,gregtech:gt.blockmachines:235,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:241,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:242,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:243,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:244,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.compressor,gregtech:gt.blockmachines:245,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:251,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:252,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:253,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:254,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.cuttingsaw,gregtech:gt.blockmachines:255,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:261,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:262,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:263,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:264,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:265,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:271,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:272,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:273,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:274,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extractor,gregtech:gt.blockmachines:275,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:281,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:282,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:283,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:284,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.extruder,gregtech:gt.blockmachines:285,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:291,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:292,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:293,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:294,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.lathe,gregtech:gt.blockmachines:295,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:301,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:302,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:303,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:304,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.macerator,gregtech:gt.blockmachines:305,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:311,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:312,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:313,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:314,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:315,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:321,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:322,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:323,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:324,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:325,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:326,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:327,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.printer,gregtech:gt.blockmachines:328,,gregtech,TRUE,gregapi_post,,,,,
ic2.recycler,gregtech:gt.blockmachines:331,,gregtech,TRUE,gregapi_post,,,,,
ic2.recycler,gregtech:gt.blockmachines:332,,gregtech,TRUE,gregapi_post,,,,,
ic2.recycler,gregtech:gt.blockmachines:333,,gregtech,TRUE,gregapi_post,,,,,
ic2.recycler,gregtech:gt.blockmachines:334,,gregtech,TRUE,gregapi_post,,,,,
ic2.recycler,gregtech:gt.blockmachines:335,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:341,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:342,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:343,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:344,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.scanner,gregtech:gt.blockmachines:345,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:351,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:352,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:353,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:354,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.wiremill,gregtech:gt.blockmachines:355,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:361,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:362,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:363,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:364,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.centrifuge,gregtech:gt.blockmachines:365,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:371,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:372,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:373,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:374,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electrolyzer,gregtech:gt.blockmachines:375,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:381,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:382,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:383,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:384,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.thermalcentrifuge,gregtech:gt.blockmachines:385,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:391,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:392,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:393,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:394,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.orewasher,gregtech:gt.blockmachines:395,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:401,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:402,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:403,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:404,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:405,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:406,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:407,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.packager,gregtech:gt.blockmachines:408,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:411,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:412,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:413,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:414,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:415,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:416,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:417,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.unpackager,gregtech:gt.blockmachines:418,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:421,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:422,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:423,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:424,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalreactor,gregtech:gt.blockmachines:425,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:431,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:432,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:433,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:434,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidcanner,gregtech:gt.blockmachines:435,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:441,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:442,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:443,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:444,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.rockbreaker,gregtech:gt.blockmachines:445,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:461,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:462,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:463,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:464,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.massfab,gregtech:gt.blockmachines:465,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:471,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:472,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:473,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:474,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.uuamplifier,gregtech:gt.blockmachines:475,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:481,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:482,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:483,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:484,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.replicator,gregtech:gt.blockmachines:485,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:491,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:492,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:493,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:494,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.brewer,gregtech:gt.blockmachines:495,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:501,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:502,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:503,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:504,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fermenter,gregtech:gt.blockmachines:505,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:511,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:512,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:513,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:514,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidextractor,gregtech:gt.blockmachines:515,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:521,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:522,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:523,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:524,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidsolidifier,gregtech:gt.blockmachines:525,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:531,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:532,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:533,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:534,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillery,gregtech:gt.blockmachines:535,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:541,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:542,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:543,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:544,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.chemicalbath,gregtech:gt.blockmachines:545,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:551,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:552,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:553,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:554,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.polarizer,gregtech:gt.blockmachines:555,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:561,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:562,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:563,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:564,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.electromagneticseparator,gregtech:gt.blockmachines:565,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:571,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:572,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:573,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:574,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.autoclave,gregtech:gt.blockmachines:575,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:581,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:582,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:583,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:584,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.mixer,gregtech:gt.blockmachines:585,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:591,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:592,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:593,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:594,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.laserengraver,gregtech:gt.blockmachines:595,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.press,gregtech:gt.blockmachines:601,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.press,gregtech:gt.blockmachines:602,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.press,gregtech:gt.blockmachines:603,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.press,gregtech:gt.blockmachines:604,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.press,gregtech:gt.blockmachines:605,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:611,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:612,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:613,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:614,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.hammer,gregtech:gt.blockmachines:615,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:621,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:622,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:623,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:624,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidheater,gregtech:gt.blockmachines:625,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:631,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:632,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:633,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:634,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.slicer,gregtech:gt.blockmachines:635,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:641,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:642,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:643,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:644,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.sifter,gregtech:gt.blockmachines:645,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:651,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:652,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:653,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:654,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.arcfurnace,gregtech:gt.blockmachines:655,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:661,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:662,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:663,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:664,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmaarcfurnace,gregtech:gt.blockmachines:665,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:671,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:672,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:673,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:674,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:675,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.blastfurnace,gregtech:gt.blockmachines:1000,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.implosioncompressor,gregtech:gt.blockmachines:1001,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.vacuumfreezer,gregtech:gt.blockmachines:1002,,gregtech,TRUE,gregapi_post,,,,,
smelting,gregtech:gt.blockmachines:1003,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1110,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1111,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1112,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1115,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1116,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1117,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1190,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1191,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1192,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1188,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fluidnaquadahreactor,gregtech:gt.blockmachines:1189,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1123,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1124,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.magicfuels,gregtech:gt.blockmachines:1125,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1193,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1194,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fusionreactor,gregtech:gt.blockmachines:1195,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1196,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1197,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1198,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.distillationtower,gregtech:gt.blockmachines:1126,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:1151,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:1153,,gregtech,TRUE,gregapi_post,-10,,,,
gt.recipe.pyro,gregtech:gt.blockmachines:1159,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.craker,gregtech:gt.blockmachines:1160,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.fakeAssemblylineProcess,gregtech:gt.blockmachines:1170,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.dieselgeneratorfuel,gregtech:gt.blockmachines:1171,,gregtech,TRUE,gregapi_post,-5,,,,
gt.recipe.extremedieselgeneratorfuel,gregtech:gt.blockmachines:2105,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1180,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1181,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1182,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1183,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1184,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1185,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1186,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.circuitassembler,gregtech:gt.blockmachines:1187,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.largechemicalreactor,gregtech:gt.blockmachines:1169,,gregtech,TRUE,gregapi_post,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:10752,,dreamcraft,TRUE,,,,,,
gt.recipe.plasmageneratorfuels,gregtech:gt.blockmachines:10753,,dreamcraft,TRUE,,,,,,
gt.recipe.alloysmelter,gregtech:gt.blockmachines:10760,,dreamcraft,TRUE,,,,,,
@@ -1064,9 +1215,9 @@ gtpp.recipe.simplewasher,gregtech:gt.blockmachines:31018,,miscutils,TRUE,,,,,,
gtpp.recipe.simplewasher,gregtech:gt.blockmachines:31019,,miscutils,TRUE,,,,,,
gtpp.recipe.simplewasher,gregtech:gt.blockmachines:31020,,miscutils,TRUE,,,,,,
gtpp.recipe.vacfurnace,gregtech:gt.blockmachines:995,,miscutils,TRUE,,,,,,
gtPlusPlus.nei.GT_NEI_FlotationCell,gregtech:gt.blockmachines:31028,,miscutils,TRUE,,,,,,
gtPlusPlus.nei.GT_NEI_FluidReactor,gregtech:gt.blockmachines:998,,miscutils,TRUE,,,,,,
gtPlusPlus.nei.GT_NEI_MillingMachine,gregtech:gt.blockmachines:31027,,miscutils,TRUE,,,,,,
gtpp.recipe.flotationcell,gregtech:gt.blockmachines:31028,,miscutils,TRUE,,,,,,
gtpp.recipe.fluidchemicaleactor,gregtech:gt.blockmachines:998,,miscutils,TRUE,,,,,,
gtpp.recipe.oremill,gregtech:gt.blockmachines:31027,,miscutils,TRUE,,,,,,
team.chisel.compat.nei.RecipeHandlerChisel,gregtech:gt.blockmachines:31066,,miscutils,TRUE,,,,,,
team.chisel.compat.nei.RecipeHandlerChisel,gregtech:gt.blockmachines:31067,,miscutils,TRUE,,,,,,
team.chisel.compat.nei.RecipeHandlerChisel,gregtech:gt.blockmachines:31068,,miscutils,TRUE,,,,,,
@@ -1103,4 +1254,64 @@ gg.recipe.naquadah_fuel_refine_factory,gregtech:gt.blockmachines:16999,,GoodGene
gt.recipe.researchStation,gregtech:gt.blockmachines:15331,,tectech,TRUE,,,,,,
gt.recipe.em_scanner,tectech:item.em.definitionScanStorage,,tectech,TRUE,,,,,,no recipe? don't know
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:13101,,kekztech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:13102,,kekztech,TRUE,,,,,,
gt.recipe.gasturbinefuel,gregtech:gt.blockmachines:13102,,kekztech,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,exastris:sieve_automatic,,exastris,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exastris:hammer_thaumium,,exastris,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exastris:hammer_rf,,exastris,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,exastris:manaHammer,,exastris,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,excompressum:manaSieve,,excompressum,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,excompressum:autoSieve,,excompressum,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,excompressum:chickenStick,,excompressum,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,excompressum:oreSmasher,,excompressum,TRUE,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,excompressum:autoHammer,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve:1,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve:2,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve:3,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve:4,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:heavySieve:5,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,excompressum:autoHeavySieve,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:compressedHammerWood,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:compressedHammerStone,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:compressedHammerGold,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:compressedHammerIron,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:compressedHammerDiamond,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,excompressum:autoCompressedHammer,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel:1,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel:2,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel:3,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel:4,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel:5,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exnihilo:barrel_stone,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,exastris:barrel_thaumium,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel:1,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel:2,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel:3,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel:4,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel:5,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exnihilo:barrel_stone,,excompressum,TRUE,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,exastris:barrel_thaumium,,excompressum,TRUE,,,,,,
crafting,rftools:crafterBlock1,,rftools,TRUE,,,,,,
crafting,rftools:crafterBlock2,,rftools,TRUE,,,,,,
crafting,rftools:crafterBlock3,,rftools,TRUE,,,,,,
crafting,StevesCarts:CartModule:87,,StevesCarts,TRUE,,,,,,
crafting,StevesCarts:CartModule:92,,StevesCarts,TRUE,,,,,,
smelting,StevesCarts:CartModule:91,,StevesCarts,TRUE,,,,,,
smelting,StevesCarts:CartModule:93,,StevesCarts,TRUE,,,,,,
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapedRecipeHandler,thaumicenergistics:thaumicenergistics.block.arcane.assembler,,thaumicenergistics,TRUE,,,,,,
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapelessRecipeHandler,thaumicenergistics:thaumicenergistics.block.arcane.assembler,,thaumicenergistics,TRUE,,,,,,
ru.timeconqueror.tcneiadditions.nei.arcaneworkbench.ArcaneCraftingShapedHandler,thaumicenergistics:thaumicenergistics.block.arcane.assembler,,thaumicenergistics,TRUE,,,,,,
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapedRecipeHandler,thaumicenergistics:part.base:5,,thaumicenergistics,TRUE,,,,,,
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapelessRecipeHandler,thaumicenergistics:part.base:6,,thaumicenergistics,TRUE,,,,,,
ru.timeconqueror.tcneiadditions.nei.arcaneworkbench.ArcaneCraftingShapedHandler,thaumicenergistics:part.base:7,,thaumicenergistics,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:1,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:2,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:3,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:4,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:5,,BiblioCraft,TRUE,,,,,,
crafting,BiblioCraft:BiblioWorkbench:6,,BiblioCraft,TRUE,,,,,,
crafting,ComputerCraft:CC-TurtleExpanded,{leftUpgrade:2},ComputerCraft,TRUE,,,,,,
crafting,ComputerCraft:CC-TurtleAdvanced,{leftUpgrade:2},ComputerCraft,TRUE,,,,,,
1 handler itemName nbtInfo modId modRequired excludedModId priority minVersion maxVersion forceClassName itemNotes
2 crafting minecraft:crafting_table minecraft FALSE terrafirmacraftplus 100
3 smelting minecraft:furnace minecraft FALSE terrafirmacraftplus 100
4 codechicken.nei.recipe.BrewingRecipeHandler minecraft:brewing_stand minecraft FALSE terrafirmacraftplus 100
5 codechicken.nei.recipe.FuelRecipeHandler minecraft:furnace minecraft FALSE terrafirmacraftplus 100
6 crafting terrafirmacraftplus:Workbench terrafirmacraftplus TRUE 100 TFC workbench
7 advsolar.client.nei.MTRecipeHandler AdvancedSolarPanel:BlockMolecularTransformer AdvancedSolarPanel TRUE
8 crafting appliedenergistics2:item.ItemMultiPart:360 appliedenergistics2 TRUE
9 appeng.integration.modules.NEIHelpers.NEIGrinderRecipeHandler appliedenergistics2:tile.BlockGrinder appliedenergistics2 TRUE dreamcraft
244 vazkii.botania.client.integration.nei.recipe.RecipeHandlerElvenTrade Botania:alfheimPortal Botania TRUE
245 vazkii.botania.client.integration.nei.recipe.RecipeHandlerBrewery Botania:brewery Botania TRUE
246 vazkii.botania.client.integration.nei.recipe.RecipeHandlerPureDaisy Botania:specialFlower {type:puredaisy} Botania TRUE todo: when I look up usage or crafting for flower, other flowers also show up.
247 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler ieArcFurnace terrafirmacraftplus:Anvil ImmersiveEngineering:metalMultiblock:8 terrafirmacraftplus ImmersiveEngineering TRUE All TFC catalysts listed below are automatically converted from handlers.csv and untested. Feel free to make changes and submit PRs.
248 blusunrize.immersiveengineering.client.nei.NEIShaderBagHandler ImmersiveEngineering:shaderBag ImmersiveEngineering TRUE
249 blusunrize.immersiveengineering.client.nei.NEIBlueprintHandler ImmersiveEngineering:woodenDevice:5 ImmersiveEngineering TRUE
250 blusunrize.immersiveengineering.client.nei.NEICokeOvenHandler ImmersiveEngineering:stoneDecoration:1 ImmersiveEngineering TRUE
251 blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler ImmersiveEngineering:stoneDecoration:2 ImmersiveEngineering TRUE
252 blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler ImmersiveEngineering:stoneDecoration:6 ImmersiveEngineering TRUE
253 blusunrize.immersiveengineering.client.nei.NEISqueezerHandler ImmersiveEngineering:metalMultiblock:2 ImmersiveEngineering TRUE
254 blusunrize.immersiveengineering.client.nei.NEIFermenterHandler ImmersiveEngineering:metalMultiblock:3 ImmersiveEngineering TRUE
255 blusunrize.immersiveengineering.client.nei.NEIRefineryHandler ImmersiveEngineering:metalMultiblock:4 ImmersiveEngineering TRUE
256 blusunrize.immersiveengineering.client.nei.NEIMetalPressHandler ImmersiveEngineering:metalMultiblock:13 ImmersiveEngineering TRUE
257 blusunrize.immersiveengineering.client.nei.NEICrusherHandler ImmersiveEngineering:metalMultiblock:5 ImmersiveEngineering TRUE
258 zmaster587.advancedRocketry.integration.nei.CrystallizerNEI advancedRocketry:crystallizer advancedRocketry TRUE
259 zmaster587.advancedRocketry.integration.nei.PrecisionAssemberNEI advancedRocketry:precisionassemblingmachine advancedRocketry TRUE
260 zmaster587.advancedRocketry.integration.nei.CuttingMachineNEI advancedRocketry:tile.cuttingMachine advancedRocketry TRUE
261 zmaster587.advancedRocketry.integration.nei.BlastFurnaceNEI advancedRocketry:tile.electricArcFurnace advancedRocketry TRUE
262 zmaster587.advancedRocketry.integration.nei.ElectrolyserNEI advancedRocketry:tile.electrolyser advancedRocketry TRUE
263 zmaster587.advancedRocketry.integration.nei.LatheNEI advancedRocketry:tile.lathe advancedRocketry TRUE
264 zmaster587.advancedRocketry.integration.nei.ChemicalReactorNEI advancedRocketry:tile.chemreactor advancedRocketry TRUE
265 zmaster587.advancedRocketry.integration.nei.PlatePresserNEI advancedRocketry:tile.blockHandPress advancedRocketry TRUE
266 zmaster587.advancedRocketry.integration.nei.RollingMachineNEI advancedRocketry:tile.rollingMachine advancedRocketry TRUE
267 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:1 terrafirmacraftplus TRUE
268 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:2 terrafirmacraftplus TRUE
269 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:3 terrafirmacraftplus TRUE
270 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:4 terrafirmacraftplus TRUE
271 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:5 terrafirmacraftplus TRUE
272 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:6 terrafirmacraftplus TRUE
273 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil:7 terrafirmacraftplus TRUE
274 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil2 terrafirmacraftplus TRUE
275 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil2:1 terrafirmacraftplus TRUE
276 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler terrafirmacraftplus:Anvil2:2 terrafirmacraftplus TRUE
277 net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler terrafirmacraftplus:item.Quern terrafirmacraftplus TRUE
278 net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler terrafirmacraftplus:Quern terrafirmacraftplus TRUE
279 net.dries007.tfcnei.recipeHandlers.KilnRecipeHandler terrafirmacraftplus TRUE
280 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom terrafirmacraftplus TRUE
281 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:1 terrafirmacraftplus TRUE
282 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:2 terrafirmacraftplus TRUE
283 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:3 terrafirmacraftplus TRUE
284 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:4 terrafirmacraftplus TRUE
285 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:5 terrafirmacraftplus TRUE
286 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:6 terrafirmacraftplus TRUE
287 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:7 terrafirmacraftplus TRUE
288 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:8 terrafirmacraftplus TRUE
289 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:9 terrafirmacraftplus TRUE
290 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:10 terrafirmacraftplus TRUE
291 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:11 terrafirmacraftplus TRUE
292 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:12 terrafirmacraftplus TRUE
293 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:13 terrafirmacraftplus TRUE
294 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:14 terrafirmacraftplus TRUE
295 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:15 terrafirmacraftplus TRUE
296 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:16 terrafirmacraftplus TRUE
297 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:17 terrafirmacraftplus TRUE
298 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:18 terrafirmacraftplus TRUE
299 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:19 terrafirmacraftplus TRUE
300 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:20 terrafirmacraftplus TRUE
301 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:21 terrafirmacraftplus TRUE
302 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:22 terrafirmacraftplus TRUE
303 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:23 terrafirmacraftplus TRUE
304 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:24 terrafirmacraftplus TRUE
305 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:25 terrafirmacraftplus TRUE
306 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:26 terrafirmacraftplus TRUE
307 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:27 terrafirmacraftplus TRUE
308 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:28 terrafirmacraftplus TRUE
309 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:29 terrafirmacraftplus TRUE
310 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:30 terrafirmacraftplus TRUE
311 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:31 terrafirmacraftplus TRUE
312 net.dries007.tfcnei.recipeHandlers.LoomRecipeHandler terrafirmacraftplus:Loom:32 terrafirmacraftplus TRUE
313 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock terrafirmacraftplus TRUE
314 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:1 terrafirmacraftplus TRUE
315 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:2 terrafirmacraftplus TRUE
316 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:3 terrafirmacraftplus TRUE
317 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:4 terrafirmacraftplus TRUE
318 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:5 terrafirmacraftplus TRUE
319 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:6 terrafirmacraftplus TRUE
320 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:7 terrafirmacraftplus TRUE
321 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:9 terrafirmacraftplus TRUE
322 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:10 terrafirmacraftplus TRUE
323 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:11 terrafirmacraftplus TRUE
324 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:12 terrafirmacraftplus TRUE
325 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:13 terrafirmacraftplus TRUE
326 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:14 terrafirmacraftplus TRUE
327 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:15 terrafirmacraftplus TRUE
328 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:16 terrafirmacraftplus TRUE
329 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:17 terrafirmacraftplus TRUE
330 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:18 terrafirmacraftplus TRUE
331 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:19 terrafirmacraftplus TRUE
332 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LooseRock:20 terrafirmacraftplus TRUE
333 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Clay terrafirmacraftplus TRUE
334 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Clay:1 terrafirmacraftplus TRUE
335 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Straw terrafirmacraftplus TRUE
336 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.CottonCloth terrafirmacraftplus TRUE
337 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.WoolCloth terrafirmacraftplus TRUE
338 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.LinenCloth terrafirmacraftplus TRUE
339 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.SilkCloth terrafirmacraftplus TRUE
340 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.BurlapCloth terrafirmacraftplus TRUE
341 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.TFC Leather terrafirmacraftplus TRUE
342 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Hide terrafirmacraftplus TRUE
343 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Hide:1 terrafirmacraftplus TRUE
344 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Hide:2 terrafirmacraftplus TRUE
345 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Wolf Fur terrafirmacraftplus TRUE
346 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Wolf Fur:1 terrafirmacraftplus TRUE
347 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Wolf Fur:2 terrafirmacraftplus TRUE
348 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Fur terrafirmacraftplus TRUE
349 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Fur:1 terrafirmacraftplus TRUE
350 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Fur:2 terrafirmacraftplus TRUE
351 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Bear Fur terrafirmacraftplus TRUE
352 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Bear Fur:1 terrafirmacraftplus TRUE
353 net.dries007.tfcnei.recipeHandlers.KnappingRecipeHandler terrafirmacraftplus:item.Bear Fur:2 terrafirmacraftplus TRUE
354 net.dries007.tfcnei.recipeHandlers.ClothingRecipeHandler terrafirmacraftplus:item.Bone Needle Thread terrafirmacraftplus TRUE
355 net.dries007.tfcnei.recipeHandlers.ClothingRecipeHandler terrafirmacraftplus:item.Iron Needle Thread terrafirmacraftplus TRUE
356 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel terrafirmacraftplus TRUE
357 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:1 terrafirmacraftplus TRUE
358 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:2 terrafirmacraftplus TRUE
359 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:3 terrafirmacraftplus TRUE
360 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:4 terrafirmacraftplus TRUE
361 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:5 terrafirmacraftplus TRUE
362 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:6 terrafirmacraftplus TRUE
363 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:7 terrafirmacraftplus TRUE
364 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:8 terrafirmacraftplus TRUE
365 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:9 terrafirmacraftplus TRUE
366 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:10 terrafirmacraftplus TRUE
367 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:11 terrafirmacraftplus TRUE
368 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:12 terrafirmacraftplus TRUE
369 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:13 terrafirmacraftplus TRUE
370 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:14 terrafirmacraftplus TRUE
371 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:15 terrafirmacraftplus TRUE
372 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:16 terrafirmacraftplus TRUE
373 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:17 terrafirmacraftplus TRUE
374 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:18 terrafirmacraftplus TRUE
375 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:19 terrafirmacraftplus TRUE
376 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:20 terrafirmacraftplus TRUE
377 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:21 terrafirmacraftplus TRUE
378 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:22 terrafirmacraftplus TRUE
379 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:23 terrafirmacraftplus TRUE
380 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:24 terrafirmacraftplus TRUE
381 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:25 terrafirmacraftplus TRUE
382 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:26 terrafirmacraftplus TRUE
383 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:27 terrafirmacraftplus TRUE
384 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:28 terrafirmacraftplus TRUE
385 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:29 terrafirmacraftplus TRUE
386 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:30 terrafirmacraftplus TRUE
387 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:31 terrafirmacraftplus TRUE
388 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Barrel:32 terrafirmacraftplus TRUE
389 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler terrafirmacraftplus:Vessel:1 terrafirmacraftplus TRUE
390 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler terrafirmacraftplus:Firepit terrafirmacraftplus TRUE
391 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler terrafirmacraftplus:Grill terrafirmacraftplus TRUE
392 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler terrafirmacraftplus:Forge terrafirmacraftplus TRUE
393 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler terrafirmacraftplus:Crucible terrafirmacraftplus TRUE
394 net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler terrafirmacraftplus:Firepit terrafirmacraftplus TRUE
395 net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler terrafirmacraftplus:item.Small Vessel:1 terrafirmacraftplus TRUE
396 net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler terrafirmacraftplus:Crucible terrafirmacraftplus TRUE
397 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler terrafirmacraftplus:Firepit terrafirmacraftplus:EarlyBloomery terrafirmacraftplus TRUE TFC end
398 net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler terrafirmacraftplus:Bloomery terrafirmacraftplus TRUE TFC End
399 minechem.nei.DecomposerNEIRecipeHandler minechem:tile.chemicalDecomposer minechem TRUE
400 minechem.nei.SynthesisNEIRecipeHandler minechem:tile.chemicalSynthesizer minechem TRUE
401 exter.fodc.nei.ODCRecipeHandler fodc:oreConverter fodc TRUE
402 exter.fodc.nei.ODCRecipeHandler fodc:oreConvTable fodc TRUE
403 exter.fodc.nei.ODCRecipeHandler fodc:oreAutoconverter fodc TRUE
404 cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerCharger ThermalExpansion:Machine:10 ThermalExpansion TRUE this and below are not working well this and below are not working well, ReSiever mod fixes it
405 cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerCrucible ThermalExpansion:Machine:4 ThermalExpansion TRUE
406 crafting ThermalExpansion:Workbench:1 ThermalExpansion TRUE
407 crafting ThermalExpansion:Workbench:2 ThermalExpansion TRUE
408 crafting ThermalExpansion:Workbench:3 ThermalExpansion TRUE
409 crafting ThermalExpansion:Workbench:4 ThermalExpansion TRUE
410 smelting cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerFurnace ThermalExpansion:Machine:0 ThermalExpansion:Machine ThermalExpansion TRUE
411 cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerInsolator ThermalExpansion:Machine:11 ThermalExpansion TRUE
412 cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerPulverizer ThermalExpansion:Machine:1 ThermalExpansion TRUE
413 cofh.thermalexpansion.plugins.nei.handlers.RecipeHandlerSawmill ThermalExpansion:Machine:2 ThermalExpansion TRUE
456 mekanism.client.nei.RotaryCondensentratorRecipeHandler Mekanism:MachineBlock2:0 Mekanism TRUE
457 mekanism.client.nei.SolarNeutronRecipeHandler Mekanism:MachineBlock3:1 Mekanism TRUE
458 mekanism.client.nei.ThermalEvaporationRecipeHandler Mekanism:BasicBlock:14 Mekanism TRUE
459 exnihilo.compatibility.nei.RecipeHandlerHammer exnihilo:hammer_wood exnihilo TRUE Ex Nihilo does not really work out of the box, use the ReSiever mod to fix this
460 exnihilo.compatibility.nei.RecipeHandlerHammer exnihilo:hammer_stone exnihilo TRUE
461 exnihilo.compatibility.nei.RecipeHandlerHammer exnihilo:hammer_iron exnihilo TRUE
462 exnihilo.compatibility.nei.RecipeHandlerHammer exnihilo:hammer_gold exnihilo TRUE
467 exnihilo.compatibility.nei.RecipeHandlerSieve exnihilo:sifting_table:3 exnihilo TRUE
468 exnihilo.compatibility.nei.RecipeHandlerSieve exnihilo:sifting_table:4 exnihilo TRUE
469 exnihilo.compatibility.nei.RecipeHandlerSieve exnihilo:sifting_table:5 exnihilo TRUE
470 gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler gregtech.Alloy gregtech_addon:machine:56 gregtech_addon TRUE
471 gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler gregtech.Assembler gregtech_addon:machine:60 gregtech_addon TRUE
472 gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler gregtech.Bender gregtech_addon:machine:59 gregtech_addon TRUE
473 gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler gregtech.Blast gregtech_addon:machine:29 gregtech_addon TRUE
474 gregtechmod.mistaqur.nei.handlers.BronzeBlastRecipeHandler gregtech.BronzeBlast gregtech_addon:machine:136 gregtech_addon TRUE
475 gregtechmod.mistaqur.nei.handlers.CannerRecipeHandler gregtech.Canner gregtech_addon:machine:57 gregtech_addon TRUE
476 gregtechmod.mistaqur.nei.handlers.CentrifugeRecipeHandler gregtech.centrifuge gregtech_addon:machine:62 gregtech_addon TRUE
477 gregtechmod.mistaqur.nei.handlers.ChemicalRecipeHandler gregtech.chemicalreactor gregtech_addon:machine:41 gregtech_addon TRUE
478 gregtechmod.mistaqur.nei.handlers.CutterRecipeHandler gregtech.Cutter gregtech_addon:machine:113 gregtech_addon TRUE
479 gregtechmod.mistaqur.nei.handlers.DistillationRecipeHandler gregtech.Distillation gregtech_addon:machine:44 gregtech_addon TRUE
480 gregtechmod.mistaqur.nei.handlers.ElectrolyzerRecipeHandler gregtech.electrolyzer gregtech_addon:machine:25 gregtech_addon TRUE
481 gregtechmod.mistaqur.nei.handlers.ExtruderRecipeHandler gregtech.extruder gregtech_addon:machine:115 gregtech_addon TRUE
482 gregtechmod.mistaqur.nei.handlers.FusionRecipeHandler gregtech.fusion gregtech_addon:machine:80 gregtech_addon TRUE
483 gregtech.thermal_generator gregtech_addon:machine:35 gregtech_addon TRUE
484 gregtech.diesel_generator gregtech_addon:machine:33 gregtech_addon TRUE
485 gregtech.gas_turbine gregtech_addon:machine:34 gregtech_addon TRUE
488 gregtech.plasma_generator gregtech_addon:machine:37 gregtech_addon TRUE
489 gregtech.plasma_generator gregtech_addon:machine:117 gregtech_addon TRUE
490 gregtech.magic_generator gregtech_addon:machine:42 gregtech_addon TRUE
491 gregtechmod.mistaqur.nei.handlers.GrinderRecipeHandler gregtech.Grinder gregtech_addon:machine:28 gregtech_addon TRUE
492 gregtechmod.mistaqur.nei.handlers.ImplosionRecipeHandler gregtech.Implosion gregtech_addon:machine:31 gregtech_addon TRUE
493 gregtechmod.mistaqur.nei.handlers.LatheRecipeHandler gregtech.Lathe gregtech_addon:machine:111 gregtech_addon TRUE
494 gregtechmod.mistaqur.nei.handlers.SawmillRecipeHandler gregtech.Sawmill gregtech_addon:machine:32 gregtech_addon TRUE
495 gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler gregtech.VacuumFreezer gregtech_addon:machine:38 gregtech_addon TRUE
496 gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler gregtech.Wiremill gregtech_addon:machine:55 gregtech_addon TRUE
497 wanion.biggercraftingtables.nei.BigShapedRecipeHandler biggercraftingtables:BiggerCraftingTables biggercraftingtables TRUE this and below are not tested
498 wanion.biggercraftingtables.nei.BigShapedRecipeHandler biggercraftingtables:AutoBiggerCraftingTables biggercraftingtables TRUE
499 wanion.biggercraftingtables.nei.BigShapelessRecipeHandler biggercraftingtables:BiggerCraftingTables biggercraftingtables TRUE
507 crafting LogisticsPipes:logisticsSolidBlock:4 LogisticsPipes TRUE
508 crafting DraconicEvolution:draconiumChest DraconicEvolution TRUE -50
509 smelting DraconicEvolution:draconiumChest DraconicEvolution TRUE -50
510 smelting ProjRed|Expansion:projectred.expansion.machine1 ProjRed|Expansion TRUE
511 crafting ProjRed|Expansion:projectred.expansion.machine2:10 ProjRed|Expansion TRUE
512 crafting ProjRed|Expansion:projectred.expansion.machine2:11 ProjRed|Expansion TRUE
513 crafting TwilightForest:tile.TFUncraftingTable TwilightForest TRUE
514 com.teammetallurgy.metallurgy.nei.CrusherHandler Metallurgy:crusher Metallurgy TRUE
529 nc.crafting.nei.NuclearWorkspaceRecipeHandler NuclearCraft:nuclearWorkspace NuclearCraft TRUE
530 ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_Smoker etfuturum:smoker etfuturum TRUE not working well
531 ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_BlastFurnace etfuturum:blast_furnace etfuturum TRUE not working well
532 crafting connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler gregtech:gt.metaitem.01:32744 campfirebackport:campfire gregtech campfirebackport TRUE GT5 start: for readability, keep all GTNH-related catalysts below
533 gt.recipe.primitiveblastfurnace connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler gregtech:gt.blockmachines:140 campfirebackport:soul_campfire gregtech campfirebackport TRUE
534 gt.recipe.primitiveblastfurnace connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler gregtech:gt.blockmachines:108 campfirebackport:campfire gregtech campfirebackport TRUE
535 smelting connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler gregtech:gt.blockmachines:103 campfirebackport:soul_campfire gregtech campfirebackport TRUE
536 smelting gregtech:gt.blockmachines:104 Natura:NetherFurnace gregtech Natura TRUE
537 gt.recipe.macerator crafting gregtech:gt.blockmachines:106 gregtech:gt.metaitem.01:32744 gregtech TRUE gregapi_post GT5 start: for readability, keep all GTNH-related catalysts below
538 gt.recipe.macerator gt.recipe.primitiveblastfurnace gregtech:gt.blockmachines:107 gregtech:gt.blockmachines:140 gregtech TRUE gregapi_post
539 gt.recipe.extractor gt.recipe.primitiveblastfurnace gregtech:gt.blockmachines:109 gregtech:gt.blockmachines:108 gregtech TRUE gregapi_post
540 gt.recipe.extractor smelting gregtech:gt.blockmachines:110 gregtech:gt.blockmachines:103 gregtech TRUE gregapi_post
541 gt.recipe.hammer smelting gregtech:gt.blockmachines:112 gregtech:gt.blockmachines:104 gregtech TRUE gregapi_post
542 gt.recipe.hammer gt.recipe.macerator gregtech:gt.blockmachines:113 gregtech:gt.blockmachines:106 gregtech TRUE gregapi_post
543 gt.recipe.compressor gt.recipe.macerator gregtech:gt.blockmachines:115 gregtech:gt.blockmachines:107 gregtech TRUE gregapi_post
544 gt.recipe.compressor gt.recipe.extractor gregtech:gt.blockmachines:116 gregtech:gt.blockmachines:109 gregtech TRUE gregapi_post
545 gt.recipe.alloysmelter gt.recipe.extractor gregtech:gt.blockmachines:118 gregtech:gt.blockmachines:110 gregtech TRUE gregapi_post
546 gt.recipe.alloysmelter gt.recipe.hammer gregtech:gt.blockmachines:119 gregtech:gt.blockmachines:112 gregtech TRUE gregapi_post
547 gt.recipe.alloysmelter gt.recipe.hammer gregtech:gt.blockmachines:201 gregtech:gt.blockmachines:113 gregtech TRUE gregapi_post
548 gt.recipe.alloysmelter gt.recipe.compressor gregtech:gt.blockmachines:202 gregtech:gt.blockmachines:115 gregtech TRUE gregapi_post
549 gt.recipe.alloysmelter gt.recipe.compressor gregtech:gt.blockmachines:203 gregtech:gt.blockmachines:116 gregtech TRUE gregapi_post
550 gt.recipe.alloysmelter gregtech:gt.blockmachines:204 gregtech:gt.blockmachines:118 gregtech TRUE gregapi_post
551 gt.recipe.alloysmelter gregtech:gt.blockmachines:205 gregtech:gt.blockmachines:119 gregtech TRUE gregapi_post
552 gt.recipe.assembler gt.recipe.alloysmelter gregtech:gt.blockmachines:211 gregtech:gt.blockmachines:201 gregtech TRUE gregapi_post
553 gt.recipe.assembler gt.recipe.alloysmelter gregtech:gt.blockmachines:212 gregtech:gt.blockmachines:202 gregtech TRUE gregapi_post
554 gt.recipe.assembler gt.recipe.alloysmelter gregtech:gt.blockmachines:213 gregtech:gt.blockmachines:203 gregtech TRUE gregapi_post
555 gt.recipe.assembler gt.recipe.alloysmelter gregtech:gt.blockmachines:214 gregtech:gt.blockmachines:204 gregtech TRUE gregapi_post
556 gt.recipe.assembler gt.recipe.alloysmelter gregtech:gt.blockmachines:215 gregtech:gt.blockmachines:205 gregtech TRUE gregapi_post
557 gt.recipe.metalbender gt.recipe.assembler gregtech:gt.blockmachines:221 gregtech:gt.blockmachines:211 gregtech TRUE gregapi_post
558 gt.recipe.metalbender gt.recipe.assembler gregtech:gt.blockmachines:222 gregtech:gt.blockmachines:212 gregtech TRUE gregapi_post
559 gt.recipe.metalbender gt.recipe.assembler gregtech:gt.blockmachines:223 gregtech:gt.blockmachines:213 gregtech TRUE gregapi_post
560 gt.recipe.metalbender gt.recipe.assembler gregtech:gt.blockmachines:224 gregtech:gt.blockmachines:214 gregtech TRUE gregapi_post
561 gt.recipe.metalbender gt.recipe.assembler gregtech:gt.blockmachines:225 gregtech:gt.blockmachines:215 gregtech TRUE gregapi_post
562 gt.recipe.canner gt.recipe.metalbender gregtech:gt.blockmachines:231 gregtech:gt.blockmachines:221 gregtech TRUE gregapi_post
563 gt.recipe.canner gt.recipe.metalbender gregtech:gt.blockmachines:232 gregtech:gt.blockmachines:222 gregtech TRUE gregapi_post
564 gt.recipe.canner gt.recipe.metalbender gregtech:gt.blockmachines:233 gregtech:gt.blockmachines:223 gregtech TRUE gregapi_post
565 gt.recipe.canner gt.recipe.metalbender gregtech:gt.blockmachines:234 gregtech:gt.blockmachines:224 gregtech TRUE gregapi_post
566 gt.recipe.canner gt.recipe.metalbender gregtech:gt.blockmachines:235 gregtech:gt.blockmachines:225 gregtech TRUE gregapi_post
567 gt.recipe.compressor gt.recipe.canner gregtech:gt.blockmachines:241 gregtech:gt.blockmachines:231 gregtech TRUE gregapi_post
568 gt.recipe.compressor gt.recipe.canner gregtech:gt.blockmachines:242 gregtech:gt.blockmachines:232 gregtech TRUE gregapi_post
569 gt.recipe.compressor gt.recipe.canner gregtech:gt.blockmachines:243 gregtech:gt.blockmachines:233 gregtech TRUE gregapi_post
570 gt.recipe.compressor gt.recipe.canner gregtech:gt.blockmachines:244 gregtech:gt.blockmachines:234 gregtech TRUE gregapi_post
571 gt.recipe.compressor gt.recipe.canner gregtech:gt.blockmachines:245 gregtech:gt.blockmachines:235 gregtech TRUE gregapi_post
572 gt.recipe.cuttingsaw gt.recipe.compressor gregtech:gt.blockmachines:251 gregtech:gt.blockmachines:241 gregtech TRUE gregapi_post
573 gt.recipe.cuttingsaw gt.recipe.compressor gregtech:gt.blockmachines:252 gregtech:gt.blockmachines:242 gregtech TRUE gregapi_post
574 gt.recipe.cuttingsaw gt.recipe.compressor gregtech:gt.blockmachines:253 gregtech:gt.blockmachines:243 gregtech TRUE gregapi_post
575 gt.recipe.cuttingsaw gt.recipe.compressor gregtech:gt.blockmachines:254 gregtech:gt.blockmachines:244 gregtech TRUE gregapi_post
576 gt.recipe.cuttingsaw gt.recipe.compressor gregtech:gt.blockmachines:255 gregtech:gt.blockmachines:245 gregtech TRUE gregapi_post
577 smelting gt.recipe.cuttingsaw gregtech:gt.blockmachines:261 gregtech:gt.blockmachines:251 gregtech TRUE gregapi_post
578 smelting gt.recipe.cuttingsaw gregtech:gt.blockmachines:262 gregtech:gt.blockmachines:252 gregtech TRUE gregapi_post
579 smelting gt.recipe.cuttingsaw gregtech:gt.blockmachines:263 gregtech:gt.blockmachines:253 gregtech TRUE gregapi_post
580 smelting gt.recipe.cuttingsaw gregtech:gt.blockmachines:264 gregtech:gt.blockmachines:254 gregtech TRUE gregapi_post
581 smelting gt.recipe.cuttingsaw gregtech:gt.blockmachines:265 gregtech:gt.blockmachines:255 gregtech TRUE gregapi_post
582 gt.recipe.extractor smelting gregtech:gt.blockmachines:271 gregtech:gt.blockmachines:261 gregtech TRUE gregapi_post
583 gt.recipe.extractor smelting gregtech:gt.blockmachines:272 gregtech:gt.blockmachines:262 gregtech TRUE gregapi_post
584 gt.recipe.extractor smelting gregtech:gt.blockmachines:273 gregtech:gt.blockmachines:263 gregtech TRUE gregapi_post
585 gt.recipe.extractor smelting gregtech:gt.blockmachines:274 gregtech:gt.blockmachines:264 gregtech TRUE gregapi_post
586 gt.recipe.extractor smelting gregtech:gt.blockmachines:275 gregtech:gt.blockmachines:265 gregtech TRUE gregapi_post
587 gt.recipe.extruder gt.recipe.extractor gregtech:gt.blockmachines:281 gregtech:gt.blockmachines:271 gregtech TRUE gregapi_post
588 gt.recipe.extruder gt.recipe.extractor gregtech:gt.blockmachines:282 gregtech:gt.blockmachines:272 gregtech TRUE gregapi_post
589 gt.recipe.extruder gt.recipe.extractor gregtech:gt.blockmachines:283 gregtech:gt.blockmachines:273 gregtech TRUE gregapi_post
590 gt.recipe.extruder gt.recipe.extractor gregtech:gt.blockmachines:284 gregtech:gt.blockmachines:274 gregtech TRUE gregapi_post
591 gt.recipe.extruder gt.recipe.extractor gregtech:gt.blockmachines:285 gregtech:gt.blockmachines:275 gregtech TRUE gregapi_post
592 gt.recipe.lathe gt.recipe.extruder gregtech:gt.blockmachines:291 gregtech:gt.blockmachines:281 gregtech TRUE gregapi_post
593 gt.recipe.lathe gt.recipe.extruder gregtech:gt.blockmachines:292 gregtech:gt.blockmachines:282 gregtech TRUE gregapi_post
594 gt.recipe.lathe gt.recipe.extruder gregtech:gt.blockmachines:293 gregtech:gt.blockmachines:283 gregtech TRUE gregapi_post
595 gt.recipe.lathe gt.recipe.extruder gregtech:gt.blockmachines:294 gregtech:gt.blockmachines:284 gregtech TRUE gregapi_post
596 gt.recipe.lathe gt.recipe.extruder gregtech:gt.blockmachines:295 gregtech:gt.blockmachines:285 gregtech TRUE gregapi_post
597 gt.recipe.macerator gt.recipe.lathe gregtech:gt.blockmachines:301 gregtech:gt.blockmachines:291 gregtech TRUE gregapi_post
598 gt.recipe.macerator gt.recipe.lathe gregtech:gt.blockmachines:302 gregtech:gt.blockmachines:292 gregtech TRUE gregapi_post
599 gt.recipe.macerator gt.recipe.lathe gregtech:gt.blockmachines:303 gregtech:gt.blockmachines:293 gregtech TRUE gregapi_post
600 gt.recipe.macerator gt.recipe.lathe gregtech:gt.blockmachines:304 gregtech:gt.blockmachines:294 gregtech TRUE gregapi_post
601 gt.recipe.macerator gt.recipe.lathe gregtech:gt.blockmachines:305 gregtech:gt.blockmachines:295 gregtech TRUE gregapi_post
602 smelting gt.recipe.macerator gregtech:gt.blockmachines:311 gregtech:gt.blockmachines:301 gregtech TRUE gregapi_post
603 smelting gt.recipe.macerator gregtech:gt.blockmachines:312 gregtech:gt.blockmachines:302 gregtech TRUE gregapi_post
604 smelting gt.recipe.macerator gregtech:gt.blockmachines:313 gregtech:gt.blockmachines:303 gregtech TRUE gregapi_post
605 smelting gt.recipe.macerator gregtech:gt.blockmachines:314 gregtech:gt.blockmachines:304 gregtech TRUE gregapi_post
606 smelting gt.recipe.macerator gregtech:gt.blockmachines:315 gregtech:gt.blockmachines:305 gregtech TRUE gregapi_post
607 gt.recipe.printer smelting gregtech:gt.blockmachines:321 gregtech:gt.blockmachines:311 gregtech TRUE gregapi_post
608 gt.recipe.printer smelting gregtech:gt.blockmachines:322 gregtech:gt.blockmachines:312 gregtech TRUE gregapi_post
609 gt.recipe.printer smelting gregtech:gt.blockmachines:323 gregtech:gt.blockmachines:313 gregtech TRUE gregapi_post
610 gt.recipe.printer smelting gregtech:gt.blockmachines:324 gregtech:gt.blockmachines:314 gregtech TRUE gregapi_post
611 gt.recipe.printer smelting gregtech:gt.blockmachines:325 gregtech:gt.blockmachines:315 gregtech TRUE gregapi_post
612 gt.recipe.printer gregtech:gt.blockmachines:326 gregtech:gt.blockmachines:321 gregtech TRUE gregapi_post
613 gt.recipe.printer gregtech:gt.blockmachines:327 gregtech:gt.blockmachines:322 gregtech TRUE gregapi_post
614 gt.recipe.printer gregtech:gt.blockmachines:328 gregtech:gt.blockmachines:323 gregtech TRUE gregapi_post
615 ic2.recycler gt.recipe.printer gregtech:gt.blockmachines:331 gregtech:gt.blockmachines:324 gregtech TRUE gregapi_post
616 ic2.recycler gt.recipe.printer gregtech:gt.blockmachines:332 gregtech:gt.blockmachines:325 gregtech TRUE gregapi_post
617 ic2.recycler gt.recipe.printer gregtech:gt.blockmachines:333 gregtech:gt.blockmachines:326 gregtech TRUE gregapi_post
618 ic2.recycler gt.recipe.printer gregtech:gt.blockmachines:334 gregtech:gt.blockmachines:327 gregtech TRUE gregapi_post
619 ic2.recycler gt.recipe.printer gregtech:gt.blockmachines:335 gregtech:gt.blockmachines:328 gregtech TRUE gregapi_post
620 gt.recipe.scanner ic2.recycler gregtech:gt.blockmachines:341 gregtech:gt.blockmachines:331 gregtech TRUE gregapi_post
621 gt.recipe.scanner ic2.recycler gregtech:gt.blockmachines:342 gregtech:gt.blockmachines:332 gregtech TRUE gregapi_post
622 gt.recipe.scanner ic2.recycler gregtech:gt.blockmachines:343 gregtech:gt.blockmachines:333 gregtech TRUE gregapi_post
623 gt.recipe.scanner ic2.recycler gregtech:gt.blockmachines:344 gregtech:gt.blockmachines:334 gregtech TRUE gregapi_post
624 gt.recipe.scanner ic2.recycler gregtech:gt.blockmachines:345 gregtech:gt.blockmachines:335 gregtech TRUE gregapi_post
625 gt.recipe.wiremill gt.recipe.scanner gregtech:gt.blockmachines:351 gregtech:gt.blockmachines:341 gregtech TRUE gregapi_post
626 gt.recipe.wiremill gt.recipe.scanner gregtech:gt.blockmachines:352 gregtech:gt.blockmachines:342 gregtech TRUE gregapi_post
627 gt.recipe.wiremill gt.recipe.scanner gregtech:gt.blockmachines:353 gregtech:gt.blockmachines:343 gregtech TRUE gregapi_post
628 gt.recipe.wiremill gt.recipe.scanner gregtech:gt.blockmachines:354 gregtech:gt.blockmachines:344 gregtech TRUE gregapi_post
629 gt.recipe.wiremill gt.recipe.scanner gregtech:gt.blockmachines:355 gregtech:gt.blockmachines:345 gregtech TRUE gregapi_post
630 gt.recipe.centrifuge gt.recipe.wiremill gregtech:gt.blockmachines:361 gregtech:gt.blockmachines:351 gregtech TRUE gregapi_post
631 gt.recipe.centrifuge gt.recipe.wiremill gregtech:gt.blockmachines:362 gregtech:gt.blockmachines:352 gregtech TRUE gregapi_post
632 gt.recipe.centrifuge gt.recipe.wiremill gregtech:gt.blockmachines:363 gregtech:gt.blockmachines:353 gregtech TRUE gregapi_post
633 gt.recipe.centrifuge gt.recipe.wiremill gregtech:gt.blockmachines:364 gregtech:gt.blockmachines:354 gregtech TRUE gregapi_post
634 gt.recipe.centrifuge gt.recipe.wiremill gregtech:gt.blockmachines:365 gregtech:gt.blockmachines:355 gregtech TRUE gregapi_post
635 gt.recipe.electrolyzer gt.recipe.centrifuge gregtech:gt.blockmachines:371 gregtech:gt.blockmachines:361 gregtech TRUE gregapi_post
636 gt.recipe.electrolyzer gt.recipe.centrifuge gregtech:gt.blockmachines:372 gregtech:gt.blockmachines:362 gregtech TRUE gregapi_post
637 gt.recipe.electrolyzer gt.recipe.centrifuge gregtech:gt.blockmachines:373 gregtech:gt.blockmachines:363 gregtech TRUE gregapi_post
638 gt.recipe.electrolyzer gt.recipe.centrifuge gregtech:gt.blockmachines:374 gregtech:gt.blockmachines:364 gregtech TRUE gregapi_post
639 gt.recipe.electrolyzer gt.recipe.centrifuge gregtech:gt.blockmachines:375 gregtech:gt.blockmachines:365 gregtech TRUE gregapi_post
640 gt.recipe.thermalcentrifuge gt.recipe.electrolyzer gregtech:gt.blockmachines:381 gregtech:gt.blockmachines:371 gregtech TRUE gregapi_post
641 gt.recipe.thermalcentrifuge gt.recipe.electrolyzer gregtech:gt.blockmachines:382 gregtech:gt.blockmachines:372 gregtech TRUE gregapi_post
642 gt.recipe.thermalcentrifuge gt.recipe.electrolyzer gregtech:gt.blockmachines:383 gregtech:gt.blockmachines:373 gregtech TRUE gregapi_post
643 gt.recipe.thermalcentrifuge gt.recipe.electrolyzer gregtech:gt.blockmachines:384 gregtech:gt.blockmachines:374 gregtech TRUE gregapi_post
644 gt.recipe.thermalcentrifuge gt.recipe.electrolyzer gregtech:gt.blockmachines:385 gregtech:gt.blockmachines:375 gregtech TRUE gregapi_post
645 gt.recipe.orewasher gt.recipe.thermalcentrifuge gregtech:gt.blockmachines:391 gregtech:gt.blockmachines:381 gregtech TRUE gregapi_post
646 gt.recipe.orewasher gt.recipe.thermalcentrifuge gregtech:gt.blockmachines:392 gregtech:gt.blockmachines:382 gregtech TRUE gregapi_post
647 gt.recipe.orewasher gt.recipe.thermalcentrifuge gregtech:gt.blockmachines:393 gregtech:gt.blockmachines:383 gregtech TRUE gregapi_post
648 gt.recipe.orewasher gt.recipe.thermalcentrifuge gregtech:gt.blockmachines:394 gregtech:gt.blockmachines:384 gregtech TRUE gregapi_post
649 gt.recipe.orewasher gt.recipe.thermalcentrifuge gregtech:gt.blockmachines:395 gregtech:gt.blockmachines:385 gregtech TRUE gregapi_post
650 gt.recipe.packager gt.recipe.orewasher gregtech:gt.blockmachines:401 gregtech:gt.blockmachines:391 gregtech TRUE gregapi_post
651 gt.recipe.packager gt.recipe.orewasher gregtech:gt.blockmachines:402 gregtech:gt.blockmachines:392 gregtech TRUE gregapi_post
652 gt.recipe.packager gt.recipe.orewasher gregtech:gt.blockmachines:403 gregtech:gt.blockmachines:393 gregtech TRUE gregapi_post
653 gt.recipe.packager gt.recipe.orewasher gregtech:gt.blockmachines:404 gregtech:gt.blockmachines:394 gregtech TRUE gregapi_post
654 gt.recipe.packager gt.recipe.orewasher gregtech:gt.blockmachines:405 gregtech:gt.blockmachines:395 gregtech TRUE gregapi_post
655 gt.recipe.packager gregtech:gt.blockmachines:406 gregtech:gt.blockmachines:401 gregtech TRUE gregapi_post
656 gt.recipe.packager gregtech:gt.blockmachines:407 gregtech:gt.blockmachines:402 gregtech TRUE gregapi_post
657 gt.recipe.packager gregtech:gt.blockmachines:408 gregtech:gt.blockmachines:403 gregtech TRUE gregapi_post
658 gt.recipe.unpackager gt.recipe.packager gregtech:gt.blockmachines:411 gregtech:gt.blockmachines:404 gregtech TRUE gregapi_post
659 gt.recipe.unpackager gt.recipe.packager gregtech:gt.blockmachines:412 gregtech:gt.blockmachines:405 gregtech TRUE gregapi_post
660 gt.recipe.unpackager gt.recipe.packager gregtech:gt.blockmachines:413 gregtech:gt.blockmachines:406 gregtech TRUE gregapi_post
661 gt.recipe.unpackager gt.recipe.packager gregtech:gt.blockmachines:414 gregtech:gt.blockmachines:407 gregtech TRUE gregapi_post
662 gt.recipe.unpackager gt.recipe.packager gregtech:gt.blockmachines:415 gregtech:gt.blockmachines:408 gregtech TRUE gregapi_post
663 gt.recipe.unpackager gregtech:gt.blockmachines:416 gregtech:gt.blockmachines:411 gregtech TRUE gregapi_post
664 gt.recipe.unpackager gregtech:gt.blockmachines:417 gregtech:gt.blockmachines:412 gregtech TRUE gregapi_post
665 gt.recipe.unpackager gregtech:gt.blockmachines:418 gregtech:gt.blockmachines:413 gregtech TRUE gregapi_post
666 gt.recipe.chemicalreactor gt.recipe.unpackager gregtech:gt.blockmachines:421 gregtech:gt.blockmachines:414 gregtech TRUE gregapi_post
667 gt.recipe.chemicalreactor gt.recipe.unpackager gregtech:gt.blockmachines:422 gregtech:gt.blockmachines:415 gregtech TRUE gregapi_post
668 gt.recipe.chemicalreactor gt.recipe.unpackager gregtech:gt.blockmachines:423 gregtech:gt.blockmachines:416 gregtech TRUE gregapi_post
669 gt.recipe.chemicalreactor gt.recipe.unpackager gregtech:gt.blockmachines:424 gregtech:gt.blockmachines:417 gregtech TRUE gregapi_post
670 gt.recipe.chemicalreactor gt.recipe.unpackager gregtech:gt.blockmachines:425 gregtech:gt.blockmachines:418 gregtech TRUE gregapi_post
671 gt.recipe.fluidcanner gt.recipe.chemicalreactor gregtech:gt.blockmachines:431 gregtech:gt.blockmachines:421 gregtech TRUE gregapi_post
672 gt.recipe.fluidcanner gt.recipe.chemicalreactor gregtech:gt.blockmachines:432 gregtech:gt.blockmachines:422 gregtech TRUE gregapi_post
673 gt.recipe.fluidcanner gt.recipe.chemicalreactor gregtech:gt.blockmachines:433 gregtech:gt.blockmachines:423 gregtech TRUE gregapi_post
674 gt.recipe.fluidcanner gt.recipe.chemicalreactor gregtech:gt.blockmachines:434 gregtech:gt.blockmachines:424 gregtech TRUE gregapi_post
675 gt.recipe.fluidcanner gt.recipe.chemicalreactor gregtech:gt.blockmachines:435 gregtech:gt.blockmachines:425 gregtech TRUE gregapi_post
676 gt.recipe.rockbreaker gt.recipe.fluidcanner gregtech:gt.blockmachines:441 gregtech:gt.blockmachines:431 gregtech TRUE gregapi_post
677 gt.recipe.rockbreaker gt.recipe.fluidcanner gregtech:gt.blockmachines:442 gregtech:gt.blockmachines:432 gregtech TRUE gregapi_post
678 gt.recipe.rockbreaker gt.recipe.fluidcanner gregtech:gt.blockmachines:443 gregtech:gt.blockmachines:433 gregtech TRUE gregapi_post
679 gt.recipe.rockbreaker gt.recipe.fluidcanner gregtech:gt.blockmachines:444 gregtech:gt.blockmachines:434 gregtech TRUE gregapi_post
680 gt.recipe.rockbreaker gt.recipe.fluidcanner gregtech:gt.blockmachines:445 gregtech:gt.blockmachines:435 gregtech TRUE gregapi_post
681 gt.recipe.massfab gt.recipe.rockbreaker gregtech:gt.blockmachines:461 gregtech:gt.blockmachines:441 gregtech TRUE gregapi_post
682 gt.recipe.massfab gt.recipe.rockbreaker gregtech:gt.blockmachines:462 gregtech:gt.blockmachines:442 gregtech TRUE gregapi_post
683 gt.recipe.massfab gt.recipe.rockbreaker gregtech:gt.blockmachines:463 gregtech:gt.blockmachines:443 gregtech TRUE gregapi_post
684 gt.recipe.massfab gt.recipe.rockbreaker gregtech:gt.blockmachines:464 gregtech:gt.blockmachines:444 gregtech TRUE gregapi_post
685 gt.recipe.massfab gt.recipe.rockbreaker gregtech:gt.blockmachines:465 gregtech:gt.blockmachines:445 gregtech TRUE gregapi_post
686 gt.recipe.uuamplifier gt.recipe.massfab gregtech:gt.blockmachines:471 gregtech:gt.blockmachines:461 gregtech TRUE gregapi_post
687 gt.recipe.uuamplifier gt.recipe.massfab gregtech:gt.blockmachines:472 gregtech:gt.blockmachines:462 gregtech TRUE gregapi_post
688 gt.recipe.uuamplifier gt.recipe.massfab gregtech:gt.blockmachines:473 gregtech:gt.blockmachines:463 gregtech TRUE gregapi_post
689 gt.recipe.uuamplifier gt.recipe.massfab gregtech:gt.blockmachines:474 gregtech:gt.blockmachines:464 gregtech TRUE gregapi_post
690 gt.recipe.uuamplifier gt.recipe.massfab gregtech:gt.blockmachines:475 gregtech:gt.blockmachines:465 gregtech TRUE gregapi_post
691 gt.recipe.replicator gt.recipe.uuamplifier gregtech:gt.blockmachines:481 gregtech:gt.blockmachines:471 gregtech TRUE gregapi_post
692 gt.recipe.replicator gt.recipe.uuamplifier gregtech:gt.blockmachines:482 gregtech:gt.blockmachines:472 gregtech TRUE gregapi_post
693 gt.recipe.replicator gt.recipe.uuamplifier gregtech:gt.blockmachines:483 gregtech:gt.blockmachines:473 gregtech TRUE gregapi_post
694 gt.recipe.replicator gt.recipe.uuamplifier gregtech:gt.blockmachines:484 gregtech:gt.blockmachines:474 gregtech TRUE gregapi_post
695 gt.recipe.replicator gt.recipe.uuamplifier gregtech:gt.blockmachines:485 gregtech:gt.blockmachines:475 gregtech TRUE gregapi_post
696 gt.recipe.brewer gt.recipe.replicator gregtech:gt.blockmachines:491 gregtech:gt.blockmachines:481 gregtech TRUE gregapi_post
697 gt.recipe.brewer gt.recipe.replicator gregtech:gt.blockmachines:492 gregtech:gt.blockmachines:482 gregtech TRUE gregapi_post
698 gt.recipe.brewer gt.recipe.replicator gregtech:gt.blockmachines:493 gregtech:gt.blockmachines:483 gregtech TRUE gregapi_post
699 gt.recipe.brewer gt.recipe.replicator gregtech:gt.blockmachines:494 gregtech:gt.blockmachines:484 gregtech TRUE gregapi_post
700 gt.recipe.brewer gt.recipe.replicator gregtech:gt.blockmachines:495 gregtech:gt.blockmachines:485 gregtech TRUE gregapi_post
701 gt.recipe.fermenter gt.recipe.brewer gregtech:gt.blockmachines:501 gregtech:gt.blockmachines:491 gregtech TRUE gregapi_post
702 gt.recipe.fermenter gt.recipe.brewer gregtech:gt.blockmachines:502 gregtech:gt.blockmachines:492 gregtech TRUE gregapi_post
703 gt.recipe.fermenter gt.recipe.brewer gregtech:gt.blockmachines:503 gregtech:gt.blockmachines:493 gregtech TRUE gregapi_post
704 gt.recipe.fermenter gt.recipe.brewer gregtech:gt.blockmachines:504 gregtech:gt.blockmachines:494 gregtech TRUE gregapi_post
705 gt.recipe.fermenter gt.recipe.brewer gregtech:gt.blockmachines:505 gregtech:gt.blockmachines:495 gregtech TRUE gregapi_post
706 gt.recipe.fluidextractor gt.recipe.fermenter gregtech:gt.blockmachines:511 gregtech:gt.blockmachines:501 gregtech TRUE gregapi_post
707 gt.recipe.fluidextractor gt.recipe.fermenter gregtech:gt.blockmachines:512 gregtech:gt.blockmachines:502 gregtech TRUE gregapi_post
708 gt.recipe.fluidextractor gt.recipe.fermenter gregtech:gt.blockmachines:513 gregtech:gt.blockmachines:503 gregtech TRUE gregapi_post
709 gt.recipe.fluidextractor gt.recipe.fermenter gregtech:gt.blockmachines:514 gregtech:gt.blockmachines:504 gregtech TRUE gregapi_post
710 gt.recipe.fluidextractor gt.recipe.fermenter gregtech:gt.blockmachines:515 gregtech:gt.blockmachines:505 gregtech TRUE gregapi_post
711 gt.recipe.fluidsolidifier gt.recipe.fluidextractor gregtech:gt.blockmachines:521 gregtech:gt.blockmachines:511 gregtech TRUE gregapi_post
712 gt.recipe.fluidsolidifier gt.recipe.fluidextractor gregtech:gt.blockmachines:522 gregtech:gt.blockmachines:512 gregtech TRUE gregapi_post
713 gt.recipe.fluidsolidifier gt.recipe.fluidextractor gregtech:gt.blockmachines:523 gregtech:gt.blockmachines:513 gregtech TRUE gregapi_post
714 gt.recipe.fluidsolidifier gt.recipe.fluidextractor gregtech:gt.blockmachines:524 gregtech:gt.blockmachines:514 gregtech TRUE gregapi_post
715 gt.recipe.fluidsolidifier gt.recipe.fluidextractor gregtech:gt.blockmachines:525 gregtech:gt.blockmachines:515 gregtech TRUE gregapi_post
716 gt.recipe.distillery gt.recipe.fluidsolidifier gregtech:gt.blockmachines:531 gregtech:gt.blockmachines:521 gregtech TRUE gregapi_post
717 gt.recipe.distillery gt.recipe.fluidsolidifier gregtech:gt.blockmachines:532 gregtech:gt.blockmachines:522 gregtech TRUE gregapi_post
718 gt.recipe.distillery gt.recipe.fluidsolidifier gregtech:gt.blockmachines:533 gregtech:gt.blockmachines:523 gregtech TRUE gregapi_post
719 gt.recipe.distillery gt.recipe.fluidsolidifier gregtech:gt.blockmachines:534 gregtech:gt.blockmachines:524 gregtech TRUE gregapi_post
720 gt.recipe.distillery gt.recipe.fluidsolidifier gregtech:gt.blockmachines:535 gregtech:gt.blockmachines:525 gregtech TRUE gregapi_post
721 gt.recipe.chemicalbath gt.recipe.distillery gregtech:gt.blockmachines:541 gregtech:gt.blockmachines:531 gregtech TRUE gregapi_post
722 gt.recipe.chemicalbath gt.recipe.distillery gregtech:gt.blockmachines:542 gregtech:gt.blockmachines:532 gregtech TRUE gregapi_post
723 gt.recipe.chemicalbath gt.recipe.distillery gregtech:gt.blockmachines:543 gregtech:gt.blockmachines:533 gregtech TRUE gregapi_post
724 gt.recipe.chemicalbath gt.recipe.distillery gregtech:gt.blockmachines:544 gregtech:gt.blockmachines:534 gregtech TRUE gregapi_post
725 gt.recipe.chemicalbath gt.recipe.distillery gregtech:gt.blockmachines:545 gregtech:gt.blockmachines:535 gregtech TRUE gregapi_post
726 gt.recipe.polarizer gt.recipe.chemicalbath gregtech:gt.blockmachines:551 gregtech:gt.blockmachines:541 gregtech TRUE gregapi_post
727 gt.recipe.polarizer gt.recipe.chemicalbath gregtech:gt.blockmachines:552 gregtech:gt.blockmachines:542 gregtech TRUE gregapi_post
728 gt.recipe.polarizer gt.recipe.chemicalbath gregtech:gt.blockmachines:553 gregtech:gt.blockmachines:543 gregtech TRUE gregapi_post
729 gt.recipe.polarizer gt.recipe.chemicalbath gregtech:gt.blockmachines:554 gregtech:gt.blockmachines:544 gregtech TRUE gregapi_post
730 gt.recipe.polarizer gt.recipe.chemicalbath gregtech:gt.blockmachines:555 gregtech:gt.blockmachines:545 gregtech TRUE gregapi_post
731 gt.recipe.electromagneticseparator gt.recipe.polarizer gregtech:gt.blockmachines:561 gregtech:gt.blockmachines:551 gregtech TRUE gregapi_post
732 gt.recipe.electromagneticseparator gt.recipe.polarizer gregtech:gt.blockmachines:562 gregtech:gt.blockmachines:552 gregtech TRUE gregapi_post
733 gt.recipe.electromagneticseparator gt.recipe.polarizer gregtech:gt.blockmachines:563 gregtech:gt.blockmachines:553 gregtech TRUE gregapi_post
734 gt.recipe.electromagneticseparator gt.recipe.polarizer gregtech:gt.blockmachines:564 gregtech:gt.blockmachines:554 gregtech TRUE gregapi_post
735 gt.recipe.electromagneticseparator gt.recipe.polarizer gregtech:gt.blockmachines:565 gregtech:gt.blockmachines:555 gregtech TRUE gregapi_post
736 gt.recipe.autoclave gt.recipe.electromagneticseparator gregtech:gt.blockmachines:571 gregtech:gt.blockmachines:561 gregtech TRUE gregapi_post
737 gt.recipe.autoclave gt.recipe.electromagneticseparator gregtech:gt.blockmachines:572 gregtech:gt.blockmachines:562 gregtech TRUE gregapi_post
738 gt.recipe.autoclave gt.recipe.electromagneticseparator gregtech:gt.blockmachines:573 gregtech:gt.blockmachines:563 gregtech TRUE gregapi_post
739 gt.recipe.autoclave gt.recipe.electromagneticseparator gregtech:gt.blockmachines:574 gregtech:gt.blockmachines:564 gregtech TRUE gregapi_post
740 gt.recipe.autoclave gt.recipe.electromagneticseparator gregtech:gt.blockmachines:575 gregtech:gt.blockmachines:565 gregtech TRUE gregapi_post
741 gt.recipe.mixer gt.recipe.autoclave gregtech:gt.blockmachines:581 gregtech:gt.blockmachines:571 gregtech TRUE gregapi_post
742 gt.recipe.mixer gt.recipe.autoclave gregtech:gt.blockmachines:582 gregtech:gt.blockmachines:572 gregtech TRUE gregapi_post
743 gt.recipe.mixer gt.recipe.autoclave gregtech:gt.blockmachines:583 gregtech:gt.blockmachines:573 gregtech TRUE gregapi_post
744 gt.recipe.mixer gt.recipe.autoclave gregtech:gt.blockmachines:584 gregtech:gt.blockmachines:574 gregtech TRUE gregapi_post
745 gt.recipe.mixer gt.recipe.autoclave gregtech:gt.blockmachines:585 gregtech:gt.blockmachines:575 gregtech TRUE gregapi_post
746 gt.recipe.laserengraver gt.recipe.mixer gregtech:gt.blockmachines:591 gregtech:gt.blockmachines:581 gregtech TRUE gregapi_post
747 gt.recipe.laserengraver gt.recipe.mixer gregtech:gt.blockmachines:592 gregtech:gt.blockmachines:582 gregtech TRUE gregapi_post
748 gt.recipe.laserengraver gt.recipe.mixer gregtech:gt.blockmachines:593 gregtech:gt.blockmachines:583 gregtech TRUE gregapi_post
749 gt.recipe.laserengraver gt.recipe.mixer gregtech:gt.blockmachines:594 gregtech:gt.blockmachines:584 gregtech TRUE gregapi_post
750 gt.recipe.laserengraver gt.recipe.mixer gregtech:gt.blockmachines:595 gregtech:gt.blockmachines:585 gregtech TRUE gregapi_post
751 gt.recipe.press gt.recipe.laserengraver gregtech:gt.blockmachines:601 gregtech:gt.blockmachines:591 gregtech TRUE gregapi_post
752 gt.recipe.press gt.recipe.laserengraver gregtech:gt.blockmachines:602 gregtech:gt.blockmachines:592 gregtech TRUE gregapi_post
753 gt.recipe.press gt.recipe.laserengraver gregtech:gt.blockmachines:603 gregtech:gt.blockmachines:593 gregtech TRUE gregapi_post
754 gt.recipe.press gt.recipe.laserengraver gregtech:gt.blockmachines:604 gregtech:gt.blockmachines:594 gregtech TRUE gregapi_post
755 gt.recipe.press gt.recipe.laserengraver gregtech:gt.blockmachines:605 gregtech:gt.blockmachines:595 gregtech TRUE gregapi_post
756 gt.recipe.hammer gt.recipe.press gregtech:gt.blockmachines:611 gregtech:gt.blockmachines:601 gregtech TRUE gregapi_post
757 gt.recipe.hammer gt.recipe.press gregtech:gt.blockmachines:612 gregtech:gt.blockmachines:602 gregtech TRUE gregapi_post
758 gt.recipe.hammer gt.recipe.press gregtech:gt.blockmachines:613 gregtech:gt.blockmachines:603 gregtech TRUE gregapi_post
759 gt.recipe.hammer gt.recipe.press gregtech:gt.blockmachines:614 gregtech:gt.blockmachines:604 gregtech TRUE gregapi_post
760 gt.recipe.hammer gt.recipe.press gregtech:gt.blockmachines:615 gregtech:gt.blockmachines:605 gregtech TRUE gregapi_post
761 gt.recipe.fluidheater gt.recipe.hammer gregtech:gt.blockmachines:621 gregtech:gt.blockmachines:611 gregtech TRUE gregapi_post
762 gt.recipe.fluidheater gt.recipe.hammer gregtech:gt.blockmachines:622 gregtech:gt.blockmachines:612 gregtech TRUE gregapi_post
763 gt.recipe.fluidheater gt.recipe.hammer gregtech:gt.blockmachines:623 gregtech:gt.blockmachines:613 gregtech TRUE gregapi_post
764 gt.recipe.fluidheater gt.recipe.hammer gregtech:gt.blockmachines:624 gregtech:gt.blockmachines:614 gregtech TRUE gregapi_post
765 gt.recipe.fluidheater gt.recipe.hammer gregtech:gt.blockmachines:625 gregtech:gt.blockmachines:615 gregtech TRUE gregapi_post
766 gt.recipe.slicer gt.recipe.fluidheater gregtech:gt.blockmachines:631 gregtech:gt.blockmachines:621 gregtech TRUE gregapi_post
767 gt.recipe.slicer gt.recipe.fluidheater gregtech:gt.blockmachines:632 gregtech:gt.blockmachines:622 gregtech TRUE gregapi_post
768 gt.recipe.slicer gt.recipe.fluidheater gregtech:gt.blockmachines:633 gregtech:gt.blockmachines:623 gregtech TRUE gregapi_post
769 gt.recipe.slicer gt.recipe.fluidheater gregtech:gt.blockmachines:634 gregtech:gt.blockmachines:624 gregtech TRUE gregapi_post
770 gt.recipe.slicer gt.recipe.fluidheater gregtech:gt.blockmachines:635 gregtech:gt.blockmachines:625 gregtech TRUE gregapi_post
771 gt.recipe.sifter gt.recipe.slicer gregtech:gt.blockmachines:641 gregtech:gt.blockmachines:631 gregtech TRUE gregapi_post
772 gt.recipe.sifter gt.recipe.slicer gregtech:gt.blockmachines:642 gregtech:gt.blockmachines:632 gregtech TRUE gregapi_post
773 gt.recipe.sifter gt.recipe.slicer gregtech:gt.blockmachines:643 gregtech:gt.blockmachines:633 gregtech TRUE gregapi_post
774 gt.recipe.sifter gt.recipe.slicer gregtech:gt.blockmachines:644 gregtech:gt.blockmachines:634 gregtech TRUE gregapi_post
775 gt.recipe.sifter gt.recipe.slicer gregtech:gt.blockmachines:645 gregtech:gt.blockmachines:635 gregtech TRUE gregapi_post
776 gt.recipe.arcfurnace gt.recipe.sifter gregtech:gt.blockmachines:651 gregtech:gt.blockmachines:641 gregtech TRUE gregapi_post
777 gt.recipe.arcfurnace gt.recipe.sifter gregtech:gt.blockmachines:652 gregtech:gt.blockmachines:642 gregtech TRUE gregapi_post
778 gt.recipe.arcfurnace gt.recipe.sifter gregtech:gt.blockmachines:653 gregtech:gt.blockmachines:643 gregtech TRUE gregapi_post
779 gt.recipe.arcfurnace gt.recipe.sifter gregtech:gt.blockmachines:654 gregtech:gt.blockmachines:644 gregtech TRUE gregapi_post
780 gt.recipe.arcfurnace gt.recipe.sifter gregtech:gt.blockmachines:655 gregtech:gt.blockmachines:645 gregtech TRUE gregapi_post
781 gt.recipe.plasmaarcfurnace gt.recipe.arcfurnace gregtech:gt.blockmachines:661 gregtech:gt.blockmachines:651 gregtech TRUE gregapi_post
782 gt.recipe.plasmaarcfurnace gt.recipe.arcfurnace gregtech:gt.blockmachines:662 gregtech:gt.blockmachines:652 gregtech TRUE gregapi_post
783 gt.recipe.plasmaarcfurnace gt.recipe.arcfurnace gregtech:gt.blockmachines:663 gregtech:gt.blockmachines:653 gregtech TRUE gregapi_post
784 gt.recipe.plasmaarcfurnace gt.recipe.arcfurnace gregtech:gt.blockmachines:664 gregtech:gt.blockmachines:654 gregtech TRUE gregapi_post
785 gt.recipe.plasmaarcfurnace gt.recipe.arcfurnace gregtech:gt.blockmachines:665 gregtech:gt.blockmachines:655 gregtech TRUE gregapi_post
786 smelting gt.recipe.plasmaarcfurnace gregtech:gt.blockmachines:671 gregtech:gt.blockmachines:661 gregtech TRUE gregapi_post
787 smelting gt.recipe.plasmaarcfurnace gregtech:gt.blockmachines:672 gregtech:gt.blockmachines:662 gregtech TRUE gregapi_post
788 smelting gt.recipe.plasmaarcfurnace gregtech:gt.blockmachines:673 gregtech:gt.blockmachines:663 gregtech TRUE gregapi_post
789 smelting gt.recipe.plasmaarcfurnace gregtech:gt.blockmachines:674 gregtech:gt.blockmachines:664 gregtech TRUE gregapi_post
790 smelting gt.recipe.plasmaarcfurnace gregtech:gt.blockmachines:675 gregtech:gt.blockmachines:665 gregtech TRUE gregapi_post
791 gt.recipe.blastfurnace smelting gregtech:gt.blockmachines:1000 gregtech:gt.blockmachines:671 gregtech TRUE gregapi_post
792 gt.recipe.implosioncompressor smelting gregtech:gt.blockmachines:1001 gregtech:gt.blockmachines:672 gregtech TRUE gregapi_post
793 gt.recipe.vacuumfreezer smelting gregtech:gt.blockmachines:1002 gregtech:gt.blockmachines:673 gregtech TRUE gregapi_post
794 smelting gregtech:gt.blockmachines:1003 gregtech:gt.blockmachines:674 gregtech TRUE gregapi_post
795 gt.recipe.dieselgeneratorfuel smelting gregtech:gt.blockmachines:1110 gregtech:gt.blockmachines:675 gregtech TRUE gregapi_post
796 gt.recipe.dieselgeneratorfuel gt.recipe.blastfurnace gregtech:gt.blockmachines:1111 gregtech:gt.blockmachines:1000 gregtech TRUE gregapi_post
797 gt.recipe.dieselgeneratorfuel gt.recipe.implosioncompressor gregtech:gt.blockmachines:1112 gregtech:gt.blockmachines:1001 gregtech TRUE gregapi_post
798 gt.recipe.gasturbinefuel gt.recipe.vacuumfreezer gregtech:gt.blockmachines:1115 gregtech:gt.blockmachines:1002 gregtech TRUE gregapi_post
799 gt.recipe.gasturbinefuel smelting gregtech:gt.blockmachines:1116 gregtech:gt.blockmachines:1003 gregtech TRUE gregapi_post
800 gt.recipe.gasturbinefuel gt.recipe.dieselgeneratorfuel gregtech:gt.blockmachines:1117 gregtech:gt.blockmachines:1110 gregtech TRUE gregapi_post
801 gt.recipe.fluidnaquadahreactor gt.recipe.dieselgeneratorfuel gregtech:gt.blockmachines:1190 gregtech:gt.blockmachines:1111 gregtech TRUE gregapi_post
802 gt.recipe.fluidnaquadahreactor gt.recipe.dieselgeneratorfuel gregtech:gt.blockmachines:1191 gregtech:gt.blockmachines:1112 gregtech TRUE gregapi_post
803 gt.recipe.fluidnaquadahreactor gt.recipe.gasturbinefuel gregtech:gt.blockmachines:1192 gregtech:gt.blockmachines:1115 gregtech TRUE gregapi_post
804 gt.recipe.fluidnaquadahreactor gt.recipe.gasturbinefuel gregtech:gt.blockmachines:1188 gregtech:gt.blockmachines:1116 gregtech TRUE gregapi_post
805 gt.recipe.fluidnaquadahreactor gt.recipe.gasturbinefuel gregtech:gt.blockmachines:1189 gregtech:gt.blockmachines:1117 gregtech TRUE gregapi_post
806 gt.recipe.magicfuels gt.recipe.fluidnaquadahreactor gregtech:gt.blockmachines:1123 gregtech:gt.blockmachines:1190 gregtech TRUE gregapi_post
807 gt.recipe.magicfuels gt.recipe.fluidnaquadahreactor gregtech:gt.blockmachines:1124 gregtech:gt.blockmachines:1191 gregtech TRUE gregapi_post
808 gt.recipe.magicfuels gt.recipe.fluidnaquadahreactor gregtech:gt.blockmachines:1125 gregtech:gt.blockmachines:1192 gregtech TRUE gregapi_post
809 gt.recipe.fusionreactor gt.recipe.fluidnaquadahreactor gregtech:gt.blockmachines:1193 gregtech:gt.blockmachines:1188 gregtech TRUE gregapi_post
810 gt.recipe.fusionreactor gt.recipe.fluidnaquadahreactor gregtech:gt.blockmachines:1194 gregtech:gt.blockmachines:1189 gregtech TRUE gregapi_post
811 gt.recipe.fusionreactor gt.recipe.magicfuels gregtech:gt.blockmachines:1195 gregtech:gt.blockmachines:1123 gregtech TRUE gregapi_post
812 gt.recipe.plasmageneratorfuels gt.recipe.magicfuels gregtech:gt.blockmachines:1196 gregtech:gt.blockmachines:1124 gregtech TRUE gregapi_post
813 gt.recipe.plasmageneratorfuels gt.recipe.magicfuels gregtech:gt.blockmachines:1197 gregtech:gt.blockmachines:1125 gregtech TRUE gregapi_post
814 gt.recipe.plasmageneratorfuels gt.recipe.fusionreactor gregtech:gt.blockmachines:1198 gregtech:gt.blockmachines:1193 gregtech TRUE gregapi_post
815 gt.recipe.distillationtower gt.recipe.fusionreactor gregtech:gt.blockmachines:1126 gregtech:gt.blockmachines:1194 gregtech TRUE gregapi_post
816 gt.recipe.gasturbinefuel gt.recipe.fusionreactor gregtech:gt.blockmachines:1151 gregtech:gt.blockmachines:1195 gregtech TRUE gregapi_post
817 gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:1153 gregtech:gt.blockmachines:1196 gregtech TRUE gregapi_post -10
818 gt.recipe.pyro gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:1159 gregtech:gt.blockmachines:1197 gregtech TRUE gregapi_post
819 gt.recipe.craker gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:1160 gregtech:gt.blockmachines:1198 gregtech TRUE gregapi_post
820 gt.recipe.fakeAssemblylineProcess gt.recipe.distillationtower gregtech:gt.blockmachines:1170 gregtech:gt.blockmachines:1126 gregtech TRUE gregapi_post
821 gt.recipe.dieselgeneratorfuel gt.recipe.gasturbinefuel gregtech:gt.blockmachines:1171 gregtech:gt.blockmachines:1151 gregtech TRUE gregapi_post -5
822 gt.recipe.extremedieselgeneratorfuel gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:2105 gregtech:gt.blockmachines:1153 gregtech TRUE gregapi_post -10
823 gt.recipe.circuitassembler gt.recipe.pyro gregtech:gt.blockmachines:1180 gregtech:gt.blockmachines:1159 gregtech TRUE gregapi_post
824 gt.recipe.circuitassembler gt.recipe.craker gregtech:gt.blockmachines:1181 gregtech:gt.blockmachines:1160 gregtech TRUE gregapi_post
825 gt.recipe.circuitassembler gt.recipe.fakeAssemblylineProcess gregtech:gt.blockmachines:1182 gregtech:gt.blockmachines:1170 gregtech TRUE gregapi_post
826 gt.recipe.circuitassembler gt.recipe.dieselgeneratorfuel gregtech:gt.blockmachines:1183 gregtech:gt.blockmachines:1171 gregtech TRUE gregapi_post -5
827 gt.recipe.circuitassembler gt.recipe.extremedieselgeneratorfuel gregtech:gt.blockmachines:1184 gregtech:gt.blockmachines:2105 gregtech TRUE gregapi_post
828 gt.recipe.circuitassembler gregtech:gt.blockmachines:1185 gregtech:gt.blockmachines:1180 gregtech TRUE gregapi_post
829 gt.recipe.circuitassembler gregtech:gt.blockmachines:1186 gregtech:gt.blockmachines:1181 gregtech TRUE gregapi_post
830 gt.recipe.circuitassembler gregtech:gt.blockmachines:1187 gregtech:gt.blockmachines:1182 gregtech TRUE gregapi_post
831 gt.recipe.largechemicalreactor gt.recipe.circuitassembler gregtech:gt.blockmachines:1169 gregtech:gt.blockmachines:1183 gregtech TRUE gregapi_post
832 gt.recipe.circuitassembler gregtech:gt.blockmachines:1184 gregtech TRUE gregapi_post
833 gt.recipe.circuitassembler gregtech:gt.blockmachines:1185 gregtech TRUE gregapi_post
834 gt.recipe.circuitassembler gregtech:gt.blockmachines:1186 gregtech TRUE gregapi_post
835 gt.recipe.circuitassembler gregtech:gt.blockmachines:1187 gregtech TRUE gregapi_post
836 gt.recipe.largechemicalreactor gregtech:gt.blockmachines:1169 gregtech TRUE gregapi_post
837 gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:10752 dreamcraft TRUE
838 gt.recipe.plasmageneratorfuels gregtech:gt.blockmachines:10753 dreamcraft TRUE
839 gt.recipe.alloysmelter gregtech:gt.blockmachines:10760 dreamcraft TRUE
1215 gtpp.recipe.simplewasher gregtech:gt.blockmachines:31019 miscutils TRUE
1216 gtpp.recipe.simplewasher gregtech:gt.blockmachines:31020 miscutils TRUE
1217 gtpp.recipe.vacfurnace gregtech:gt.blockmachines:995 miscutils TRUE
1218 gtPlusPlus.nei.GT_NEI_FlotationCell gtpp.recipe.flotationcell gregtech:gt.blockmachines:31028 miscutils TRUE
1219 gtPlusPlus.nei.GT_NEI_FluidReactor gtpp.recipe.fluidchemicaleactor gregtech:gt.blockmachines:998 miscutils TRUE
1220 gtPlusPlus.nei.GT_NEI_MillingMachine gtpp.recipe.oremill gregtech:gt.blockmachines:31027 miscutils TRUE
1221 team.chisel.compat.nei.RecipeHandlerChisel gregtech:gt.blockmachines:31066 miscutils TRUE
1222 team.chisel.compat.nei.RecipeHandlerChisel gregtech:gt.blockmachines:31067 miscutils TRUE
1223 team.chisel.compat.nei.RecipeHandlerChisel gregtech:gt.blockmachines:31068 miscutils TRUE
1254 gt.recipe.researchStation gregtech:gt.blockmachines:15331 tectech TRUE
1255 gt.recipe.em_scanner tectech:item.em.definitionScanStorage tectech TRUE no recipe? don't know
1256 gt.recipe.gasturbinefuel gregtech:gt.blockmachines:13101 kekztech TRUE
1257 gt.recipe.gasturbinefuel gregtech:gt.blockmachines:13102 kekztech TRUE
1258 exnihilo.compatibility.nei.RecipeHandlerSieve exastris:sieve_automatic exastris TRUE
1259 exnihilo.compatibility.nei.RecipeHandlerHammer exastris:hammer_thaumium exastris TRUE
1260 exnihilo.compatibility.nei.RecipeHandlerHammer exastris:hammer_rf exastris TRUE
1261 exnihilo.compatibility.nei.RecipeHandlerHammer exastris:manaHammer exastris TRUE
1262 exnihilo.compatibility.nei.RecipeHandlerSieve excompressum:manaSieve excompressum TRUE
1263 exnihilo.compatibility.nei.RecipeHandlerSieve excompressum:autoSieve excompressum TRUE
1264 exnihilo.compatibility.nei.RecipeHandlerHammer excompressum:chickenStick excompressum TRUE
1265 exnihilo.compatibility.nei.RecipeHandlerHammer excompressum:oreSmasher excompressum TRUE
1266 exnihilo.compatibility.nei.RecipeHandlerHammer excompressum:autoHammer excompressum TRUE
1267 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve excompressum TRUE
1268 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve:1 excompressum TRUE
1269 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve:2 excompressum TRUE
1270 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve:3 excompressum TRUE
1271 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve:4 excompressum TRUE
1272 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:heavySieve:5 excompressum TRUE
1273 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve excompressum:autoHeavySieve excompressum TRUE
1274 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:compressedHammerWood excompressum TRUE
1275 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:compressedHammerStone excompressum TRUE
1276 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:compressedHammerGold excompressum TRUE
1277 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:compressedHammerIron excompressum TRUE
1278 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:compressedHammerDiamond excompressum TRUE
1279 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer excompressum:autoCompressedHammer excompressum TRUE
1280 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel excompressum TRUE
1281 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel:1 excompressum TRUE
1282 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel:2 excompressum TRUE
1283 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel:3 excompressum TRUE
1284 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel:4 excompressum TRUE
1285 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel:5 excompressum TRUE
1286 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exnihilo:barrel_stone excompressum TRUE
1287 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting exastris:barrel_thaumium excompressum TRUE
1288 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel excompressum TRUE
1289 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel:1 excompressum TRUE
1290 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel:2 excompressum TRUE
1291 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel:3 excompressum TRUE
1292 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel:4 excompressum TRUE
1293 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel:5 excompressum TRUE
1294 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exnihilo:barrel_stone excompressum TRUE
1295 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess exastris:barrel_thaumium excompressum TRUE
1296 crafting rftools:crafterBlock1 rftools TRUE
1297 crafting rftools:crafterBlock2 rftools TRUE
1298 crafting rftools:crafterBlock3 rftools TRUE
1299 crafting StevesCarts:CartModule:87 StevesCarts TRUE
1300 crafting StevesCarts:CartModule:92 StevesCarts TRUE
1301 smelting StevesCarts:CartModule:91 StevesCarts TRUE
1302 smelting StevesCarts:CartModule:93 StevesCarts TRUE
1303 com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapedRecipeHandler thaumicenergistics:thaumicenergistics.block.arcane.assembler thaumicenergistics TRUE
1304 com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapelessRecipeHandler thaumicenergistics:thaumicenergistics.block.arcane.assembler thaumicenergistics TRUE
1305 ru.timeconqueror.tcneiadditions.nei.arcaneworkbench.ArcaneCraftingShapedHandler thaumicenergistics:thaumicenergistics.block.arcane.assembler thaumicenergistics TRUE
1306 com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapedRecipeHandler thaumicenergistics:part.base:5 thaumicenergistics TRUE
1307 com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapelessRecipeHandler thaumicenergistics:part.base:6 thaumicenergistics TRUE
1308 ru.timeconqueror.tcneiadditions.nei.arcaneworkbench.ArcaneCraftingShapedHandler thaumicenergistics:part.base:7 thaumicenergistics TRUE
1309 crafting BiblioCraft:BiblioWorkbench BiblioCraft TRUE
1310 crafting BiblioCraft:BiblioWorkbench:1 BiblioCraft TRUE
1311 crafting BiblioCraft:BiblioWorkbench:2 BiblioCraft TRUE
1312 crafting BiblioCraft:BiblioWorkbench:3 BiblioCraft TRUE
1313 crafting BiblioCraft:BiblioWorkbench:4 BiblioCraft TRUE
1314 crafting BiblioCraft:BiblioWorkbench:5 BiblioCraft TRUE
1315 crafting BiblioCraft:BiblioWorkbench:6 BiblioCraft TRUE
1316 crafting ComputerCraft:CC-TurtleExpanded {leftUpgrade:2} ComputerCraft TRUE
1317 crafting ComputerCraft:CC-TurtleAdvanced {leftUpgrade:2} ComputerCraft TRUE
+54 -25
View File
@@ -93,6 +93,7 @@ gt.recipe.arcfurnace,GregTech,gregtech:gt.blockmachines:651,,gregtech,TRUE,grega
gt.recipe.assembler,GregTech,gregtech:gt.blockmachines:211,,gregtech,TRUE,gregapi_post,6,145,166,2,,,,,,
gt.recipe.autoclave,GregTech,gregtech:gt.blockmachines:571,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.blastfurnace,GregTech,gregtech:gt.blockmachines:1000,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.plasmaforge,GregTech,gregtech:gt.blockmachines:1004,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.brewer,GregTech,gregtech:gt.blockmachines:491,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.byproductlist,GregTech,gregtech:gt.metaitem.01:2019,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.canner,GregTech,gregtech:gt.blockmachines:231,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
@@ -123,6 +124,7 @@ gt.recipe.fluidheater,GregTech,gregtech:gt.blockmachines:621,,gregtech,TRUE,greg
gt.recipe.fluidnaquadahreactor,GregTech,gregtech:gt.blockmachines:1192,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.fluidsolidifier,GregTech,gregtech:gt.blockmachines:521,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.fusionreactor,GregTech,gregtech:gt.blockmachines:1193,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.complexfusionreactor,GregTech,gregtech:gt.blockmachines:1193,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.gasturbinefuel,GregTech,gregtech:gt.blockmachines:1115,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.hammer,GregTech,gregtech:gt.blockmachines:611,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
gt.recipe.hugenaquadahreactor,GregTech,gregtech:gt.blockmachines:1188,,gregtech,TRUE,gregapi_post,6,135,166,2,,,,,,
@@ -369,16 +371,27 @@ NEIArcFurnaceHandlerHeating,Immersive Engineering,,,ImmersiveEngineering,TRUE,,,
NEIArcFurnaceHandlerMelting,Immersive Engineering,terrafirmacraftplus:item.Molten Glass,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
NEIArcFurnaceHandlerWelding,Immersive Engineering,terrafirmacraftplus:item.Bismuth Double Ingot,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
NEIArcFurnaceHandlerElectrolysis,Immersive Engineering,teloaddon:Alumina,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
NEIArcFurnaceHandlerCarrot Ingot,Immersive Engineering,minecraft:carrot,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
NEIArcFurnaceHandlerExtraction,Immersive Engineering,minecraft:glowstone_dust,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIShaderBagHandler,Immersive Engineering,ImmersiveEngineering:shaderBag,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlueprintHandler,Immersive Engineering,ImmersiveEngineering:blueprint,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlueprintHandler,Immersive Engineering,ImmersiveEngineering:woodenDevice:5,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEICokeOvenHandler,Immersive Engineering,ImmersiveEngineering:stoneDecoration:1,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler,Immersive Engineering,ImmersiveEngineering:stoneDecoration:2,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEISqueezerHandler,Immersive Engineering,ImmersiveEngineering:metalMultiblock:2,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIFermenterHandler,Immersive Engineering,ImmersiveEngineering:metalMultiblock:3,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIRefineryHandler,Immersive Engineering,ImmersiveEngineering:metalDevice2:5,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIRefineryHandler,Immersive Engineering,ImmersiveEngineering:metalMultiblock:4,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIBottlingMachineHandler,Immersive Engineering,minecraft:glass_bottle,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIMetalPressHandler,Immersive Engineering,ImmersiveEngineering:mold,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEICrusherHandler,Immersive Engineering,minecraft:hopper,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEIMetalPressHandler,Immersive Engineering,ImmersiveEngineering:metalMultiblock:13,,ImmersiveEngineering,TRUE,,,65,166,5,,,,,,
blusunrize.immersiveengineering.client.nei.NEICrusherHandler,Immersive Engineering,ImmersiveEngineering:metalMultiblock:5,,ImmersiveEngineering,TRUE,,,71,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.CrystallizerNEI,Advanced Rocketry,advancedRocketry:crystallizer,,advancedRocketry,TRUE,,,65,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.PrecisionAssemberNEI,Advanced Rocketry,advancedRocketry:precisionassemblingmachine,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.CuttingMachineNEI,Advanced Rocketry,advancedRocketry:tile.cuttingMachine,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.BlastFurnaceNEI,Advanced Rocketry,advancedRocketry:tile.electricArcFurnace,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.ElectrolyserNEI,Advanced Rocketry,advancedRocketry:tile.electrolyser,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.LatheNEI,Advanced Rocketry,advancedRocketry:tile.lathe,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.ChemicalReactorNEI,Advanced Rocketry,advancedRocketry:tile.chemreactor,,advancedRocketry,TRUE,,,96,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.PlatePresserNEI,Advanced Rocketry,advancedRocketry:tile.blockHandPress,,advancedRocketry,TRUE,,,65,166,5,,,,,,
zmaster587.advancedRocketry.integration.nei.RollingMachineNEI,Advanced Rocketry,advancedRocketry:tile.rollingMachine,,advancedRocketry,TRUE,,,96,166,5,,,,,,
net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:Anvil,,terrafirmacraftplus,TRUE,,10,138,208,2,,,,,,
net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:item.Quern,,terrafirmacraftplus,TRUE,,,65,166,5,,,,,,
net.dries007.tfcnei.recipeHandlers.KilnRecipeHandler,TerraFirmaCraft+,,,terrafirmacraftplus,TRUE,,,65,166,5,terrafirmacraftneiplugin:textures/gui/pitkiln.png,47,38,14,14,
@@ -388,6 +401,9 @@ net.dries007.tfcnei.recipeHandlers.ClothingRecipeHandler,TerraFirmaCraft+,terraf
net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:Barrel,,terrafirmacraftplus,TRUE,,,65,166,5,,,,,,
net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:Crucible,,terrafirmacraftplus,TRUE,,,65,166,5,,,,,,
net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:Firepit,,terrafirmacraftplus,TRUE,,,65,166,5,,,,,,
net.dries007.tfcnei.recipeHandlers.PressRecipeHandler,TerraFirmaCraft+,terrafirmacraftplus:StoneHopper,,terrafirmacraftplus,TRUE,,,65,166,5,,,,,,
letiu.modbase.integration.nei.ShapelessHandler,Pistronics 2,minecraft:crafting_table,,Pistronics2,TRUE,,,65,166,5,,,,,,
letiu.modbase.integration.nei.ShapedHandler,Pistronics 2,minecraft:crafting_table,,Pistronics2,TRUE,,,65,166,5,,,,,,
minechem.nei.ChemicalBucketNEIRecipeHandler,Minecraft,minecraft:crafting_table,,minechem,TRUE,,,65,166,5,,,,,,
minechem.nei.DecomposerNEIRecipeHandler,Minechem,minechem:tile.chemicalDecomposer,,minechem,TRUE,,,131,166,2,,,,,,
minechem.nei.SynthesisNEIRecipeHandler,Minechem,minechem:tile.chemicalSynthesizer,,minechem,TRUE,,,65,166,5,,,,,,
@@ -424,26 +440,31 @@ mekanism.client.nei.SolarNeutronRecipeHandler,Mekanism,Mekanism:MachineBlock3:1,
mekanism.client.nei.ThermalEvaporationRecipeHandler,Mekanism,Mekanism:BasicBlock:14,,Mekanism,TRUE,,,62,,5,,,,,,
exnihilo.compatibility.nei.RecipeHandlerHammer,Ex Nihilo,exnihilo:hammer_iron,,exnihilo,TRUE,,,58,,5,,,,,,
exnihilo.compatibility.nei.RecipeHandlerSieve,Ex Nihilo,exnihilo:sifting_table,,exnihilo,TRUE,,,130,,2,,,,,,
gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler,GregTech-Addon,gregtech_addon:machine:56,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler,GregTech-Addon,gregtech_addon:machine:60,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler,GregTech-Addon,gregtech_addon:machine:59,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler,GregTech-Addon,gregtech_addon:machine:29,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.BronzeBlastRecipeHandler,GregTech-Addon,gregtech_addon:machine:136,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.CannerRecipeHandler,GregTech-Addon,gregtech_addon:machine:57,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.CentrifugeRecipeHandler,GregTech-Addon,gregtech_addon:machine:62,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.ChemicalRecipeHandler,GregTech-Addon,gregtech_addon:machine:41,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.CutterRecipeHandler,GregTech-Addon,gregtech_addon:machine:113,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.DistillationRecipeHandler,GregTech-Addon,gregtech_addon:machine:44,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.ElectrolyzerRecipeHandler,GregTech-Addon,gregtech_addon:machine:25,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.ExtruderRecipeHandler,GregTech-Addon,gregtech_addon:machine:115,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.FusionRecipeHandler,GregTech-Addon,gregtech_addon:machine:80,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.GeneratorHandler,GregTech-Addon,,,gregtech_addon,TRUE,,15,145,166,2,nei:textures/nei_tabbed_sprites.png,80,0,14,14,
gregtechmod.mistaqur.nei.handlers.GrinderRecipeHandler,GregTech-Addon,gregtech_addon:machine:28,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.ImplosionRecipeHandler,GregTech-Addon,gregtech_addon:machine:31,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.LatheRecipeHandler,GregTech-Addon,gregtech_addon:machine:111,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.SawmillRecipeHandler,GregTech-Addon,gregtech_addon:machine:32,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler,GregTech-Addon,gregtech_addon:machine:38,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler,GregTech-Addon,gregtech_addon:machine:55,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Alloy,GregTech-Addon,gregtech_addon:machine:56,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Assembler,GregTech-Addon,gregtech_addon:machine:60,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Bender,GregTech-Addon,gregtech_addon:machine:59,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Blast,GregTech-Addon,gregtech_addon:machine:29,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.BronzeBlast,GregTech-Addon,gregtech_addon:machine:136,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Canner,GregTech-Addon,gregtech_addon:machine:57,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.centrifuge,GregTech-Addon,gregtech_addon:machine:62,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.chemicalreactor,GregTech-Addon,gregtech_addon:machine:41,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Cutter,GregTech-Addon,gregtech_addon:machine:113,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Distillation,GregTech-Addon,gregtech_addon:machine:44,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.electrolyzer,GregTech-Addon,gregtech_addon:machine:25,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.extruder,GregTech-Addon,gregtech_addon:machine:115,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.fusion,GregTech-Addon,gregtech_addon:machine:80,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.thermal_generator,GregTech-Addon,gregtech_addon:machine:35,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.diesel_generator,GregTech-Addon,gregtech_addon:machine:33,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.gas_turbine,GregTech-Addon,gregtech_addon:machine:108,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.semifluid_generator,GregTech-Addon,gregtech_addon:machine:36,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.plasma_generator,GregTech-Addon,gregtech_addon:machine:37,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.magic_generator,GregTech-Addon,gregtech_addon:machine:42,,gregtech_addon,TRUE,,15,145,166,2,,80,0,14,14,
gregtech.Grinder,GregTech-Addon,gregtech_addon:machine:28,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Implosion,GregTech-Addon,gregtech_addon:machine:31,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Lathe,GregTech-Addon,gregtech_addon:machine:111,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Sawmill,GregTech-Addon,gregtech_addon:machine:32,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.VacuumFreezer,GregTech-Addon,gregtech_addon:machine:38,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
gregtech.Wiremill,GregTech-Addon,gregtech_addon:machine:55,,gregtech_addon,TRUE,,15,145,166,2,,,,,,
cofh.thermaldynamics.plugins.nei.RecipeHandlerCover,Thermal Dynamics,ThermalDynamics:cover,"{Block:""minecraft:glass"",Meta:0b}",ThermalDynamics,TRUE,,,65,166,5,,,,,,
neresources.nei.NEIAdvSeedHandler,Not Enough Resources,minecraft:wheat,,neresources,TRUE,,,65,166,5,,,,,,
neresources.nei.NEIDungeonHandler,Not Enough Resources,minecraft:chest,,neresources,TRUE,,,130,166,2,,,,,,
@@ -473,4 +494,12 @@ nc.crafting.nei.HeliumExtractorRecipeHandler,NuclearCraft,NuclearCraft:heliumExt
nc.crafting.nei.RecyclerRecipeHandler,NuclearCraft,NuclearCraft:recyclerIdle,,NuclearCraft,TRUE,,,65,166,5,,,,,,
nc.crafting.nei.NuclearWorkspaceRecipeHandler,NuclearCraft,NuclearCraft:nuclearWorkspace,,NuclearCraft,TRUE,,,130,,2,,,,,,
ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_Smoker,EtFuturum Requiem,etfuturum:lit_smoker,,etfuturum,TRUE,,,65,166,5,,,,,,
ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_BlastFurnace,EtFuturum Requiem,etfuturum:lit_blast_furnace,,etfuturum,TRUE,,,65,166,5,,,,,,
ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_BlastFurnace,EtFuturum Requiem,etfuturum:lit_blast_furnace,,etfuturum,TRUE,,,65,166,5,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler,Campfire Backport,campfirebackport:campfire,,campfirebackport,TRUE,,,65,166,5,,,,,,
connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler,Campfire Backport,campfirebackport:campfire_base,,campfirebackport,TRUE,,,65,166,5,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve,Ex Compressum,excompressum:heavySieve,,excompressum,TRUE,,,130,166,5,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess,Ex Compressum,exnihilo:barrel,,excompressum,TRUE,,,58,166,10,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting,Ex Compressum,exnihilo:barrel,,excompressum,TRUE,,,130,166,5,,,,,,
net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer,Ex Compressum,excompressum:compressedHammerIron,,excompressum,TRUE,,,58,166,10,,,,,,
com.InfinityRaider.AgriCraft.compatibility.NEI.NEICropMutationHandler,AgriCraft,AgriCraft:cropsItem,,AgriCraft,TRUE,,,85,166,5,,,,,,
com.InfinityRaider.AgriCraft.compatibility.NEI.NEICropProductHandler,AgriCraft,minecraft:farmland,,AgriCraft,TRUE,,,85,166,5,,,,,,
1 handler modName itemName nbtInfo modId modRequired excludedModId yShift handlerHeight handlerWidth maxRecipesPerPage imageResource imageX imageY imageWidth imageHeight itemNotes
93 gt.recipe.assembler GregTech gregtech:gt.blockmachines:211 gregtech TRUE gregapi_post 6 145 166 2
94 gt.recipe.autoclave GregTech gregtech:gt.blockmachines:571 gregtech TRUE gregapi_post 6 135 166 2
95 gt.recipe.blastfurnace GregTech gregtech:gt.blockmachines:1000 gregtech TRUE gregapi_post 6 135 166 2
96 gt.recipe.plasmaforge GregTech gregtech:gt.blockmachines:1004 gregtech TRUE gregapi_post 6 135 166 2
97 gt.recipe.brewer GregTech gregtech:gt.blockmachines:491 gregtech TRUE gregapi_post 6 135 166 2
98 gt.recipe.byproductlist GregTech gregtech:gt.metaitem.01:2019 gregtech TRUE gregapi_post 6 135 166 2
99 gt.recipe.canner GregTech gregtech:gt.blockmachines:231 gregtech TRUE gregapi_post 6 135 166 2
124 gt.recipe.fluidnaquadahreactor GregTech gregtech:gt.blockmachines:1192 gregtech TRUE gregapi_post 6 135 166 2
125 gt.recipe.fluidsolidifier GregTech gregtech:gt.blockmachines:521 gregtech TRUE gregapi_post 6 135 166 2
126 gt.recipe.fusionreactor GregTech gregtech:gt.blockmachines:1193 gregtech TRUE gregapi_post 6 135 166 2
127 gt.recipe.complexfusionreactor GregTech gregtech:gt.blockmachines:1193 gregtech TRUE gregapi_post 6 135 166 2
128 gt.recipe.gasturbinefuel GregTech gregtech:gt.blockmachines:1115 gregtech TRUE gregapi_post 6 135 166 2
129 gt.recipe.hammer GregTech gregtech:gt.blockmachines:611 gregtech TRUE gregapi_post 6 135 166 2
130 gt.recipe.hugenaquadahreactor GregTech gregtech:gt.blockmachines:1188 gregtech TRUE gregapi_post 6 135 166 2
371 NEIArcFurnaceHandlerMelting Immersive Engineering terrafirmacraftplus:item.Molten Glass ImmersiveEngineering TRUE 65 166 5
372 NEIArcFurnaceHandlerWelding Immersive Engineering terrafirmacraftplus:item.Bismuth Double Ingot ImmersiveEngineering TRUE 65 166 5
373 NEIArcFurnaceHandlerElectrolysis Immersive Engineering teloaddon:Alumina ImmersiveEngineering TRUE 65 166 5
374 NEIArcFurnaceHandlerCarrot Ingot Immersive Engineering minecraft:carrot ImmersiveEngineering TRUE 65 166 5
375 NEIArcFurnaceHandlerExtraction Immersive Engineering minecraft:glowstone_dust ImmersiveEngineering TRUE 65 166 5
376 blusunrize.immersiveengineering.client.nei.NEIShaderBagHandler Immersive Engineering ImmersiveEngineering:shaderBag ImmersiveEngineering TRUE 65 166 5
377 blusunrize.immersiveengineering.client.nei.NEIBlueprintHandler Immersive Engineering ImmersiveEngineering:blueprint ImmersiveEngineering:woodenDevice:5 ImmersiveEngineering TRUE 65 166 5
378 blusunrize.immersiveengineering.client.nei.NEICokeOvenHandler Immersive Engineering ImmersiveEngineering:stoneDecoration:1 ImmersiveEngineering TRUE 71 166 5
379 blusunrize.immersiveengineering.client.nei.NEIBlastFurnaceHandler Immersive Engineering ImmersiveEngineering:stoneDecoration:2 ImmersiveEngineering TRUE 71 166 5
380 blusunrize.immersiveengineering.client.nei.NEISqueezerHandler Immersive Engineering ImmersiveEngineering:metalMultiblock:2 ImmersiveEngineering TRUE 71 166 5
381 blusunrize.immersiveengineering.client.nei.NEIFermenterHandler Immersive Engineering ImmersiveEngineering:metalMultiblock:3 ImmersiveEngineering TRUE 71 166 5
382 blusunrize.immersiveengineering.client.nei.NEIRefineryHandler Immersive Engineering ImmersiveEngineering:metalDevice2:5 ImmersiveEngineering:metalMultiblock:4 ImmersiveEngineering TRUE 65 166 5
383 blusunrize.immersiveengineering.client.nei.NEIBottlingMachineHandler Immersive Engineering minecraft:glass_bottle ImmersiveEngineering TRUE 65 166 5
384 blusunrize.immersiveengineering.client.nei.NEIMetalPressHandler Immersive Engineering ImmersiveEngineering:mold ImmersiveEngineering:metalMultiblock:13 ImmersiveEngineering TRUE 65 166 5
385 blusunrize.immersiveengineering.client.nei.NEICrusherHandler Immersive Engineering minecraft:hopper ImmersiveEngineering:metalMultiblock:5 ImmersiveEngineering TRUE 71 166 5
386 zmaster587.advancedRocketry.integration.nei.CrystallizerNEI Advanced Rocketry advancedRocketry:crystallizer advancedRocketry TRUE 65 166 5
387 zmaster587.advancedRocketry.integration.nei.PrecisionAssemberNEI Advanced Rocketry advancedRocketry:precisionassemblingmachine advancedRocketry TRUE 96 166 5
388 zmaster587.advancedRocketry.integration.nei.CuttingMachineNEI Advanced Rocketry advancedRocketry:tile.cuttingMachine advancedRocketry TRUE 96 166 5
389 zmaster587.advancedRocketry.integration.nei.BlastFurnaceNEI Advanced Rocketry advancedRocketry:tile.electricArcFurnace advancedRocketry TRUE 96 166 5
390 zmaster587.advancedRocketry.integration.nei.ElectrolyserNEI Advanced Rocketry advancedRocketry:tile.electrolyser advancedRocketry TRUE 96 166 5
391 zmaster587.advancedRocketry.integration.nei.LatheNEI Advanced Rocketry advancedRocketry:tile.lathe advancedRocketry TRUE 96 166 5
392 zmaster587.advancedRocketry.integration.nei.ChemicalReactorNEI Advanced Rocketry advancedRocketry:tile.chemreactor advancedRocketry TRUE 96 166 5
393 zmaster587.advancedRocketry.integration.nei.PlatePresserNEI Advanced Rocketry advancedRocketry:tile.blockHandPress advancedRocketry TRUE 65 166 5
394 zmaster587.advancedRocketry.integration.nei.RollingMachineNEI Advanced Rocketry advancedRocketry:tile.rollingMachine advancedRocketry TRUE 96 166 5
395 net.dries007.tfcnei.recipeHandlers.AnvilRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:Anvil terrafirmacraftplus TRUE 10 138 208 2
396 net.dries007.tfcnei.recipeHandlers.QuernRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:item.Quern terrafirmacraftplus TRUE 65 166 5
397 net.dries007.tfcnei.recipeHandlers.KilnRecipeHandler TerraFirmaCraft+ terrafirmacraftplus TRUE 65 166 5 terrafirmacraftneiplugin:textures/gui/pitkiln.png 47 38 14 14
401 net.dries007.tfcnei.recipeHandlers.BarrelRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:Barrel terrafirmacraftplus TRUE 65 166 5
402 net.dries007.tfcnei.recipeHandlers.AlloyRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:Crucible terrafirmacraftplus TRUE 65 166 5
403 net.dries007.tfcnei.recipeHandlers.HeatRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:Firepit terrafirmacraftplus TRUE 65 166 5
404 net.dries007.tfcnei.recipeHandlers.PressRecipeHandler TerraFirmaCraft+ terrafirmacraftplus:StoneHopper terrafirmacraftplus TRUE 65 166 5
405 letiu.modbase.integration.nei.ShapelessHandler Pistronics 2 minecraft:crafting_table Pistronics2 TRUE 65 166 5
406 letiu.modbase.integration.nei.ShapedHandler Pistronics 2 minecraft:crafting_table Pistronics2 TRUE 65 166 5
407 minechem.nei.ChemicalBucketNEIRecipeHandler Minecraft minecraft:crafting_table minechem TRUE 65 166 5
408 minechem.nei.DecomposerNEIRecipeHandler Minechem minechem:tile.chemicalDecomposer minechem TRUE 131 166 2
409 minechem.nei.SynthesisNEIRecipeHandler Minechem minechem:tile.chemicalSynthesizer minechem TRUE 65 166 5
440 mekanism.client.nei.ThermalEvaporationRecipeHandler Mekanism Mekanism:BasicBlock:14 Mekanism TRUE 62 5
441 exnihilo.compatibility.nei.RecipeHandlerHammer Ex Nihilo exnihilo:hammer_iron exnihilo TRUE 58 5
442 exnihilo.compatibility.nei.RecipeHandlerSieve Ex Nihilo exnihilo:sifting_table exnihilo TRUE 130 2
443 gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler gregtech.Alloy GregTech-Addon gregtech_addon:machine:56 gregtech_addon TRUE 15 145 166 2
444 gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler gregtech.Assembler GregTech-Addon gregtech_addon:machine:60 gregtech_addon TRUE 15 145 166 2
445 gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler gregtech.Bender GregTech-Addon gregtech_addon:machine:59 gregtech_addon TRUE 15 145 166 2
446 gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler gregtech.Blast GregTech-Addon gregtech_addon:machine:29 gregtech_addon TRUE 15 145 166 2
447 gregtechmod.mistaqur.nei.handlers.BronzeBlastRecipeHandler gregtech.BronzeBlast GregTech-Addon gregtech_addon:machine:136 gregtech_addon TRUE 15 145 166 2
448 gregtechmod.mistaqur.nei.handlers.CannerRecipeHandler gregtech.Canner GregTech-Addon gregtech_addon:machine:57 gregtech_addon TRUE 15 145 166 2
449 gregtechmod.mistaqur.nei.handlers.CentrifugeRecipeHandler gregtech.centrifuge GregTech-Addon gregtech_addon:machine:62 gregtech_addon TRUE 15 145 166 2
450 gregtechmod.mistaqur.nei.handlers.ChemicalRecipeHandler gregtech.chemicalreactor GregTech-Addon gregtech_addon:machine:41 gregtech_addon TRUE 15 145 166 2
451 gregtechmod.mistaqur.nei.handlers.CutterRecipeHandler gregtech.Cutter GregTech-Addon gregtech_addon:machine:113 gregtech_addon TRUE 15 145 166 2
452 gregtechmod.mistaqur.nei.handlers.DistillationRecipeHandler gregtech.Distillation GregTech-Addon gregtech_addon:machine:44 gregtech_addon TRUE 15 145 166 2
453 gregtechmod.mistaqur.nei.handlers.ElectrolyzerRecipeHandler gregtech.electrolyzer GregTech-Addon gregtech_addon:machine:25 gregtech_addon TRUE 15 145 166 2
454 gregtechmod.mistaqur.nei.handlers.ExtruderRecipeHandler gregtech.extruder GregTech-Addon gregtech_addon:machine:115 gregtech_addon TRUE 15 145 166 2
455 gregtechmod.mistaqur.nei.handlers.FusionRecipeHandler gregtech.fusion GregTech-Addon gregtech_addon:machine:80 gregtech_addon TRUE 15 145 166 2
456 gregtechmod.mistaqur.nei.handlers.GeneratorHandler gregtech.thermal_generator GregTech-Addon gregtech_addon:machine:35 gregtech_addon TRUE 15 145 166 2 nei:textures/nei_tabbed_sprites.png 80 0 14 14
457 gregtechmod.mistaqur.nei.handlers.GrinderRecipeHandler gregtech.diesel_generator GregTech-Addon gregtech_addon:machine:28 gregtech_addon:machine:33 gregtech_addon TRUE 15 145 166 2 80 0 14 14
458 gregtechmod.mistaqur.nei.handlers.ImplosionRecipeHandler gregtech.gas_turbine GregTech-Addon gregtech_addon:machine:31 gregtech_addon:machine:108 gregtech_addon TRUE 15 145 166 2 80 0 14 14
459 gregtechmod.mistaqur.nei.handlers.LatheRecipeHandler gregtech.semifluid_generator GregTech-Addon gregtech_addon:machine:111 gregtech_addon:machine:36 gregtech_addon TRUE 15 145 166 2 80 0 14 14
460 gregtechmod.mistaqur.nei.handlers.SawmillRecipeHandler gregtech.plasma_generator GregTech-Addon gregtech_addon:machine:32 gregtech_addon:machine:37 gregtech_addon TRUE 15 145 166 2 80 0 14 14
461 gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler gregtech.magic_generator GregTech-Addon gregtech_addon:machine:38 gregtech_addon:machine:42 gregtech_addon TRUE 15 145 166 2 80 0 14 14
462 gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler gregtech.Grinder GregTech-Addon gregtech_addon:machine:55 gregtech_addon:machine:28 gregtech_addon TRUE 15 145 166 2
463 gregtech.Implosion GregTech-Addon gregtech_addon:machine:31 gregtech_addon TRUE 15 145 166 2
464 gregtech.Lathe GregTech-Addon gregtech_addon:machine:111 gregtech_addon TRUE 15 145 166 2
465 gregtech.Sawmill GregTech-Addon gregtech_addon:machine:32 gregtech_addon TRUE 15 145 166 2
466 gregtech.VacuumFreezer GregTech-Addon gregtech_addon:machine:38 gregtech_addon TRUE 15 145 166 2
467 gregtech.Wiremill GregTech-Addon gregtech_addon:machine:55 gregtech_addon TRUE 15 145 166 2
468 cofh.thermaldynamics.plugins.nei.RecipeHandlerCover Thermal Dynamics ThermalDynamics:cover {Block:"minecraft:glass",Meta:0b} ThermalDynamics TRUE 65 166 5
469 neresources.nei.NEIAdvSeedHandler Not Enough Resources minecraft:wheat neresources TRUE 65 166 5
470 neresources.nei.NEIDungeonHandler Not Enough Resources minecraft:chest neresources TRUE 130 166 2
494 nc.crafting.nei.RecyclerRecipeHandler NuclearCraft NuclearCraft:recyclerIdle NuclearCraft TRUE 65 166 5
495 nc.crafting.nei.NuclearWorkspaceRecipeHandler NuclearCraft NuclearCraft:nuclearWorkspace NuclearCraft TRUE 130 2
496 ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_Smoker EtFuturum Requiem etfuturum:lit_smoker etfuturum TRUE 65 166 5
497 ganymedes01.etfuturum.NEI_EtFuturum_Config$NEI_Recipes_BlastFurnace EtFuturum Requiem etfuturum:lit_blast_furnace etfuturum TRUE 65 166 5
498 connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler Campfire Backport campfirebackport:campfire campfirebackport TRUE 65 166 5
499 connor135246.campfirebackport.client.compat.nei.NEICampfireStateChangerHandler Campfire Backport campfirebackport:campfire_base campfirebackport TRUE 65 166 5
500 net.blay09.mods.excompressum.compat.nei.RecipeHandlerHeavySieve Ex Compressum excompressum:heavySieve excompressum TRUE 130 166 5
501 net.blay09.mods.excompressum.compat.nei.RecipeHandlerBarrelProcess Ex Compressum exnihilo:barrel excompressum TRUE 58 166 10
502 net.blay09.mods.excompressum.compat.nei.RecipeHandlerComposting Ex Compressum exnihilo:barrel excompressum TRUE 130 166 5
503 net.blay09.mods.excompressum.compat.nei.RecipeHandlerCompressedHammer Ex Compressum excompressum:compressedHammerIron excompressum TRUE 58 166 10
504 com.InfinityRaider.AgriCraft.compatibility.NEI.NEICropMutationHandler AgriCraft AgriCraft:cropsItem AgriCraft TRUE 85 166 5
505 com.InfinityRaider.AgriCraft.compatibility.NEI.NEICropProductHandler AgriCraft minecraft:farmland AgriCraft TRUE 85 166 5
@@ -66,6 +66,7 @@ nei.chat.rain.on=Rain turned on
nei.chat.rain.off=Rain turned off
nei.chat.time=Day %d. %d:00
nei.chat.give.noitem=No such item.
nei.chat.recipe.error=There was error during loading recipe. Please check log for details.
nei.options=NEI Options
nei.options.back=Back
@@ -94,6 +95,7 @@ nei.options.keys.gui.prev_machine=Prev Machine
nei.options.keys.gui.search=Focus Search Bar
nei.options.keys.gui.bookmark=Add Bookmark
nei.options.keys.gui.hide_bookmarks=Toggle Bookmark Panel Visibility
nei.options.keys.gui.overlay=Overlay Recipe
nei.options.keys.world=World
nei.options.keys.world.chunkoverlay=Chunk Boundary Overlay
nei.options.keys.world.moboverlay=Mob Spawn Overlay
@@ -132,9 +134,15 @@ nei.options.inventory.saveCurrentRecipeInBookmarksEnabled.false=Disabled
nei.options.inventory.useNBTInBookmarks=Use NBT in Bookmarks
nei.options.inventory.useNBTInBookmarks.true=Yes
nei.options.inventory.useNBTInBookmarks.false=No
nei.options.inventory.showRecipeMarker=Show Recipe Marker
nei.options.inventory.showRecipeMarker.true=Yes
nei.options.inventory.showRecipeMarker.false=No
nei.options.inventory.creative_tab_style=Creative or JEI tab style
nei.options.inventory.creative_tab_style.true=Creative
nei.options.inventory.creative_tab_style.false=JEI
nei.options.inventory.ignore_potion_overlap=Ignore overlap with potion effect HUD
nei.options.inventory.ignore_potion_overlap.true=Yes
nei.options.inventory.ignore_potion_overlap.false=No
nei.options.inventory.widgetsenabled.true=NEI Enabled
nei.options.inventory.widgetsenabled.false=NEI Disabled
nei.options.inventory.cheatmode.0=Recipe Mode
@@ -174,6 +182,9 @@ nei.options.inventory.disableMouseScrollTransfer.false=False
nei.options.inventory.invertMouseScrollTransfer=Invert Mouse Wheel Transfer Direction
nei.options.inventory.invertMouseScrollTransfer.true=True
nei.options.inventory.invertMouseScrollTransfer.false=False
nei.options.inventory.cacheItemRendering=Cache Item Rendering
nei.options.inventory.cacheItemRendering.true=True
nei.options.inventory.cacheItemRendering.false=False
nei.options.command=Commands
nei.options.command.creative=Gamemode
@@ -192,6 +203,8 @@ nei.options.world.highlight_tips.hide=Hidden
nei.options.world.highlight_tips.show=Shown
nei.options.world.highlight_tips.sample=Sample
nei.options.world.panels=Panels Settings
nei.options.tools=Tools
nei.options.tools.handler_load_from_config=Load handlers from Config
nei.options.tools.handler_load_from_config.true=Config
@@ -174,14 +174,14 @@ nei.recipe.fuel.processed=Обработано: %s
nei.recipe.fuel.produced=Произведено: %s
nei.recipe.firework=Фейерверки
nei.recipe.firework.tooltip0=Красители добавляют цвета на звёздочку
nei.recipe.firework.tooltip1=Recolouring adds fade colours to the charge
nei.recipe.firework.tooltip2=Multiple charges can be spawned from one rocket
nei.recipe.firework.tooltip1=Перекрашивание добавляет исчезающие цвета к заряду
nei.recipe.firework.tooltip2=Одна ракета может выпустить несколько зарядов
nei.recipe.brewing=Зельеварение
nei.recipe.profiler.crafting=Профилирование создания
nei.recipe.profiler.usage=Использование профилирования
nei.itemsort.minecraft=Minecraft
nei.itemsort.minecraft.tip=Сортирует предметы сначало из оригинального Minecraft
nei.itemsort.minecraft.tip=Сортирует предметы сначала из оригинального Minecraft
nei.itemsort.mod=По модификации
nei.itemsort.mod.tip=Группирует предметы в один мод, на основе имени мода
nei.itemsort.id=ID предмета
@@ -215,4 +215,4 @@ nei.subsets.Items.Tools.Shovels=Лопаты
nei.subsets.Items.Weapons=Оружие
nei.subsets.Items.Weapons.Ranged=Дальнего боя
nei.subsets.Items.Weapons.Swords=Мечи
nei.subsets.Mod=Модификации
nei.subsets.Mod=Модификации
+31 -2
View File
@@ -66,6 +66,7 @@ nei.chat.rain.on=开启雨雪
nei.chat.rain.off=关闭雨雪
nei.chat.time=白天 %d. %d:00
nei.chat.give.noitem=没有此物品
nei.chat.recipe.error=加载合成表过程中出现错误.请查看log文件获取详细信息.
nei.options=NEI选项
nei.options.back=后退
@@ -77,7 +78,7 @@ nei.options.wbutton.tip.0=使用全局设置
nei.options.wbutton.tip.1=覆写全局设置
nei.options.keys=按键绑定
nei.options.keys.showenchant=显示附魔
nei.options.keys.showenchant=显示附魔值
nei.options.keys.gui=物品栏
nei.options.keys.gui.recipe=查看合成
nei.options.keys.gui.usage=查看用途
@@ -94,6 +95,7 @@ nei.options.keys.gui.prev_machine=上一机器
nei.options.keys.gui.search=跳转到搜索框
nei.options.keys.gui.bookmark=添加书签
nei.options.keys.gui.hide_bookmarks=显示/隐藏书签页
nei.options.keys.gui.overlay=提取合成表至合成栏/工作台
nei.options.keys.world=世界
nei.options.keys.world.chunkoverlay=区块(chunks)边界显示
nei.options.keys.world.moboverlay=刷怪区域显示
@@ -111,6 +113,9 @@ nei.options.inventory=物品栏
nei.options.inventory.worldSpecificBookmarks=书签存储位置
nei.options.inventory.worldSpecificBookmarks.true=存档内
nei.options.inventory.worldSpecificBookmarks.false=全局
nei.options.inventory.worldSpecificPresets=预设存储位置
nei.options.inventory.worldSpecificPresets.true=存档内
nei.options.inventory.worldSpecificPresets.false=全局
nei.options.inventory.bookmarksEnabled=显示/隐藏书签页
nei.options.inventory.bookmarksEnabled.true=显示
nei.options.inventory.bookmarksEnabled.false=隐藏
@@ -129,6 +134,9 @@ nei.options.inventory.saveCurrentRecipeInBookmarksEnabled.false=禁用
nei.options.inventory.useNBTInBookmarks=在书签中启用NBT
nei.options.inventory.useNBTInBookmarks.true=是
nei.options.inventory.useNBTInBookmarks.false=否
nei.options.inventory.showRecipeMarker=在书签栏显示合成产物标记
nei.options.inventory.showRecipeMarker.true=是
nei.options.inventory.showRecipeMarker.false=否
nei.options.inventory.creative_tab_style=创造模式/JEI标签页
nei.options.inventory.creative_tab_style.true=创造模式
nei.options.inventory.creative_tab_style.false=JEI
@@ -171,6 +179,9 @@ nei.options.inventory.disableMouseScrollTransfer.false=关闭
nei.options.inventory.invertMouseScrollTransfer=反转鼠标滚轮方向
nei.options.inventory.invertMouseScrollTransfer.true=开启
nei.options.inventory.invertMouseScrollTransfer.false=关闭
nei.options.inventory.cacheItemRendering=缓存物品渲染
nei.options.inventory.cacheItemRendering.true=开启
nei.options.inventory.cacheItemRendering.false=关闭
nei.options.command=指令
nei.options.command.creative=游戏模式
@@ -189,10 +200,15 @@ nei.options.world.highlight_tips.hide=隐藏
nei.options.world.highlight_tips.show=显示
nei.options.world.highlight_tips.sample=样本
nei.options.world.panels=面板布局
nei.options.tools=工具
nei.options.tools.handler_load_from_config=从Config加载预设(handler)
nei.options.tools.handler_load_from_config=从Config加载handler(加工所使用的机器类别)
nei.options.tools.handler_load_from_config.true=Config
nei.options.tools.handler_load_from_config.false=JAR
nei.options.tools.catalyst_load_from_config=从Config加载catalysts(加工所使用的具体机器等)
nei.options.tools.catalyst_load_from_config.true=Config
nei.options.tools.catalyst_load_from_config.false=JAR
nei.options.tools.dump=数据存储
nei.options.tools.dump.dump=存储
nei.options.tools.dump.dumped=%s ID已保存到.minecraft/%s
@@ -228,8 +244,12 @@ nei.recipe.shaped=有序合成
nei.recipe.shapeless=无序合成
nei.recipe.furnace=烧制
nei.recipe.fuel=燃料
nei.recipe.fuel.smeltCount=可冶炼%s个物品
# Deprecated
nei.recipe.fuel.required=需要%s个
# Deprecated
nei.recipe.fuel.processed=可烧制%s个
# Deprecated
nei.recipe.fuel.produced=可制作%s个
nei.recipe.firework=烟花
nei.recipe.firework.tooltip0=添加多种染料可增加烟火之星的颜色
@@ -275,3 +295,12 @@ nei.subsets.Items.Weapons=武器
nei.subsets.Items.Weapons.Ranged=远程
nei.subsets.Items.Weapons.Swords=剑
nei.subsets.Mod=Mod
nei.presets.blacklist.label=黑
nei.presets.blacklist.tooltip=黑名单
nei.presets.whitelist.label=白
nei.presets.whitelist.tooltip=白名单
nei.presets.textfield.tooltip.1=Enter - 保存
nei.presets.textfield.tooltip.2=Esc - 取消
nei.presets.label.tooltip=双击编辑
nei.presets.label.selected=%s 预设