aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
authorJohannes Gäßler <updrn@student.kit.edu>2017-06-17 01:02:38 +0200
committerJohannes Gäßler <updrn@student.kit.edu>2017-06-17 01:02:38 +0200
commitde42d1da4264bc0dd339020374b45138d8ddb691 (patch)
treeda598e6f87b136199542263f5c471934f9f2649b /src/main/java/gregtech/api/util
parentfcaefe2d2853651f05d83105ee1c7deba104bb9c (diff)
parent34474480f73ca5ab1c711d73bdb4bd809673e063 (diff)
downloadGT5-Unofficial-de42d1da4264bc0dd339020374b45138d8ddb691.tar.gz
GT5-Unofficial-de42d1da4264bc0dd339020374b45138d8ddb691.tar.bz2
GT5-Unofficial-de42d1da4264bc0dd339020374b45138d8ddb691.zip
Merge remote-tracking branch 'GT5-Unofficial-Fork/ChemistryUpdate' into
BrickedBlastFurnace Conflicts: src/main/java/gregtech/api/enums/Materials.java src/main/java/gregtech/api/enums/Textures.java src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_BronzeBlastFurnace.java src/main/java/gregtech/loaders/postload/GT_MachineRecipeLoader.java src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehavior.java4
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java215
-rw-r--r--src/main/java/gregtech/api/util/GT_ModHandler.java2
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java171
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeRegistrator.java4
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java243
6 files changed, 516 insertions, 123 deletions
diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java
index f3ba021ad1..a540601dd1 100644
--- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java
+++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java
@@ -215,4 +215,8 @@ public abstract class GT_CoverBehavior {
public void placeCover(byte aSide, ItemStack aCover, ICoverable aTileEntity) {
aTileEntity.setCoverIDAtSide(aSide, GT_Utility.stackToInt(aCover));
}
+
+ public String trans(String aNr, String aEnglish){
+ return GT_LanguageManager.addStringLocalization("Interaction_DESCRIPTION_Index_"+aNr, aEnglish, false);
+ }
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java
index 561d47edf7..e697bbc4ad 100644
--- a/src/main/java/gregtech/api/util/GT_LanguageManager.java
+++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java
@@ -104,4 +104,219 @@ public class GT_LanguageManager {
}
return aStack.getUnlocalizedName() + ".name";
}
+
+ public static void writePlaceholderStrings(){
+ addStringLocalization("Interaction_DESCRIPTION_Index_001", "Puts out into adjacent Slot #");
+ addStringLocalization("Interaction_DESCRIPTION_Index_002", "Grabs in for own Slot #");
+ addStringLocalization("Interaction_DESCRIPTION_Index_003", "Normal");
+ addStringLocalization("Interaction_DESCRIPTION_Index_004", "Inverted");
+ addStringLocalization("Interaction_DESCRIPTION_Index_005", "No Work at all");
+ addStringLocalization("Interaction_DESCRIPTION_Index_006", "Export");
+ addStringLocalization("Interaction_DESCRIPTION_Index_007", "Import");
+ addStringLocalization("Interaction_DESCRIPTION_Index_008", "Export (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_009", "Import (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_010", "Export (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_011", "Import (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_012", "Export allow Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_013", "Import allow Output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_014", "Export allow Input (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_015", "Import allow Output (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_016", "Export allow Input (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_017", "Import allow Output (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_018", "Normal");
+ addStringLocalization("Interaction_DESCRIPTION_Index_019", "Inverted");
+ addStringLocalization("Interaction_DESCRIPTION_Index_020", "Ready to work");
+ addStringLocalization("Interaction_DESCRIPTION_Index_021", "Not ready to work");
+ addStringLocalization("Interaction_DESCRIPTION_Index_022", "Import");
+ addStringLocalization("Interaction_DESCRIPTION_Index_023", "Import (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_024", "Import (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_025", "Keep Liquids Away");
+ addStringLocalization("Interaction_DESCRIPTION_Index_026", "Keep Liquids Away (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_027", "Keep Liquids Away (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_028", "Allow");
+ addStringLocalization("Interaction_DESCRIPTION_Index_029", "Allow (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_030", "Disallow (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_031", "Normal Universal Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_032", "Inverted Universal Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_033", "Normal Electricity Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_034", "Inverted Electricity Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_035", "Normal Steam Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_036", "Inverted Steam Storage");
+ addStringLocalization("Interaction_DESCRIPTION_Index_037", "Normal Average Electric Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_038", "Inverted Average Electric Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_039", "Normal Average Electric Output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_040", "Inverted Average Electric Output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_041", "Normal Electricity Storage(Including Batteries)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_042", "Inverted Electricity Storage(Including Batteries)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_043", "Allow input, no output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_044", "Deny input, no output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_045", "Allow input, permit any output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_046", "Deny input, permit any output");
+ addStringLocalization("Interaction_DESCRIPTION_Index_047", "Filter Fluid: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_048", "Pump speed: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_049", "L/tick ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_050", "L/sec");
+ addStringLocalization("Interaction_DESCRIPTION_Index_051", "Normal");
+ addStringLocalization("Interaction_DESCRIPTION_Index_052", "Inverted");
+ addStringLocalization("Interaction_DESCRIPTION_Index_053", "Slot: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_054", "Inverted");
+ addStringLocalization("Interaction_DESCRIPTION_Index_055", "Normal");
+ addStringLocalization("Interaction_DESCRIPTION_Index_056", "Emit if 1 Maintenance Needed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_057", "Emit if 1 Maintenance Needed(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_058", "Emit if 2 Maintenance Needed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_059", "Emit if 2 Maintenance Needed(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_060", "Emit if 3 Maintenance Needed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_061", "Emit if 3 Maintenance Needed(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_062", "Emit if 4 Maintenance Needed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_063", "Emit if 4 Maintenance Needed(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_064", "Emit if 5 Maintenance Needed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_065", "Emit if 5 Maintenance Needed(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_066", "Emit if rotor needs maintainance");
+ addStringLocalization("Interaction_DESCRIPTION_Index_067", "Emit if rotor needs maintainance(inverted)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_068", "Emit if any Player is close");
+ addStringLocalization("Interaction_DESCRIPTION_Index_069", "Emit if other player is close");
+ addStringLocalization("Interaction_DESCRIPTION_Index_070", "Emit if you are close");
+ addStringLocalization("Interaction_DESCRIPTION_Index_071", "Conducts strongest Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_072", "Conducts from bottom Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_073", "Conducts from top Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_074", "Conducts from north Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_075", "Conducts from south Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_076", "Conducts from west Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_077", "Conducts from east Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_078", "Signal = ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_079", "Conditional Signal = ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_080", "Inverted Conditional Signal = ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_081", "Frequency: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_082", "Open if work enabled");
+ addStringLocalization("Interaction_DESCRIPTION_Index_083", "Open if work disabled");
+ addStringLocalization("Interaction_DESCRIPTION_Index_084", "Only Output allowed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_085", "Only Input allowed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_086", "Auto-Input: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_087", "Disabled");
+ addStringLocalization("Interaction_DESCRIPTION_Index_088", "Enabled");
+ addStringLocalization("Interaction_DESCRIPTION_Index_089", " Auto-Output: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_090", "Machine Processing: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_091", "Redstone Output at Side ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_092", " set to: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_093", "Strong");
+ addStringLocalization("Interaction_DESCRIPTION_Index_094", "Weak");
+ addStringLocalization("Interaction_DESCRIPTION_Index_095", "Input from Output Side allowed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_096", "Input from Output Side forbidden");
+ addStringLocalization("Interaction_DESCRIPTION_Index_097", "It's dangerous to go alone! Take this.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_098", "Do not regulate Item Stack Size");
+ addStringLocalization("Interaction_DESCRIPTION_Index_099", "Regulate Item Stack Size to: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_100", "This is ");//Spartaaaaaaa!!!
+ addStringLocalization("Interaction_DESCRIPTION_Index_101", " Ore.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_102", "There is Lava behind this Rock.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_103", "There is a Liquid behind this Rock.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_104", "There is an Air Pocket behind this Rock.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_105", "Material is changing behind this Rock.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_106", "Found traces of ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_107", "No Ores found.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_108", "Outputs Liquids, Steam and Items");
+ addStringLocalization("Interaction_DESCRIPTION_Index_109", "Outputs Steam and Items");
+ addStringLocalization("Interaction_DESCRIPTION_Index_110", "Outputs Steam and Liquids");
+ addStringLocalization("Interaction_DESCRIPTION_Index_111", "Outputs Steam");
+ addStringLocalization("Interaction_DESCRIPTION_Index_112", "Outputs Liquids and Items");
+ addStringLocalization("Interaction_DESCRIPTION_Index_113", "Outputs only Items");
+ addStringLocalization("Interaction_DESCRIPTION_Index_114", "Outputs only Liquids");
+ addStringLocalization("Interaction_DESCRIPTION_Index_115", "Outputs nothing");
+ addStringLocalization("Interaction_DESCRIPTION_Index_116", "Emit Energy to Outputside");
+ addStringLocalization("Interaction_DESCRIPTION_Index_117", "Don't emit Energy");
+ addStringLocalization("Interaction_DESCRIPTION_Index_118", "Emit Redstone if no Slot is free");
+ addStringLocalization("Interaction_DESCRIPTION_Index_119", "Don't emit Redstone");
+ addStringLocalization("Interaction_DESCRIPTION_Index_120", "Invert Redstone");
+ addStringLocalization("Interaction_DESCRIPTION_Index_121", "Don't invert Redstone");
+ addStringLocalization("Interaction_DESCRIPTION_Index_122", "Emit Redstone if slots contain something");
+ addStringLocalization("Interaction_DESCRIPTION_Index_123", "Don't emit Redstone");
+ addStringLocalization("Interaction_DESCRIPTION_Index_124", "Invert Filter");
+ addStringLocalization("Interaction_DESCRIPTION_Index_125", "Don't invert Filter");
+ addStringLocalization("Interaction_DESCRIPTION_Index_126", "Ignore NBT");
+ addStringLocalization("Interaction_DESCRIPTION_Index_127", "NBT has to match");
+ addStringLocalization("Interaction_DESCRIPTION_Index_128", "Redstone ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_129", "Energy ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_130", "Fluids ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_131", "Items ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_132", "Pipe is loose.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_133", "Screws are missing.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_134", "Something is stuck.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_135", "Platings are dented.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_136", "Circuitry burned out.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_137", "That doesn't belong there.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_138", "Incomplete Structure.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_139", "Hit with Soft Hammer");
+ addStringLocalization("Interaction_DESCRIPTION_Index_140", "to (re-)start the Machine");
+ addStringLocalization("Interaction_DESCRIPTION_Index_141", "if it doesn't start.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_142", "Running perfectly.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_143", "Missing Mining Pipe");
+ addStringLocalization("Interaction_DESCRIPTION_Index_144", "Missing Turbine Rotor");
+ addStringLocalization("Interaction_DESCRIPTION_Index_145", "Step Down, In: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_146", "Step Up, In: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_147", "Amp, Out: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_148", " V at ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_149", " Amp");
+ addStringLocalization("Interaction_DESCRIPTION_Index_150", "Chance: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_151", "Does not get consumed in the process");
+ addStringLocalization("Interaction_DESCRIPTION_Index_152", "Total: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_153", "Usage: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_154", "Voltage: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_155", "Amperage: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_156", "Voltage: unspecified");
+ addStringLocalization("Interaction_DESCRIPTION_Index_157", "Amperage: unspecified");
+ addStringLocalization("Interaction_DESCRIPTION_Index_158", "Time: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_159", "Needs Low Gravity");
+ addStringLocalization("Interaction_DESCRIPTION_Index_160", "Needs Cleanroom");
+ addStringLocalization("Interaction_DESCRIPTION_Index_161", " secs");
+ addStringLocalization("Interaction_DESCRIPTION_Index_162", "Name: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_163", " MetaData: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_164", "Hardness: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_165", " Blast Resistance: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_166", "Is valid Beacon Pyramid Material");
+ addStringLocalization("Interaction_DESCRIPTION_Index_167", "Tank ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_168", "Heat: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_169", " HEM: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_170", " Base EU Output: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_171", "Facing: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_172", " / Chance: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_173", "You can remove this with a Wrench");
+ addStringLocalization("Interaction_DESCRIPTION_Index_174", "You can NOT remove this with a Wrench");
+ addStringLocalization("Interaction_DESCRIPTION_Index_175", "Conduction Loss: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_176", "Contained Energy: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_177", "Has Muffler Upgrade");
+ addStringLocalization("Interaction_DESCRIPTION_Index_178", "Progress: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_179", "Max IN: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_180", " EU");
+ addStringLocalization("Interaction_DESCRIPTION_Index_181", "Max OUT: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_182", " EU at ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_183", " Amperes");
+ addStringLocalization("Interaction_DESCRIPTION_Index_184", "Energy: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_185", "EU");
+ addStringLocalization("Interaction_DESCRIPTION_Index_186", "Owned by: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_187", "Type -- Crop-Name: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_188", " Growth: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_189", " Gain: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_190", " Resistance: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_191", "Plant -- Fertilizer: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_192", " Water: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_193", " Weed-Ex: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_194", " Scan-Level: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_195", "Environment -- Nutrients: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_196", " Humidity: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_197", " Air-Quality: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_198", "Attributes:");
+ addStringLocalization("Interaction_DESCRIPTION_Index_199", "Discovered by: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_200", " L");
+ addStringLocalization("Interaction_DESCRIPTION_Index_201", "Nothing");
+ addStringLocalization("Interaction_DESCRIPTION_Index_202", "Pollution in Chunk: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_203", " gibbl");
+ addStringLocalization("Interaction_DESCRIPTION_Index_204", "No Pollution in Chunk! HAYO!");
+ addStringLocalization("Interaction_DESCRIPTION_Index_205", " of ");
+// addStringLocalization("Interaction_DESCRIPTION_Index_206", "Grab");
+// addStringLocalization("Interaction_DESCRIPTION_Index_207", "Grab");
+// addStringLocalization("Interaction_DESCRIPTION_Index_208", "Grab");
+// addStringLocalization("Interaction_DESCRIPTION_Index_209", "Grab");
+// addStringLocalization("Interaction_DESCRIPTION_Index_210", "Grab");
+
+ }
+
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/util/GT_ModHandler.java b/src/main/java/gregtech/api/util/GT_ModHandler.java
index 62c8714807..daa1b67069 100644
--- a/src/main/java/gregtech/api/util/GT_ModHandler.java
+++ b/src/main/java/gregtech/api/util/GT_ModHandler.java
@@ -682,8 +682,8 @@ public class GT_ModHandler {
for (ItemStack tStack : ((IRecipeInput) tRecipe.getKey()).getInputs()) {
if (GT_Utility.isStackValid(tStack)) {
if (aAddGTRecipe && (aGTRecipeMap.findRecipe(null, false, Long.MAX_VALUE, null, tStack) == null)) {
+ try{
if (aExcludeGTIC2Items && ((tStack.getUnlocalizedName().contains("gt.metaitem.01") || tStack.getUnlocalizedName().contains("gt.blockores") || tStack.getUnlocalizedName().contains("ic2.itemCrushed") || tStack.getUnlocalizedName().contains("ic2.itemPurifiedCrushed")))) continue;
- try{
switch (aGTRecipeMap.mUnlocalizedName) {
case "gt.recipe.macerator":
aGTRecipeMap.addRecipe(true, new ItemStack[]{GT_Utility.copyAmount(((IRecipeInput) tRecipe.getKey()).getAmount(), tStack)}, (ItemStack[]) ((RecipeOutput) tRecipe.getValue()).items.toArray(), null, null, null, null, 300, 2, 0);
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 763a15743e..ea0cab922d 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -1,9 +1,26 @@
package gregtech.api.util;
+import static gregtech.api.enums.GT_Values.D1;
+import static gregtech.api.enums.GT_Values.D2;
+import static gregtech.api.enums.GT_Values.E;
+import static gregtech.api.enums.GT_Values.L;
+import static gregtech.api.enums.GT_Values.RES_PATH_GUI;
+import static gregtech.api.enums.GT_Values.W;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+import codechicken.nei.PositionedStack;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Dyes;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.SubTag;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords;
@@ -11,19 +28,17 @@ import gregtech.api.objects.GT_FluidStack;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.objects.ItemData;
import gregtech.api.objects.MaterialStack;
+import gregtech.nei.GT_NEI_DefaultHandler.FixedPositionedStack;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidContainerItem;
-import java.util.*;
-
-import static gregtech.api.enums.GT_Values.*;
-
/**
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
* <p/>
@@ -76,7 +91,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
* Used for describing recipes that do not fit the default recipe pattern (for example Large Boiler Fuels)
*/
private String[] neiDesc = null;
-
+
private GT_Recipe(GT_Recipe aRecipe) {
mInputs = GT_Utility.copyStackArray((Object[]) aRecipe.mInputs);
mOutputs = GT_Utility.copyStackArray((Object[]) aRecipe.mOutputs);
@@ -449,6 +464,22 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
this.neiDesc = neiDesc;
}
+ /**
+ * Overriding this method and getOutputPositionedStacks allows for custom NEI stack placement
+ * @return A list of input stacks
+ */
+ public ArrayList<PositionedStack> getInputPositionedStacks(){
+ return null;
+ }
+
+ /**
+ * Overriding this method and getInputPositionedStacks allows for custom NEI stack placement
+ * @return A list of output stacks
+ */
+ public ArrayList<PositionedStack> getOutputPositionedStacks(){
+ return null;
+ }
+
public static class GT_Recipe_AssemblyLine {
public static final ArrayList<GT_Recipe_AssemblyLine> sAssemblylineRecipes = new ArrayList<GT_Recipe_AssemblyLine>();
@@ -507,7 +538,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public static final GT_Recipe_Map sFluidCannerRecipes = new GT_Recipe_Map_FluidCanner(new HashSet<GT_Recipe>(100), "gt.recipe.fluidcanner", "Fluid Canning Machine", null, RES_PATH_GUI + "basicmachines/FluidCannerNEI", 1, 1, 1, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sBrewingRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.brewer", "Brewing Machine", null, RES_PATH_GUI + "basicmachines/PotionBrewer", 1, 0, 1, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sFluidHeaterRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.fluidheater", "Fluid Heater", null, RES_PATH_GUI + "basicmachines/FluidHeater", 1, 0, 1, 1, 1, E, 1, E, true, true);
- public static final GT_Recipe_Map sDistilleryRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.distillery", "Distillery", null, RES_PATH_GUI + "basicmachines/Distillery", 1, 0, 1, 1, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sDistilleryRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.distillery", "Distillery", null, RES_PATH_GUI + "basicmachines/Distillery", 1, 1, 1, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sFermentingRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.fermenter", "Fermenter", null, RES_PATH_GUI + "basicmachines/Fermenter", 0, 0, 0, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sFluidSolidficationRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.fluidsolidifier", "Fluid Solidifier", null, RES_PATH_GUI + "basicmachines/FluidSolidifier", 1, 1, 1, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sFluidExtractionRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.fluidextractor", "Fluid Extractor", null, RES_PATH_GUI + "basicmachines/FluidExtractor", 1, 1, 1, 0, 1, E, 1, E, true, true);
@@ -520,7 +551,8 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public static final GT_Recipe_Map sPrimitiveBlastRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(500), "gt.recipe.primitiveblastfurnace", "Primitive Blast Furnace", null, RES_PATH_GUI + "basicmachines/Default", 3, 3, 1, 0, 1, E, 1, E, false, true);
public static final GT_Recipe_Map sImplosionRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.implosioncompressor", "Implosion Compressor", null, RES_PATH_GUI + "basicmachines/Default", 2, 2, 2, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sVacuumRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.vacuumfreezer", "Vacuum Freezer", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 1, 0, 1, E, 1, E, true, true);
- public static final GT_Recipe_Map sChemicalRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.chemicalreactor", "Chemical Reactor", null, RES_PATH_GUI + "basicmachines/ChemicalReactor", 2, 1, 1, 0, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sChemicalRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(100), "gt.recipe.chemicalreactor", "Chemical Reactor", null, RES_PATH_GUI + "basicmachines/ChemicalReactor", 2, 2, 1, 0, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sMultiblockChemicalRecipes = new GT_Recipe_Map_LargeChemicalReactor();
public static final GT_Recipe_Map sDistillationRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.distillationtower", "Distillation Tower", null, RES_PATH_GUI + "basicmachines/Default", 2, 4, 0, 0, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sCrakingRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.craker", "Oil Cracker", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 1, 1, E, 1, E, true, true);
public static final GT_Recipe_Map sPyrolyseRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.pyro", "Pyrolyse Oven", null, RES_PATH_GUI + "basicmachines/Default", 2, 1, 1, 0, 1, E, 1, E, true, true);
@@ -547,7 +579,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public static final GT_Recipe_Map_Fuel sSmallNaquadahReactorFuels = new GT_Recipe_Map_Fuel(new HashSet<GT_Recipe>(10), "gt.recipe.smallnaquadahreactor", "Small Naquadah Reactor", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 0, 1, "Fuel Value: ", 1000, " EU", true, true);
public static final GT_Recipe_Map_Fuel sLargeNaquadahReactorFuels = new GT_Recipe_Map_Fuel(new HashSet<GT_Recipe>(10), "gt.recipe.largenaquadahreactor", "Large Naquadah Reactor", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 0, 1, "Fuel Value: ", 1000, " EU", true, true);
public static final GT_Recipe_Map_Fuel sFluidNaquadahReactorFuels = new GT_Recipe_Map_Fuel(new HashSet<GT_Recipe>(10), "gt.recipe.fluidnaquadahreactor", "Fluid Naquadah Reactor", null, RES_PATH_GUI + "basicmachines/Default", 1, 1, 0, 0, 1, "Fuel Value: ", 1000, " EU", true, true);
- public static final GT_Recipe_Map_Large_Boiler_Fake_Fuels sLargeBoilerFakeFuels = new GT_Recipe_Map_Large_Boiler_Fake_Fuels();
+ public static final GT_Recipe_Map_LargeBoilerFakeFuels sLargeBoilerFakeFuels = new GT_Recipe_Map_LargeBoilerFakeFuels();
/**
* HashMap of Recipes based on their Items
@@ -557,6 +589,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
* HashMap of Recipes based on their Fluids
*/
public final Map<Fluid, Collection<GT_Recipe>> mRecipeFluidMap = new /*Concurrent*/HashMap<Fluid, Collection<GT_Recipe>>();
+ public final HashSet<String> mRecipeFluidNameMap = new HashSet<String>();
/**
* The List of all Recipes
*/
@@ -665,6 +698,8 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
Collection<GT_Recipe> tList = mRecipeFluidMap.get(aFluid.getFluid());
if (tList == null) mRecipeFluidMap.put(aFluid.getFluid(), tList = new HashSet<GT_Recipe>(1));
tList.add(aRecipe);
+ if(!mRecipeFluidNameMap.contains(aFluid.getFluid().getName()))
+ mRecipeFluidNameMap.add(aFluid.getFluid().getName());
}
return addToItemMap(aRecipe);
}
@@ -697,7 +732,7 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
* @return if this Fluid is a valid Input for any for the Recipes
*/
public boolean containsInput(Fluid aFluid) {
- return aFluid != null && mRecipeFluidMap.containsKey(aFluid);
+ return aFluid != null && mRecipeFluidNameMap.contains(aFluid.getName());
}
public GT_Recipe findRecipe(IHasWorldObjectAndCoords aTileEntity, boolean aNotUnificated, long aVoltage, FluidStack[] aFluids, ItemStack... aInputs) {
@@ -1380,9 +1415,9 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
}
}
- public static class GT_Recipe_Map_Large_Boiler_Fake_Fuels extends GT_Recipe_Map {
+ public static class GT_Recipe_Map_LargeBoilerFakeFuels extends GT_Recipe_Map {
- public GT_Recipe_Map_Large_Boiler_Fake_Fuels() {
+ public GT_Recipe_Map_LargeBoilerFakeFuels() {
super(new HashSet<GT_Recipe>(30), "gt.recipe.largeboilerfakefuels", "Large Boiler", null, RES_PATH_GUI + "basicmachines/Default", 1, 0, 1, 0, 1, E, 1, E, true, true);
GT_Recipe explanatoryRecipe = new GT_Recipe(true, new ItemStack[]{}, new ItemStack[]{}, null, null, null, null, 1, 1, 1);
explanatoryRecipe.setNeiDesc("Not all solid fuels are listed.", "Any item that burns in a", "vanilla furnace will burn in", "a Large Boiler.");
@@ -1423,4 +1458,118 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
return super.addRecipe(recipe);
}
}
+
+ public static class GT_Recipe_Map_LargeChemicalReactor extends GT_Recipe_Map{
+ private static int INPUT_COUNT = 2;
+ private static int OUTPUT_COUNT = 2;
+ private static int FLUID_INPUT_COUNT = 3;
+ private static int FLUID_OUTPUT_COUNT = 3;
+
+ public GT_Recipe_Map_LargeChemicalReactor() {
+ super(new HashSet<GT_Recipe>(200), "gt.recipe.largechemicalreactor", "Large Chemical Reactor", null, RES_PATH_GUI + "basicmachines/Default", INPUT_COUNT, OUTPUT_COUNT, 0, 0, 1, E, 1, E, true, true);
+ }
+
+ @Override
+ public GT_Recipe addRecipe(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecial, int[] aOutputChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
+ aOptimize = false;
+ ArrayList<ItemStack> adjustedInputs = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> adjustedOutputs = new ArrayList<ItemStack>();
+ ArrayList<FluidStack> adjustedFluidInputs = new ArrayList<FluidStack>();
+ ArrayList<FluidStack> adjustedFluidOutputs = new ArrayList<FluidStack>();
+
+ for (ItemStack input : aInputs) {
+ FluidStack inputFluidContent = FluidContainerRegistry.getFluidForFilledItem(input);
+ if (inputFluidContent != null) {
+ inputFluidContent.amount *= input.stackSize;
+ adjustedFluidInputs.add(inputFluidContent);
+ } else {
+ ItemData itemData = GT_OreDictUnificator.getItemData(input);
+ if (itemData != null && itemData.hasValidPrefixMaterialData() && itemData.mMaterial.mMaterial == Materials.Empty) {
+ continue;
+ } else {
+ if (itemData != null && itemData.hasValidPrefixMaterialData() && itemData.mPrefix == OrePrefixes.cell) {
+ ItemStack dustStack = itemData.mMaterial.mMaterial.getDust(input.stackSize);
+ if (dustStack != null) {
+ adjustedInputs.add(dustStack);
+ } else {
+ adjustedInputs.add(input);
+ }
+ } else {
+ adjustedInputs.add(input);
+ }
+ }
+ }
+ }
+ for (FluidStack fluidInput : aFluidInputs) {
+ adjustedFluidInputs.add(fluidInput);
+ }
+ aInputs = adjustedInputs.toArray(new ItemStack[adjustedInputs.size()]);
+ aFluidInputs = adjustedFluidInputs.toArray(new FluidStack[adjustedFluidInputs.size()]);
+
+ for (ItemStack output : aOutputs) {
+ FluidStack outputFluidContent = FluidContainerRegistry.getFluidForFilledItem(output);
+ if (outputFluidContent != null) {
+ outputFluidContent.amount *= output.stackSize;
+ adjustedFluidOutputs.add(outputFluidContent);
+ } else {
+ ItemData itemData = GT_OreDictUnificator.getItemData(output);
+ if (itemData != null && itemData.hasValidPrefixMaterialData() && itemData.mMaterial.mMaterial == Materials.Empty) {
+ continue;
+ } else {
+ adjustedOutputs.add(output);
+ }
+ }
+ }
+ for (FluidStack fluidOutput : aFluidOutputs) {
+ adjustedFluidOutputs.add(fluidOutput);
+ }
+ aOutputs = adjustedOutputs.toArray(new ItemStack[adjustedOutputs.size()]);
+ aFluidOutputs = adjustedFluidOutputs.toArray(new FluidStack[adjustedFluidOutputs.size()]);
+
+ return addRecipe(new GT_Recipe_LargeChemicalReactor(aOptimize, aInputs, aOutputs, aSpecial, aOutputChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue));
+ }
+
+ private static class GT_Recipe_LargeChemicalReactor extends GT_Recipe{
+
+ protected GT_Recipe_LargeChemicalReactor(boolean aOptimize, ItemStack[] aInputs, ItemStack[] aOutputs, Object aSpecialItems, int[] aChances, FluidStack[] aFluidInputs, FluidStack[] aFluidOutputs, int aDuration, int aEUt, int aSpecialValue) {
+ super(aOptimize, aInputs, aOutputs, aSpecialItems, aChances, aFluidInputs, aFluidOutputs, aDuration, aEUt, aSpecialValue);
+ }
+
+ @Override
+ public ArrayList<PositionedStack> getInputPositionedStacks() {
+ int itemLimit = Math.min(mInputs.length, INPUT_COUNT);
+ int fluidLimit = Math.min(mFluidInputs.length, FLUID_INPUT_COUNT);
+ ArrayList<PositionedStack> inputStacks = new ArrayList<PositionedStack>(itemLimit + fluidLimit);
+
+ for (int i = 0; i < itemLimit; i++) {
+ inputStacks.add(new FixedPositionedStack(this.getRepresentativeInput(i), 48 - i * 18, 5));
+ }
+
+ for (int i = 0; i < fluidLimit; i++) {
+ inputStacks.add(new FixedPositionedStack(GT_Utility.getFluidDisplayStack(this.mFluidInputs[i], true), 48 - i * 18, 23));
+ }
+
+ return inputStacks;
+ }
+
+ @Override
+ public ArrayList<PositionedStack> getOutputPositionedStacks() {
+ int itemLimit = Math.min(mOutputs.length, OUTPUT_COUNT);
+ int fluidLimit = Math.min(mFluidOutputs.length, FLUID_OUTPUT_COUNT);
+ ArrayList<PositionedStack> outputStacks = new ArrayList<PositionedStack>(itemLimit + fluidLimit);
+
+ for (int i = 0; i < itemLimit; i++) {
+ outputStacks.add(new FixedPositionedStack(this.getOutput(i), 102 + i * 18, 5));
+ }
+
+ for (int i = 0; i < fluidLimit; i++) {
+ outputStacks.add(new FixedPositionedStack(GT_Utility.getFluidDisplayStack(this.mFluidOutputs[i], true), 102 + i * 18, 23));
+ }
+
+ return outputStacks;
+ }
+
+
+ }
+ }
}
diff --git a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
index 59ccaa197b..33fe8af33f 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
@@ -195,12 +195,12 @@ public class GT_RecipeRegistrator {
}
if (tMaterial.mMaterial.contains(SubTag.EXPLOSIVE)) {
tMaterial.mMaterial = Materials.Ash;
- tMaterial.mAmount /= 4;
+ tMaterial.mAmount /= 16;
continue;
}
if (tMaterial.mMaterial.contains(SubTag.FLAMMABLE)) {
tMaterial.mMaterial = Materials.Ash;
- tMaterial.mAmount /= 2;
+ tMaterial.mAmount /= 8;
continue;
}
if (tMaterial.mMaterial.contains(SubTag.NO_SMELTING)) {
diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java
index 6c3289af30..47c4dfb334 100644
--- a/src/main/java/gregtech/api/util/GT_Utility.java
+++ b/src/main/java/gregtech/api/util/GT_Utility.java
@@ -53,10 +53,13 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityChest;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MathHelper;
+import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.ChunkPosition;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
+import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
@@ -73,6 +76,9 @@ import java.util.*;
import java.util.Map.Entry;
import static gregtech.api.enums.GT_Values.*;
+import static gregtech.common.GT_Proxy.GTPOLLUTION;
+import static gregtech.common.GT_Proxy.dimensionWiseChunkData;
<