mirror of
https://github.com/GTNewHorizons/NotEnoughItems.git
synced 2026-11-15 09:44:44 +00:00
Compare commits
20
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
678a5ac00d | ||
|
|
4e8687184d | ||
|
|
fe4566901a | ||
|
|
de2b2ece69 | ||
|
|
d20a80a77c | ||
|
|
6cced8dea0 | ||
|
|
68b9453328 | ||
|
|
ae21012ea2 | ||
|
|
2b31129ef9 | ||
|
|
ba77a63545 | ||
|
|
8f7d698e7d | ||
|
|
72d44fd711 | ||
|
|
d735cc2a38 | ||
|
|
91e9b2a5ae | ||
|
|
96e4fe55e8 | ||
|
|
8717df0cbb | ||
|
|
d6a6551561 | ||
|
|
995ed24056 | ||
|
|
2917f2a4c9 | ||
|
|
5b2ff42d4f |
No files matched your search
@@ -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.
|
||||
|
||||
|
||||
+68
-49
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -229,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()) {
|
||||
@@ -239,9 +244,7 @@ public class NEIController implements IContainerSlotClickHandler, IContainerInpu
|
||||
fastTransferManager.transferItem(manager.window, mouseover.slotNumber);
|
||||
else
|
||||
fastTransferManager.retrieveItem(manager.window, mouseover.slotNumber);
|
||||
// slot in GuiRecipe does not contain an actual stack
|
||||
// and scroll should also be handled by GuiRecipe
|
||||
return !(gui instanceof GuiRecipe);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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,,,,,,
|
||||
@@ -388,306 +534,306 @@ connor135246.campfirebackport.client.compat.nei.NEICampfireRecipeHandler,campfir
|
||||
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,,,,,,"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,,,,,,
|
||||
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,,,,,,
|
||||
@@ -1108,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,,,,,,
|
||||
|
@@ -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,,,,,,
|
||||
@@ -475,4 +496,10 @@ nc.crafting.nei.NuclearWorkspaceRecipeHandler,NuclearCraft,NuclearCraft:nuclearW
|
||||
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,,,,,,
|
||||
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,,,,,,
|
||||
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,,,,,,
|
||||
|
@@ -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=Модификации
|
||||
@@ -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 预设
|
||||
Reference in new issue
Block a user