mirror of
https://github.com/GTNewHorizons/NotEnoughItems.git
synced 2026-11-15 01:34:42 +00:00
Compare commits
20
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4dfc4f86bf | ||
|
|
f0e09e2b0d | ||
|
|
5d82f0af54 | ||
|
|
4c36d0625e | ||
|
|
5bfcc73459 | ||
|
|
bc1dd44c41 | ||
|
|
d2de8af64c | ||
|
|
af50881c6e | ||
|
|
c971199bd1 | ||
|
|
146e882229 | ||
|
|
baa0a8962b | ||
|
|
400f38d919 | ||
|
|
07ec5f67c5 | ||
|
|
79b5da1d1a | ||
|
|
aa13ba7781 | ||
|
|
966e404218 | ||
|
|
b64d3a8be4 | ||
|
|
34b8af475d | ||
|
|
b298f3961a | ||
|
|
2804698e71 |
No files matched your search
@@ -10,3 +10,6 @@ run/*
|
||||
.gradle/
|
||||
|
||||
*.bat
|
||||
.classpath
|
||||
.project
|
||||
.settings/**
|
||||
+57
-29
@@ -1,20 +1,29 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven {
|
||||
name = "gt"
|
||||
url = "https://gregtech.overminddl1.com/"
|
||||
}
|
||||
maven {
|
||||
name = "forge"
|
||||
url = "http://files.minecraftforge.net/maven"
|
||||
}
|
||||
maven {
|
||||
name = "sonatype"
|
||||
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
||||
name = "jitpack"
|
||||
url = "https://jitpack.io"
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||
classpath "com.github.GTNH2:ForgeGradle:FG_1.2-SNAPSHOT"
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id("org.ajoberstar.grgit") version("3.1.1")
|
||||
}
|
||||
|
||||
//add dependency repositories
|
||||
repositories {
|
||||
maven {
|
||||
@@ -23,9 +32,24 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: "java"
|
||||
apply plugin: "idea"
|
||||
apply plugin: 'forge'
|
||||
|
||||
group = "codechicken" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
idea {
|
||||
module {
|
||||
inheritOutputDirs = true
|
||||
downloadJavadoc = true
|
||||
downloadSources = true
|
||||
}
|
||||
}
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
group = "codechicken"
|
||||
archivesBaseName = "NotEnoughItems"
|
||||
|
||||
// Define properties file
|
||||
@@ -37,18 +61,25 @@ configFile.withReader {
|
||||
prop.load(it)
|
||||
project.ext.config = new ConfigSlurper().parse prop
|
||||
}
|
||||
//
|
||||
//configurations.all {
|
||||
// resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS)
|
||||
// setTransitive(false)
|
||||
//}
|
||||
|
||||
configurations {
|
||||
shade
|
||||
compile.extendsFrom shade
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "codechicken:CodeChickenLib:${config.mc_version}-${config.ccl_version}:dev"
|
||||
compile "codechicken:CodeChickenCore:${config.mc_version}-${config.ccc_version}:dev"
|
||||
shade "org.apache.commons:commons-csv:1.5"
|
||||
}
|
||||
|
||||
version = "${project.config.mod_version}"
|
||||
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
version = "${project.config.mod_version}"
|
||||
|
||||
println config.mc_version + "-" + config.forge_version
|
||||
// Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here
|
||||
@@ -81,6 +112,11 @@ processResources {
|
||||
|
||||
// Move access transformer to META-INF
|
||||
rename '(.+_at.cfg)', 'META-INF/$1'
|
||||
//
|
||||
// // copy everything else, that's not the mcmod.info
|
||||
// from(sourceSets.main.resources.srcDirs) {
|
||||
// exclude "mcmod.info"
|
||||
// }
|
||||
}
|
||||
|
||||
version = "${project.minecraft.version}-${project.version}"
|
||||
@@ -90,19 +126,24 @@ def commonManifest = {
|
||||
}
|
||||
|
||||
jar {
|
||||
classifier = 'universal'
|
||||
getArchiveClassifier().set("universal")
|
||||
manifest commonManifest
|
||||
configurations.shade.each { dep ->
|
||||
from(project.zipTree(dep)){
|
||||
exclude 'META-INF', 'META-INF/**'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task sourceJar(type: Jar) {
|
||||
from sourceSets.main.java
|
||||
from new File(root, "dev")
|
||||
classifier = 'src'
|
||||
getArchiveClassifier().set("src")
|
||||
}
|
||||
|
||||
task devJar(type: Jar) {
|
||||
from sourceSets.main.output
|
||||
classifier = 'dev'
|
||||
getArchiveClassifier().set("dev")
|
||||
manifest commonManifest
|
||||
}
|
||||
|
||||
@@ -111,20 +152,7 @@ artifacts {
|
||||
archives sourceJar, devJar
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main { output.resourcesDir = output.classesDir }
|
||||
}
|
||||
|
||||
// Configure an upload task.
|
||||
uploadArchives {
|
||||
dependsOn 'reobf'
|
||||
if (project.hasProperty("local_maven")) {
|
||||
repositories {
|
||||
logger.info('Publishing to local maven repo')
|
||||
|
||||
mavenDeployer {
|
||||
repository(url: "file://${local_maven}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
minecraft {
|
||||
srgExtra "PK: org/apache/commons/csv nei/org/apache/commons/csv"
|
||||
srgExtra "PK: org/apache/commons/csv/CSVFormat nei/org/apache/commons/csv/CSVFormat"
|
||||
}
|
||||
+1
-1
@@ -2,4 +2,4 @@ mc_version=1.7.10
|
||||
forge_version=10.13.4.1614-1.7.10
|
||||
ccl_version=1.1.3.138
|
||||
ccc_version=1.0.7.+
|
||||
mod_version=2.0.11-GTNH
|
||||
mod_version=2.1.0-GTNH-beta6
|
||||
Vendored
BIN
Binary file not shown.
+1
-1
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip
|
||||
@@ -1,5 +1,21 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
@@ -109,8 +125,8 @@ if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
Vendored
+17
-1
@@ -1,3 +1,19 @@
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
handler,modName,itemName,nbtInfo,modId,modRequired,excludedModId,yShift,handlerHeight,handlerWidth,maxRecipesPerPage,imageResource,imageX,imageY,imageWidth,imageHeight,itemNotes
|
||||
codechicken.nei.recipe.BrewingRecipeHandler,minecraft,minecraft:brewing_stand,,minecraft,false,,,65,166,5,,,,,,
|
||||
codechicken.nei.recipe.FireworkRecipeHandler,minecraft,minecraft:fireworks,,minecraft,false,,,65,166,5,,,,,,
|
||||
codechicken.nei.recipe.FurnaceRecipeHandler,minecraft,minecraft:furnace,,minecraft,false,,,65,166,5,,,,,,
|
||||
codechicken.nei.recipe.ShapedRecipeHandler,minecraft,minecraft:crafting_table,,minecraft,false,,,65,166,5,,,,,,
|
||||
codechicken.nei.recipe.ShapelessRecipeHandler,minecraft,minecraft:crafting_table,,minecraft,false,,,65,166,5,,,,,,
|
||||
codechicken.nei.recipe.FuelRecipeHandler,minecraft,,,minecraft,false,,,65,166,5,nei:textures/nei_tabbed_sprites.png,80,0,14,14,
|
||||
advsolar.client.nei.MTRecipeHandler,AdvancedSolarPanel,AdvancedSolarPanel:BlockMolecularTransformer,,AdvancedSolarPanel,true,,,68,,5,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIAEShapedRecipeHandler,AppliedEnergistics2,appliedenergistics2:item.ItemMultiPart:380,,appliedenergistics2,true,,,,,,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIAEShapelessRecipeHandler,AppliedEnergistics2,appliedenergistics2:item.ItemMultiPart:380,,appliedenergistics2,true,,,,,,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIFacadeRecipeHandler,AppliedEnergistics2,appliedenergistics2:item.ItemFacade:192,,appliedenergistics2,true,,,65,,5,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIGrinderRecipeHandler,AppliedEnergistics2,appliedenergistics2:item.ItemMultiMaterial:8,,appliedenergistics2,true,,,,,,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIInscriberRecipeHandler,AppliedEnergistics2,appliedenergistics2:tile.BlockInscriber,,appliedenergistics2,true,,,70,,5,,,,,,
|
||||
appeng.integration.modules.NEIHelpers.NEIWorldCraftingHandler,AppliedEnergistics2,appliedenergistics2:item.ItemMultiMaterial:9,,appliedenergistics2,true,,,85,,5,,,,,,There's only some explanatory text for fluix crystals and QEDs
|
||||
aroma1997.core.recipes.nei.ShapedAromicRecipeHandler,AromaBackup,minecraft:crafting_table,,AromaBackup,true,,,,,,,,,,,
|
||||
aroma1997.core.recipes.nei.ShapelessAromicRecipeHandler,AromaBackup,minecraft:crafting_table,,AromaBackup,true,,,,,,,,,,,
|
||||
fox.spiteful.avaritia.compat.nei.CompressionHandler,Avaritia,Avaritia:Neutronium_Compressor,,Avaritia,true,,,50,,6,,,,,,
|
||||
fox.spiteful.avaritia.compat.nei.ExtremeShapedRecipeHandler,Avaritia,Avaritia:Dire_Crafting,,Avaritia,true,,,208,256,1,,,,,,Part of it even goes off the left side (included)
|
||||
fox.spiteful.avaritia.compat.nei.ExtremeShapelessRecipeHandler,Avaritia,Avaritia:Dire_Crafting,,Avaritia,true,,,208,256,1,,,,,,"If you can cut off/place over the jaggedness at the bottom, you could barely get a second one"
|
||||
WayofTime.alchemicalWizardry.client.nei.NEIAlchemyRecipeHandler,BloodMagic,AWWayofTime:blockWritingTable,,AWWayofTime,true,,,68,,5,,,,,,
|
||||
WayofTime.alchemicalWizardry.client.nei.NEIAltarRecipeHandler,BloodMagic,AWWayofTime:Altar,,AWWayofTime,true,,,65,,5,,,,,,Handler name needs shifting left
|
||||
WayofTime.alchemicalWizardry.client.nei.NEIBindingRitualHandler,BloodMagic,AWWayofTime:sacrificialKnife,,AWWayofTime,true,,,50,,6,,,,,,
|
||||
WayofTime.alchemicalWizardry.client.nei.NEIBloodOrbShapedHandler,BloodMagic,AWWayofTime:AlchemicalWizardrybloodRune:3,,AWWayofTime,true,,,65,,5,,,,,,
|
||||
WayofTime.alchemicalWizardry.client.nei.NEIBloodOrbShapelessHandler,BloodMagic,AWWayofTime:AlchemicalWizardrybloodRune:4,,AWWayofTime,true,,,65,,5,,,,,,
|
||||
bw.fuels.acidgens,BartWorks,gregtech:gt.blockmachines:12726,,bartworks,true,,,145,,2,,,,,,
|
||||
bw.recipe.cal,BartWorks,gregtech:gt.blockmachines:12735,,bartworks,true,,,135,,2,,,,,,
|
||||
com.github.bartimaeusnek.bartworks.neiHandler.BW_NEI_BioLabHandler,BartWorks,gregtech:gt.blockmachines:12699,,bartworks,true,,,145,,2,,,,,,
|
||||
com.github.bartimaeusnek.bartworks.neiHandler.BW_NEI_BioVatHandler,BartWorks,gregtech:gt.blockmachines:12712,,bartworks,true,,,140,,2,,,,,,
|
||||
com.github.bartimaeusnek.bartworks.neiHandler.BW_NEI_OreHandler,BartWorks,bartworks:bw.blockores.01:89,,bartworks,true,,,135,,2,,,,,,
|
||||
gt.recipe.electricimplosioncompressor,BartWorks,gregtech:gt.blockmachines:12734 Electric implosion compressor,,bartworks,true,,,135,,2,,,,,,
|
||||
net.bdew.neiaddons.botany.flowers.FlowerBreedingHandler,Botany,Botany:flower,,Botany,true,,,65,,5,,,,,,
|
||||
buildcraft.compat.nei.RecipeHandlerRefinery,BuildCraft,BuildCraft|Factory:refineryBlock,,BuildCraft|Factory,true,,,60,,5,,,,,,There's only 2 recipes though
|
||||
buildcraft.compat.nei.RecipeHandlerAssemblyTable,BuildCraft,BuildCraft|Silicon:laserTableBlock,,BuildCraft|Silicon,true,,,100,,3,,,,,,
|
||||
buildcraft.compat.nei.RecipeHandlerIntegrationTable,BuildCraft,BuildCraft|Silicon:laserTableBlock:2,,BuildCraft|Silicon,true,,,85,,4,,,,,,
|
||||
team.chisel.compat.nei.RecipeHandlerChisel,Chisel,chisel:chisel,,chisel,true,,,135,,2,,,,,,
|
||||
crazypants.enderio.nei.AlloySmelterRecipeHandler,EnderIO,EnderIO:blockAlloySmelter,,EnderIO,true,,,65,,5,,,,,,
|
||||
crazypants.enderio.nei.EnchanterRecipeHandler,EnderIO,EnderIO:blockEnchanter,,EnderIO,true,,,65,,5,,,,,,
|
||||
crazypants.enderio.nei.SagMillRecipeHandler,EnderIO,EnderIO:blockSagMill,,EnderIO,true,,,68,,5,,,,,,
|
||||
crazypants.enderio.nei.SliceAndSpliceRecipeHandler,EnderIO,EnderIO:blockSliceAndSplice,,EnderIO,true,,,65,,5,,,,,,
|
||||
crazypants.enderio.nei.SoulBinderRecipeHandler,EnderIO,EnderIO:blockSoulBinder,,EnderIO,true,,,68,,5,,,,,,
|
||||
crazypants.enderio.nei.VatRecipeHandler,EnderIO,EnderIO:blockVat,,EnderIO,true,,,65,,5,,,,,,
|
||||
extracells.integration.nei.UniversalTerminalRecipe,ExtraCells,extracells:part.base:9,,extracells,true,,,65,,5,,,,,,
|
||||
com.rwtema.extrautils.nei.EnderConstructorHandler,ExtraUtilities,ExtraUtilities:endConstructor,,ExtraUtilities,true,,,68,,5,,,,,,
|
||||
com.rwtema.extrautils.nei.FMPMicroBlocksHandler,ExtraUtilities,ForgeMicroblock:sawIron,,ExtraUtilities,true,,,65,,5,,,,,,
|
||||
com.rwtema.extrautils.nei.InfoHandler,ExtraUtilities,ExtraUtilities:chandelier,,ExtraUtilities,true,,,135,,2,,,,,,"Info on blocks, can vary wildly. EQ was this length, there might be a longer one"
|
||||
com.rwtema.extrautils.nei.MicroBlocksHandler,ExtraUtilities,ExtraUtilities:microblocks:1,,ExtraUtilities,true,,,,,,,,,,,
|
||||
com.rwtema.extrautils.nei.SoulHandler,ExtraUtilities,ExtraUtilities:mini-soul,,ExtraUtilities,true,,,,,,,,,,,
|
||||
hellfirepvp.beebetteratbees.client.gui.BBABGuiRecipeTreeHandler,Bees,Forestry:beeQueenGE,,Forestry,true,,,140,,2,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerBottler,Forestry,Forestry:factory,,Forestry,true,,,68,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerCarpenter,Forestry,Forestry:factory:1,,Forestry,true,,,65,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerCentrifuge,Forestry,Forestry:factory:2,,Forestry,true,,,65,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerFabricator,Forestry,Forestry:factory2,,Forestry,true,,,,,,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerFermenter,Forestry,Forestry:factory:3,,Forestry,true,,,65,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerMoistener,Forestry,Forestry:factory:4,,Forestry,true,,,68,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerSqueezer,Forestry,Forestry:factory:5,,Forestry,true,,,68,,5,,,,,,
|
||||
forestry.factory.recipes.nei.NEIHandlerStill,Forestry,Forestry:factory:6,,Forestry,true,,,65,,5,,,,,,
|
||||
net.bdew.neiaddons.forestry.bees.BeeBreedingHandler,Forestry,Forestry:beeQueenGE,,Forestry,true,,,65,,5,,,,,,
|
||||
net.bdew.neiaddons.forestry.bees.BeeProduceHandler,Forestry,Forestry:beeQueenGE,,Forestry,true,,,65,,5,,,,,,
|
||||
net.bdew.neiaddons.forestry.butterflies.ButterflyBreedingHandler,Forestry,Forestry:butterflyGE,,Forestry,true,,,,,,,,,,,
|
||||
net.bdew.neiaddons.forestry.trees.TreeBreedingHandler,Forestry,Forestry:saplingGE,,Forestry,true,,,65,,5,,,,,,
|
||||
net.bdew.neiaddons.forestry.trees.TreeProduceHandler,Forestry,Forestry:saplingGE,,Forestry,true,,,65,,5,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT1RecipeHandler,Galacticraft,GalacticraftCore:item.spaceship,,GalacticraftCore,true,,,125,,2,,,,,,
|
||||
micdoodle8.mods.galacticraft.core.nei.BuggyRecipeHandler,Galacticraft,GalacticraftCore:tile.rocketWorkbench,,GalacticraftCore,true,,10,135,,2,,,,,,
|
||||
micdoodle8.mods.galacticraft.core.nei.CircuitFabricatorRecipeHandler,Galacticraft,GalacticraftCore:tile.machine2:4,,GalacticraftCore,true,,,,,,,,,,,
|
||||
micdoodle8.mods.galacticraft.core.nei.ElectricIngotCompressorRecipeHandler,Galacticraft,GalacticraftCore:tile.machine2,,GalacticraftCore,true,,,,,,,,,,,
|
||||
micdoodle8.mods.galacticraft.core.nei.IngotCompressorRecipeHandler,Galacticraft,GalacticraftCore:tile.machine:12,,GalacticraftCore,true,,,,,,,,,,,
|
||||
micdoodle8.mods.galacticraft.core.nei.RefineryRecipeHandler,Galacticraft,GalacticraftCore:tile.refinery,,GalacticraftCore,true,,,,,,,,,,,
|
||||
micdoodle8.mods.galacticraft.planets.asteroids.nei.AstroMinerRecipeHandler,Galacticraft,GalacticraftCore:tile.rocketWorkbench,,GalacticraftCore,true,,,100,,3,,,,,,
|
||||
micdoodle8.mods.galacticraft.planets.mars.nei.CargoRocketRecipeHandler,Galacticraft,GalacticraftCore:tile.rocketWorkbench,,GalacticraftCore,true,,10,125,,2,,,,,,
|
||||
micdoodle8.mods.galacticraft.planets.mars.nei.GasLiquefierRecipeHandler,Galacticraft,GalacticraftMars:tile.marsMachineT2,,GalacticraftCore,true,,,,,,,,,,,
|
||||
micdoodle8.mods.galacticraft.planets.mars.nei.MethaneSynthesizerRecipeHandler,Galacticraft,GalacticraftMars:tile.marsMachineT2:4,,GalacticraftCore,true,,,,,,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT2RecipeHandler,Galacticraft,GalacticraftMars:item.spaceshipTier2:1,,GalacticraftMars,true,,5,145,,2,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT3RecipeHandler,Galacticraft,GalacticraftMars:item.itemTier3Rocket,,GalacticraftMars,true,,5,145,,2,,,,,,
|
||||
galaxyspace.core.nei.AssemblyMachineRecipeHandler,GalaxySpace,GalaxySpace:assemblymachine,,GalaxySpace,true,,,,,,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT4RecipeHandler,GalaxySpace,GalaxySpace:item.Tier4Rocket,,GalaxySpace,true,,10,160,,2,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT5RecipeHandler,GalaxySpace,GalaxySpace:item.Tier5Rocket,,GalaxySpace,true,,10,160,,2,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT6RecipeHandler,GalaxySpace,GalaxySpace:item.Tier6Rocket,,GalaxySpace,true,,10,160,,2,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT7RecipeHandler,GalaxySpace,GalaxySpace:item.Tier7Rocket,,GalaxySpace,true,,10,180,,1,,,,,,
|
||||
galaxyspace.core.nei.rocket.RocketT8RecipeHandler,GalaxySpace,GalaxySpace:item.Tier8Rocket,,GalaxySpace,true,,10,180,,1,,,,,,
|
||||
net.bdew.gendustry.nei.ExtractorHandler,Gendustry,gendustry:Extractor,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.ImprinterHandler,Gendustry,gendustry:Imprinter,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.LiquifierHandler,Gendustry,gendustry:Liquifier,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.MutagenProducerHandler,Gendustry,gendustry:MutagenProducer,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.MutatronHandler,Gendustry,gendustry:Mutatron,,gendustry,true,,,65,,5,,,,,,
|
||||
net.bdew.gendustry.nei.ReplicatorHandler,Gendustry,gendustry:Replicator,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.SamplerHandler,Gendustry,gendustry:Sampler,,gendustry,true,,,68,,5,,,,,,
|
||||
net.bdew.gendustry.nei.TemplateCraftingHandler,Gendustry,gendustry:GeneTemplate,,gendustry,true,,,105,,3,,,,,,"I don't think there's any actual recipes here, just a generic one"
|
||||
net.bdew.gendustry.nei.TransposerHandler,Gendustry,gendustry:Transposer,,gendustry,true,,,68,,5,,,,,,
|
||||
gt.recipe.alloysmelter,gregtech,gregtech:gt.blockmachines:201,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Amplifabricator
|
||||
gt.recipe.arcfurnace,gregtech,gregtech:gt.blockmachines:651,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Bronze boiler
|
||||
gt.recipe.assembler,gregtech,gregtech:gt.blockmachines:211,,gregtech,true,gregapi_post,6,145,166,2,,,,,,Byproducts from ore processing
|
||||
gt.recipe.autoclave,gregtech,gregtech:gt.blockmachines:571,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Disabled 'Thermal Generator'? Or compat for the IC2 geothermal?
|
||||
gt.recipe.blastfurnace,gregtech,gregtech:gt.blockmachines:1000,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Disabled CNC machine?
|
||||
gt.recipe.brewer,gregtech,gregtech:gt.blockmachines:491,,gregtech,true,gregapi_post,6,135,166,2,,,,,,ECE
|
||||
gt.recipe.byproductlist,gregtech,gregtech:gt.metaitem.01:2019,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicgenerator.magicenergyconverter.tier.01
|
||||
gt.recipe.canner,gregtech,gregtech:gt.blockmachines:231,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicgenerator.plasmagenerator.tier.05
|
||||
gt.recipe.centrifuge,gregtech,gregtech:gt.blockmachines:361,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.arcfurnace.tier.01
|
||||
gt.recipe.chemicalbath,gregtech,gregtech:gt.blockmachines:541,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.assembler.tier.01
|
||||
gt.recipe.chemicalreactor,gregtech,gregtech:gt.blockmachines:421,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.autoclave.tier.01
|
||||
gt.recipe.circuitassembler,gregtech,gregtech:gt.blockmachines:1180,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.bender.tier.01
|
||||
gt.recipe.cncmachine,gregtech,gregtech:gt.metaitem.01:23305,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.boxinator.tier.01
|
||||
gt.recipe.cokeoven,gregtech,gregtech:gt.blockmachines:791,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.brewery.tier.01
|
||||
gt.recipe.componentassembler,gregtech,gregtech:gt.blockmachines:211,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.canner.tier.01
|
||||
gt.recipe.compressor,gregtech,gregtech:gt.blockmachines:241,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.centrifuge.tier.01
|
||||
gt.recipe.craker,gregtech,gregtech:gt.blockmachines:1160,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.chemicalbath.tier.01
|
||||
gt.recipe.cuttingsaw,gregtech,gregtech:gt.blockmachines:251,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.chemicalreactor.tier.01
|
||||
gt.recipe.dieselgeneratorfuel,gregtech,gregtech:gt.blockmachines:1110,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.circuitassembler.tier.01
|
||||
gt.recipe.distillationtower,gregtech,gregtech:gt.blockmachines:1126,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.compressor.tier.01
|
||||
gt.recipe.distillery,gregtech,gregtech:gt.blockmachines:531,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.cutter.tier.01
|
||||
gt.recipe.electrolyzer,gregtech,gregtech:gt.blockmachines:371,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.distillery.tier.01
|
||||
gt.recipe.electromagneticseparator,gregtech,gregtech:gt.blockmachines:561,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.electrolyzer.tier.01
|
||||
gt.recipe.extractor,gregtech,gregtech:gt.blockmachines:271,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.electromagneticseparator.tier.01
|
||||
gt.recipe.extrahugenaquadahreactor,gregtech,gregtech:gt.blockmachines:1189,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.extractor.tier.01
|
||||
gt.recipe.extremedieselgeneratorfuel,gregtech,gregtech:gt.blockmachines:2105,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.extruder.tier.01
|
||||
gt.recipe.extruder,gregtech,gregtech:gt.blockmachines:281,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.fermenter.tier.01
|
||||
gt.recipe.fakeAssemblylineProcess,gregtech,gregtech:gt.blockmachines:1170,,gregtech,true,gregapi_post,12,135,166,2,,,,,,gt.blockmachines.basicmachine.fluidcanner.tier.01
|
||||
gt.recipe.fermenter,gregtech,gregtech:gt.blockmachines:501,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.fluidextractor.tier.01
|
||||
gt.recipe.fluidcanner,gregtech,gregtech:gt.blockmachines:431,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.fluidheater.tier.01
|
||||
gt.recipe.fluidextractor,gregtech,gregtech:gt.blockmachines:511,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.fluidsolidifier.tier.01
|
||||
gt.recipe.fluidheater,gregtech,gregtech:gt.blockmachines:621,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.hammer.tier.01
|
||||
gt.recipe.fluidnaquadahreactor,gregtech,gregtech:gt.blockmachines:1192,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.laserengraver.tier.01
|
||||
gt.recipe.fluidsolidifier,gregtech,gregtech:gt.blockmachines:521,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.lathe.tier.01
|
||||
gt.recipe.fusionreactor,gregtech,gregtech:gt.blockmachines:1193,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.macerator.tier.01
|
||||
gt.recipe.gasturbinefuel,gregtech,gregtech:gt.blockmachines:1115,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.massfab.tier.01
|
||||
gt.recipe.hammer,gregtech,gregtech:gt.blockmachines:611,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.microwave.tier.01
|
||||
gt.recipe.hugenaquadahreactor,gregtech,gregtech:gt.blockmachines:1188,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.mixer.tier.01
|
||||
gt.recipe.implosioncompressor,gregtech,gregtech:gt.blockmachines:12734,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.orewasher.tier.01
|
||||
gt.recipe.largeboilerfakefuels,gregtech,gregtech:gt.blockmachines:1020,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.plasmaarcfurnace.tier.01
|
||||
gt.recipe.largechemicalreactor,gregtech,gregtech:gt.blockmachines:1169,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.polarizer.tier.01
|
||||
gt.recipe.largenaquadahreactor,gregtech,gregtech:gt.blockmachines:1191,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.press.tier.01
|
||||
gt.recipe.laserengraver,gregtech,gregtech:gt.blockmachines:591,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.printer.tier.01
|
||||
gt.recipe.lathe,gregtech,gregtech:gt.blockmachines:291,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.recycler.tier.01
|
||||
gt.recipe.macerator,gregtech,gregtech:gt.blockmachines:301,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.replicator.tier.01
|
||||
gt.recipe.magicfuels,gregtech,gregtech:gt.blockmachines:1123,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.rockbreaker.tier.01
|
||||
gt.recipe.massfab,gregtech,gregtech:gt.blockmachines:461,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.scanner.tier.01
|
||||
gt.recipe.metalbender,gregtech,gregtech:gt.blockmachines:221,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.sifter.tier.01
|
||||
gt.recipe.microwave,gregtech,gregtech:gt.blockmachines:311,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.slicer.tier.01
|
||||
gt.recipe.mixer,gregtech,gregtech:gt.blockmachines:581,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.thermalcentrifuge.tier.01
|
||||
gt.recipe.orewasher,gregtech,gregtech:gt.blockmachines:391,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.unboxinator.tier.01
|
||||
gt.recipe.packager,gregtech,gregtech:gt.blockmachines:401,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.basicmachine.wiremill.tier.01
|
||||
gt.recipe.plasmaarcfurnace,gregtech,gregtech:gt.blockmachines:661,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.electricimplosioncompressor
|
||||
gt.recipe.plasmageneratorfuels,gregtech,gregtech:gt.blockmachines:1196,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.fusioncomputer.tier.06
|
||||
gt.recipe.polarizer,gregtech,gregtech:gt.blockmachines:551,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.industrialcokeoven.controller.tier.single
|
||||
gt.recipe.press,gregtech,gregtech:gt.blockmachines:601,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Needs more Yshift? Or doesn't apply properly? Added more
|
||||
gt.recipe.primitiveblastfurnace,gregtech,gregtech:gt.blockmachines:140,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.blastfurnace
|
||||
gt.recipe.printer,gregtech,gregtech:gt.blockmachines:321,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.boiler.bronze
|
||||
gt.recipe.pyro,gregtech,gregtech:gt.blockmachines:1159,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.brickedblastfurnace
|
||||
gt.recipe.replicator,gregtech,gregtech:gt.blockmachines:481,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.chemicalreactor
|
||||
gt.recipe.rockbreaker,gregtech,gregtech:gt.blockmachines:441,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.cracker
|
||||
gt.recipe.scanner,gregtech,gregtech:gt.blockmachines:341,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.distillationtower
|
||||
gt.recipe.semifluidboilerfuels,gregtech,gregtech:gt.blockmachines:1020,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.pyro
|
||||
gt.recipe.sifter,gregtech,gregtech:gt.blockmachines:641,,gregtech,true,gregapi_post,6,135,166,2,,,,,,gt.blockmachines.multimachine.vacuumfreezer
|
||||
gt.recipe.slicer,gregtech,gregtech:gt.blockmachines:631,,gregtech,true,gregapi_post,6,135,166,2,,,,,,GT++'s incomplete compound fabricator?
|
||||
gt.recipe.smallnaquadahreactor,gregtech,gregtech:gt.blockmachines:1190,,gregtech,true,gregapi_post,6,135,166,2,,,,,,LV Combustion gen
|
||||
gt.recipe.thermalcentrifuge,gregtech,gregtech:gt.blockmachines:381,,gregtech,true,gregapi_post,6,135,166,2,,,,,,LV gas turbine
|
||||
gt.recipe.thermalgeneratorfuel,gregtech,IC2:blockGenerator:1,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Naq Reactor Mark I
|
||||
gt.recipe.unpackager,gregtech,gregtech:gt.blockmachines:411,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Naq Reactor Mark II
|
||||
gt.recipe.uuamplifier,gregtech,gregtech:gt.blockmachines:471,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Naq Reactor Mark III. Misnamed in code
|
||||
gt.recipe.vacuumfreezer,gregtech,gregtech:gt.blockmachines:1002,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Naq Reactor Mark IV. Slightly different name for recipe map
|
||||
gt.recipe.wiremill,gregtech,gregtech:gt.blockmachines:351,,gregtech,true,gregapi_post,6,135,166,2,,,,,,Naq Reactor Mark V. Slightly different name for recipe map
|
||||
ic.recipe.recycler,gregtech,gregtech:gt.blockmachines:331,,gregtech,true,gregapi_post,6,135,166,2,,,,,,
|
||||
pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5SmallOreStat,Gregtech,gregtech:gt.blockores:85,,gregtech,true,,,145,,2,,,,,,
|
||||
pers.gwyog.gtneioreplugin.plugin.gregtech5.PluginGT5VeinStat,Gregtech,gregtech:gt.blockores:386,,gregtech,true,,,135,,2,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.AdvRecipeHandler,IC2,IC2:blockreactorvessel,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.AdvShapelessRecipeHandler,IC2,IC2:blockreactorvessel,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.BlastFurnaceRecipeHandler,IC2,IC2:blockMachine3:1,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.BlockCutterRecipeHandler,IC2,IC2:blockMachine3:2,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.CentrifugeRecipeHandler,IC2,IC2:blockMachine2:3,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.CompressorRecipeHandler,IC2,IC2:blockMachine:5,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.ExtractorRecipeHandler,IC2,IC2:blockMachine:4,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.FluidCannerRecipeHandler,IC2,IC2:blockMachine:6,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.LatheRecipeHandler,IC2,IC2:blockMachine3:8,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.MaceratorRecipeHandler,IC2,IC2:blockMachine:3,,IC2,true,,,65,,5,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.MetalFormerRecipeHandlerCutting,IC2,IC2:blockMachine2:4,,IC2,true,,,55,,6,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.MetalFormerRecipeHandlerExtruding,IC2,IC2:blockMachine2:4,,IC2,true,,,55,,6,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.MetalFormerRecipeHandlerRolling,IC2,IC2:blockMachine2:4,,IC2,true,,,55,,6,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.OreWashingRecipeHandler,IC2,IC2:blockMachine2:5,,IC2,true,,,,,,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.ScrapboxRecipeHandler,IC2,IC2:itemScrapbox,,IC2,true,,,50,,6,,,,,,
|
||||
ic2.neiIntegration.core.recipehandler.SolidCannerRecipeHandler,IC2,IC2:blockMachine2:9,,IC2,true,,,,,,,,,,,
|
||||
speiger.src.crops.prediction.NEIPlugin,IC2CropsNEI,IC2:blockCrop,,Ic2Nei,true,,,135,,2,,,,,,"Not actual recipes, just info"
|
||||
tonius.neiintegration.mods.mcforge.RecipeHandlerFluidRegistry,Minecraft,minecraft:water,,minecraft,false,,,,,,,,,,,
|
||||
tonius.neiintegration.mods.mcforge.RecipeHandlerOreDictionary,Minecraft,minecraft:iron_ore,,minecraft,false,,,,,,,,,,,
|
||||
gt.recipe.alloyblastsmelter,GT++,gregtech:gt.blockmachines:810,,miscutils,true,,,,,,,,,,,ABS
|
||||
gt.recipe.rocketenginefuel,GT++,gregtech:gt.blockmachines:793,,miscutils,true,,,,,,,,,,,Basic (EV) rocket fuel gen
|
||||
gt.recipe.cyclotron,GT++,gregtech:gt.blockmachines:828,,miscutils,true,,,,,,,,,,,Cyclotron
|
||||
gt.recipe.chemicaldehydrator,GT++,gregtech:gt.blockmachines:911,,miscutils,true,,,,,,,,,,,Dehydrator
|
||||
gt.recipe.slowfusionreactor,GT++,gregtech:gt.blockmachines:31015,,miscutils,true,,,,,,,,,,,gt.blockmachines.gtplusplus.fusion.single
|
||||
gt.recipe.RTGgenerators,GT++,gregtech:gt.blockmachines:869,,miscutils,true,,,,,,,,,,,GT++ version of the RTG
|
||||
gt.recipe.cokeoven,GT++,gregtech:gt.blockmachines:791,,miscutils,true,,,,,,,,,,,ICO
|
||||
gt.recipe.semifluidgeneratorfuels,GT++,gregtech:gt.blockmachines:837,,miscutils,true,,,,,,,,,,,Semifluid gen
|
||||
gt.recipe.fishpond,GT++,gregtech:gt.blockmachines:829,,miscutils,true,,,,,,,,,,,Zhuhai
|
||||
gt.recipe.advanced.mixer,GT++,gregtech:gt.blockmachines:811,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.cryogenicfreezer,GT++,gregtech:gt.blockmachines:910,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.fissionfuel,GT++,gregtech:gt.blockmachines:835,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.geothermalfuel,GT++,gregtech:gt.blockmachines:830,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.lftr,GT++,gregtech:gt.blockmachines:751,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.lftr.2,GT++,gregtech:gt.blockmachines:751,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.matterfab2,GT++,gregtech:gt.blockmachines:799,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.multicentrifuge,GT++,gregtech:gt.blockmachines:790,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.multielectro,GT++,gregtech:gt.blockmachines:796,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.simplewasher,GT++,gregtech:gt.blockmachines:767,,miscutils,true,,,,,,,,,,,
|
||||
gt.recipe.vacfurnace,GT++,gregtech:gt.blockmachines:995,,miscutils,true,,,,,,,,,,,
|
||||
gtPlusPlus.nei.DecayableRecipeHandler,GT++,miscutils:dustRadium226,,miscutils,true,,,75,,4,,,,,,
|
||||
gtPlusPlus.nei.GT_NEI_FlotationCell,GT++,gregtech:gt.blockmachines:31028,,miscutils,true,,,120,,2,,,,,,
|
||||
gtPlusPlus.nei.GT_NEI_FluidReactor,GT++,gregtech:gt.blockmachines:998,,miscutils,true,,,,,,,,,,,
|
||||
gtPlusPlus.nei.GT_NEI_MillingMachine,GT++,gregtech:gt.blockmachines:31027,,miscutils,true,,,120,,2,,,,,,
|
||||
li.cil.oc.integration.nei.CallbackDocHandler,OpenComputers,OpenComputers:item:98,,OpenComputers,true,,,,,,,,,,,
|
||||
li.cil.oc.integration.nei.ManualUsageHandler,OpenComputers,OpenComputers:item:98,,OpenComputers,true,,,,,,,,,,,
|
||||
tonius.neiintegration.mods.harvestcraft.RecipeHandlerApiary,Pam's Harvestcraft,harvestcraft:apiary,,harvestcraft,true,,,70,,5,,,,,,There's only 1 though
|
||||
tonius.neiintegration.mods.harvestcraft.RecipeHandlerChurn,Pam's Harvestcraft,harvestcraft:churn,,harvestcraft,true,,,65,,5,,,,,,Same as above
|
||||
tonius.neiintegration.mods.harvestcraft.RecipeHandlerOven,Pam's Harvestcraft,harvestcraft:oven,,harvestcraft,true,,,65,,5,,,,,,
|
||||
tonius.neiintegration.mods.harvestcraft.RecipeHandlerPresser,Pam's Harvestcraft,harvestcraft:presser,,harvestcraft,true,,,65,,5,,,,,,
|
||||
tonius.neiintegration.mods.harvestcraft.RecipeHandlerQuern,Pam's Harvestcraft,harvestcraft:quern,,harvestcraft,true,,,65,,5,,,,,,
|
||||
gcewing.projectblue.nei.NEIRecipeHandler,ProjectBlue,ProjectBlue:sprayCan,,ProjectBlue,true,,,65,,5,,,,,,
|
||||
mrtjp.projectred.core.libmc.recipe.PRShapedRecipeHandler,ProjectRed,ProjRed|Transmission:projectred.transmission.wire:7,,ProjRed|Transmission,true,,,,,,,,,,,
|
||||
mrtjp.projectred.core.libmc.recipe.PRShapelessRecipeHandler,ProjectRed,ProjRed|Transmission:projectred.transmission.wire:7,,ProjRed|Transmission,true,,,,,,,,,,,
|
||||
tonius.neiintegration.mods.railcraft.RecipeHandlerBlastFurnace,Railcraft,Railcraft:machine.alpha:12,,Railcraft,true,,,,,,,,,,,
|
||||
tonius.neiintegration.mods.railcraft.RecipeHandlerCokeOven,Railcraft,Railcraft:machine.alpha:7,,Railcraft,true,,,65,,5,,,,,,
|
||||
tonius.neiintegration.mods.railcraft.RecipeHandlerRockCrusher,Railcraft,Railcraft:machine.alpha:15,,Railcraft,true,,,,,,,,,,,
|
||||
tonius.neiintegration.mods.railcraft.RecipeHandlerRollingMachineShaped,Railcraft,Railcraft:machine.alpha:8,,Railcraft,true,,,65,,5,,,,,,
|
||||
tonius.neiintegration.mods.railcraft.RecipeHandlerRollingMachineShapeless,Railcraft,Railcraft:machine.alpha:8,,Railcraft,true,,,,,,,,,,,
|
||||
lumien.randomthings.Handler.ModCompability.NEI.ImbuingStationRecipeHandler,RandomThings,RandomThings:imbuingStation,,RandomThings,true,,,120,,2,,,,,,
|
||||
com.github.technus.tectech.nei.TT_NEI_ResearchHandler,TecTech,gregtech:gt.blockmachines:15331,,tectech,true,,6,140,,2,,,,,,
|
||||
com.github.technus.tectech.nei.TT_NEI_ScannerHandler,TecTech,tectech:item.em.definitionScanStorage,,tectech,true,,,,,,,,,,,
|
||||
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapedRecipeHandler,Thaumcraft,Thaumcraft:blockTable:15,,Thaumcraft,true,,,,,,,,,,,
|
||||
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.ArcaneShapelessRecipeHandler,Thaumcraft,Thaumcraft:blockTable:15,,Thaumcraft,true,,,140,,2,,,,,,
|
||||
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.CrucibleRecipeHandler,Thaumcraft,Thaumcraft:blockMetalDevice,,Thaumcraft,true,,,140,,2,,,,,,Using R on an item you get from the crucible basically never works
|
||||
com.djgiannuzz.thaumcraftneiplugin.nei.recipehandler.InfusionRecipeHandler,Thaumcraft,Thaumcraft:blockStoneDevice:2,,Thaumcraft,true,,,140,,2,,,,,,
|
||||
ru.timeconqueror.tcneiadditions.nei.arcaneworkbench.ArcaneCraftingShapedHandler,Thaumcraft,Thaumcraft:blockTable:15,,Thaumcraft,true,,,140,,2,,,,,,
|
||||
ru.timeconqueror.tcneiadditions.nei.AspectCombinationHandler,Thaumcraft,Thaumcraft:ItemResearchNotes,,Thaumcraft,true,,,130,,2,,,,,,In sets of 5. Each one is ~30 height
|
||||
ru.timeconqueror.tcneiadditions.nei.AspectFromItemStackHandler,Thaumcraft,Thaumcraft:ItemResearchNotes,,Thaumcraft,true,,,140,,2,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerAlloying,Tinker's Construct,TConstruct:Smeltery,,TConstruct,true,,,65,,5,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerCastingBasin,Tinker's Construct,TConstruct:SearedBlock:2,,TConstruct,true,,,65,,5,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerCastingTable,Tinker's Construct,TConstruct:SearedBlock,,TConstruct,true,,,65,,5,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerDryingRack,Tinker's Construct,TConstruct:Armor.DryingRack,,TConstruct,true,,,55,,5,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerMelting,Tinker's Construct,TConstruct:LavaTank:2,,TConstruct,true,,,65,,5,,,,,,
|
||||
tconstruct.plugins.nei.RecipeHandlerToolMaterials,Tinker's Construct,TConstruct:ToolStationBlock,,TConstruct,true,,,110,,3,,,,,,"Longer if more modifiers, I went through the whole list"
|
||||
net.p455w0rd.wirelesscraftingterminal.integration.modules.NEIHelpers.NEIAEShapedRecipeHandler,WirelessCraftingTerminal,ae2wct:wirelessCraftingTerminal,,ae2wct,true,,,,,,,,,,,
|
||||
alkalus.main.nei.NEI_Handler_Cauldron,witchery,witchery:cauldron,,WitcheryExtras,true,,,65,,5,,,,,,
|
||||
alkalus.main.nei.NEI_Handler_Distillery,witchery,witchery:distilleryidle,,WitcheryExtras,true,,,140,,2,,,,,,
|
||||
alkalus.main.nei.NEI_Handler_Kettle,witchery,witchery:kettle,,WitcheryExtras,true,,,65,,5,,,,,,
|
||||
alkalus.main.nei.NEI_Handler_Oven,witchery,witchery:witchesovenidle,,WitcheryExtras,true,,,,,,,,,,,Not working at all now
|
||||
alkalus.main.nei.NEI_Handler_SpinningWheel,witchery,witchery:spinningwheel,,WitcheryExtras,true,,,65,,5,,,,,,
|
||||
com.emoniph.witchery.integration.NEICauldronRecipeHandler,witchery,witchery:cauldron,,witchery,true,,,,,,,,,,,Replaced by WE presumably
|
||||
com.emoniph.witchery.integration.NEIDistilleryRecipeHandler,witchery,witchery:distilleryidle,,witchery,true,,,,,,,,,,,Replaced by WE presumably
|
||||
com.emoniph.witchery.integration.NEIKettleRecipeHandler,witchery,witchery:kettle,,witchery,true,,,,,,,,,,,Replaced by WE presumably
|
||||
com.emoniph.witchery.integration.NEISpinningWheelRecipeHandler,witchery,witchery:spinningwheel,,witchery,true,,,,,,,,,,,Replaced by WE presumably
|
||||
com.emoniph.witchery.integration.NEIWitchesOvenRecipeHandler,witchery,witchery:witchesovenidle,,witchery,true,,,,,,,,,,,Replaced by WE presumably
|
||||
witchinggadgets.client.nei.NEIInfernalBlastfurnaceHandler,WitchingGadgets,WitchingGadgets:WG_StoneDevice:2,,WitchingGadgets,true,,,65,,5,,,,,,
|
||||
witchinggadgets.client.nei.NEISpinningWheelHandler,WitchingGadgets,WitchingGadgets:WG_WoodenDevice,,WitchingGadgets,true,,,110,,3,,,,,,
|
||||
|
@@ -1,6 +1,13 @@
|
||||
nei.load=Load
|
||||
nei.save=Save
|
||||
|
||||
# PC/Linux Control Key
|
||||
nei.key.ctrl=CTRL
|
||||
# Mac Command Key
|
||||
nei.key.ctrl.mac=CMD
|
||||
|
||||
nei.bookmark.toggle=Bookmarks
|
||||
nei.bookmark.toggle.tip=Toggle visibility of the Bookmark Panel
|
||||
|
||||
nei.enchant=Enchant
|
||||
nei.enchant.level=Level
|
||||
@@ -12,6 +19,11 @@ nei.potion.duration=Duration
|
||||
nei.potion.level=Level
|
||||
|
||||
nei.inventory.options=Options
|
||||
nei.inventory.options.tip=NEI Config
|
||||
nei.inventory.options.tip.cheatmode.0=Recipe Mode
|
||||
nei.inventory.options.tip.cheatmode.1=Utility Mode
|
||||
nei.inventory.options.tip.cheatmode.2=Cheat Mode
|
||||
nei.inventory.options.tip.cheatmode.disable=%s-click here to cycle between Recipe, Utility, and Cheat Mode.
|
||||
nei.inventory.prev=Prev
|
||||
nei.inventory.next=Next
|
||||
nei.inventory.item_subsets=Item Subsets
|
||||
@@ -36,10 +48,15 @@ nei.inventory.dusk.set=Set time to dusk
|
||||
nei.inventory.midnight.enable=Enable midnight-dawn
|
||||
nei.inventory.midnight.set=Set time to midnight
|
||||
nei.inventory.heal=Heal the player
|
||||
nei.inventory.gamemode.0=Set gamemode to survival
|
||||
nei.inventory.gamemode.1=Set gamemode to creative
|
||||
nei.inventory.gamemode.2=Set gamemode to creative+
|
||||
nei.inventory.gamemode.3=Set gamemode to adventure
|
||||
nei.inventory.current.gamemode.0=Current gamemode: survival
|
||||
nei.inventory.current.gamemode.1=Current gamemode: creative
|
||||
nei.inventory.current.gamemode.2=Current gamemode: creative+
|
||||
nei.inventory.current.gamemode.3=Current gamemode: adventure
|
||||
|
||||
nei.inventory.gamemode.0=Click: Set gamemode to survival
|
||||
nei.inventory.gamemode.1=Click: Set gamemode to creative
|
||||
nei.inventory.gamemode.2=Click: Set gamemode to creative+
|
||||
nei.inventory.gamemode.3=Click: Set gamemode to adventure
|
||||
|
||||
nei.chat.gamemode.0=You are now playing survival
|
||||
nei.chat.gamemode.1=You are now playing creative
|
||||
@@ -76,6 +93,7 @@ nei.options.keys.gui.next_machine=Next Machine
|
||||
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.world=World
|
||||
nei.options.keys.world.chunkoverlay=Chunk Boundary Overlay
|
||||
nei.options.keys.world.moboverlay=Mob Spawn Overlay
|
||||
@@ -90,6 +108,15 @@ nei.options.keys.world.creative=Gamemode
|
||||
nei.options.keys.world.creative.tip=Cycle Gamemode
|
||||
|
||||
nei.options.inventory=Inventory
|
||||
nei.options.inventory.bookmarksEnabled=Bookmarks Panel Visibility
|
||||
nei.options.inventory.bookmarksEnabled.true=Visible
|
||||
nei.options.inventory.bookmarksEnabled.false=Hidden
|
||||
nei.options.inventory.jei_style_tabs=JEI Style Tabs
|
||||
nei.options.inventory.jei_style_tabs.true=Yes
|
||||
nei.options.inventory.jei_style_tabs.false=No [Weirdo]
|
||||
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.widgetsenabled.true=NEI Enabled
|
||||
nei.options.inventory.widgetsenabled.false=NEI Disabled
|
||||
nei.options.inventory.cheatmode.0=Recipe Mode
|
||||
@@ -142,6 +169,9 @@ nei.options.world.highlight_tips.show=Shown
|
||||
nei.options.world.highlight_tips.sample=Sample
|
||||
|
||||
nei.options.tools=Tools
|
||||
nei.options.tools.handler_load_from_config=Load handlers from Config
|
||||
nei.options.tools.handler_load_from_config.true=Config
|
||||
nei.options.tools.handler_load_from_config.false=JAR
|
||||
nei.options.tools.dump=Data Dumps
|
||||
nei.options.tools.dump.dump=Dump
|
||||
nei.options.tools.dump.dumped=%s IDs dumped to %s
|
||||
@@ -166,9 +196,10 @@ nei.options.tools.dump.itempanel.mode.2=Json
|
||||
nei.options.tools.dump.itempanel.mode.3=PNG
|
||||
nei.options.tools.dump.itempanel.icon.dumped=Item Panel icons were dumped to %s
|
||||
nei.options.tools.dump.itempanel.icon.cancelled=Dump cancelled
|
||||
|
||||
|
||||
|
||||
nei.options.tools.dump.handlers=NEI Handlers
|
||||
nei.options.tools.dump.handlers.dumped=handlers were dumped to %s
|
||||
nei.options.tools.dump.handlers.mode.0=CSV
|
||||
nei.options.tools.dump.handlers.mode.1=Json
|
||||
|
||||
nei.recipe.page=Page %s/%s
|
||||
nei.recipe.tooltip=Recipes
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 25 KiB |
@@ -150,7 +150,7 @@ public class BookmarkPanel extends ItemPanel {
|
||||
|
||||
@Override
|
||||
public int getNextX(GuiContainer gui) {
|
||||
return gui.width - prev.w - 2 - ((gui.xSize + gui.width) /2 + 2);
|
||||
return gui.width - prev.w - 2 - ((gui.xSize + gui.width) /2 + 2) - 16;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -160,7 +160,7 @@ public class BookmarkPanel extends ItemPanel {
|
||||
|
||||
@Override
|
||||
public int getPageX(GuiContainer gui) {
|
||||
return gui.guiLeft * 3 / 2 + gui.xSize + 1 - ((gui.xSize + gui.width) /2 + 2);
|
||||
return gui.guiLeft * 3 / 2 + gui.xSize + 1 - ((gui.xSize + gui.width) / 2 + 2) - 16;
|
||||
}
|
||||
|
||||
public int getHightAdjustment() {
|
||||
@@ -168,8 +168,7 @@ public class BookmarkPanel extends ItemPanel {
|
||||
}
|
||||
|
||||
public int getWidth(GuiContainer gui) {
|
||||
return LayoutManager.getLeftSize(gui) - ( (gui.xSize + gui.width) / 2 + 3 );
|
||||
|
||||
return LayoutManager.getLeftSize(gui) - ( (gui.xSize + gui.width) / 2 + 3 ) - 16;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -42,15 +42,20 @@ public abstract class Button extends Widget
|
||||
if (!contains(mx, my))
|
||||
return tooltip;
|
||||
|
||||
String tip = getButtonTip();
|
||||
final String tip = getButtonTip();
|
||||
if (tip != null)
|
||||
tooltip.add(tip);
|
||||
|
||||
addTooltips(tooltip);
|
||||
|
||||
return tooltip;
|
||||
}
|
||||
|
||||
public String getButtonTip() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void addTooltips(List<String> tooltip) {}
|
||||
|
||||
public String getRenderLabel() {
|
||||
return label;
|
||||
|
||||
@@ -2,12 +2,19 @@ package codechicken.nei;
|
||||
|
||||
public abstract class ButtonCycled extends Button
|
||||
{
|
||||
public ButtonCycled() {}
|
||||
|
||||
public ButtonCycled(int num) {
|
||||
icons = new Image[num];
|
||||
init();
|
||||
}
|
||||
@Override
|
||||
public Image getRenderIcon()
|
||||
{
|
||||
return icons[index];
|
||||
}
|
||||
|
||||
public void init() {}
|
||||
public int index;
|
||||
public Image[] icons;
|
||||
}
|
||||
@@ -8,11 +8,14 @@ import codechicken.nei.api.INEIGuiHandler;
|
||||
import codechicken.nei.api.IRecipeOverlayRenderer;
|
||||
import codechicken.nei.api.ItemInfo;
|
||||
import codechicken.nei.api.LayoutStyle;
|
||||
import codechicken.nei.drawable.DrawableBuilder;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
import codechicken.nei.guihook.GuiContainerManager;
|
||||
import codechicken.nei.guihook.IContainerDrawHandler;
|
||||
import codechicken.nei.guihook.IContainerInputHandler;
|
||||
import codechicken.nei.guihook.IContainerObjectHandler;
|
||||
import codechicken.nei.guihook.IContainerTooltipHandler;
|
||||
import codechicken.nei.recipe.GuiRecipeTab;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
@@ -22,6 +25,8 @@ import net.minecraft.client.renderer.InventoryEffectRenderer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -39,6 +44,7 @@ import static codechicken.nei.NEIClientConfig.getOptionList;
|
||||
import static codechicken.nei.NEIClientConfig.getSearchExpression;
|
||||
import static codechicken.nei.NEIClientConfig.hasSMPCounterPart;
|
||||
import static codechicken.nei.NEIClientConfig.invCreativeMode;
|
||||
import static codechicken.nei.NEIClientConfig.isBookmarkPanelHidden;
|
||||
import static codechicken.nei.NEIClientConfig.isEnabled;
|
||||
import static codechicken.nei.NEIClientConfig.isHidden;
|
||||
import static codechicken.nei.NEIClientConfig.showIDs;
|
||||
@@ -50,6 +56,7 @@ import static codechicken.nei.NEIClientUtils.decreaseSlotStack;
|
||||
import static codechicken.nei.NEIClientUtils.deleteEverything;
|
||||
import static codechicken.nei.NEIClientUtils.deleteHeldItem;
|
||||
import static codechicken.nei.NEIClientUtils.deleteItemsOfType;
|
||||
import static codechicken.nei.NEIClientUtils.getGamemode;
|
||||
import static codechicken.nei.NEIClientUtils.getGuiContainer;
|
||||
import static codechicken.nei.NEIClientUtils.getHeldItem;
|
||||
import static codechicken.nei.NEIClientUtils.getNextGamemode;
|
||||
@@ -81,8 +88,8 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
public static SubsetWidget dropDown;
|
||||
public static TextField searchField;
|
||||
|
||||
public static Button options;
|
||||
public static Button bookmarks;
|
||||
public static ButtonCycled options;
|
||||
public static ButtonCycled bookmarksButton;
|
||||
|
||||
public static Button more;
|
||||
public static Button less;
|
||||
@@ -99,12 +106,9 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
|
||||
public static HashMap<Integer, LayoutStyle> layoutStyles = new HashMap<>();
|
||||
|
||||
public static boolean ftbUtilsLoaded = false;
|
||||
public static boolean itemsLoaded = false;
|
||||
|
||||
public static void load() {
|
||||
ftbUtilsLoaded = Loader.isModLoaded("FTBU");
|
||||
|
||||
API.addLayoutStyle(0, new LayoutStyleMinecraft());
|
||||
|
||||
instance = new LayoutManager();
|
||||
@@ -136,7 +140,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
return gui.width - 3;
|
||||
}
|
||||
public static int getLeftSize(GuiContainer gui) {
|
||||
return getSideWidth(gui) - (ftbUtilsLoaded ? 18 : 0);
|
||||
return getSideWidth(gui);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -198,6 +202,11 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
toggleBooleanSetting("inventory.hidden");
|
||||
return true;
|
||||
}
|
||||
if (keyID == getKeyBinding("gui.hide_bookmarks")) {
|
||||
toggleBooleanSetting("inventory.bookmarksEnabled");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isEnabled() && !isHidden()) {
|
||||
for (Widget widget : controlWidgets)
|
||||
if (inputFocused == null)
|
||||
@@ -242,13 +251,14 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
widget.draw(mousex, mousey);
|
||||
} else {
|
||||
options.draw(mousex, mousey);
|
||||
bookmarksButton.draw(mousex, mousey);
|
||||
}
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void postRenderObjects(GuiContainer gui, int mousex, int mousey) {
|
||||
if (!isHidden() && isEnabled()) {
|
||||
@@ -293,8 +303,13 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
VisiblityData visiblity = new VisiblityData();
|
||||
if (isHidden())
|
||||
visiblity.showNEI = false;
|
||||
|
||||
if (isBookmarkPanelHidden())
|
||||
visiblity.showBookmarkPanel = false;
|
||||
|
||||
if (gui.height - gui.ySize <= 40)
|
||||
visiblity.showSearchSection = false;
|
||||
|
||||
if (gui.guiLeft - 4 < 76)
|
||||
visiblity.showWidgets = false;
|
||||
|
||||
@@ -318,28 +333,68 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
dropDown = new SubsetWidget();
|
||||
searchField = new SearchField("search");
|
||||
|
||||
options = new Button("Options")
|
||||
options = new ButtonCycled(3)
|
||||
{
|
||||
@Override
|
||||
public void init() {
|
||||
this.icons[0] = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 32, 0, 16, 16).build();
|
||||
this.icons[1] = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 48, 0, 16, 16).build();
|
||||
this.icons[2] = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 64, 0, 16, 16).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onButtonPress(boolean rightclick) {
|
||||
if (!rightclick) {
|
||||
getOptionList().openGui(getGuiContainer(), false);
|
||||
if (Keyboard.getEventKeyState() && (Keyboard.getEventKey() == Keyboard.KEY_LCONTROL || Keyboard.getEventKey() == Keyboard.KEY_RCONTROL)) {
|
||||
NEIClientConfig.cycleSetting("inventory.cheatmode", 3);
|
||||
} else {
|
||||
if (Keyboard.getEventKeyState() && (Keyboard.getEventKey() == Keyboard.KEY_LSHIFT || Keyboard.getEventKey() == Keyboard.KEY_RSHIFT)) {
|
||||
GuiRecipeTab.loadHandlerInfo();
|
||||
}
|
||||
getOptionList().openGui(getGuiContainer(), false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void addTooltips(List<String> tooltip) {
|
||||
tooltip.add(translate("inventory.options.tip"));
|
||||
String modeColor = "";
|
||||
final int cheatMode = NEIClientConfig.getCheatMode();
|
||||
if (cheatMode == 1)
|
||||
modeColor = EnumChatFormatting.GOLD.toString();
|
||||
else if (cheatMode == 2)
|
||||
modeColor = EnumChatFormatting.RED.toString();
|
||||
String controlKeyLocalization = translate(Minecraft.isRunningOnMac ? "key.ctrl.mac" : "key.ctrl");
|
||||
tooltip.add(modeColor + translate("inventory.options.tip.cheatmode." + cheatMode));
|
||||
tooltip.add(modeColor + translate("inventory.options.tip.cheatmode.disable", controlKeyLocalization));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRenderLabel() {
|
||||
return translate("inventory.options");
|
||||
}
|
||||
};
|
||||
|
||||
bookmarks = new Button("Bookmarks")
|
||||
bookmarksButton = new ButtonCycled(2)
|
||||
{
|
||||
@Override
|
||||
public void init() {
|
||||
this.icons[0] = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 0, 0, 16, 16).build();
|
||||
this.icons[1] = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 16, 0, 16, 16).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onButtonPress(boolean rightclick) {
|
||||
return false;
|
||||
NEIClientConfig.toggleBooleanSetting("inventory.bookmarksEnabled");
|
||||
return true;
|
||||
}
|
||||
|
||||
public String getButtonTip() {
|
||||
return translate("bookmark.toggle.tip");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -424,7 +479,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
GuiDraw.drawTip(mousex + 9, mousey, translate("inventory.delete." + (shiftKey() ? "all" : "one"), GuiContainerManager.itemDisplayNameShort(getHeldItem())));
|
||||
}
|
||||
};
|
||||
gamemode = new ButtonCycled()
|
||||
gamemode = new ButtonCycled(3)
|
||||
{
|
||||
@Override
|
||||
public boolean onButtonPress(boolean rightclick) {
|
||||
@@ -434,12 +489,12 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getButtonTip() {
|
||||
return translate("inventory.gamemode." + getNextGamemode());
|
||||
public void addTooltips(List<String> tooltip) {
|
||||
tooltip.add(translate("inventory.current.gamemode." + getGamemode()));
|
||||
tooltip.add(EnumChatFormatting.GRAY + translate("inventory.gamemode." + getNextGamemode()));
|
||||
}
|
||||
|
||||
};
|
||||
gamemode.icons = new Image[3];
|
||||
rain = new Button()
|
||||
{
|
||||
@Override
|
||||
@@ -605,6 +660,7 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
|
||||
|
||||
addWidget(options);
|
||||
addWidget(bookmarksButton);
|
||||
if (visiblity.showItemPanel) {
|
||||
addWidget(itemPanel);
|
||||
itemPanel.setVisible();
|
||||
@@ -728,48 +784,55 @@ public class LayoutManager implements IContainerInputHandler, IContainerTooltipH
|
||||
}
|
||||
|
||||
public static void drawIcon(int x, int y, Image image) {
|
||||
changeTexture("nei:textures/nei_sprites.png");
|
||||
final boolean isDrawableResource = image instanceof DrawableResource;
|
||||
|
||||
if (!isDrawableResource)
|
||||
changeTexture("nei:textures/nei_sprites.png");
|
||||
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
drawTexturedModalRect(x, y, image.x, image.y, image.width, image.height);
|
||||
if(!isDrawableResource)
|
||||
drawTexturedModalRect(x, y, image.x, image.y, image.width, image.height);
|
||||
else
|
||||
((DrawableResource)image).draw(x, y);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
|
||||
public static void drawButtonBackground(int x, int y, int w, int h, boolean edges, int type) {
|
||||
int wtiles = 0;
|
||||
int wTiles = 0;
|
||||
int ew = w;//end width
|
||||
if (w / 2 > 100) {
|
||||
wtiles = (w - 200) / 50 + 1;
|
||||
wTiles = (w - 200) / 50 + 1;
|
||||
ew = 200;
|
||||
}
|
||||
|
||||
int w1 = ew / 2;
|
||||
int h1 = h / 2;
|
||||
int w2 = (ew + 1) / 2;
|
||||
int h2 = (h + 1) / 2;
|
||||
final int w1 = ew / 2;
|
||||
final int h1 = h / 2;
|
||||
final int w2 = (ew + 1) / 2;
|
||||
final int h2 = (h + 1) / 2;
|
||||
|
||||
int x2 = x + w - w2;
|
||||
int y2 = y + h - h2;
|
||||
final int x2 = x + w - w2;
|
||||
final int y2 = y + h - h2;
|
||||
|
||||
int ty = 46 + type * 20;
|
||||
int te = (edges ? 0 : 1);//tex edges
|
||||
final int ty = 46 + type * 20;
|
||||
final int te = (edges ? 0 : 1);//tex edges
|
||||
|
||||
int ty1 = ty + te;
|
||||
int tx1 = te;
|
||||
int tx3 = 75;
|
||||
final int ty1 = ty + te;
|
||||
final int tx1 = te;
|
||||
final int tx3 = 75;
|
||||
//halfway the 1 is for odd number adjustment
|
||||
int ty2 = ty + 20 - h2 - te;
|
||||
int tx2 = 200 - w2 - te;
|
||||
final int ty2 = ty + 20 - h2 - te;
|
||||
final int tx2 = 200 - w2 - te;
|
||||
|
||||
changeTexture("textures/gui/widgets.png");
|
||||
drawTexturedModalRect(x, y, tx1, ty1, w1, h1);//top left
|
||||
drawTexturedModalRect(x, y2, tx1, ty2, w1, h2);//bottom left
|
||||
|
||||
for (int tile = 0; tile < wtiles; tile++) {
|
||||
int tilex = x + w1 + 50 * tile;
|
||||
drawTexturedModalRect(tilex, y, tx3, ty1, 50, h1);//top
|
||||
drawTexturedModalRect(tilex, y2, tx3, ty2, 50, h2);//bottom
|
||||
for (int tile = 0; tile < wTiles; tile++) {
|
||||
final int tileX = x + w1 + 50 * tile;
|
||||
drawTexturedModalRect(tileX, y, tx3, ty1, 50, h1);//top
|
||||
drawTexturedModalRect(tileX, y2, tx3, ty2, 50, h2);//bottom
|
||||
}
|
||||
|
||||
drawTexturedModalRect(x2, y, tx2, ty1, w2, h1);//top right
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import static codechicken.lib.gui.GuiDraw.drawStringC;
|
||||
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.gamemode;
|
||||
@@ -59,7 +60,6 @@ public class LayoutStyleMinecraft extends LayoutStyle
|
||||
public void layout(GuiContainer gui, VisiblityData visiblity) {
|
||||
reset();
|
||||
|
||||
//leftSize = ((gui.width - gui.xSize) / 2) - 3;
|
||||
leftSize = ItemPanels.bookmarkPanel.getWidth(gui);
|
||||
numButtons = Math.max(leftSize / 18, 1);
|
||||
|
||||
@@ -87,6 +87,8 @@ public class LayoutStyleMinecraft extends LayoutStyle
|
||||
else if (NEIClientUtils.isValidGamemode("adventure"))
|
||||
gamemode.index = 2;
|
||||
}
|
||||
bookmarksButton.index = NEIClientConfig.isBookmarkPanelHidden() ? 0 : 1;
|
||||
options.index = NEIClientConfig.getCheatMode();
|
||||
|
||||
magnet.state = 0x4 | (getMagnetMode() ? 1 : 0);
|
||||
|
||||
@@ -124,12 +126,17 @@ public class LayoutStyleMinecraft extends LayoutStyle
|
||||
|
||||
options.x = isEnabled() ? 0 : 6;
|
||||
options.y = isEnabled() ? gui.height - 22 : gui.height - 28;
|
||||
options.w = 80;
|
||||
options.w = 22;
|
||||
options.h = 22;
|
||||
|
||||
bookmarksButton.x = 24 + (isEnabled() ? 0 : 6);
|
||||
bookmarksButton.y = isEnabled() ? gui.height - 22 : gui.height - 28;
|
||||
bookmarksButton.w = 22;
|
||||
bookmarksButton.h = 22;
|
||||
|
||||
searchField.y = gui.height - searchField.h - 2;
|
||||
|
||||
dropDown.x = itemPanel.x - 150;
|
||||
dropDown.x = gui.guiLeft;
|
||||
dropDown.h = 20;
|
||||
dropDown.w = Math.min(itemPanel.prev.x - dropDown.x - 3, 100);
|
||||
searchField.h = 20;
|
||||
@@ -169,16 +176,16 @@ public class LayoutStyleMinecraft extends LayoutStyle
|
||||
|
||||
Image icon = b.getRenderIcon();
|
||||
if (icon == null) {
|
||||
int colour = tex == 2 ? 0xffffa0 :
|
||||
tex == 0 ? 0x601010 : 0xe0e0e0;
|
||||
int colour = tex == 2 ? 0xffffa0 : tex == 0 ? 0x601010 : 0xe0e0e0;
|
||||
|
||||
drawStringC(b.getRenderLabel(), b.x + b.w / 2, b.y + (b.h - 8) / 2, colour);
|
||||
} else {
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
|
||||
int iconx = b.x + (b.w - icon.width) / 2;
|
||||
int icony = b.y + (b.h - icon.height) / 2;
|
||||
LayoutManager.drawIcon(iconx, icony, icon);
|
||||
final int iconX = b.x + (b.w - icon.width) / 2;
|
||||
final int iconY = b.y + (b.h - icon.height) / 2;
|
||||
|
||||
LayoutManager.drawIcon(iconX, iconY, icon);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ import codechicken.nei.config.OptionList;
|
||||
import codechicken.nei.config.OptionOpenGui;
|
||||
import codechicken.nei.config.OptionTextField;
|
||||
import codechicken.nei.config.OptionToggleButton;
|
||||
import codechicken.nei.config.OptionToggleButtonBoubs;
|
||||
import codechicken.nei.config.OptionUtilities;
|
||||
import codechicken.nei.recipe.GuiRecipeTab;
|
||||
import codechicken.nei.recipe.RecipeInfo;
|
||||
import codechicken.obfuscator.ObfuscationRun;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -51,6 +53,7 @@ public class NEIClientConfig
|
||||
new ConfigFile(new File(configDir, "client.cfg")));
|
||||
public static ConfigSet world;
|
||||
public static final File bookmarkFile = new File(configDir, "bookmarks.ini");
|
||||
public static final File handlerFile = new File(configDir, "handlers.csv");
|
||||
|
||||
public static ItemStack[] creativeInv;
|
||||
|
||||
@@ -77,7 +80,7 @@ public class NEIClientConfig
|
||||
|
||||
tag.getTag("inventory.widgetsenabled").getBooleanValue(true);
|
||||
API.addOption(new OptionToggleButton("inventory.widgetsenabled"));
|
||||
|
||||
|
||||
tag.getTag("inventory.hidden").getBooleanValue(false);
|
||||
tag.getTag("inventory.cheatmode").getIntValue(2);
|
||||
tag.getTag("inventory.lockmode").setComment("For those who can't help themselves.\nSet this to a mode and you will be unable to change it ingame").getIntValue(-1);
|
||||
@@ -123,7 +126,24 @@ public class NEIClientConfig
|
||||
API.addOption(new OptionTextField("command.rain"));
|
||||
tag.getTag("command.heal").setDefaultValue("");
|
||||
API.addOption(new OptionTextField("command.heal"));
|
||||
|
||||
tag.getTag("inventory.bookmarksEnabled").setComment("Enable/disable bookmarks").getBooleanValue(true);
|
||||
API.addOption(new OptionToggleButton("inventory.bookmarksEnabled", true));
|
||||
tag.getTag("inventory.jei_style_tabs").setComment("Enable/disable JEI Style Tabs").getBooleanValue(true);
|
||||
API.addOption(new OptionToggleButtonBoubs("inventory.jei_style_tabs", true));
|
||||
|
||||
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("tools.handler_load_from_config").setComment("ADVANCED: Load handlers from config").getBooleanValue(false);
|
||||
API.addOption(new OptionToggleButton("tools.handler_load_from_config", true) {
|
||||
@Override
|
||||
public boolean onClick(int button) {
|
||||
super.onClick(button);
|
||||
GuiRecipeTab.loadHandlerInfo();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
setDefaultKeyBindings();
|
||||
}
|
||||
|
||||
@@ -167,6 +187,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.hide_bookmarks", Keyboard.KEY_B);
|
||||
API.addKeyBind("world.chunkoverlay", Keyboard.KEY_F9);
|
||||
API.addKeyBind("world.moboverlay", Keyboard.KEY_F7);
|
||||
API.addKeyBind("world.highlight_tips", Keyboard.KEY_NUMPAD0);
|
||||
@@ -281,10 +302,21 @@ public class NEIClientConfig
|
||||
public static boolean isHidden() {
|
||||
return !enabledOverride || getBooleanSetting("inventory.hidden");
|
||||
}
|
||||
|
||||
public static boolean isBookmarkPanelHidden() {
|
||||
return !getBooleanSetting("inventory.bookmarksEnabled");
|
||||
}
|
||||
public static boolean areJEIStyleTabsVisible() {
|
||||
return getBooleanSetting("inventory.jei_style_tabs");
|
||||
}
|
||||
public static boolean useCreativeTabStyle() {
|
||||
return getBooleanSetting("inventory.creative_tab_style");
|
||||
}
|
||||
public static boolean isEnabled() {
|
||||
return enabledOverride && getBooleanSetting("inventory.widgetsenabled");
|
||||
}
|
||||
public static boolean loadHandlersFromJar() {
|
||||
return !getBooleanSetting("tools.handler_load_from_config");
|
||||
}
|
||||
|
||||
public static void setEnabled(boolean flag) {
|
||||
getSetting("inventory.widgetsenabled").setBooleanValue(flag);
|
||||
@@ -433,4 +465,5 @@ public class NEIClientConfig
|
||||
if (file.isDirectory() && !saveFileNames.contains(file.getName()))
|
||||
ObfuscationRun.deleteDir(file, true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import codechicken.core.CommonUtils;
|
||||
import codechicken.core.launch.CodeChickenCorePlugin;
|
||||
import codechicken.nei.api.IConfigureNEI;
|
||||
import codechicken.nei.asm.NEICorePlugin;
|
||||
import codechicken.nei.recipe.GuiRecipeTab;
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import cpw.mods.fml.client.FMLFileResourcePack;
|
||||
@@ -14,6 +15,7 @@ import cpw.mods.fml.common.MetadataCollection;
|
||||
import cpw.mods.fml.common.ModMetadata;
|
||||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||
import cpw.mods.fml.common.versioning.ArtifactVersion;
|
||||
import cpw.mods.fml.common.versioning.VersionParser;
|
||||
import cpw.mods.fml.common.versioning.VersionRange;
|
||||
@@ -91,7 +93,11 @@ public class NEIModContainer extends DummyModContainer
|
||||
|
||||
ServerHandler.load();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void postInit(FMLPostInitializationEvent event) {
|
||||
if (CommonUtils.isClient())
|
||||
GuiRecipeTab.loadHandlerInfo();
|
||||
}
|
||||
@Override
|
||||
public VersionRange acceptableMinecraftVersionRange() {
|
||||
return VersionParser.parseRange(CodeChickenCorePlugin.mcVersion);
|
||||
|
||||
@@ -10,6 +10,7 @@ import codechicken.nei.ItemStackSet;
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.PopupInputHandler;
|
||||
import codechicken.nei.config.ArrayDumper;
|
||||
import codechicken.nei.config.HandlerDumper;
|
||||
import codechicken.nei.config.ItemPanelDumper;
|
||||
import codechicken.nei.config.RegistryDumper;
|
||||
import codechicken.nei.guihook.GuiContainerManager;
|
||||
@@ -261,6 +262,7 @@ public class ItemInfo
|
||||
}
|
||||
});
|
||||
API.addOption(new ItemPanelDumper("tools.dump.itempanel"));
|
||||
API.addOption(new HandlerDumper("tools.dump.handlers"));
|
||||
}
|
||||
|
||||
private static void parseModItems() {
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package codechicken.nei.config;
|
||||
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.recipe.GuiRecipeTab;
|
||||
import codechicken.nei.recipe.GuiUsageRecipe;
|
||||
import codechicken.nei.recipe.HandlerInfo;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
import codechicken.nei.util.NBTJson;
|
||||
import com.google.common.base.Objects;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.JsonToNBT;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class HandlerDumper extends DataDumper
|
||||
{
|
||||
public HandlerDumper(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] header() {
|
||||
return new String[]{"Handler Recipe Name", "Handler Class", "Overlay Identifier", "Mod DisplayName", "ItemStack"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String[]> dump(int mode) {
|
||||
LinkedList<String[]> list = new LinkedList<>();
|
||||
for (IRecipeHandler handler : GuiUsageRecipe.usagehandlers) {
|
||||
final String handlerName = handler.toString().split("@")[0];
|
||||
final String handlerId = Objects.firstNonNull(handler instanceof TemplateRecipeHandler ? ((TemplateRecipeHandler)handler).getOverlayIdentifier() : null, "null");
|
||||
HandlerInfo info = GuiRecipeTab.getHandlerInfo(handlerName, handlerId);
|
||||
|
||||
list.add(new String[] {
|
||||
handler.getRecipeName(),
|
||||
handlerName,
|
||||
handlerId,
|
||||
info != null ? info.getModName() : "Unknown",
|
||||
info != null ? info.getItemStack().toString() : "Unknown"
|
||||
});
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String renderName() {
|
||||
return translateN(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFileExtension() {
|
||||
switch(getMode()) {
|
||||
case 0: return ".csv";
|
||||
case 1: return ".json";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChatComponentTranslation dumpMessage(File file) {
|
||||
return new ChatComponentTranslation(namespaced(name + ".dumped"), "dumps/" + file.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String modeButtonText() {
|
||||
return translateN(name + ".mode." + getMode());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void dumpTo(File file) throws IOException {
|
||||
if (getMode() == 0)
|
||||
super.dumpTo(file);
|
||||
else
|
||||
dumpJson(file);
|
||||
}
|
||||
|
||||
public void dumpJson(File file) throws IOException {
|
||||
final String[] header = header();
|
||||
final FileWriter writer;
|
||||
try {
|
||||
writer = new FileWriter(file);
|
||||
for (String[] list : dump(getMode())) {
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
for (int i = 0; i < header.length; i++) {
|
||||
tag.setString(header[i], list[i]);
|
||||
}
|
||||
IOUtils.write(NBTJson.toJson(tag) + "\n", writer);
|
||||
}
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
NEIClientConfig.logger.error("Filed to save dump handler list to file {}", file, e);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int modeCount() {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package codechicken.nei.config;
|
||||
|
||||
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 {
|
||||
private static final DrawableResource coolBoubs = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 48, 16, 22, 22).build();
|
||||
private static final DrawableResource angryBoubs = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 70, 16, 22, 22).build();
|
||||
|
||||
public final boolean prefixed;
|
||||
|
||||
public OptionToggleButtonBoubs(String name, boolean prefixed) {
|
||||
super(name);
|
||||
this.prefixed = prefixed;
|
||||
}
|
||||
|
||||
public OptionToggleButtonBoubs(String name) {
|
||||
this(name, false);
|
||||
}
|
||||
|
||||
public boolean state() {
|
||||
return renderTag().getBooleanValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawButton(int mx, int my) {
|
||||
Rectangle b = buttonSize();
|
||||
LayoutManager.drawButtonBackground(b.x, b.y, b.width, b.height, true, getButtonTex(mx, my));
|
||||
final Image image = state() ? coolBoubs : angryBoubs;
|
||||
LayoutManager.drawIcon(b.x + (b.width/2) - (coolBoubs.getWidth()/2), b.y, image);
|
||||
}
|
||||
|
||||
public String getButtonText() {
|
||||
return translateN(name + (state() ? ".true" : ".false"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPrefix() {
|
||||
return prefixed ? translateN(name) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onClick(int button) {
|
||||
getTag().setBooleanValue(!state());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package codechicken.nei.drawable;
|
||||
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class DrawableBuilder {
|
||||
private final ResourceLocation resourceLocation;
|
||||
private int u;
|
||||
private int v;
|
||||
private int width;
|
||||
private int height;
|
||||
private int textureWidth = 256;
|
||||
private int textureHeight = 256;
|
||||
private int paddingTop = 0;
|
||||
private int paddingBottom = 0;
|
||||
private int paddingLeft = 0;
|
||||
private int paddingRight = 0;
|
||||
|
||||
public DrawableBuilder(String resourceLocation, int u, int v, int width, int height) {
|
||||
this.u = u;
|
||||
this.v = v;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.resourceLocation = new ResourceLocation(resourceLocation);
|
||||
}
|
||||
|
||||
public DrawableBuilder setTextureSize(int width, int height) {
|
||||
this.textureWidth = width;
|
||||
this.textureHeight = height;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DrawableBuilder addPadding(int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) {
|
||||
this.paddingTop = paddingTop;
|
||||
this.paddingBottom = paddingBottom;
|
||||
this.paddingLeft = paddingLeft;
|
||||
this.paddingRight = paddingRight;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DrawableBuilder trim(int trimTop, int trimBottom, int trimLeft, int trimRight) {
|
||||
this.u += trimLeft;
|
||||
this.v += trimTop;
|
||||
this.width -= trimLeft + trimRight;
|
||||
this.height -= trimTop + trimBottom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DrawableResource build() {
|
||||
return new DrawableResource(resourceLocation, u, v, width, height, paddingTop, paddingBottom, paddingLeft, paddingRight, textureWidth, textureHeight);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package codechicken.nei.drawable;
|
||||
|
||||
import codechicken.nei.Image;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class DrawableResource extends Image {
|
||||
|
||||
private final ResourceLocation resourceLocation;
|
||||
private final int textureWidth;
|
||||
private final int textureHeight;
|
||||
|
||||
private final int paddingTop;
|
||||
private final int paddingBottom;
|
||||
private final int paddingLeft;
|
||||
private final int paddingRight;
|
||||
|
||||
public DrawableResource(ResourceLocation resourceLocation, int u, int v, int width, int height, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight, int textureWidth, int textureHeight) {
|
||||
super(u, v, width, height);
|
||||
this.resourceLocation = resourceLocation;
|
||||
this.textureWidth = textureWidth;
|
||||
this.textureHeight = textureHeight;
|
||||
|
||||
this.paddingTop = paddingTop;
|
||||
this.paddingBottom = paddingBottom;
|
||||
this.paddingLeft = paddingLeft;
|
||||
this.paddingRight = paddingRight;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width + paddingLeft + paddingRight;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height + paddingTop + paddingBottom;
|
||||
}
|
||||
|
||||
public void draw(int xOffset, int yOffset) {
|
||||
draw(xOffset, yOffset, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
public void draw(int xOffset, int yOffset, int maskTop, int maskBottom, int maskLeft, int maskRight) {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(this.resourceLocation);
|
||||
|
||||
final int x = xOffset + this.paddingLeft + maskLeft;
|
||||
final int y = yOffset + this.paddingTop + maskTop;
|
||||
final int textureX = this.x + maskLeft;
|
||||
final int textureY = this.y + maskTop;
|
||||
final int width = this.width - maskRight - maskLeft;
|
||||
final int height = this.height - maskBottom - maskTop;
|
||||
// drawModalRectWithCustomSizedTexture
|
||||
Gui.func_146110_a(x, y, textureX, textureY, width, height, textureWidth, textureHeight);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,6 +102,8 @@ public class DefaultOverlayHandler implements IOverlayHandler
|
||||
{
|
||||
for(IngredientDistribution distrib : assignedIngredients)
|
||||
{
|
||||
if(distrib.slots.length == 0) continue;
|
||||
|
||||
ItemStack pstack = distrib.permutation;
|
||||
int transferCap = quantity*pstack.stackSize;
|
||||
int transferred = 0;
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
import codechicken.lib.gui.GuiDraw;
|
||||
import codechicken.lib.render.CCRenderState;
|
||||
import codechicken.nei.GuiNEIButton;
|
||||
import codechicken.nei.LayoutManager;
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.NEIClientUtils;
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.VisiblityData;
|
||||
import codechicken.nei.api.IGuiContainerOverlay;
|
||||
import codechicken.nei.api.IOverlayHandler;
|
||||
import codechicken.nei.api.IRecipeOverlayRenderer;
|
||||
import codechicken.nei.api.INEIGuiHandler;
|
||||
import codechicken.nei.api.TaggedInventoryArea;
|
||||
import codechicken.nei.drawable.DrawableBuilder;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
import codechicken.nei.guihook.GuiContainerManager;
|
||||
import codechicken.nei.guihook.IContainerTooltipHandler;
|
||||
import codechicken.nei.guihook.IGuiClientSide;
|
||||
@@ -17,6 +18,8 @@ import codechicken.nei.guihook.IGuiHandleMouseWheel;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
@@ -25,11 +28,40 @@ import org.lwjgl.opengl.GL11;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOverlay, IGuiClientSide, IGuiHandleMouseWheel, IContainerTooltipHandler
|
||||
{
|
||||
public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOverlay, IGuiClientSide, IGuiHandleMouseWheel, IContainerTooltipHandler, INEIGuiHandler {
|
||||
// Background image calculations
|
||||
private static final int BG_TOP_HEIGHT = 6;
|
||||
private static final int BG_MIDDLE_HEIGHT = 154;
|
||||
private static final int BG_BOTTOM_HEIGHT = 6;
|
||||
|
||||
private static final int BG_TOP_Y = 0;
|
||||
private static final int BG_MIDDLE_Y = BG_TOP_Y + BG_TOP_HEIGHT;
|
||||
private static final int BG_BOTTOM_Y = BG_MIDDLE_Y + BG_MIDDLE_HEIGHT;
|
||||
|
||||
// Button sizes
|
||||
private static final int borderPadding = 6;
|
||||
private static final int buttonWidth = 13;
|
||||
private static final int buttonHeight = 12;
|
||||
|
||||
// Background image
|
||||
final DrawableResource bgTop = new DrawableBuilder("nei:textures/gui/recipebg.png", 0, BG_TOP_Y, 176, BG_TOP_HEIGHT).build();
|
||||
final DrawableResource bgMiddle = new DrawableBuilder("nei:textures/gui/recipebg.png", 0, BG_MIDDLE_Y, 176, BG_MIDDLE_HEIGHT).build();
|
||||
final DrawableResource bgBottom = new DrawableBuilder("nei:textures/gui/recipebg.png", 0, BG_BOTTOM_Y, 176, BG_BOTTOM_HEIGHT).build();
|
||||
|
||||
public ArrayList<? extends IRecipeHandler> currenthandlers = new ArrayList<>();
|
||||
private static Class gregtechHandler;
|
||||
|
||||
static {
|
||||
try {
|
||||
gregtechHandler = Class.forName("gregtech.nei.GT_NEI_DefaultHandler");
|
||||
} catch (ClassNotFoundException e) {
|
||||
gregtechHandler = null;
|
||||
}
|
||||
}
|
||||
|
||||
public int page;
|
||||
public int recipetype;
|
||||
@@ -38,11 +70,19 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
public GuiScreen prevGui;
|
||||
public GuiButton nextpage;
|
||||
public GuiButton prevpage;
|
||||
public GuiButton overlay1;
|
||||
public GuiButton overlay2;
|
||||
private GuiButton nexttype;
|
||||
private GuiButton prevtype;
|
||||
|
||||
private final Rectangle area = new Rectangle();
|
||||
private final GuiRecipeTabs recipeTabs;
|
||||
private IRecipeHandler handler;
|
||||
private HandlerInfo handlerInfo;
|
||||
|
||||
private int yShift = 0;
|
||||
|
||||
protected GuiRecipe(GuiScreen prevgui) {
|
||||
super(new ContainerRecipe());
|
||||
recipeTabs = new GuiRecipeTabs(this);
|
||||
slotcontainer = (ContainerRecipe) inventorySlots;
|
||||
|
||||
this.prevGui = prevgui;
|
||||
@@ -51,32 +91,46 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
|
||||
if (prevgui instanceof IGuiContainerOverlay)
|
||||
this.firstGui = ((IGuiContainerOverlay) prevgui).getFirstScreen();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
this.xSize = 176;
|
||||
this.ySize = Math.min(Math.max(this.height - 68, 166), 370);
|
||||
super.initGui();
|
||||
this.guiTop = (this.height - this.ySize) / 2 + 10;
|
||||
|
||||
currenthandlers = getCurrentRecipeHandlers(); // Probably don't comment me out
|
||||
final int rightButtonX = guiLeft + xSize - borderPadding - buttonWidth;
|
||||
final int leftButtonX = guiLeft + borderPadding;
|
||||
|
||||
currenthandlers = getCurrentRecipeHandlers();
|
||||
GuiButton nexttype = new GuiNEIButton(0, width / 2 - 70, (height - ySize) / 2 + 3, 13, 12, "<");
|
||||
GuiButton prevtype = new GuiNEIButton(1, width / 2 + 57, (height - ySize) / 2 + 3, 13, 12, ">");
|
||||
nextpage = new GuiNEIButton(2, width / 2 - 70, (height + ySize) / 2 - 18, 13, 12, "<");
|
||||
prevpage = new GuiNEIButton(3, width / 2 + 57, (height + ySize) / 2 - 18, 13, 12, ">");
|
||||
overlay1 = new GuiNEIButton(4, width / 2 + 65, (height - ySize) / 2 + 63, 13, 12, "?");
|
||||
overlay2 = new GuiNEIButton(5, width / 2 + 65, (height - ySize) / 2 + 128, 13, 12, "?");
|
||||
buttonList.add(nexttype);
|
||||
buttonList.add(prevtype);
|
||||
buttonList.add(nextpage);
|
||||
buttonList.add(prevpage);
|
||||
buttonList.add(overlay1);
|
||||
buttonList.add(overlay2);
|
||||
nexttype = new GuiNEIButton(0, leftButtonX, guiTop + 3, buttonWidth, buttonHeight, "<");
|
||||
prevtype = new GuiNEIButton(1, rightButtonX, guiTop + 3, buttonWidth, buttonHeight, ">");
|
||||
|
||||
nextpage = new GuiNEIButton(2, leftButtonX, guiTop + 17, buttonWidth, buttonHeight, "<");
|
||||
prevpage = new GuiNEIButton(3, rightButtonX, guiTop + 17, buttonWidth, buttonHeight, ">");
|
||||
|
||||
buttonList.addAll(Arrays.asList(nexttype, prevtype, nextpage, prevpage));
|
||||
|
||||
if (currenthandlers.size() == 1) {
|
||||
nexttype.visible = false;
|
||||
prevtype.visible = false;
|
||||
}
|
||||
if(handler == null) setRecipePage(recipetype);
|
||||
|
||||
checkYShift();
|
||||
recipeTabs.initLayout();
|
||||
refreshPage();
|
||||
}
|
||||
private void checkYShift() {
|
||||
if (handlerInfo != null) {
|
||||
yShift = handlerInfo.getYShift();
|
||||
} else {
|
||||
yShift = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char c, int i) {
|
||||
@@ -88,9 +142,9 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
if (GuiContainerManager.getManager(this).lastKeyTyped(i, c))
|
||||
return;
|
||||
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int recipe = page * recipehandler.recipiesPerPage(); recipe < recipehandler.numRecipes() && recipe < (page + 1) * recipehandler.recipiesPerPage(); recipe++)
|
||||
if (recipehandler.keyTyped(this, c, i, recipe))
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
for (int recipe = page * recipesPerPage; recipe < handler.numRecipes() && recipe < (page + 1) * recipesPerPage; recipe++)
|
||||
if (handler.keyTyped(this, c, i, recipe))
|
||||
return;
|
||||
|
||||
if (i == mc.gameSettings.keyBindInventory.getKeyCode())
|
||||
@@ -109,18 +163,20 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int par1, int par2, int par3) {
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int recipe = page * recipehandler.recipiesPerPage(); recipe < recipehandler.numRecipes() && recipe < (page + 1) * recipehandler.recipiesPerPage(); recipe++)
|
||||
if (recipehandler.mouseClicked(this, par3, recipe))
|
||||
protected void mouseClicked(int x, int y, int button) {
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
for (int recipe = page * recipesPerPage; recipe < handler.numRecipes() && recipe < (page + 1) * recipesPerPage; recipe++)
|
||||
if (handler.mouseClicked(this, button, recipe))
|
||||
return;
|
||||
|
||||
super.mouseClicked(par1, par2, par3);
|
||||
if (recipeTabs.mouseClicked(x, y, button))
|
||||
return;
|
||||
super.mouseClicked(x, y, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton guibutton) {
|
||||
super.actionPerformed(guibutton);
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
switch (guibutton.id) {
|
||||
case 0:
|
||||
prevType();
|
||||
@@ -134,36 +190,30 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
case 3:
|
||||
nextPage();
|
||||
break;
|
||||
case 4:
|
||||
overlayRecipe(page * currenthandlers.get(recipetype).recipiesPerPage());
|
||||
break;
|
||||
case 5:
|
||||
overlayRecipe(page * currenthandlers.get(recipetype).recipiesPerPage() + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
currenthandlers.get(recipetype).onUpdate();
|
||||
handler.onUpdate();
|
||||
refreshPage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> handleTooltip(GuiContainer gui, int mousex, int mousey, List<String> currenttip) {
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int i = page * recipehandler.recipiesPerPage(); i < recipehandler.numRecipes() && i < (page + 1) * recipehandler.recipiesPerPage(); i++)
|
||||
currenttip = recipehandler.handleTooltip(this, currenttip, i);
|
||||
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
for (int i = page * recipesPerPage; i < handler.numRecipes() && i < (page + 1) * recipesPerPage; i++)
|
||||
currenttip = handler.handleTooltip(this, currenttip, i);
|
||||
recipeTabs.handleTooltip(mousex, mousey, currenttip);
|
||||
return currenttip;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> handleItemTooltip(GuiContainer gui, ItemStack stack, int mousex, int mousey, List<String> currenttip) {
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int i = page * recipehandler.recipiesPerPage(); i < recipehandler.numRecipes() && i < (page + 1) * recipehandler.recipiesPerPage(); i++)
|
||||
currenttip = recipehandler.handleItemTooltip(this, stack, currenttip, i);
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
for (int i = page * recipesPerPage; i < handler.numRecipes() && i < (page + 1) * recipesPerPage; i++)
|
||||
currenttip = handler.handleItemTooltip(this, stack, currenttip, i);
|
||||
|
||||
return currenttip;
|
||||
}
|
||||
@@ -175,119 +225,160 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
|
||||
private void nextPage() {
|
||||
page++;
|
||||
if (page > (currenthandlers.get(recipetype).numRecipes() - 1) / currenthandlers.get(recipetype).recipiesPerPage())
|
||||
page = 0;
|
||||
if (page > (handler.numRecipes() - 1) / getRecipesPerPage()) page = 0;
|
||||
}
|
||||
|
||||
private void prevPage() {
|
||||
page--;
|
||||
if (page < 0)
|
||||
page = (currenthandlers.get(recipetype).numRecipes() - 1) / currenthandlers.get(recipetype).recipiesPerPage();
|
||||
if (page < 0) page = (handler.numRecipes() - 1) / getRecipesPerPage();
|
||||
}
|
||||
|
||||
private void nextType() {
|
||||
recipetype++;
|
||||
if (recipetype >= currenthandlers.size())
|
||||
recipetype = 0;
|
||||
page = 0;
|
||||
setRecipePage(++recipetype);
|
||||
}
|
||||
|
||||
private void prevType() {
|
||||
recipetype--;
|
||||
if (recipetype < 0)
|
||||
recipetype = currenthandlers.size() - 1;
|
||||
setRecipePage(--recipetype);
|
||||
}
|
||||
|
||||
public void setRecipePage(int idx) {
|
||||
recipetype = idx;
|
||||
if (recipetype < 0) recipetype = currenthandlers.size() - 1;
|
||||
else if (recipetype >= currenthandlers.size()) recipetype = 0;
|
||||
handler = currenthandlers.get(recipetype);
|
||||
handlerInfo = getHandlerInfo(handler);
|
||||
page = 0;
|
||||
recipeTabs.calcPageNumber();
|
||||
checkYShift();
|
||||
}
|
||||
|
||||
private void overlayRecipe(int recipe) {
|
||||
IRecipeOverlayRenderer renderer = currenthandlers.get(recipetype).getOverlayRenderer(firstGui, recipe);
|
||||
IOverlayHandler handler = currenthandlers.get(recipetype).getOverlayHandler(firstGui, recipe);
|
||||
boolean shift = NEIClientUtils.shiftKey();
|
||||
|
||||
if (handler != null && (renderer == null || shift)) {
|
||||
mc.displayGuiScreen(firstGui);
|
||||
handler.overlayRecipe(firstGui, currenthandlers.get(recipetype), recipe, shift);
|
||||
} else if (renderer != null) {
|
||||
mc.displayGuiScreen(firstGui);
|
||||
LayoutManager.overlayRenderer = renderer;
|
||||
public HandlerInfo getHandlerInfo(IRecipeHandler handler) {
|
||||
final String handlerName = handler.toString().split("@")[0];
|
||||
final String handlerID;
|
||||
if(handler instanceof TemplateRecipeHandler) {
|
||||
handlerID = (((TemplateRecipeHandler)handler).getOverlayIdentifier());
|
||||
} else {
|
||||
handlerID = null;
|
||||
}
|
||||
return GuiRecipeTab.getHandlerInfo(handlerName, handlerID);
|
||||
}
|
||||
|
||||
|
||||
public void refreshPage() {
|
||||
refreshSlots();
|
||||
area.width = handlerInfo.getWidth();
|
||||
area.height = handlerInfo.getHeight();
|
||||
area.x = guiLeft - 2;
|
||||
area.y = guiTop - 4;
|
||||
checkYShift();
|
||||
|
||||
IRecipeHandler handler = currenthandlers.get(recipetype);
|
||||
boolean multiplepages = handler.numRecipes() > handler.recipiesPerPage();
|
||||
nextpage.visible = multiplepages;
|
||||
prevpage.visible = multiplepages;
|
||||
|
||||
if(firstGui != null) {
|
||||
overlay1.yPosition = (height - ySize) / 2 + (handler.recipiesPerPage() == 2 ? 63 : 128);
|
||||
overlay1.visible = handler.hasOverlay(firstGui, firstGui.inventorySlots, page * handler.recipiesPerPage());
|
||||
overlay2.visible = handler.recipiesPerPage() == 2 && page * handler.recipiesPerPage() + 1 < handler.numRecipes() &&
|
||||
handler.hasOverlay(firstGui, firstGui.inventorySlots, page * handler.recipiesPerPage() + 1);
|
||||
} else {
|
||||
overlay1.visible = overlay2.visible = false;
|
||||
}
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
boolean multiplepages = handler.numRecipes() > recipesPerPage;
|
||||
nextpage.enabled = prevpage.enabled = multiplepages;
|
||||
|
||||
recipeTabs.refreshPage();
|
||||
}
|
||||
|
||||
private void refreshSlots() {
|
||||
slotcontainer.inventorySlots.clear();
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int i = page * recipehandler.recipiesPerPage(); i < recipehandler.numRecipes() && i < (page + 1) * recipehandler.recipiesPerPage(); i++) {
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
for (int i = page * recipesPerPage; i < handler.numRecipes() && i < (page + 1) * recipesPerPage; i++) {
|
||||
Point p = getRecipePosition(i);
|
||||
|
||||
List<PositionedStack> stacks = recipehandler.getIngredientStacks(i);
|
||||
List<PositionedStack> stacks = handler.getIngredientStacks(i);
|
||||
for (PositionedStack stack : stacks)
|
||||
slotcontainer.addSlot(stack, p.x, p.y);
|
||||
|
||||
stacks = recipehandler.getOtherStacks(i);
|
||||
stacks = handler.getOtherStacks(i);
|
||||
for (PositionedStack stack : stacks)
|
||||
slotcontainer.addSlot(stack, p.x, p.y);
|
||||
|
||||
PositionedStack result = recipehandler.getResultStack(i);
|
||||
PositionedStack result = handler.getResultStack(i);
|
||||
if (result != null)
|
||||
slotcontainer.addSlot(result, p.x, p.y);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int par1, int par2) {
|
||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||
GuiContainerManager.enable2DRender();
|
||||
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
String s = recipehandler.getRecipeName();
|
||||
fontRendererObj.drawString(s, (xSize - fontRendererObj.getStringWidth(s)) / 2, 5, 0x404040);
|
||||
s = NEIClientUtils.translate("recipe.page", page + 1, (currenthandlers.get(recipetype).numRecipes() - 1) / recipehandler.recipiesPerPage() + 1);
|
||||
fontRendererObj.drawString(s, (xSize - fontRendererObj.getStringWidth(s)) / 2, ySize - 16, 0x404040);
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
String s = handler.getRecipeName();
|
||||
fontRendererObj.drawStringWithShadow(s, (xSize - fontRendererObj.getStringWidth(s)) / 2, 5, 0xffffff);
|
||||
s = NEIClientUtils.translate("recipe.page", page + 1, (handler.numRecipes() - 1) / recipesPerPage + 1);
|
||||
fontRendererObj.drawStringWithShadow(s, (xSize - fontRendererObj.getStringWidth(s)) / 2, 19, 0xffffff);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(5, 16, 0);
|
||||
for (int i = page * recipehandler.recipiesPerPage(); i < recipehandler.numRecipes() && i < (page + 1) * recipehandler.recipiesPerPage(); i++) {
|
||||
recipehandler.drawForeground(i);
|
||||
GL11.glTranslatef(0, 65, 0);
|
||||
GL11.glTranslatef(5, 32 + yShift, 0);
|
||||
for (int i = page * recipesPerPage; i < handler.numRecipes() && i < (page + 1) * recipesPerPage; i++) {
|
||||
handler.drawForeground(i);
|
||||
GL11.glTranslatef(0, handlerInfo.getHeight(), 0);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float f, int mx, int my) {
|
||||
protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
|
||||
final int recipesPerPage = getRecipesPerPage();
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
CCRenderState.changeTexture("nei:textures/gui/recipebg.png");
|
||||
int j = (width - xSize) / 2;
|
||||
int k = (height - ySize) / 2;
|
||||
drawTexturedModalRect(j, k, 0, 0, xSize, ySize);
|
||||
final int j = (width - xSize) / 2;
|
||||
final int k = guiTop;
|
||||
|
||||
drawBackgroundTiled(j, k);
|
||||
|
||||
drawRect(guiLeft + borderPadding + buttonWidth - 1,
|
||||
nexttype.yPosition,
|
||||
guiLeft + xSize - borderPadding - buttonWidth,
|
||||
nexttype.yPosition + buttonHeight,
|
||||
0x30000000);
|
||||
drawRect(guiLeft + borderPadding + buttonWidth - 1,
|
||||
nextpage.yPosition,
|
||||
guiLeft + xSize - borderPadding - buttonWidth,
|
||||
nextpage.yPosition + buttonHeight,
|
||||
0x30000000);
|
||||
|
||||
if (NEIClientConfig.areJEIStyleTabsVisible()) {
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f);
|
||||
recipeTabs.draw(mouseX, mouseY);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(j + 5, k + 16, 0);
|
||||
IRecipeHandler recipehandler = currenthandlers.get(recipetype);
|
||||
for (int i = page * recipehandler.recipiesPerPage(); i < recipehandler.numRecipes() && i < (page + 1) * recipehandler.recipiesPerPage(); i++) {
|
||||
recipehandler.drawBackground(i);
|
||||
GL11.glTranslatef(0, 65, 0);
|
||||
GL11.glTranslatef(j + 5, k + 32 + yShift, 0);
|
||||
for (int i = page * recipesPerPage; i < handler.numRecipes() && i < (page + 1) * recipesPerPage; i++) {
|
||||
handler.drawBackground(i);
|
||||
GL11.glTranslatef(0, handlerInfo.getHeight(), 0);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
private void drawBackgroundTiled(int j, int k) {
|
||||
// Draw the top
|
||||
bgTop.draw(j, k + BG_TOP_Y);
|
||||
|
||||
// Maybe Tile the middle
|
||||
final int tiledHeight = ySize - BG_TOP_HEIGHT - BG_BOTTOM_HEIGHT;
|
||||
|
||||
if (tiledHeight > 0) {
|
||||
final int yTileCount = tiledHeight / BG_MIDDLE_HEIGHT;
|
||||
final int yRemainder = tiledHeight - (yTileCount * BG_MIDDLE_HEIGHT);
|
||||
final int yStart = k + BG_TOP_HEIGHT + tiledHeight;
|
||||
|
||||
for (int yTile = 0; yTile <= yTileCount; yTile++) {
|
||||
final int tileHeight = (yTile == yTileCount) ? yRemainder : BG_MIDDLE_HEIGHT;
|
||||
final int y = yStart - ((yTile + 1) * BG_MIDDLE_HEIGHT);
|
||||
if (tileHeight > 0) {
|
||||
bgMiddle.draw(j, y, BG_MIDDLE_HEIGHT - tileHeight, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw the bottom
|
||||
bgBottom.draw(j, k + ySize - BG_BOTTOM_HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuiContainer getFirstScreen() {
|
||||
return firstGui;
|
||||
@@ -300,20 +391,56 @@ public abstract class GuiRecipe extends GuiContainer implements IGuiContainerOve
|
||||
|
||||
return stackSlot == mouseoverSlot;
|
||||
}
|
||||
|
||||
private int getRecipesPerPage() {
|
||||
if(handlerInfo != null)
|
||||
return Math.max(Math.min(((ySize - (prevtype.height*3)) / handlerInfo.getHeight()), handlerInfo.getMaxRecipesPerPage()), 1);
|
||||
else
|
||||
return (handler.recipiesPerPage());
|
||||
}
|
||||
|
||||
public Point getRecipePosition(int recipe) {
|
||||
return new Point(5, 16 + (recipe % currenthandlers.get(recipetype).recipiesPerPage()) * 65);
|
||||
return new Point(5, 32 + yShift + ((recipe % getRecipesPerPage()) * handlerInfo.getHeight()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseScrolled(int i) {
|
||||
if (new Rectangle(guiLeft, guiTop, xSize, ySize).contains(GuiDraw.getMousePosition())) {
|
||||
if (i > 0)
|
||||
prevPage();
|
||||
else
|
||||
nextPage();
|
||||
if (i > 0) prevPage();
|
||||
else nextPage();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract ArrayList<? extends IRecipeHandler> getCurrentRecipeHandlers();
|
||||
|
||||
@Override
|
||||
public VisiblityData modifyVisiblity(GuiContainer gui, VisiblityData currentVisibility)
|
||||
{
|
||||
return currentVisibility;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Integer> getItemSpawnSlots(GuiContainer gui, ItemStack item) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TaggedInventoryArea> getInventoryAreas(GuiContainer gui) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleDragNDrop(GuiContainer gui, int mousex, int mousey, ItemStack draggedStack, int button) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h) {
|
||||
// Because some of the handlers *cough avaritia* are oversized
|
||||
Rectangle rect = new Rectangle(area);
|
||||
|
||||
return rect.contains(x, y, w, h);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
|
||||
import codechicken.lib.gui.GuiDraw;
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.Widget;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
import codechicken.nei.guihook.GuiContainerManager;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import org.apache.commons.csv.CSVFormat;
|
||||
import org.apache.commons.csv.CSVParser;
|
||||
import org.apache.commons.csv.CSVRecord;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.nio.channels.ReadableByteChannel;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class GuiRecipeTab extends Widget {
|
||||
public static HashMap<String, HandlerInfo> handlerMap = new HashMap<>();
|
||||
|
||||
private final GuiRecipe guiRecipe;
|
||||
private final IRecipeHandler handler;
|
||||
private final String handlerName;
|
||||
private final String handlerID;
|
||||
|
||||
private boolean selected;
|
||||
|
||||
public abstract int getWidth();
|
||||
public abstract int getHeight();
|
||||
|
||||
public abstract DrawableResource getSelectedTabImage();
|
||||
public abstract DrawableResource getUnselectedTabImage();
|
||||
|
||||
protected abstract int getForegroundIconX();
|
||||
protected abstract int getForegroundIconY();
|
||||
|
||||
|
||||
public GuiRecipeTab(GuiRecipe guiRecipe, IRecipeHandler handler, int x, int y) {
|
||||
super();
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.w = getWidth();
|
||||
this.h = getHeight();
|
||||
this.handler = handler;
|
||||
this.handlerName = handler.toString().split("@")[0];
|
||||
this.guiRecipe = guiRecipe;
|
||||
this.selected = false;
|
||||
|
||||
if(handler instanceof TemplateRecipeHandler) {
|
||||
handlerID = (((TemplateRecipeHandler)handler).getOverlayIdentifier());
|
||||
} else {
|
||||
handlerID = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(int mouseX, int mouseY) {
|
||||
drawBackground(mouseX, mouseY);
|
||||
drawForeground(mouseX, mouseY);
|
||||
}
|
||||
|
||||
public void drawBackground(int mouseX, int mouseY) {
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
final DrawableResource image;
|
||||
if (selected) image = getSelectedTabImage();
|
||||
else image = getUnselectedTabImage();
|
||||
|
||||
final int iconX = x + (w - image.getWidth()) / 2;
|
||||
final int iconY = y + (h - image.getHeight()) / 2;
|
||||
image.draw(iconX, iconY);
|
||||
}
|
||||
|
||||
public void drawForeground(int mouseX, int mouseY) {
|
||||
final int iconX = getForegroundIconX();
|
||||
final int iconY = getForegroundIconY();
|
||||
|
||||
final FontRenderer fontRenderer = GuiDraw.fontRenderer;
|
||||
final HandlerInfo handlerInfo = getHandlerInfo(handlerName, handlerID);
|
||||
final DrawableResource icon = handlerInfo != null ? handlerInfo.getImage() : null;
|
||||
final ItemStack itemStack = handlerInfo != null ? handlerInfo.getItemStack() : null;
|
||||
|
||||
|
||||
if (icon != null) {
|
||||
icon.draw(iconX + 1, iconY + 1);
|
||||
} else if (itemStack != null) {
|
||||
GuiContainerManager.drawItems.zLevel += 100;
|
||||
GuiContainerManager.drawItem(iconX, iconY, itemStack);
|
||||
GuiContainerManager.drawItems.zLevel -= 100;
|
||||
} else {
|
||||
// Text fallback
|
||||
String text = handler.getRecipeName().substring(0, 2);
|
||||
int textCenterX = x + (int) (getWidth() / 2f);
|
||||
int textCenterY = y + (int) (getHeight() / 2f) - 3;
|
||||
int color = selected ? 0xffffa0 : 0xe0e0e0;
|
||||
fontRenderer.drawStringWithShadow(text, textCenterX - (int) (fontRenderer.getStringWidth(text) / 2f), textCenterY, color);
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void addTooltips(List<String> tooltip) {
|
||||
tooltip.add(handler.getRecipeName().trim());
|
||||
|
||||
String handlerMod = getHandlerMod(handlerName, handlerID);
|
||||
tooltip.add(EnumChatFormatting.BLUE + handlerMod);
|
||||
|
||||
boolean shiftHeld = Keyboard.getEventKeyState() && (Keyboard.getEventKey() == Keyboard.KEY_LSHIFT || Keyboard.getEventKey() == Keyboard.KEY_RSHIFT);
|
||||
if (handlerMod.equals("Unknown") || shiftHeld) {
|
||||
tooltip.add("");
|
||||
tooltip.add("HandlerName: " + handlerName);
|
||||
tooltip.add("HandlerID: " + handlerID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean onButtonPress(boolean rightclick) {
|
||||
int newIdx = guiRecipe.currenthandlers.indexOf(handler);
|
||||
if (newIdx == -1)
|
||||
return false;
|
||||
|
||||
guiRecipe.setRecipePage(newIdx);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void setSelected(IRecipeHandler current) {
|
||||
selected = handler == current;
|
||||
}
|
||||
|
||||
public static HandlerInfo getHandlerInfo(String name, String name2) {
|
||||
HandlerInfo res = handlerMap.get(name);
|
||||
if (res == null) res = handlerMap.get(name2);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
public static String getHandlerMod(String name, String name2) {
|
||||
HandlerInfo info = getHandlerInfo(name, name2);
|
||||
if (info == null)
|
||||
return "Unknown";
|
||||
|
||||
return info.getModName();
|
||||
}
|
||||
|
||||
public static void loadHandlerInfo() {
|
||||
final boolean fromJar = NEIClientConfig.loadHandlersFromJar();
|
||||
NEIClientConfig.logger.info("Loading handler info from " + (fromJar ? "JAR" : "Config"));
|
||||
handlerMap.clear();
|
||||
URL handlerUrl = Thread.currentThread().getContextClassLoader().getResource("assets/nei/csv/handlers.csv");
|
||||
|
||||
URL url;
|
||||
if (fromJar) {
|
||||
url = handlerUrl;
|
||||
if (url == null) {
|
||||
NEIClientConfig.logger.info("Invalid URL for handlers csv.");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
File handlerFile = NEIClientConfig.handlerFile;
|
||||
if(!handlerFile.exists()) {
|
||||
NEIClientConfig.logger.info("Config file doesn't exit, creating");
|
||||
try {
|
||||
assert handlerUrl != null;
|
||||
ReadableByteChannel readableByteChannel = Channels.newChannel(handlerUrl.openStream());
|
||||
FileOutputStream fileOutputStream = new FileOutputStream(handlerFile.getAbsoluteFile());
|
||||
FileChannel fileChannel = fileOutputStream.getChannel();
|
||||
fileChannel.transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
url = NEIClientConfig.handlerFile.toURI().toURL();
|
||||
} catch (MalformedURLException e) {
|
||||
NEIClientConfig.logger.info("Invalid URL for handlers csv (via config).");
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
}
|
||||
try {
|
||||
BufferedReader input = new BufferedReader(new InputStreamReader(url.openStream()));
|
||||
CSVParser csvParser = CSVFormat.EXCEL.withFirstRecordAsHeader().parse(input);
|
||||
for (CSVRecord record : csvParser) {
|
||||
final String handler = record.get("handler");
|
||||
final String modName = record.get("modName");
|
||||
final String modId = record.get("modId");
|
||||
final boolean requiresMod = Boolean.parseBoolean(record.get("modRequired"));
|
||||
final String excludedModId = record.get("excludedModId");
|
||||
|
||||
if (requiresMod && !Loader.isModLoaded(modId)) continue;
|
||||
if (excludedModId != null && Loader.isModLoaded(excludedModId)) continue;
|
||||
|
||||
|
||||
HandlerInfo info = new HandlerInfo(handler, modName, modId, requiresMod, excludedModId);
|
||||
final String imageResource = record.get("imageResource");
|
||||
if(imageResource != null && !imageResource.equals("")) {
|
||||
info.setImage(imageResource,
|
||||
Integer.parseInt(record.get("imageX")),
|
||||
Integer.parseInt(record.get("imageY")),
|
||||
Integer.parseInt(record.get("imageWidth")),
|
||||
Integer.parseInt(record.get("imageHeight"))
|
||||
);
|
||||
}
|
||||
if(!info.hasImageOrItem()) {
|
||||
final String itemName = record.get("itemName");
|
||||
if (itemName != null && !itemName.equals("")) {
|
||||
info.setItem(itemName, record.get("nbtInfo"));
|
||||
}
|
||||
}
|
||||
final String yShift = record.get("yShift");
|
||||
if (yShift != null && !yShift.equals(""))
|
||||
info.setYShift(Integer.parseInt(yShift));
|
||||
|
||||
try {
|
||||
final int imageHeight = intOrDefault(record.get("handlerHeight"), HandlerInfo.DEFAULT_HEIGHT);
|
||||
final int imageWidth = intOrDefault(record.get("handlerWidth"), HandlerInfo.DEFAULT_WIDTH);
|
||||
final int maxRecipesPerPage = intOrDefault(record.get("maxRecipesPerPage"), HandlerInfo.DEFAULT_MAX_PER_PAGE);
|
||||
info.setHandlerDimensions(imageHeight, imageWidth, maxRecipesPerPage);
|
||||
} catch (NumberFormatException ignored) {
|
||||
NEIClientConfig.logger.info("Error setting handler dimensions for " + handler);
|
||||
}
|
||||
|
||||
handlerMap.put(handler, info);
|
||||
NEIClientConfig.logger.info("Loaded " + handler);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
NEIClientConfig.logger.info("Error parsing CSV");
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
NEIClientConfig.logger.info("Error parsing CSV");
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static int intOrDefault(String str, int defaultValue) {
|
||||
if (str == null || str.equals("")) return defaultValue;
|
||||
try {
|
||||
return Integer.parseInt(str);
|
||||
} catch (NumberFormatException e) {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
|
||||
import codechicken.nei.drawable.DrawableBuilder;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
|
||||
public class GuiRecipeTabCreative extends GuiRecipeTab {
|
||||
public static final int TAB_WIDTH = 28;
|
||||
public static final int TAB_HEIGHT = 31;
|
||||
private static final DrawableResource selectedTabImage = new DrawableBuilder("minecraft:textures/gui/container/creative_inventory/tabs.png", 28, 32, 28, 32).build();
|
||||
private static final DrawableResource unselectedTabImage = new DrawableBuilder("minecraft:textures/gui/container/creative_inventory/tabs.png", 28, 0, 28, 30).build();
|
||||
|
||||
public GuiRecipeTabCreative(GuiRecipe guiRecipe, IRecipeHandler handler, int x, int y) {
|
||||
super(guiRecipe, handler, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return TAB_WIDTH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return TAB_HEIGHT;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getForegroundIconX() {
|
||||
return x + (w - 16) / 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getForegroundIconY() {
|
||||
return y + h - 22;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrawableResource getSelectedTabImage() {
|
||||
return selectedTabImage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrawableResource getUnselectedTabImage() {
|
||||
return unselectedTabImage;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
|
||||
import codechicken.nei.drawable.DrawableBuilder;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
|
||||
public class GuiRecipeTabJEI extends GuiRecipeTab {
|
||||
public static final int TAB_WIDTH = 24;
|
||||
public static final int TAB_HEIGHT = 24;
|
||||
private static final DrawableResource selectedTabImage = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 0, 16, 24, 24).build();
|
||||
private static final DrawableResource unselectedTabImage = new DrawableBuilder("nei:textures/nei_tabbed_sprites.png", 24, 16, 24, 24).build();
|
||||
|
||||
public GuiRecipeTabJEI(GuiRecipe guiRecipe, IRecipeHandler handler, int x, int y) {
|
||||
super(guiRecipe, handler, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getWidth() {
|
||||
return TAB_WIDTH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeight() {
|
||||
return TAB_HEIGHT;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getForegroundIconX() {
|
||||
return x + 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getForegroundIconY() {
|
||||
return y + 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrawableResource getSelectedTabImage() {
|
||||
return selectedTabImage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrawableResource getUnselectedTabImage() {
|
||||
return unselectedTabImage;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
import codechicken.nei.Button;
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.NEIClientUtils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class GuiRecipeTabs {
|
||||
private final GuiRecipe guiRecipe;
|
||||
private final List<GuiRecipeTab> tabs = new ArrayList<>();
|
||||
private final List<Button> buttons = new ArrayList<>();
|
||||
|
||||
private final Rectangle area = new Rectangle();
|
||||
private boolean creative_tab_style;
|
||||
|
||||
private int pageCount = 1;
|
||||
private int pageNumber = 0;
|
||||
private int categoriesPerPage = 1;
|
||||
private int numHandlers = 1;
|
||||
private int tabWidth;
|
||||
private int tabHeight;
|
||||
|
||||
public GuiRecipeTabs(GuiRecipe guiRecipe) {
|
||||
this.guiRecipe = guiRecipe;
|
||||
}
|
||||
|
||||
public void initLayout() {
|
||||
creative_tab_style = NEIClientConfig.useCreativeTabStyle();
|
||||
if(creative_tab_style) {
|
||||
tabWidth = GuiRecipeTabCreative.TAB_WIDTH;
|
||||
tabHeight = GuiRecipeTabCreative.TAB_HEIGHT;
|
||||
} else {
|
||||
tabWidth = GuiRecipeTabJEI.TAB_WIDTH;
|
||||
tabHeight = GuiRecipeTabJEI.TAB_HEIGHT;
|
||||
|
||||
}
|
||||
|
||||
int totalWidth = 0;
|
||||
categoriesPerPage = 0;
|
||||
numHandlers = guiRecipe.currenthandlers.size();
|
||||
|
||||
for (IRecipeHandler handler : guiRecipe.currenthandlers) {
|
||||
if (totalWidth + tabWidth < (guiRecipe.xSize - 4)) {
|
||||
totalWidth += tabWidth;
|
||||
categoriesPerPage++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
area.width = totalWidth;
|
||||
area.height = tabHeight;
|
||||
area.x = guiRecipe.guiLeft + 4;
|
||||
area.y = guiRecipe.guiTop - tabHeight + 3;
|
||||
|
||||
pageCount = (int) Math.ceil((float) numHandlers / categoriesPerPage);
|
||||
calcPageNumber();
|
||||
Rectangle navigationArea = new Rectangle(area);
|
||||
navigationArea.height = 20;
|
||||
navigationArea.translate(0, -(2 + navigationArea.height));
|
||||
}
|
||||
|
||||
public void calcPageNumber() {
|
||||
pageNumber = guiRecipe.recipetype / Math.max(categoriesPerPage, 1);
|
||||
}
|
||||
|
||||
public void refreshPage() {
|
||||
tabs.clear();
|
||||
buttons.clear();
|
||||
|
||||
final int startIndex = pageNumber * categoriesPerPage;
|
||||
for (int i = 0 ; i < categoriesPerPage ; i++) {
|
||||
final int index = i + startIndex;
|
||||
if (index >= numHandlers) break;
|
||||
IRecipeHandler handler = guiRecipe.currenthandlers.get(index);
|
||||
int tabX = area.x + (i * tabWidth);
|
||||
|
||||
if(NEIClientConfig.useCreativeTabStyle())
|
||||
tabs.add(new GuiRecipeTabCreative(guiRecipe, handler, tabX, area.y));
|
||||
else
|
||||
tabs.add(new GuiRecipeTabJEI(guiRecipe, handler, tabX, area.y));
|
||||
}
|
||||
|
||||
// Maybe add buttons
|
||||
if (numHandlers > categoriesPerPage) {
|
||||
Button prevTab = new Button("prevTab") {
|
||||
@Override
|
||||
public boolean onButtonPress(boolean rightClick) {
|
||||
if (!rightClick) {
|
||||
NEIClientUtils.playClickSound();
|
||||
return previousPage();
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public String getRenderLabel() {
|
||||
return "<";
|
||||
}
|
||||
};
|
||||
prevTab.w = 8;
|
||||
prevTab.h = tabHeight - 4;
|
||||
prevTab.x = area.x - prevTab.w + 1;
|
||||
prevTab.y = area.y + 2;
|
||||
buttons.add(prevTab);
|
||||
|
||||
Button nextTab = new Button("nextTab") {
|
||||
@Override
|
||||
public boolean onButtonPress(boolean rightclick) {
|
||||
if (!rightclick) {
|
||||
NEIClientUtils.playClickSound();
|
||||
return nextPage();
|
||||
} else return false;
|
||||
}
|
||||
@Override
|
||||
public String getRenderLabel() {
|
||||
return ">";
|
||||
}
|
||||
};
|
||||
nextTab.w = prevTab.w;
|
||||
nextTab.h = prevTab.h;
|
||||
nextTab.x = area.x + area.width - 1;
|
||||
nextTab.y = prevTab.y;
|
||||
buttons.add(nextTab);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean nextPage() {
|
||||
if (hasNext()) pageNumber++;
|
||||
else pageNumber = 0;
|
||||
|
||||
refreshPage();
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean hasNext() {
|
||||
return pageNumber + 1 < pageCount;
|
||||
}
|
||||
|
||||
public boolean previousPage() {
|
||||
if (hasPrevious()) pageNumber--;
|
||||
else pageNumber = pageCount - 1;
|
||||
|
||||
refreshPage();
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean hasPrevious() {
|
||||
return pageNumber > 0;
|
||||
}
|
||||
|
||||
|
||||
public void draw(int mouseX, int mouseY) {
|
||||
IRecipeHandler current = guiRecipe.currenthandlers.get(guiRecipe.recipetype);
|
||||
for (GuiRecipeTab tab : tabs) {
|
||||
tab.setSelected(current);
|
||||
tab.draw(mouseX, mouseY);
|
||||
}
|
||||
for (Button button : buttons) {
|
||||
button.draw(mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
|
||||
public void handleTooltip(int mousex, int mousey, List<String> tooltips) {
|
||||
if (!NEIClientConfig.areJEIStyleTabsVisible()) return;
|
||||
|
||||
for (GuiRecipeTab tab : tabs) {
|
||||
if (tab.contains(mousex, mousey)) {
|
||||
tab.addTooltips(tooltips);
|
||||
}
|
||||
}
|
||||
for (Button button : buttons) {
|
||||
if (button.contains(mousex, mousey)){
|
||||
button.addTooltips(tooltips);
|
||||
}
|
||||
}
|
||||
}
|
||||
protected boolean mouseClicked(int x, int y, int mouseButton) {
|
||||
if (!NEIClientConfig.areJEIStyleTabsVisible()) return false;
|
||||
|
||||
for (Button button : buttons) {
|
||||
if (button.contains(x, y)) {
|
||||
return button.onButtonPress(mouseButton == 1);
|
||||
}
|
||||
}
|
||||
for (GuiRecipeTab tab : tabs) {
|
||||
if (tab.contains(x, y)) {
|
||||
return tab.onButtonPress(mouseButton == 1);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
package codechicken.nei.recipe;
|
||||
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.drawable.DrawableBuilder;
|
||||
import codechicken.nei.drawable.DrawableResource;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class HandlerInfo {
|
||||
public static int DEFAULT_HEIGHT = 65;
|
||||
public static int DEFAULT_WIDTH = 166;
|
||||
public static int DEFAULT_MAX_PER_PAGE = 2;
|
||||
|
||||
private String handler;
|
||||
|
||||
private String modName;
|
||||
private String modId;
|
||||
private boolean requiresMod = true;
|
||||
private String excludedModId;
|
||||
|
||||
private String itemId;
|
||||
private String nbtString;
|
||||
|
||||
private int yShift = 0;
|
||||
private int height = DEFAULT_HEIGHT;
|
||||
private int width = DEFAULT_WIDTH;
|
||||
private int maxRecipesPerPage = DEFAULT_MAX_PER_PAGE;
|
||||
|
||||
private ItemStack itemStack = null;
|
||||
private DrawableResource image = null;
|
||||
|
||||
public HandlerInfo(String handler, String modName, String modId, boolean requiresMod, String excludedModId) {
|
||||
this.handler = handler;
|
||||
this.modName = modName;
|
||||
this.modId = modId;
|
||||
this.requiresMod = requiresMod;
|
||||
this.excludedModId = excludedModId;
|
||||
}
|
||||
|
||||
public void setHandlerDimensions(int height, int width, int maxRecipesPerPage) {
|
||||
this.height = height;
|
||||
this.width = width;
|
||||
this.maxRecipesPerPage = maxRecipesPerPage;
|
||||
}
|
||||
|
||||
public boolean setItem(String itemId, String nbtString) {
|
||||
if(hasImageOrItem())
|
||||
return false;
|
||||
|
||||
int meta = -1;
|
||||
if (!itemId.contains(":")) {
|
||||
NEIClientConfig.logger.info("Item ID missing colon for handler " + handler + " - " + modName);
|
||||
return false;
|
||||
}
|
||||
final String[] split = itemId.split(":");
|
||||
// ModID:ItemID
|
||||
String itemLookupId = split[0] + ":" + split[1];
|
||||
|
||||
if(split.length >= 3) {
|
||||
int mIdx = -1;
|
||||
if (split[2].matches("\\d+")) {
|
||||
mIdx = 2;
|
||||
} else {
|
||||
itemLookupId += ":" + split[2];
|
||||
if (split.length >= 4) mIdx = 3;
|
||||
}
|
||||
if (mIdx != -1) meta = Integer.parseInt(split[mIdx]);
|
||||
}
|
||||
|
||||
if (meta != -1) {
|
||||
itemStack = GameRegistry.makeItemStack(itemLookupId, meta, 1, nbtString == null ? "" : nbtString);
|
||||
} else {
|
||||
itemStack = GameRegistry.findItemStack(split[0], split[1], 1);
|
||||
}
|
||||
if (itemStack == null)
|
||||
NEIClientConfig.logger.info("Couldn't find " + modName + " - " + itemLookupId);
|
||||
else {
|
||||
this.itemId = itemId;
|
||||
this.nbtString = nbtString;
|
||||
}
|
||||
return (itemStack != null);
|
||||
}
|
||||
|
||||
public boolean setImage(String resourceLocation, int imageX, int imageY, int imageWidth, int imageHeight) {
|
||||
if(hasImageOrItem())
|
||||
return false;
|
||||
|
||||
this.image = new DrawableBuilder(resourceLocation, imageX, imageY, imageWidth, imageHeight).build();
|
||||
return true;
|
||||
}
|
||||
|
||||
public DrawableResource getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
public ItemStack getItemStack() {
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
public String getModName() {
|
||||
return modName;
|
||||
}
|
||||
|
||||
public String getModId() {
|
||||
return modId;
|
||||
}
|
||||
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public int getMaxRecipesPerPage() {
|
||||
return Math.max(maxRecipesPerPage, 1);
|
||||
}
|
||||
|
||||
public int getYShift() {
|
||||
return yShift;
|
||||
}
|
||||
|
||||
public boolean hasImageOrItem() {
|
||||
if (image != null) return true;
|
||||
if (itemStack != null) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void setYShift(int yShift) {
|
||||
this.yShift = yShift;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user