aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/loaders
diff options
context:
space:
mode:
authorJohann Bernhardt <johann.bernhardt@tum.de>2021-12-12 19:38:06 +0100
committerJohann Bernhardt <johann.bernhardt@tum.de>2021-12-12 19:38:06 +0100
commit311ab89f93558233a40079f7cb16605b141b5346 (patch)
treec5f44ef47f441a57c5f57aa801f639c7879ed760 /src/main/java/gtPlusPlus/xmod/gregtech/loaders
parent896143b96132f5ac54aa8d8f7386f27487e5e530 (diff)
downloadGT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.gz
GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.tar.bz2
GT5-Unofficial-311ab89f93558233a40079f7cb16605b141b5346.zip
Move sources and resources
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/loaders')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java290
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java22
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java135
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java134
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java131
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricSnips.java130
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java92
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/Processing_Textures_Items.java11
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java66
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java81
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Base.java16
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java280
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_Ex.java153
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java215
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java444
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Extruder.java176
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_FluidCanning.java230
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluids.java298
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MaterialProcessing.java274
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MetalRecipe.java119
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_MultisUsingFluidInsteadOfCells.java187
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java573
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plasma.java42
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java154
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java373
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_ShapedCrafting.java264
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AddCustomMachineToPA.java51
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/misc/AssLineAchievements.java180
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_AlgaeFarm.java207
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_GTNH.java22
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_LFTR.java173
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_Nuclear.java695
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/recipe/RecipeLoader_NuclearFuelProcessing.java372
33 files changed, 6590 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java
new file mode 100644
index 0000000000..4c8707e5e8
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/GT_Material_Loader.java
@@ -0,0 +1,290 @@
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import java.lang.reflect.*;
+import java.util.HashMap;
+import java.util.Map;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+
+public class GT_Material_Loader {
+
+ private volatile static GT_Material_Loader instance = new GT_Material_Loader();
+ private volatile Object mProxyObject;
+ private static AutoMap<Materials> mMaterials = new AutoMap<Materials>();
+ private static volatile boolean mHasRun = false;
+
+ public synchronized GT_Material_Loader getInstance(){
+ return GT_Material_Loader.instance;
+ }
+
+ public synchronized boolean getRunAbility(){
+ return (mHasRun ? false : true);
+ }
+ public synchronized void setRunAbility(boolean b){
+ mHasRun = Utils.invertBoolean(b);
+ }
+
+ public GT_Material_Loader() {
+ if (getRunAbility()){
+ //Set Singleton Instance
+ instance = this;
+
+ //Try Reflectively add ourselves to the GT loader.
+ Class mInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
+ if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && mInterface != null){
+
+ //Make this class Dynamically implement IMaterialHandler
+ if (mProxyObject == null){
+ mProxyObject = Proxy.newProxyInstance(
+ mInterface.getClassLoader(), new Class[] { mInterface },
+ new MaterialHandler(getInstance()));
+ }
+
+ if (ReflectionUtils.invoke(Materials.class, "add", new Class[]{ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler")}, new Object[]{mProxyObject})){
+ Logger.REFLECTION("Successfully invoked add, on the proxied object implementing IMaterialHandler.");
+
+
+ Logger.REFLECTION("Examining Proxy to ensure it implements the correct Interface.");
+ Class[] i = mProxyObject.getClass().getInterfaces();
+ for (int r=0;r<i.length;r++){
+ Logger.REFLECTION("Contains "+i[r].getCanonicalName()+".");
+ if (i[r] == mInterface){
+ Logger.REFLECTION("Found gregtech.api.interfaces.IMaterialHandler. This Proxy is valid.");
+ }
+ }
+ }
+ else {
+ Logger.REFLECTION("Failed to invoke add, on the proxied object implementing IMaterialHandler.");
+ }
+ }
+ //Materials.add(this);
+
+ //Stupid shit running twice, I don't think so.
+ setRunAbility(false);
+ }
+ }
+
+ public void onMaterialsInit() {
+ Logger.DEBUG_MATERIALS("onMaterialsInit()");
+ }
+
+ public void onComponentInit() {
+ Logger.DEBUG_MATERIALS("onComponentInit()");
+ if (!mMaterials.isEmpty()){
+ Logger.DEBUG_MATERIALS("Found "+mMaterials.size()+" materials to re-enable.");
+ for (Materials M : mMaterials.values()){
+ String name = MaterialUtils.getMaterialName(M);
+ Logger.DEBUG_MATERIALS("Trying to enable "+name+".");
+ boolean success = tryEnableAllComponentsForMaterial(M);
+ if (success){
+ Logger.DEBUG_MATERIALS("Success! Enabled "+name+".");
+ }
+ else {
+ Logger.DEBUG_MATERIALS("Failure... Did not enable "+name+".");
+ }
+ }
+ }
+ }
+
+ public void onComponentIteration(Materials aMaterial) {
+ Logger.DEBUG_MATERIALS("onComponentIteration()");
+ }
+
+ public synchronized boolean enableMaterial(Materials m){
+ if (mMaterials.setValue(m)){
+ Logger.DEBUG_MATERIALS("Added "+MaterialUtils.getMaterialName(m)+" to internal Map.");
+ return true;
+ }
+ Logger.DEBUG_MATERIALS("Failed to add "+MaterialUtils.getMaterialName(m)+" to internal Map.");
+ return false;
+ }
+
+
+
+
+
+
+ /*
+ * Static internal handler methods
+ */
+
+ private static synchronized boolean tryEnableMaterial(Materials mMaterial){
+ if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){
+ return false;
+ }
+
+ boolean value = ReflectionUtils.setField(mMaterial, "mHasParentMod", true);
+ if (value){
+ Logger.DEBUG_MATERIALS("Set mHasParentMod true for "+mMaterial.mDefaultLocalName);
+ }
+ else {
+ Logger.DEBUG_MATERIALS("Failed to set mHasParentMod true for "+mMaterial.mDefaultLocalName);
+ }
+ return value;
+ }
+
+ private static synchronized boolean tryEnableMaterialPart(OrePrefixes prefix, Materials mMaterial){
+ if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){
+ return false;
+ }
+ try {
+ Method enableComponent = ReflectionUtils.getClass("gregtech.api.enums.OrePrefixes").getDeclaredMethod("enableComponent", Materials.class);
+ enableComponent.invoke(prefix, mMaterial);
+ Logger.DEBUG_MATERIALS("Enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+".");
+ return true;
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException error) {
+ Logger.DEBUG_MATERIALS("Failed to enabled "+prefix.name()+" for "+mMaterial.mDefaultLocalName+". Caught "+error.getCause().toString()+".");
+ error.printStackTrace();
+ }
+ Logger.DEBUG_MATERIALS("Did not enable "+prefix.name()+" for "+mMaterial.mDefaultLocalName+". Report this error to Alkalus on Github.");
+ return false;
+ }
+
+ private static synchronized boolean tryEnableAllComponentsForMaterial(Materials material){
+ if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){
+ return false;
+ }
+ try {
+ tryEnableMaterial(material);
+ int mValid = 0;
+ for(OrePrefixes ore:OrePrefixes.values()){
+ if (tryEnableMaterialPart(ore, material)){
+ mValid++;
+ }
+ }
+ if (mValid > 0){
+ Logger.DEBUG_MATERIALS("Success - Re-enabled all components for "+MaterialUtils.getMaterialName(material));
+ }
+ else {
+ Logger.DEBUG_MATERIALS("Failure - Did not enable any components for "+MaterialUtils.getMaterialName(material));
+ }
+ return mValid > 0;
+ }
+ catch (SecurityException | IllegalArgumentException e) {
+ Logger.DEBUG_MATERIALS("Total Failure - Unable to re-enable "+MaterialUtils.getMaterialName(material)+". Most likely an IllegalArgumentException, but small chance it's a SecurityException.");
+ return false;
+ }
+ }
+
+
+
+
+
+
+
+
+
+ /**
+ * Special Dynamic Interface Class
+ */
+
+ public class MaterialHandler implements InvocationHandler {
+
+ private final Map<String, Method> methods = new HashMap<String, Method>();
+ private Object target;
+
+ public MaterialHandler(Object target) {
+ Logger.REFLECTION("Created a Proxy Interface which implements IMaterialHandler.");
+ this.target = target;
+ for(Method method: target.getClass().getDeclaredMethods()) {
+ Logger.REFLECTION("Adding "+method.getName()+" to internal method map.");
+ this.methods.put(method.getName(), method);
+ }
+ }
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+ long start = System.nanoTime();
+ Object result = methods.get(method.getName()).invoke(target, args);
+ long elapsed = System.nanoTime() - start;
+ Logger.INFO("[Debug] Executed "+method.getName()+" in "+elapsed+" ns");
+ return result;
+ }
+ }
+
+
+ /*
+ public static class ProxyListener implements java.lang.reflect.InvocationHandler {
+
+ public static Object IMaterialHandlerProxy;
+
+ ProxyListener(){
+
+ Logger.REFLECTION("Failed setting IMaterialHandler Proxy instance.");
+ }
+
+ //Loading the class at runtime
+ public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
+ Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
+ Object instance = Proxy.newProxyInstance(someInterface.getClassLoader(), new Class<?>[]{someInterface}, new InvocationHandler() {
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ //Handle the invocations
+ if(method.getName().equals("onMaterialsInit")){
+ Logger.REFLECTION("Invoked onMaterialsInit() via IMaterialHandler proxy");
+ return 1;
+ }
+ else if(method.getName().equals("onComponentInit")){
+ Logger.REFLECTION("Invoked onComponentInit() via IMaterialHandler proxy");
+ return 2;
+ }
+ else if(method.getName().equals("onComponentIteration")){
+ Logger.REFLECTION("Invoked onComponentIteration() via IMaterialHandler proxy");
+ return 3;
+ }
+ else {
+ return -1;
+ }
+ }
+ });
+ System.out.println(instance.getClass().getDeclaredMethod("someMethod", (Class<?>[])null).invoke(instance, new Object[]{}));
+ }
+
+ private static class MaterialHandler implements InvocationHandler {
+ private final Object original;
+
+ public MaterialHandler(Object original) {
+ this.original = original;
+ }
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws IllegalAccessException, IllegalArgumentException,
+ InvocationTargetException {
+ System.out.println("BEFORE");
+ method.invoke(original, args);
+ System.out.println("AFTER");
+ return null;
+ }
+ }
+
+ public static void init(){
+
+ Class<?> someInterface = ReflectionUtils.getClass("gregtech.api.interfaces.IMaterialHandler");
+ GT_Material_Loader original = GT_Material_Loader.instance;
+ MaterialHandler handler = new MaterialHandler(original);
+
+ Object f = Proxy.newProxyInstance(someInterface.getClassLoader(),
+ new Class[] { someInterface },
+ handler);
+
+ f.originalMethod("Hallo");
+ }
+
+
+
+ }
+
+ */
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java
new file mode 100644
index 0000000000..e918d8015e
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/Gregtech_Blocks.java
@@ -0,0 +1,22 @@
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import gtPlusPlus.core.block.ModBlocks;
+import gtPlusPlus.xmod.gregtech.common.blocks.*;
+
+public class Gregtech_Blocks {
+
+ public static void run(){
+
+ //Casing Blocks
+ ModBlocks.blockCasingsMisc = new GregtechMetaCasingBlocks();
+ ModBlocks.blockCasings2Misc = new GregtechMetaCasingBlocks2();
+ ModBlocks.blockCasings3Misc = new GregtechMetaCasingBlocks3();
+ ModBlocks.blockCasings4Misc = new GregtechMetaCasingBlocks4();
+ ModBlocks.blockCasings5Misc = new GregtechMetaCasingBlocks5();
+
+ ModBlocks.blockCasingsTieredGTPP = new GregtechMetaTieredCasingBlocks1();
+ ModBlocks.blockSpecialMultiCasings = new GregtechMetaSpecialMultiCasings();
+ ModBlocks.blockCustomMachineCasings = new GregtechMetaSpecialMachineCasings();
+
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java
new file mode 100644
index 0000000000..51316f024a
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingAngleGrinder.java
@@ -0,0 +1,135 @@
+
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.SubTag;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_ModHandler.RecipeBits;
+import gregtech.api.util.GT_OreDictUnificator;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
+import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator;
+import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
+import net.minecraft.item.ItemStack;
+
+public class ProcessingAngleGrinder implements Interface_OreRecipeRegistrator, Runnable {
+ public ProcessingAngleGrinder() {
+ GregtechOrePrefixes.toolAngleGrinder.add(this);
+ }
+
+ @Override
+ public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName,
+ final String aModName, final ItemStack aStack) {
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) {
+ if (aMaterial != Materials.Rubber) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY))
+ && (!aMaterial.contains(SubTag.NO_SMASHING))) {
+
+ }
+ }
+ }
+ }
+
+ @Override
+ public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName,
+ final String aModName, final ItemStack aStack) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void materialsLoops() {
+ final Materials[] i = Materials.values();
+ final int size = i.length;
+ Logger.MATERIALS("Materials to attempt tool gen. with: " + size);
+ int used = 0;
+ Materials aMaterial = null;
+ for (int r = 0; r < size; r++) {
+ aMaterial = i[r];
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber)
+ && (aMaterial != Materials._NULL)) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY))
+ && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT))
+ && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL))
+ && (!aMaterial.contains(SubTag.NO_SMELTING))) {
+ Logger.MATERIALS("Generating Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial));
+ // Input 1
+
+
+ final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L);
+ final ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L);
+
+ if ((null != plate && longrod != null)) {
+ addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1));
+ addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1));
+ addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1));
+ used++;
+ } else {
+ Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+(longrod == null)+" |");
+ }
+ // GT_ModHandler.addCraftingRecipe(,
+ // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS |
+ // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ",
+ // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial),
+ // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial),
+ // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)});
+ } else {
+ Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial));
+ }
+ } else {
+ Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial));
+ }
+
+ }
+
+ Logger.INFO("Materials used for tool gen: " + used);
+ }
+
+ @Override
+ public void run() {
+ Logger.INFO("Generating Angle Grinders for all valid GT Materials.");
+ this.materialsLoops();
+ }
+
+ public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) {
+
+ ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(
+ MetaGeneratedGregtechTools.ANGLE_GRINDER,
+ 1,
+ aMaterial,
+ Materials.Titanium,
+ new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L});
+
+
+
+ long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack);
+ if (aDura <= 32000) {
+ Logger.MATERIALS("Unable to generate Angle Grinder from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura);
+ return false;
+ }
+
+ return GT_ModHandler.addCraftingRecipe(
+ aOutputStack,
+ RecipeBits.DISMANTLEABLE | RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | RecipeBits.BUFFERED,
+ new Object[]{
+ "SXL",
+ "GMG",
+ "PBP",
+ 'X', ItemList.Component_Grinder_Tungsten.get(1),
+ 'M', CI.getElectricMotor(aVoltageTier, 1),
+ 'S', OrePrefixes.screw.get(Materials.Titanium),
+ 'L', OrePrefixes.stickLong.get(aMaterial),
+ 'P', OrePrefixes.plate.get(aMaterial),
+ 'G', ELEMENT.STANDALONE.BLACK_METAL.getGear(1),
+ 'B', aBattery
+ });
+
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java
new file mode 100644
index 0000000000..9fe9ad7816
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricButcherKnife.java
@@ -0,0 +1,134 @@
+
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.SubTag;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_ModHandler.RecipeBits;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
+import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator;
+import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
+import net.minecraft.item.ItemStack;
+
+public class ProcessingElectricButcherKnife implements Interface_OreRecipeRegistrator, Runnable {
+ public ProcessingElectricButcherKnife() {
+ GregtechOrePrefixes.toolElectricButcherKnife.add(this);
+ }
+
+ @Override
+ public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName,
+ final String aModName, final ItemStack aStack) {
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) {
+ if (aMaterial != Materials.Rubber) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY))
+ && (!aMaterial.contains(SubTag.NO_SMASHING))) {
+
+ }
+ }
+ }
+ }
+
+ @Override
+ public void registerOre(final GregtechOrePrefixes aPrefix, final GT_Materials aMaterial, final String aOreDictName,
+ final String aModName, final ItemStack aStack) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void materialsLoops() {
+ final Materials[] i = Materials.values();
+ final int size = i.length;
+ Logger.MATERIALS("Materials to attempt tool gen. with: " + size);
+ int used = 0;
+ Materials aMaterial = null;
+ for (int r = 0; r < size; r++) {
+ aMaterial = i[r];
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber)
+ && (aMaterial != Materials._NULL)) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY))
+ && (!aMaterial.contains(SubTag.NO_SMASHING)) && (!aMaterial.contains(SubTag.TRANSPARENT))
+ && (!aMaterial.contains(SubTag.FLAMMABLE)) && (!aMaterial.contains(SubTag.MAGICAL))
+ && (!aMaterial.contains(SubTag.NO_SMELTING))) {
+ Logger.MATERIALS("Generating Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial));
+ // Input 1
+
+
+ final ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L);
+ final ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L);
+
+ if ((null != plate) && screw != null) {
+ addRecipe(aMaterial, 1600000L, 3, ItemList.Battery_RE_HV_Lithium.get(1));
+ addRecipe(aMaterial, 1200000L, 3, ItemList.Battery_RE_HV_Cadmium.get(1));
+ addRecipe(aMaterial, 800000L, 3, ItemList.Battery_RE_HV_Sodium.get(1));
+ used++;
+ } else {
+ Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)+", Plate or Long Rod may be invalid. Invalid | Plate? "+(plate == null) +" | Rod? "+" |");
+ }
+ // GT_ModHandler.addCraftingRecipe(,
+ // GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS |
+ // GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ",
+ // Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial),
+ // Character.valueOf('P'), OrePrefixes.plate.get(aMaterial),
+ // Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)});
+ } else {
+ Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial));
+ }
+ } else {
+ Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial));
+ }
+
+ }
+
+ Logger.INFO("Materials used for tool gen: " + used);
+ }
+
+ @Override
+ public void run() {
+ Logger.INFO("Generating Electric Butcher Knives for all valid GT Materials.");
+ this.materialsLoops();
+ }
+
+ public boolean addRecipe(Materials aMaterial, long aBatteryStorage, int aVoltageTier, ItemStack aBattery) {
+
+ ItemStack aOutputStack = MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(
+ MetaGeneratedGregtechTools.ELECTRIC_BUTCHER_KNIFE,
+ 1,
+ aMaterial,
+ Materials.Titanium,
+ new long[]{aBatteryStorage, GT_Values.V[aVoltageTier], 3L, -1L});
+
+ ItemStack aInputCutter = GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(
+ GT_MetaGenerated_Tool_01.BUTCHERYKNIFE,
+ 1,
+ aMaterial,
+ aMaterial,
+ null);
+
+ long aDura = MetaGeneratedGregtechTools.getToolMaxDamage(aOutputStack);
+ if (aDura <= 32000) {
+ Logger.MATERIALS("Unable to generate Electric Butcher Knife from "+MaterialUtils.getMaterialName(aMaterial)+", Durability: "+aDura);
+ return false;
+ }
+
+
+
+ return RecipeUtils.addShapedRecipe(
+ OrePrefixes.wireFine.get(Materials.Electrum), aInputCutter, OrePrefixes.wireFine.get(Materials.Electrum),
+ OrePrefixes.plate.get(aMaterial), CI.getElectricMotor(aVoltageTier, 1), OrePrefixes.plate.get(aMaterial),
+ OrePrefixes.screw.get(aMaterial), aBattery, OrePrefixes.screw.get(aMaterial),
+ aOutputStack);
+
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java
new file mode 100644
index 0000000000..5f6c5a0427
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/ProcessingElectricLighter.java
@@ -0,0 +1,131 @@
+
+package gtPlusPlus.xmod.gregtech.loaders;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.SubTag;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_ModHandler.RecipeBits;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.material.ELEMENT;
+import gtPlusPlus.core.recipe.common.CI;
+import gtPlusPlus.core.util.minecraft.MaterialUtils;
+import gtPlusPlus.core.util.minecraft.RecipeUtils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
+import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator;
+import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
+import net.minecraft.item.ItemStack;
+
+public class ProcessingElectricLighter implements Interface_OreRecipeRegistrator, Runnable {
+ public ProcessingElectricLighter() {
+ GregtechOrePrefixes.toolElectricLighter.add(this);
+ }
+
+ @Override
+ public void registerOre(final GregtechOrePrefixes aPrefix, final Materials aMaterial, final String aOreDictName,
+ final String aModName, final ItemStack aStack) {
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) {
+ if (aMaterial != Materials.Rubber) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY))
+ && (!aMaterial.contains(SubTag.NO_SMASHING))) {