From e5193543b16561e0f6b13ba0a347d94092d8a9b4 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sun, 12 May 2019 11:09:03 +1000 Subject: + Thermal Boiler now pulls lava filters from an input bus. + Added some minor GUI functions to GregtechMeta_MultiBlockBase. + Added some new Reflection functions. --- .../core/util/reflect/ReflectionUtils.java | 202 ++++++++++++++++++--- 1 file changed, 176 insertions(+), 26 deletions(-) (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index 722a4f3ff7..c86d6ccb83 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -3,10 +3,17 @@ package gtPlusPlus.core.util.reflect; import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.Field; +import java.lang.reflect.GenericDeclaration; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Map; import org.apache.commons.lang3.ArrayUtils; @@ -133,8 +140,8 @@ public class ReflectionUtils { public static Method getMethod(Object aObject, String aMethodName, Class[] aTypes) { return getMethod(aObject.getClass(), aMethodName, aTypes); } - - + + /** * Returns a cached {@link Method} object. * @param aClass - Class containing the Method. @@ -193,7 +200,7 @@ public class ReflectionUtils { return y.get(); } } - + /** * Returns a cached {@link Field} object. * @param aInstance - {@link Object} to get the field instance from. @@ -219,6 +226,20 @@ public class ReflectionUtils { return isClassPresent(classname); } + + /** + * Returns the class of the objects type parameter + * @param o - Object to examine paramters on + * @return - a Class or null + */ + public static Class getTypeOfGenericObject(Object o) { + Class aTypeParam = findSuperClassParameterType(o, o.getClass(), 0); + if (aTypeParam == null) { + aTypeParam = findSubClassParameterType(o, o.getClass(), 0); + } + return aTypeParam; + } + public static void makeFieldAccessible(final Field field) { if (!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers())) @@ -271,7 +292,7 @@ public class ReflectionUtils { return loaded > 0; } - + public static boolean setField(final Object object, final String fieldName, final Object fieldValue) { Class clazz = object.getClass(); @@ -414,13 +435,27 @@ public class ReflectionUtils { - - - - - - - + + + + + + + + + + + + + + + + + + /* + * Internal Magic that probably should not get exposed. + */ + @@ -429,11 +464,126 @@ public class ReflectionUtils { + /* + * + * Below Code block is used for determining generic types associated with type + * + */ + + + //https://xebia.com/blog/acessing-generic-types-at-runtime-in-java/ + //https://www.javacodegeeks.com/2013/12/advanced-java-generics-retreiving-generic-type-arguments.html + public static Class findSuperClassParameterType(Object instance, Class classOfInterest, int parameterIndex) { + Class subClass = instance.getClass(); + while (classOfInterest != subClass.getSuperclass()) { + // instance.getClass() is no subclass of classOfInterest or instance is a direct instance of classOfInterest + subClass = subClass.getSuperclass(); + if (subClass == null) { + return null; + } + } + ParameterizedType parameterizedType = (ParameterizedType) subClass.getGenericSuperclass(); + Class aReturn; + aReturn = (Class) parameterizedType.getActualTypeArguments()[parameterIndex]; + return aReturn; + } + + public static Class findSubClassParameterType(Object instance, Class classOfInterest, int parameterIndex) { + Map typeMap = new HashMap(); + Class instanceClass = instance.getClass(); + while (classOfInterest != instanceClass.getSuperclass()) { + extractTypeArguments(typeMap, instanceClass); + instanceClass = instanceClass.getSuperclass(); + if (instanceClass == null) { + return null; + } + } + + ParameterizedType parameterizedType = (ParameterizedType) instanceClass.getGenericSuperclass(); + Type actualType = parameterizedType.getActualTypeArguments()[parameterIndex]; + if (typeMap.containsKey(actualType)) { + actualType = typeMap.get(actualType); + } + if (actualType instanceof Class) { + return (Class) actualType; + } else if (actualType instanceof TypeVariable) { + return browseNestedTypes(instance, (TypeVariable) actualType); + } else { + return null; + } + } + + private static void extractTypeArguments(Map typeMap, Class clazz) { + Type genericSuperclass = clazz.getGenericSuperclass(); + if (!(genericSuperclass instanceof ParameterizedType)) { + return; + } + + ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass; + Type[] typeParameter = ((Class) parameterizedType.getRawType()).getTypeParameters(); + Type[] actualTypeArgument = parameterizedType.getActualTypeArguments(); + for (int i = 0; i < typeParameter.length; i++) { + if(typeMap.containsKey(actualTypeArgument[i])) { + actualTypeArgument[i] = typeMap.get(actualTypeArgument[i]); + } + typeMap.put(typeParameter[i], actualTypeArgument[i]); + } + } + + private static Class browseNestedTypes(Object instance, TypeVariable actualType) { + Class instanceClass = instance.getClass(); + List> nestedOuterTypes = new LinkedList>(); + for (Class enclosingClass = instanceClass + .getEnclosingClass(); enclosingClass != null; enclosingClass = enclosingClass.getEnclosingClass()) { + try { + Field this$0 = instanceClass.getDeclaredField("this$0"); + Object outerInstance = this$0.get(instance); + Class outerClass = outerInstance.getClass(); + nestedOuterTypes.add(outerClass); + Map outerTypeMap = new HashMap(); + extractTypeArguments(outerTypeMap, outerClass); + for (Map.Entry entry : outerTypeMap.entrySet()) { + if (!(entry.getKey() instanceof TypeVariable)) { + continue; + } + TypeVariable foundType = (TypeVariable) entry.getKey(); + if (foundType.getName().equals(actualType.getName()) + && isInnerClass(foundType.getGenericDeclaration(), actualType.getGenericDeclaration())) { + if (entry.getValue() instanceof Class) { + return (Class) entry.getValue(); + } + actualType = (TypeVariable) entry.getValue(); + } + } + } catch (NoSuchFieldException | IllegalAccessException e) { + + } + + } + return null; + } + + private static boolean isInnerClass(GenericDeclaration outerDeclaration, GenericDeclaration innerDeclaration) { + if (!(outerDeclaration instanceof Class) || !(innerDeclaration instanceof Class)) { + return false; + } + Class outerClass = (Class) outerDeclaration; + Class innerClass = (Class) innerDeclaration; + while ((innerClass = innerClass.getEnclosingClass()) != null) { + if (innerClass == outerClass) { + return true; + } + } + return false; + } /* - * Internal Magic that probably should not get exposed. - */ + * + * End of Generics Block + * + */ + private static Field getField_Internal(final Class clazz, final String fieldName) throws NoSuchFieldException { @@ -525,26 +675,26 @@ public class ReflectionUtils { return getMethod_Internal(superClass, aMethodName); } } - + private static void dumpClassInfo(Class aClass) { Logger.INFO("We ran into an error processing reflection in "+aClass.getName()+", dumping all data for debugging."); // Get the methods - Method[] methods = aClass.getDeclaredMethods(); - Field[] fields = aClass.getDeclaredFields(); - Constructor[] consts = aClass.getDeclaredConstructors(); + Method[] methods = aClass.getDeclaredMethods(); + Field[] fields = aClass.getDeclaredFields(); + Constructor[] consts = aClass.getDeclaredConstructors(); Logger.INFO("Dumping all Methods."); - for (Method method : methods) { - System.out.println(method.getName()+" | "+StringUtils.getDataStringFromArray(method.getParameterTypes())); - } + for (Method method : methods) { + System.out.println(method.getName()+" | "+StringUtils.getDataStringFromArray(method.getParameterTypes())); + } Logger.INFO("Dumping all Fields."); - for (Field f : fields) { - System.out.println(f.getName()); - } + for (Field f : fields) { + System.out.println(f.getName()); + } Logger.INFO("Dumping all Constructors."); - for (Constructor c : consts) { - System.out.println(c.getName()+" | "+c.getParameterCount()+" | "+StringUtils.getDataStringFromArray(c.getParameterTypes())); - } + for (Constructor c : consts) { + System.out.println(c.getName()+" | "+c.getParameterCount()+" | "+StringUtils.getDataStringFromArray(c.getParameterTypes())); + } } private static Class getNonPublicClass(final String className) { -- cgit From d0dd7513435c54f17d800ec48cf50f75d1b8628b Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sun, 12 May 2019 12:55:27 +1000 Subject: + Added Strontium processing chains. + Added cutting machine recipes for Blocks -> Plates for GT++ materials. % Adjusted Rare Earth Sifting to no longer give Gd, Yb, Sm instead now provides small ore dust, which can be processed for Yb, Sm and Sr. % Adjusted Strontium RGB and texture set slightly. % Arceus Alloy 2B now requires Strontium as a component. --- src/Java/gtPlusPlus/core/item/ModItems.java | 4 + src/Java/gtPlusPlus/core/material/ALLOY.java | 3 +- src/Java/gtPlusPlus/core/material/ELEMENT.java | 2 +- .../gtPlusPlus/core/material/MISC_MATERIALS.java | 57 +++ src/Java/gtPlusPlus/core/material/ORES.java | 2 +- .../gtPlusPlus/core/recipe/RECIPES_GREGTECH.java | 475 +++++++++++---------- .../core/util/minecraft/EnergyUtils.java | 4 +- .../core/util/minecraft/MaterialUtils.java | 11 + 8 files changed, 326 insertions(+), 232 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index 51d41674d3..e504c1c2b4 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -82,6 +82,7 @@ import gtPlusPlus.core.lib.CORE.ConfigSwitches; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.ALLOY; import gtPlusPlus.core.material.ELEMENT; +import gtPlusPlus.core.material.MISC_MATERIALS; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.NONMATERIAL; @@ -539,6 +540,9 @@ public final class ModItems { MaterialGenerator.generate(ELEMENT.STANDALONE.GRANITE, false, false); MaterialGenerator.generate(ELEMENT.STANDALONE.RUNITE, false); MaterialGenerator.generate(ELEMENT.STANDALONE.DRAGON_METAL, false); + + MISC_MATERIALS.run(); + //Carbides - Tungsten Carbide exists in .09 so don't generate it. - Should still come before alloys though if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){ diff --git a/src/Java/gtPlusPlus/core/material/ALLOY.java b/src/Java/gtPlusPlus/core/material/ALLOY.java index d2639a220f..1df843da0b 100644 --- a/src/Java/gtPlusPlus/core/material/ALLOY.java +++ b/src/Java/gtPlusPlus/core/material/ALLOY.java @@ -695,7 +695,8 @@ public final class ALLOY { new MaterialStack(ELEMENT.getInstance().TRINIUM_REFINED, 30), new MaterialStack(ALLOY.MARAGING350, 40), new MaterialStack(ALLOY.TUNGSTENSTEEL, 20), - new MaterialStack(ALLOY.OSMIRIDIUM, 10) + new MaterialStack(ALLOY.OSMIRIDIUM, 10), + new MaterialStack(ELEMENT.getInstance().STRONTIUM, 10) }); diff --git a/src/Java/gtPlusPlus/core/material/ELEMENT.java b/src/Java/gtPlusPlus/core/material/ELEMENT.java index 9ba6fe0f1d..99586b37fe 100644 --- a/src/Java/gtPlusPlus/core/material/ELEMENT.java +++ b/src/Java/gtPlusPlus/core/material/ELEMENT.java @@ -51,7 +51,7 @@ public final class ELEMENT { public final Material BROMINE = new Material("Bromine", MaterialState.PURE_LIQUID, new short[]{200, 25, 25}, -7, 58, 35, 45, false, "Br", 0);//Not a GT Inherited Material public final Material KRYPTON = new Material("Krypton", MaterialState.PURE_LIQUID, new short[]{255, 255, 255}, -157, -153, 36, 48, false, "Kr", 0);//Not a GT Inherited Material public final Material RUBIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Rubidium); - public final Material STRONTIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Strontium); + public final Material STRONTIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Strontium, new short[] {230, 210, 110}, TextureSet.SET_FLINT); public final Material YTTRIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Yttrium); public final Material ZIRCONIUM = new Material("Zirconium", MaterialState.SOLID, new short[]{255, 250, 205}, 1855, 4377, 40, 51, false, "Zr", 0);//Not a GT Inherited Material public final Material NIOBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Niobium); diff --git a/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java new file mode 100644 index 0000000000..69ee3e963d --- /dev/null +++ b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java @@ -0,0 +1,57 @@ +package gtPlusPlus.core.material; + +import gregtech.api.enums.TextureSet; +import gtPlusPlus.core.material.nuclear.FLUORIDES; +import gtPlusPlus.core.material.state.MaterialState; +import gtPlusPlus.core.util.minecraft.ItemUtils; +import gtPlusPlus.core.util.minecraft.MaterialUtils; + +public final class MISC_MATERIALS { + + /* + * Some of these materials purely exist as data objects, items will most likely be assigned seperately. + * Most are just compositions which will have dusts assigned to them. + */ + + public static void run() { + MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_OXIDE); + MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_HYDROXIDE); + } + + public static final Material STRONTIUM_OXIDE = new Material( + "Strontium Oxide", + MaterialState.SOLID, + TextureSet.SET_METALLIC, + null, + -1, + -1, + -1, + -1, + false, + "SrO", + 0, + new MaterialStack[]{ + new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1), + new MaterialStack(ELEMENT.getInstance().OXYGEN, 1) + }); + + public static final Material STRONTIUM_HYDROXIDE = new Material( + "Strontium Hydroxide", + MaterialState.SOLID, + TextureSet.SET_METALLIC, + null, + -1, + -1, + -1, + -1, + false, + "Sr(OH)2", + 0, + new MaterialStack[]{ + new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1), + new MaterialStack(FLUORIDES.HYDROXIDE, 2) + }); + + + +} diff --git a/src/Java/gtPlusPlus/core/material/ORES.java b/src/Java/gtPlusPlus/core/material/ORES.java index 801e4924b3..0e1691a557 100644 --- a/src/Java/gtPlusPlus/core/material/ORES.java +++ b/src/Java/gtPlusPlus/core/material/ORES.java @@ -545,7 +545,7 @@ public final class ORES { -1, //Radiation new MaterialStack[]{// (Ca,Sr,Ce,Na)5(PO4)3F new MaterialStack(ELEMENT.getInstance().CALCIUM, 5), - new MaterialStack(ELEMENT.getInstance().STRONTIUM, 5), + new MaterialStack(MISC_MATERIALS.STRONTIUM_OXIDE, 5), new MaterialStack(ELEMENT.getInstance().CERIUM, 5), new MaterialStack(ELEMENT.getInstance().SODIUM, 5), new MaterialStack(ELEMENT.getInstance().PHOSPHORUS, 3), diff --git a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java index 483fce8ce5..c00e15a007 100644 --- a/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java +++ b/src/Java/gtPlusPlus/core/recipe/RECIPES_GREGTECH.java @@ -26,6 +26,7 @@ import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.ALLOY; import gtPlusPlus.core.material.ELEMENT; +import gtPlusPlus.core.material.MISC_MATERIALS; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.NONMATERIAL; import gtPlusPlus.core.material.ORES; @@ -90,7 +91,7 @@ public class RECIPES_GREGTECH { assemblyLineRecipes(); latheRecipes(); vacuumFreezerRecipes(); - + addFuels(); } @@ -99,38 +100,38 @@ public class RECIPES_GREGTECH { } private static void latheRecipes() { - + GT_Values.RA.addLatheRecipe( ALLOY.EGLIN_STEEL.getBlock(1), GregtechItemList.Bomb_Cast_Mold.get(1), null, 20 * 60 * 15, 120); - + GT_Values.RA.addLatheRecipe( GregtechItemList.Bomb_Cast_Set.get(1), GregtechItemList.Bomb_Cast_Broken.get(2), ItemUtils.getSimpleStack(ModItems.itemBombCasing, 2), 20 * 60 * 5, 30); - + } private static void fusionRecipes() { - /** - * Adds a Fusion reactor Recipe - * - * @param aInput1 = first Input (not null, and respects StackSize) - * @param aInput2 = second Input (not null, and respects StackSize) - * @param aOutput = Output of the Fusion (can be null, and respects StackSize) - * @param aFusionDurationInTicks = How many ticks the Fusion lasts (must be > 0) - * @param aFusionEnergyPerTick = The EU generated per Tick (can even be negative!) - * @param aEnergyNeededForStartingFusion = EU needed for heating the Reactor up (must be >= 0) - */ - + /** + * Adds a Fusion reactor Recipe + * + * @param aInput1 = first Input (not null, and respects StackSize) + * @param aInput2 = second Input (not null, and respects StackSize) + * @param aOutput = Output of the Fusion (can be null, and respects StackSize) + * @param aFusionDurationInTicks = How many ticks the Fusion lasts (must be > 0) + * @param aFusionEnergyPerTick = The EU generated per Tick (can even be negative!) + * @param aEnergyNeededForStartingFusion = EU needed for heating the Reactor up (must be >= 0) + */ + //Hydrogen Plasma - /*CORE.RA.addFusionReactorRecipe( + /*CORE.RA.addFusionReactorRecipe( Particle.getIon("Hydrogen", 0), Particle.getIon("Hydrogen", 0), Materials.Hydrogen.getPlasma(1), @@ -138,8 +139,8 @@ public class RECIPES_GREGTECH { 16, 4096, 40000000);*/ - - + + //Hypogen Creation GT_Values.RA.addFusionReactorRecipe( Materials.Neutronium.getMolten(128), @@ -157,23 +158,23 @@ public class RECIPES_GREGTECH { 2048 * 4, (int) GT_Values.V[7], 150000000 * 2); - + } private static void assemblyLineRecipes() { - - + + ItemStack[] aCoilWire = new ItemStack[] { ItemUtils.simpleMetaStack("miscutils:itemDehydratorCoilWire", 0, GTNH ? 64 : 32), ItemUtils.simpleMetaStack("miscutils:itemDehydratorCoilWire", 1, GTNH ? 48 : 16), ItemUtils.simpleMetaStack("miscutils:itemDehydratorCoilWire", 2, GTNH ? 32 : 8), ItemUtils.simpleMetaStack("miscutils:itemDehydratorCoilWire", 3, GTNH ? 16 : 4), }; - - - - + + + + //Containment Casings CORE.RA.addAssemblylineRecipe( ItemDummyResearch.getResearchStack(ASSEMBLY_LINE_RESEARCH.RESEARCH_1_CONTAINMENT, 1), @@ -199,12 +200,12 @@ public class RECIPES_GREGTECH { ALLOY.ENERGYCRYSTAL.getFluid(144 * 9 * (GTNH ? 8 : 4)), ALLOY.TUMBAGA.getFluid(144 * 9 * (GTNH ? 32 : 8)), ALLOY.NICHROME.getFluid(144 * 1 * (GTNH ? 16 : 4)), - + }, ItemUtils.getSimpleStack(ModBlocks.blockCasings3Misc, 15, 32), 20 * 60 * 10 * (GTNH ? 2 : 1), (int) GT_Values.V[6]); - + //Slow Fusion Controller CORE.RA.addAssemblylineRecipe( GregtechItemList.COMET_Cyclotron.get(1), @@ -232,8 +233,8 @@ public class RECIPES_GREGTECH { GregtechItemList.Miniature_Fusion.get(1), 20 * 60 * 5 * (GTNH ? 2 : 1), (int) GT_Values.V[7]); - - + + //Plasma Tank CORE.RA.addAssemblylineRecipe( ItemUtils.getOrePrefixStack(OrePrefixes.pipeMedium, Materials.Superconductor, 1), @@ -250,17 +251,17 @@ public class RECIPES_GREGTECH { CI.getTieredFluid(4, 144 * 9 * (GTNH ? 16 : 8)), CI.getTertiaryTieredFluid(4, 144 * 9 * (GTNH ? 16 : 8)), CI.getAlternativeTieredFluid(4, 144 * 9 * (GTNH ? 16 : 8)), - + }, GregtechItemList.Plasma_Tank.get(1), 20 * 60 * 1 * (GTNH ? 2 : 1), (int) GT_Values.V[5]); - - + + /* * Contianment casings */ - + ItemStack[] aGemCasings = new ItemStack[] { GregtechItemList.Battery_Casing_Gem_1.get(1), GregtechItemList.Battery_Casing_Gem_2.get(1), @@ -273,7 +274,7 @@ public class RECIPES_GREGTECH { GregtechItemList.Battery_Casing_Gem_2.get(1), GregtechItemList.Battery_Casing_Gem_3.get(1), }; - + int aCasingSlot = 0; for (int j = 6; j < 10; j++) { CORE.RA.addAssemblylineRecipe( @@ -290,24 +291,24 @@ public class RECIPES_GREGTECH { CI.getTieredFluid(j, 144 * 3 * (GTNH ? 16 : 8)), CI.getTertiaryTieredFluid(j-2, 144 * 4 * (GTNH ? 16 : 8)), CI.getAlternativeTieredFluid(j, 144 * 6 * (GTNH ? 16 : 8)), - + }, aGemCasings[aCasingSlot++], 20 * 60 * 1 * (GTNH ? 2 : 1), (int) GT_Values.V[j]); } - + /* * Gem Battery Recipes */ - + ItemStack[] aGemBatteries = new ItemStack[] { GregtechItemList.Battery_Gem_1.get(1), GregtechItemList.Battery_Gem_2.get(1), GregtechItemList.Battery_Gem_3.get(1), GregtechItemList.Battery_Gem_4.get(1), }; - + ItemStack[] aExoticInputs = new ItemStack[] { Particle.getBaseParticle(Particle.PROTON), Particle.getBaseParticle(Particle.ELECTRON), @@ -338,8 +339,8 @@ public class RECIPES_GREGTECH { 20 * 60 * 1 * (GTNH ? 2 : 1), (int) GT_Values.V[j]); } - - + + //Nano Healer CORE.RA.addAssemblylineRecipe( ItemUtils.simpleMetaStack(Items.golden_apple, 1, 1), @@ -360,14 +361,14 @@ public class RECIPES_GREGTECH { CI.getTertiaryTieredFluid(7, 144 * 18 * (GTNH ? 16 : 8)), CI.getAlternativeTieredFluid(6, 144 * 18 * (GTNH ? 16 : 8)), CI.getAlternativeTieredFluid(7, 144 * 18 * (GTNH ? 16 : 8)), - + }, ItemUtils.getItemStackFromFQRN("miscutils:personalHealingDevice", 1), 20 * 60 * 30 * (GTNH ? 2 : 1), (int) GT_Values.V[7]); - - - + + + //Charge Pack LuV-UV ItemStack[] aChargeResearch = new ItemStack[] { @@ -376,7 +377,7 @@ public class RECIPES_GREGTECH { ItemUtils.getSimpleStack(ModItems.itemChargePack2, 1), ItemUtils.getSimpleStack(ModItems.itemChargePack3, 1), }; - + ItemStack[] aChargeOutputs = new ItemStack[] { ItemUtils.getSimpleStack(ModItems.itemChargePack1, 1), ItemUtils.getSimpleStack(ModItems.itemChargePack2, 1), @@ -390,7 +391,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackFromFQRN("miscutils:item.itemBufferCore9", GTNH ? 8 : 4), ItemUtils.getItemStackFromFQRN("miscutils:item.itemBufferCore10", GTNH ? 8 : 4), }; - + int aCurrSlot = 0; for (int h = 6; h < 10; h++) { CORE.RA.addAssemblylineRecipe( @@ -398,7 +399,7 @@ public class RECIPES_GREGTECH { 20 * 60 * 10 * (aCurrSlot + 1), new ItemStack[] { ItemUtils.getSimpleStack( - aGemBatteries[aCurrSlot], GTNH ? 4 : 2), + aGemBatteries[aCurrSlot], GTNH ? 4 : 2), aBufferCoreInputs[aCurrSlot], aCoilWire[aCurrSlot], CI.getTieredComponent(OrePrefixes.plate, h, GTNH ? 16 : 8), @@ -423,15 +424,15 @@ public class RECIPES_GREGTECH { (int) GT_Values.V[h]); aCurrSlot++; } - - - - - - - - - + + + + + + + + + } private static void laserEngraverRecipes() { @@ -442,21 +443,21 @@ public class RECIPES_GREGTECH { ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.getDust(1), 20 * 60 * 3, MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.CELESTIAL_TUNGSTEN.vTier)); - + GT_Values.RA.addLaserEngraverRecipe( GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Titanium, 8L), GregtechItemList.Laser_Lens_Special.get(0), ELEMENT.STANDALONE.ASTRAL_TITANIUM.getDust(1), 20 * 60 * 2, MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.ASTRAL_TITANIUM.vTier)); - + GT_Values.RA.addLaserEngraverRecipe( ALLOY.NITINOL_60.getBlock(2), GregtechItemList.Laser_Lens_Special.get(0), ELEMENT.STANDALONE.ADVANCED_NITINOL.getBlock(1), 20 * 60 * 1, MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.ADVANCED_NITINOL.vTier)); - + GT_Values.RA.addLaserEngraverRecipe( GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Glass, 64L), GregtechItemList.Laser_Lens_Special.get(0), @@ -464,15 +465,15 @@ public class RECIPES_GREGTECH { 20 * 60 * 5, MaterialUtils.getVoltageForTier(ELEMENT.STANDALONE.CHRONOMATIC_GLASS.vTier)); - + GT_Values.RA.addLaserEngraverRecipe( CI.getFieldGenerator(6, 1), CI.getEmitter(7, 2), ItemDummyResearch.getResearchStack(ASSEMBLY_LINE_RESEARCH.RESEARCH_1_CONTAINMENT, 1), 20 * 60 * 5, MaterialUtils.getVoltageForTier(5)); - - + + } private static void breweryRecipes() { @@ -537,7 +538,7 @@ public class RECIPES_GREGTECH { FluidUtils.getFluidStack("molten.trinium", 136 * 144), 0, 20 * 3000, 2040*4); } - + //Eglin Steel CORE.RA.addBlastSmelterRecipe( new ItemStack[] { @@ -553,7 +554,7 @@ public class RECIPES_GREGTECH { 0, 20 * 45, 120); - + //HG1223 CORE.RA.addBlastSmelterRecipe( new ItemStack[] { @@ -571,9 +572,9 @@ public class RECIPES_GREGTECH { 100, //Output Chance 20 * 120, 122880); - - - + + + // Germanium Roasting CORE.RA.addBlastSmelterRecipe( @@ -622,7 +623,7 @@ public class RECIPES_GREGTECH { 0, 20 * 300, 2000); - + // Ruthenium Roasting CORE.RA.addBlastSmelterRecipe( @@ -669,7 +670,7 @@ public class RECIPES_GREGTECH { 0, 20 * 300, 8000); - + // Rhenium Roasting CORE.RA.addBlastSmelterRecipe( new ItemStack[] { @@ -704,7 +705,7 @@ public class RECIPES_GREGTECH { 0, 20 * 300, 4000); - + //Thallium Roasting CORE.RA.addBlastSmelterRecipe( new ItemStack[] { @@ -719,8 +720,27 @@ public class RECIPES_GREGTECH { 20 * 300, 8000); - - + + + //Strontium processing + CORE.RA.addBlastSmelterRecipe( + new ItemStack[] { + ItemUtils.getGregtechCircuit(21), + MISC_MATERIALS.STRONTIUM_OXIDE.getDust(8), + ELEMENT.getInstance().ALUMINIUM.getDust(8), + }, + null, + ELEMENT.getInstance().OXYGEN.getFluid(8000), + new ItemStack[] { + ELEMENT.getInstance().ALUMINIUM.getIngot(8), + ELEMENT.getInstance().STRONTIUM.getIngot(8) + }, + 100, //Output Chance + 20 * 120, + 480*4); + + + } @@ -733,7 +753,7 @@ public class RECIPES_GREGTECH { ItemUtils.getSimpleStack(Items.glass_bottle), null, FluidUtils.getFluidStack("sulfuricacid", 250)); - + // Hydrofluoric Acid boolean addedGtExtraction = false; // Try use Internal GT Fluid first @@ -751,10 +771,10 @@ public class RECIPES_GREGTECH { FluidUtils.getFluidStack("hydrofluoricacid", 125), null); //Add an empty recipe, but only if we didn't for the standard GT HF. Prevents Fluid transformation exploits. if (!addedGtExtraction) - GT_Values.RA.addFluidCannerRecipe(ItemUtils.getSimpleStack(ModItems.itemHydrofluoricPotion), - ItemUtils.getSimpleStack(Items.glass_bottle), null, FluidUtils.getFluidStack("hydrofluoricacid", 125)); + GT_Values.RA.addFluidCannerRecipe(ItemUtils.getSimpleStack(ModItems.itemHydrofluoricPotion), + ItemUtils.getSimpleStack(Items.glass_bottle), null, FluidUtils.getFluidStack("hydrofluoricacid", 125)); + - } private static void cokeOvenRecipes() { @@ -893,18 +913,18 @@ public class RECIPES_GREGTECH { ItemStack cropGrape = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("cropGrape", 1); ItemStack foodRaisins = ItemUtils.getItemStackOfAmountFromOreDictNoBroken("foodRaisins", 1); - + if (cropGrape != null && foodRaisins != null) - CORE.RA.addDehydratorRecipe(new ItemStack[] { - cropGrape - }, // Item - null, // Fluid input (slot 1) - null, // Fluid output (slot 2) - new ItemStack[] { - foodRaisins - }, // Output - new int[] { 0 }, 10, // Time in ticks - 2); // EU + CORE.RA.addDehydratorRecipe(new ItemStack[] { + cropGrape + }, // Item + null, // Fluid input (slot 1) + null, // Fluid output (slot 2) + new ItemStack[] { + foodRaisins + }, // Output + new int[] { 0 }, 10, // Time in ticks + 2); // EU } catch (final NullPointerException e) { @@ -914,7 +934,7 @@ public class RECIPES_GREGTECH { // Calcium Hydroxide if ((ItemUtils.checkForInvalidItems(ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 1))) || LoadedMods.IHL) { try { - + CORE.RA.addDehydratorRecipe( new ItemStack[] { ItemUtils.getItemStackOfAmountFromOreDict("dustQuicklime", 10) }, // Item FluidUtils.getFluidStack("water", 10000), // Fluid input @@ -1010,7 +1030,7 @@ public class RECIPES_GREGTECH { null, new ItemStack[] { ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogenChloride", 9), FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(9) - }, + }, new int[] { 0 }, 120 * 20, // Time in ticks 500); // EU @@ -1112,7 +1132,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 2) }, // Output 3 * 20, // Time in ticks 30); // EU - + /* * Try Add custom Recipe for drying leather */ @@ -1297,41 +1317,41 @@ public class RECIPES_GREGTECH { ItemUtils.getSimpleStack(ModItems.itemDetCable, 24), 30, 120); - + /*addAR(ItemUtils.getItemStackOfAmountFromOreDict("plateIncoloy020", 16), ItemUtils.getItemStackOfAmountFromOreDict("frameGtIncoloyMA956", 4), null, GregtechItemList.Casing_Power_SubStation.get(4), 80, 120);*/ - - - - + + + + CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] { - GregtechItemList.Casing_Multi_Use.get(1), - ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(6), 1), - ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(4), 8), - CI.sensor_HV, - CI.emitter_HV, - CI.fieldGenerator_HV, - }, + GregtechItemList.Casing_Multi_Use.get(1), + ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(6), 1), + ItemUtils.getItemStackOfAmountFromOreDict(CI.getTieredCircuitOreDictName(4), 8), + CI.sensor_HV, + CI.emitter_HV, + CI.fieldGenerator_HV, + }, null, ItemUtils.getSimpleStack(Dimension_Everglades.blockPortalFrame), 20*20, 2048); - - - - - + + + + + CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] {ItemUtils.getSimpleStack(ModItems.itemRope, 6)}, null, ItemUtils.getSimpleStack(ModBlocks.blockNet, 2), 1*20, 8); CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] {ItemUtils.getSimpleStack(CI.explosiveITNT, 2), ItemUtils.getSimpleStack(CI.explosiveTNT, 4), ELEMENT.getInstance().SULFUR.getDust(2), ELEMENT.getInstance().IRON.getFrameBox(1)}, null, ItemUtils.getSimpleStack(ModBlocks.blockMiningExplosive, 3), 5*20, 60); CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] {ItemUtils.getSimpleStack(Items.nether_star), ItemUtils.getItemStackOfAmountFromOreDict("plateTungstenSteel", 8), ItemUtils.getItemStackOfAmountFromOreDict("stickBlackSteel", 8)}, null, ItemUtils.getSimpleStack(ModBlocks.blockWitherGuard, 32), 30*20, 500); - - + + CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] { CI.electricPump_LV, @@ -1357,7 +1377,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("stickChrome", 1), ItemUtils.getItemStackOfAmountFromOreDict("plateStainlessSteel", 2) }, null, ItemUtils.simpleMetaStack(ModItems.itemGenericToken, 3, 1), 10*20*3, 480); - + CORE.RA.addSixSlotAssemblingRecipe(new ItemStack[] { CI.electricPump_EV, CI.electricMotor_EV, @@ -1467,14 +1487,14 @@ public class RECIPES_GREGTECH { NUCLIDE.LiFBeF2ZrF4UF4.getFluid(144), 10000, 150, 2000); GT_Values.RA.addFluidExtractionRecipe(NUCLIDE.LiFBeF2ThF4UF4.getDust(1), null, NUCLIDE.LiFBeF2ThF4UF4.getFluid(144), 10000, 200, 1500); - + //ZIRCONIUM_TETRAFLUORIDE GT_Values.RA.addFluidExtractionRecipe(FLUORIDES.ZIRCONIUM_TETRAFLUORIDE.getDust(1), null, FluidUtils.getFluidStack(ModItems.fluidZrF4, 144), 10000, 200, 512+256); - - - -/* GT_Values.RA.addFluidExtractionRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustLiBeF2ZrF4U235", 1), null, + + + + /* GT_Values.RA.addFluidExtractionRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustLiBeF2ZrF4U235", 1), null, FluidUtils.getFluidStack("molten.libef2zrf4u235", 144), 10000, 250, 1000); //LFTR Fuel 2 GT_Values.RA.addFluidExtractionRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustLiBeF2ZrF4UF4", 1), null, @@ -1516,10 +1536,10 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("dustSmallThorium", 20), ELEMENT.getInstance().URANIUM232.getDust(1), GT_Values.NI, GT_Values.NI, GT_Values.NI, new int[] { 0, 0, 10 }, 500 * 20, 2000); - + //Process Used Fuel Rods for Krypton - + //Uranium GT_Values.RA.addCentrifugeRecipe( CI.getNumberedCircuit(20), @@ -1546,7 +1566,7 @@ public class RECIPES_GREGTECH { ELEMENT.getInstance().PLUTONIUM238.getTinyDust(1), ELEMENT.getInstance().PLUTONIUM239.getTinyDust(1), new int[] { 0, 0, 500, 500, 500, 500 }, 750 * 20, 4000); - + //Thorium GT_Values.RA.addCentrifugeRecipe( CI.getNumberedCircuit(20), @@ -1560,8 +1580,8 @@ public class RECIPES_GREGTECH { ELEMENT.getInstance().POLONIUM.getSmallDust(1), ELEMENT.getInstance().THALLIUM.getTinyDust(1), new int[] { 0, 0, 5000, 5000, 5000, 2500 }, 250 * 20, 4000); - - + + } @@ -1615,7 +1635,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("dustLithium7", 16), FluidUtils.getFluidStack("water", 1000), FluidUtils.getFluidStack("lithiumhydroxide", 144 * 4), CI.emptyCells(1), 300 * 20); - + //Bombs GT_Values.RA.addChemicalRecipe( ItemUtils.getSimpleStack(ModItems.itemBombCasing, 4), @@ -1624,7 +1644,7 @@ public class RECIPES_GREGTECH { null, ItemUtils.getSimpleStack(ModItems.itemBombUnf, 4), 300 * 20); - + GT_Values.RA.addChemicalRecipe( ItemUtils.getSimpleStack(ModItems.itemBombUnf, 4), ItemUtils.getSimpleStack(ModItems.itemDetCable, 4), @@ -1632,7 +1652,7 @@ public class RECIPES_GREGTECH { null, ItemUtils.getSimpleStack(ModItems.itemBomb, 4), 10 * 20); - + // LFTR Fuel Related Compounds if (GTNH) { @@ -1697,32 +1717,32 @@ public class RECIPES_GREGTECH { CI.emptyCells(7), 2 * 20); } - - + + //Technetium GT_Values.RA.addChemicalRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium99", 1), null, FluidUtils.getFluidStack("sulfuricacid", 1000), FluidUtils.getFluidStack("sulfuricacid", 144 * 2), ItemUtils.getItemStackOfAmountFromOreDict("dustTechnetium", 1), 100 * 20); - + } private static void blastFurnaceRecipes() { - //public boolean addBlastRecipe( + //public boolean addBlastRecipe( //ItemStack aInput1, ItemStack aInput2, //FluidStack aFluidInput, FluidStack aFluidOutput, //ItemStack aOutput1, ItemStack aOutput2, //int aDuration, int aEUt, int aLevel) - + GT_Values.RA.addBlastRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustLithiumFluoride", 2), ItemUtils.getItemStackOfAmountFromOreDict("dustBerylliumFluoride", 1), GT_Values.NF, GT_Values.NF, ItemUtils.getItemStackOfAmountFromOreDict("dustLi2BeF4", 3), null, 60 * 20, 2000, 3000); GT_Values.RA.addBlastRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustZrCl4", 1), null, GT_Values.NF, GT_Values.NF, ItemUtils.getItemStackOfAmountFromOreDict("dustCookedZrCl4", 1), null, 60 * 20, 340, 300); - - + + //Synthetic Graphite GT_Values.RA.addBlastRecipe( CI.getNumberedCircuit(22), @@ -1734,7 +1754,7 @@ public class RECIPES_GREGTECH { 60 * 20, MaterialUtils.getVoltageForTier(GTNH ? 5 : 4), 4500); - + //Bomb Casings GT_Values.RA.addBlastRecipe( GregtechItemList.Bomb_Cast.get(4), @@ -1746,7 +1766,7 @@ public class RECIPES_GREGTECH { 4 * 60 * 20, MaterialUtils.getVoltageForTier(GTNH ? 3 : 2), 2800); - + //Krypton Processing if (ModItems.itemHotTitaniumIngot != null) { GT_Values.RA.addBlastRecipe( @@ -1760,8 +1780,8 @@ public class RECIPES_GREGTECH { 500, Materials.Titanium.mBlastFurnaceTemp); } - - + + } private static void autoclaveRecipes() { @@ -1785,7 +1805,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("plateMeatRaw", 1)); GT_ModHandler.addCompressionRecipe(ItemUtils.getItemStackOfAmountFromOreDict("dustMeatRaw", 9), ItemUtils.getItemStackOfAmountFromOreDict("blockMeatRaw", 1)); - + CORE.RA.addCompressorRecipe(ItemList.FusionComputer_UV.get(9), GregtechItemList.Compressed_Fusion_Reactor.get(1), (int) GT_Values.V[7], (int) GT_Values.V[8]); } @@ -1861,13 +1881,13 @@ public class RECIPES_GREGTECH { CORE.RA.addCyclotronRecipe(new ItemStack[] {ELEMENT.getInstance().URANIUM238.getDust(1) }, FluidUtils.getFluidStack("deuterium", 400), new ItemStack[] {ItemUtils.getSimpleStack(ModItems.dustNeptunium238)}, null, new int[] { 500 }, 20 * 5, 500 * 4, 500 * 20); //PO Special Value - - + + /** * Particle Science */ - + // Quark Smash CORE.RA.addCyclotronRecipe( CI.getNumberedCircuit(3), @@ -1879,7 +1899,7 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.STRANGE), Particle.getBaseParticle(Particle.TOP), Particle.getBaseParticle(Particle.BOTTOM), - }, + }, null, new int[] { 50, 50, 50, 50, 50, 50 }, 20 * 300 * 9, @@ -1897,7 +1917,7 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.ELECTRON_NEUTRINO), Particle.getBaseParticle(Particle.MUON_NEUTRINO), Particle.getBaseParticle(Particle.TAU_NEUTRINO), - }, + }, null, new int[] { 600, 40, 20, 15, 10, 5 }, 20 * 300 * 8, @@ -1914,14 +1934,14 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.Z_BOSON), Particle.getBaseParticle(Particle.W_BOSON), Particle.getBaseParticle(Particle.HIGGS_BOSON), - }, + }, null, new int[] { 160, 260, 150, 150, 1 }, 20 * 300 * 6, (int) GT_Values.V[7], 750 * 20); - - + + // Mixed Smash 1 CORE.RA.addCyclotronRecipe( CI.getNumberedCircuit(12), @@ -1935,13 +1955,13 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.LAMBDA), Particle.getBaseParticle(Particle.OMEGA), Particle.getBaseParticle(Particle.HIGGS_BOSON), - }, + }, null, new int[] { 10, 20, 20, 10, 10, 5, 5, 2 }, 17 * 247 * 32, (int) GT_Values.V[8], 750 * 20); - + // Graviton Smash CORE.RA.addCyclotronRecipe( CI.getNumberedCircuit(15), @@ -1949,20 +1969,20 @@ public class RECIPES_GREGTECH { new ItemStack[] { Particle.getBaseParticle(Particle.GRAVITON), Particle.getBaseParticle(Particle.UNKNOWN) - }, + }, null, new int[] {15, 100}, 20 * (GTNH ? 90 : 30), (int) GT_Values.V[6], 1000 * 20); - + FluidStack aPlasma = Materials.Duranium.getMolten(GTNH ? 40 : 10); FluidStack aPlasma_NULL = Materials._NULL.getPlasma(1); - + if (aPlasma == null || aPlasma.isFluidEqual(aPlasma_NULL)) { aPlasma = Materials.Americium.getMolten(GTNH ? 20 : 5); } - + // Quantum Anomaly CORE.RA.addCyclotronRecipe( new ItemStack[] { @@ -1972,17 +1992,17 @@ public class RECIPES_GREGTECH { aPlasma, new ItemStack[] { GregtechItemList.Laser_Lens_Special.get(1) - }, + }, null, new int[] {100}, 20 * (GTNH ? 300 : 60), (int) GT_Values.V[6], 1000 * 20); - + /* * Ions */ - + int IonCount = 2; int tenCountA = (GTNH ? 2 : 1); int tenCountB = 0; @@ -1993,33 +2013,33 @@ public class RECIPES_GREGTECH { FluidStack aPlasma2 = FluidUtils.getFluidStack("plasma."+y.toLowerCase(), 2); Materials aTestMat = MaterialUtils.getMaterial(y); FluidStack aPlasma3 = aTestMat != null ? aTestMat.getPlasma(2) : aPlasma2; - + // Ionize Plasma if ((aPlasma2 != null && !aPlasma2.isFluidEqual(aPlasma_NULL)) || (aPlasma3 != null && !aPlasma3.isFluidEqual(aPlasma_NULL))) { - CORE.RA.addCyclotronRecipe( - CI.getNumberedCircuit(1+(tenCountA-1)), - aPlasma2 != null ? aPlasma2 : aPlasma3, - new ItemStack[] { - Particle.getIon(y, 1), - Particle.getIon(y, 2), - Particle.getIon(y, 3), - Particle.getIon(y, -1), - Particle.getIon(y, -2), - Particle.getIon(y, -3), - Particle.getIon(y, 1), - Particle.getIon(y, 2), - Particle.getIon(y, -1), - }, - null, - new int[] { 275, 250, 225, 275, 250, 225, 275, 250, 275}, - 20 * 20 * (IonCount++) * tenCountA, - (int) GT_Values.V[7], - 1500 * 20 * tenCountA); + CORE.RA.addCyclotronRecipe( + CI.getNumberedCircuit(1+(tenCountA-1)), + aPlasma2 != null ? aPlasma2 : aPlasma3, + new ItemStack[] { + Particle.getIon(y, 1), + Particle.getIon(y, 2), + Particle.getIon(y, 3), + Particle.getIon(y, -1), + Particle.getIon(y, -2), + Particle.getIon(y, -3), + Particle.getIon(y, 1), + Particle.getIon(y, 2), + Particle.getIon(y, -1), + }, + null, + new int[] { 275, 250, 225, 275, 250, 225, 275, 250, 275}, + 20 * 20 * (IonCount++) * tenCountA, + (int) GT_Values.V[7], + 1500 * 20 * tenCountA); } else { Logger.INFO("Plasma for "+y+" does not exist, please report this to Alkalus."); } - + if (tenCountB == 12) { tenCountB = 0; tenCountA++; @@ -2028,7 +2048,7 @@ public class RECIPES_GREGTECH { tenCountB++; } } - + // Generate Hydrogen Ion Recipe CORE.RA.addCyclotronRecipe( CI.getNumberedCircuit(24), @@ -2043,19 +2063,19 @@ public class RECIPES_GREGTECH { Particle.getIon("Hydrogen", -1), Particle.getIon("Hydrogen", -2), Particle.getIon("Hydrogen", -3) - }, + }, null, new int[] { 125, 125, 125, 125, 125, 125, 125, 125, 125 }, 20 * 20, (int) GT_Values.V[6], 15000); - + // Generate Hydrogen Plasma Recipe CORE.RA.addCyclotronRecipe( new ItemStack[] { Particle.getIon("Hydrogen", 0), ItemUtils.getItemStackOfAmountFromOreDict("cellHydrogen", 1) - }, + }, null, new ItemStack[] { Particle.getBaseParticle(Particle.PROTON), @@ -2065,20 +2085,20 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.UNKNOWN), Particle.getBaseParticle(Particle.UNKNOWN), CI.emptyCells(1) - }, + }, FluidUtils.getFluidStack("plasma.hydrogen", 1), new int[] { 250, 250, 250, 500, 500, 500, 10000 }, 20 * 60 * 2, (int) GT_Values.V[7], 750 * 20); - + // Generate Protons Easily CORE.RA.addCyclotronRecipe( new ItemStack[] { CI.getNumberedCircuit(20), Particle.getIon("Hydrogen", 0) - }, + }, FluidUtils.getWildcardFluidStack("hydrogen", 100), new ItemStack[] { Particle.getBaseParticle(Particle.PROTON), @@ -2090,18 +2110,18 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.PROTON), Particle.getBaseParticle(Particle.PROTON), Particle.getBaseParticle(Particle.PROTON), - }, + }, null, new int[] { 750, 750, 750, 750, 750, 750, 750, 750, 750 }, 20 * 20, (int) GT_Values.V[6], 15000); - + CORE.RA.addCyclotronRecipe( new ItemStack[] { CI.getNumberedCircuit(22), Particle.getBaseParticle(Particle.UNKNOWN), - }, + }, FluidUtils.getWildcardFluidStack("hydrogen", 100), new ItemStack[] { Particle.getBaseParticle(Particle.PROTON), @@ -2113,14 +2133,14 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.PROTON), Particle.getBaseParticle(Particle.PROTON), Particle.getBaseParticle(Particle.PROTON), - }, + }, null, new int[] { 375, 375, 375, 375, 375, 375, 375, 375, 375 }, 20 * 20, (int) GT_Values.V[6], 15000); - - + + //Create Strange Dust CORE.RA.addCyclotronRecipe( new ItemStack[] { @@ -2133,20 +2153,20 @@ public class RECIPES_GREGTECH { Particle.getBaseParticle(Particle.UNKNOWN), Particle.getBaseParticle(Particle.UNKNOWN), Particle.getBaseParticle(Particle.UNKNOWN), - }, + }, FluidUtils.getFluidStack(FluidUtils.getWildcardFluidStack("ender", 1000), 1000), new ItemStack[] { ORES.DEEP_EARTH_REACTOR_FUEL_DEPOSIT.getDust(1) - }, + }, null, new int[] { 2500 }, 20 * 60 * 15, (int) GT_Values.V[7], 15000); - - - - + + + + } @@ -2161,12 +2181,15 @@ public class RECIPES_GREGTECH { ELEMENT.getInstance().CERIUM.getSmallDust(1), ELEMENT.getInstance().CADMIUM.getSmallDust(1), ELEMENT.getInstance().CAESIUM.getSmallDust(1), - ELEMENT.getInstance().YTTERBIUM.getTinyDust(1), - ELEMENT.getInstance().SAMARIUM.getTinyDust(1), - ELEMENT.getInstance().GADOLINIUM.getTinyDust(1) - }, - new int[] { 2000, 2000, 2000, 2000, 2000, 2000, 1000, 1000, 1000 }, 20 * 30, 500); - + ORES.SAMARSKITE_YB.getSmallDust(1), + ORES.FLORENCITE.getSmallDust(1), + ORES.FLUORCAPHITE.getSmallDust(1), + //ELEMENT.getInstance().YTTERBIUM.getTinyDust(1), + //ELEMENT.getInstance().SAMARIUM.getTinyDust(1), + //ELEMENT.getInstance().GADOLINIUM.getTinyDust(1) + }, + new int[] { 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000 }, 20 * 30, 500); + // Zirconium GT_Values.RA.addSifterRecipe(ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedIlmenite", 1), new ItemStack[] { ItemUtils.getItemStackOfAmountFromOreDict("dustIron", 1), @@ -2176,7 +2199,7 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1), ItemUtils.getItemStackOfAmountFromOreDict("dustHafnium", 1) }, new int[] { 5000, 2500, 1000, 1000, 300, 300 }, 20 * 30, 500); - + // Zirconium GT_Values.RA.addSifterRecipe(ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedTin", 1), new ItemStack[] { ItemUtils.getItemStackOfAmountFromOreDict("dustTin", 1), @@ -2247,38 +2270,38 @@ public class RECIPES_GREGTECH { ItemUtils.getItemStackOfAmountFromOreDict("dustSmallZircon", 1), ItemUtils.getItemStackOfAmountFromOreDict("dustTinyZircon", 1), new int[] { 10000, 1250, 2500 }, 20 * 20, 24); - - + + if (!GTNH) { - // Trinium - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedNaquadah", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustNaquadah", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallNaquadahEnriched", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 2500, 5000 }, - 20 * 20, 24); + // Trinium + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedNaquadah", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustNaquadah", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallNaquadahEnriched", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 2500, 5000 }, + 20 * 20, 24); - // Trinium - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedIridium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustIridium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallOsmium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 2500, 5000 }, - 20 * 20, 24); + // Trinium + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedIridium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustIridium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallOsmium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 2500, 5000 }, + 20 * 20, 24); - // Trinium - GT_Values.RA.addElectromagneticSeparatorRecipe( - ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedWulfenite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustWulfenite", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), - ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 3000, 3000 }, - 20 * 20, 24); + // Trinium + GT_Values.RA.addElectromagneticSeparatorRecipe( + ItemUtils.getItemStackOfAmountFromOreDict("crushedPurifiedWulfenite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustWulfenite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("dustSmallTrinium", 1), new int[] { 10000, 3000, 3000 }, + 20 * 20, 24); } - - - - + + + + } private static void advancedMixerRecipes() { diff --git a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java index ef68436f21..7daefbcc23 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/EnergyUtils.java @@ -1,9 +1,7 @@ package gtPlusPlus.core.util.minecraft; -import gregtech.api.enums.GT_Values; import gregtech.api.util.GT_ModHandler; import gtPlusPlus.api.objects.Logger; -import ic2.api.item.ElectricItem; import ic2.api.item.IElectricItem; import ic2.api.item.IElectricItemManager; import ic2.api.item.ISpecialElectricItem; @@ -40,7 +38,7 @@ public class EnergyUtils { if (isElectricItem(aStack)) { int tTier = ((IElectricItem) aStack.getItem()).getTier(aStack); int aDischargeValue = GT_ModHandler.dischargeElectricItem(aStack, aEnergyToDrain, tTier, true, false, false); - Logger.INFO("Trying to drain "+aDischargeValue); + //Logger.INFO("Trying to drain "+aDischargeValue); return aDischargeValue > 0; } else { diff --git a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java index 743e4bedf1..c12212455b 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/MaterialUtils.java @@ -23,6 +23,7 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.data.EnumUtils; import gtPlusPlus.core.util.data.StringUtils; import gtPlusPlus.core.util.reflect.ReflectionUtils; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -440,5 +441,15 @@ public class MaterialUtils { return resultList; } + public static void generateSpecialDustAndAssignToAMaterial(Material aMaterial) { + Item[] aDusts = ItemUtils.generateSpecialUseDusts(aMaterial, false); + if (aDusts != null && aDusts.length > 0) { + aMaterial.registerComponentForMaterial(OrePrefixes.dust, ItemUtils.getSimpleStack(aDusts[0])); + aMaterial.registerComponentForMaterial(OrePrefixes.dustSmall, ItemUtils.getSimpleStack(aDusts[1])); + aMaterial.registerComponentForMaterial(OrePrefixes.dustTiny, ItemUtils.getSimpleStack(aDusts[2])); + } + + } + } \ No newline at end of file -- cgit From 7933f8ad431fcf404cbd233c0c9f4b8364bef3d4 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sun, 12 May 2019 13:33:30 +1000 Subject: - Removed Strontium compound fluid cells. % Expended output slots on ABS from 1 -> 9. $ Minor bug fixes regarding special dust mixer recipes. --- .../core/item/base/dusts/BaseItemDustUnique.java | 2 +- .../gtPlusPlus/core/material/MISC_MATERIALS.java | 7 +++-- .../gtPlusPlus/core/util/minecraft/ItemUtils.java | 34 +++++++++++++++++++--- .../core/util/minecraft/MaterialUtils.java | 7 +++-- 4 files changed, 40 insertions(+), 10 deletions(-) (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java index 273995e181..e1c3e179ee 100644 --- a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java +++ b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java @@ -40,7 +40,7 @@ public class BaseItemDustUnique extends Item{ this.setCreativeTab(tabMisc); this.colour = colour; this.materialName = materialName; - if (mChemicalFormula.equals("") || mChemicalFormula.equals("NullFormula")){ + if (mChemicalFormula == null || mChemicalFormula.equals("") || mChemicalFormula.equals("NullFormula")){ this.chemicalNotation = StringUtils.subscript(materialName); } else { diff --git a/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java index 69ee3e963d..05ed942bfa 100644 --- a/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java +++ b/src/Java/gtPlusPlus/core/material/MISC_MATERIALS.java @@ -3,7 +3,6 @@ package gtPlusPlus.core.material; import gregtech.api.enums.TextureSet; import gtPlusPlus.core.material.nuclear.FLUORIDES; import gtPlusPlus.core.material.state.MaterialState; -import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.MaterialUtils; public final class MISC_MATERIALS { @@ -14,8 +13,8 @@ public final class MISC_MATERIALS { */ public static void run() { - MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_OXIDE); - MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_HYDROXIDE); + MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_OXIDE, false); + MaterialUtils.generateSpecialDustAndAssignToAMaterial(STRONTIUM_HYDROXIDE, false); } public static final Material STRONTIUM_OXIDE = new Material( @@ -30,6 +29,7 @@ public final class MISC_MATERIALS { false, "SrO", 0, + false, new MaterialStack[]{ new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1), new MaterialStack(ELEMENT.getInstance().OXYGEN, 1) @@ -47,6 +47,7 @@ public final class MISC_MATERIALS { false, "Sr(OH)2", 0, + false, new MaterialStack[]{ new MaterialStack(ELEMENT.getInstance().STRONTIUM, 1), new MaterialStack(FLUORIDES.HYDROXIDE, 2) diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java index ae799baa2b..8b2e04d738 100644 --- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java +++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java @@ -15,6 +15,7 @@ import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; import gregtech.common.items.GT_MetaGenerated_Tool_01; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.item.ModItems; @@ -479,20 +480,27 @@ public class ItemUtils { return new BaseItemPlate_OLD(internalName, displayName, mFormula, rgb, radioactivity); } + public static Item[] generateSpecialUseDusts(final Material material, final boolean onlyLargeDust) { + return generateSpecialUseDusts(material, onlyLargeDust, false); + } + + public static Item[] generateSpecialUseDusts(final Material material, final boolean onlyLargeDust, final boolean disableExtraRecipes) { final String materialName = material.getLocalizedName(); final String unlocalizedName = Utils.sanitizeString(materialName); final int Colour = material.getRgbAsHex(); + final String aChemForm = material.vChemicalFormula; + final boolean isChemFormvalid = (aChemForm != null && aChemForm.length() > 0); Item[] output = null; if (onlyLargeDust == false) { - output = new Item[] { new BaseItemDustUnique("itemDust" + unlocalizedName, materialName, Colour, "Dust"), - new BaseItemDustUnique("itemDustSmall" + unlocalizedName, materialName, Colour, "Small"), - new BaseItemDustUnique("itemDustTiny" + unlocalizedName, materialName, Colour, "Tiny") }; + output = new Item[] { new BaseItemDustUnique("itemDust" + unlocalizedName, materialName, isChemFormvalid ? aChemForm : "", Colour, "Dust"), + new BaseItemDustUnique("itemDustSmall" + unlocalizedName, materialName, isChemFormvalid ? aChemForm : "", Colour, "Small"), + new BaseItemDustUnique("itemDustTiny" + unlocalizedName, materialName, isChemFormvalid ? aChemForm : "", Colour, "Tiny") }; } else { output = new Item[] { new BaseItemDustUnique("itemDust" + unlocalizedName, materialName, Colour, "Dust") }; } - new RecipeGen_DustGeneration(material); + new RecipeGen_DustGeneration(material, disableExtraRecipes); return output; } @@ -1179,4 +1187,22 @@ public class ItemUtils { return false; } + public static ItemStack[] cleanItemStackArray(ItemStack[] input) { + int aArraySize = input.length; + ItemStack[] aOutput = new ItemStack[aArraySize]; + AutoMap aCleanedItems = new AutoMap(); + for (ItemStack checkStack : input) { + if (ItemUtils.checkForInvalidItems(checkStack)) { + aCleanedItems.put(checkStack); + } + } + for (int i=0;i 0) { aMaterial.registerComponentForMaterial(OrePrefixes.dust, ItemUtils.getSimpleStack(aDusts[0])); aMaterial.registerComponentForMaterial(OrePrefixes.dustSmall, ItemUtils.getSimpleStack(aDusts[1])); -- cgit From d30f18947a5c5e275ef7f17323ac837939cb0135 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sun, 12 May 2019 16:04:15 +1000 Subject: % More work on Advanced Mufflers. --- src/Java/gtPlusPlus/core/slots/SlotAirFilter.java | 30 ++++++++++++++++++++++ src/Java/gtPlusPlus/core/util/math/MathUtils.java | 9 ++++++- .../core/util/reflect/ReflectionUtils.java | 9 +++++-- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/slots/SlotAirFilter.java (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/slots/SlotAirFilter.java b/src/Java/gtPlusPlus/core/slots/SlotAirFilter.java new file mode 100644 index 0000000000..92e9bebe21 --- /dev/null +++ b/src/Java/gtPlusPlus/core/slots/SlotAirFilter.java @@ -0,0 +1,30 @@ +package gtPlusPlus.core.slots; + +import gtPlusPlus.core.item.general.ItemAirFilter; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class SlotAirFilter extends Slot { + + public SlotAirFilter(final IInventory inventory, final int slot, final int x, final int y) { + super(inventory, slot, x, y); + } + + @Override + public boolean isItemValid(final ItemStack itemstack) { + if (itemstack == null) { + return false; + } + if (itemstack.getItem() instanceof ItemAirFilter){ + return true; + } + return false; + } + + @Override + public int getSlotStackLimit() { + return 1; + } + +} diff --git a/src/Java/gtPlusPlus/core/util/math/MathUtils.java b/src/Java/gtPlusPlus/core/util/math/MathUtils.java index 3cef3c511f..bda722b47e 100644 --- a/src/Java/gtPlusPlus/core/util/math/MathUtils.java +++ b/src/Java/gtPlusPlus/core/util/math/MathUtils.java @@ -7,6 +7,7 @@ import gregtech.api.enums.GT_Values; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.AutoMap; +import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; @@ -227,7 +228,7 @@ public class MathUtils { * @param x Value A. * @return boolean Whether or not it divides evenly. */ - public static boolean isNumberEven(final int x){ + public static boolean isNumberEven(final long x){ if ((x % 2) == 0) { return true; @@ -696,5 +697,11 @@ public class MathUtils { int aAmount = Math.max(Math.min(i, aMax), aMin); return aAmount; } + + public static Pair splitLongIntoIntegers(long aLong){ + int aIntMaxInLong = (int) Math.min(Integer.MAX_VALUE, Math.floor(aLong/Integer.MAX_VALUE)); + int aRemainder = (int) (aLong - (aIntMaxInLong * Integer.MAX_VALUE)); + return new Pair(aIntMaxInLong, aRemainder); + } } diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java index c86d6ccb83..224d842ba7 100644 --- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java +++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java @@ -318,9 +318,14 @@ public class ReflectionUtils { /** * Allows to change the state of an immutable instance. Huh?!? */ - public static void setFinalFieldValue(Class clazz, String fieldName, Object newValue) throws Exception { + public static void setFinalFieldValue(Class clazz, String fieldName, Object newValue) { Field nameField = getField(clazz, fieldName); - setFieldValue_Internal(clazz, nameField, newValue); + try { + setFieldValue_Internal(clazz, nameField, newValue); + } + catch (Throwable t) { + t.printStackTrace(); + } } @Deprecated -- cgit From f82bd998288253230713cb146f6294be2d02260c Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Mon, 13 May 2019 11:44:19 +1000 Subject: + Added 5 lower Tier charging packs. --- .../core/common/compat/COMPAT_Baubles.java | 13 +++- src/Java/gtPlusPlus/core/item/ModItems.java | 13 +++- .../core/item/bauble/BatteryPackBaseBauble.java | 3 +- .../core/item/bauble/ElectricBaseBauble.java | 2 +- .../gtPlusPlus/core/recipe/RECIPES_GREGTECH.java | 90 ++++++++++++++++++++-- 5 files changed, 102 insertions(+), 19 deletions(-) (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java b/src/Java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java index c6fcc83d01..dd7f0866ab 100644 --- a/src/Java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java +++ b/src/Java/gtPlusPlus/core/common/compat/COMPAT_Baubles.java @@ -36,10 +36,15 @@ public class COMPAT_Baubles { ModItems.itemPersonalHealingDevice = new ItemHealingDevice(); try { - ModItems.itemChargePack1 = new BatteryPackBaseBauble(6); - ModItems.itemChargePack2 = new BatteryPackBaseBauble(7); - ModItems.itemChargePack3 = new BatteryPackBaseBauble(8); - ModItems.itemChargePack4 = new BatteryPackBaseBauble(9); + ModItems.itemChargePack_Low_1 = new B