From d928b204b81606c6874e5889300cea00e26dcb85 Mon Sep 17 00:00:00 2001 From: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> Date: Wed, 11 Sep 2019 17:29:46 +0200 Subject: fixed the recipe replacer +changed out Osmiridium for LuV recipes +added Tiberium for Blackflame +added LuVFineWireMaterial("Ruridit") +added wireFine items & recipes +fixed Scanner/Replicator recipes +deleted an unused class +added a config option to silence the GT++ logging Signed-off-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> Former-commit-id: a0981899093b854814d4c04c9c321b9a4df17e5f --- .../github/bartimaeusnek/bartworks/MainMod.java | 34 +- .../bartworks/common/configs/ConfigHandler.java | 2 + .../bartworks/system/log/DebugLog.java | 2 +- .../bartworks/system/log/STFUGTPPLOG.java | 653 +++++++++++++++++++++ .../system/material/BWUnificationEnforcer.java | 48 -- .../bartworks/system/material/Werkstoff.java | 14 +- .../bartworks/system/material/WerkstoffLoader.java | 140 +++-- .../processingLoaders/AdditionalRecipes.java | 120 +--- .../processingLoaders/LuVTierEnhancer.java | 207 +++++++ .../processingLoaders/PlatinumSludgeOverHaul.java | 232 ++++++-- .../system/oregen/BW_WorldGenRoss128b.java | 2 +- .../system/oregen/BW_WorldGenRoss128ba.java | 6 +- 12 files changed, 1167 insertions(+), 293 deletions(-) create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/system/log/STFUGTPPLOG.java delete mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/system/material/BWUnificationEnforcer.java create mode 100644 src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/LuVTierEnhancer.java (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java index 760adf02dd..e3b88b62e8 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/MainMod.java @@ -38,6 +38,7 @@ import com.github.bartimaeusnek.bartworks.common.loaders.LoaderRegistry; import com.github.bartimaeusnek.bartworks.common.net.BW_Network; import com.github.bartimaeusnek.bartworks.server.EventHandler.ServerEventHandler; import com.github.bartimaeusnek.bartworks.system.log.DebugLog; +import com.github.bartimaeusnek.bartworks.system.log.STFUGTPPLOG; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitImprintLoader; import com.github.bartimaeusnek.bartworks.system.material.CircuitGeneration.CircuitPartLoader; import com.github.bartimaeusnek.bartworks.system.material.ThreadedLoader; @@ -69,12 +70,15 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; +import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.*; +import java.util.stream.Collectors; import static com.github.bartimaeusnek.bartworks.common.tileentities.multis.GT_TileEntity_ElectricImplosionCompressor.eicMap; import static com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader.*; @@ -110,6 +114,16 @@ public final class MainMod { MainMod.LOGGER.error("Something has loaded an old API. Please contact the Mod authors to update!"); } + if (Loader.isModLoaded("miscutils") && ConfigHandler.GTppLogDisabler) { + try { + Field loggerField = FieldUtils.getField(Class.forName("gtPlusPlus.api.objects.Logger"),"modLogger",true); + FieldUtils.removeFinalModifier(loggerField,true); + loggerField.set(null,(Logger)new STFUGTPPLOG()); + } catch (IllegalAccessException | ClassNotFoundException e) { + e.printStackTrace(); + } + } + //fixing BorosilicateGlass... -_-' Materials.BorosilicateGlass.add(SubTag.CRYSTAL, SubTag.NO_SMASHING, SubTag.NO_RECYCLING, SubTag.SMELTING_TO_FLUID); @@ -194,6 +208,7 @@ public final class MainMod { MainMod.unificationEnforcer(); PlatinumSludgeOverHaul.replacePureElements(); + if (!extraGasRecipes) { ArrayListMultimap toChange = MainMod.getRecipesToChange(NOBLE_GAS, ANAEROBE_GAS); HashSet noGas = MainMod.getNoGasItems(toChange); @@ -289,7 +304,7 @@ public final class MainMod { private static void runMoltenUnificationEnfocement(Werkstoff werkstoff){ if (werkstoff.getGenerationFeatures().enforceUnification && werkstoff.getGenerationFeatures().hasMolten()) { try { - FluidContainerRegistry.FluidContainerData data = new FluidContainerRegistry.FluidContainerData(new FluidStack(molten.get(werkstoff), 144), werkstoff.get(cellMolten), Materials.Empty.getCells(1)); + FluidContainerRegistry.FluidContainerData data = new FluidContainerRegistry.FluidContainerData(new FluidStack(Objects.requireNonNull(molten.get(werkstoff)), 144), werkstoff.get(cellMolten), Materials.Empty.getCells(1)); Field f = GT_Utility.class.getDeclaredField("sFilledContainerToData"); f.setAccessible(true); Map sFilledContainerToData = (Map) f.get(null); @@ -402,7 +417,7 @@ public final class MainMod { } private static void editRecipes(ArrayListMultimap base, HashSet noGas) { - if (GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeFluidNameMap.contains(fluids.get(Oganesson).getName())) + if (GT_Recipe.GT_Recipe_Map.sBlastRecipes.mRecipeFluidNameMap.contains(Objects.requireNonNull(fluids.get(Oganesson)).getName())) return; HashSet toAdd = new HashSet<>(); for (SubTag GasTag : base.keySet()) { @@ -415,7 +430,7 @@ public final class MainMod { if (!werkstoff.contains(GasTag)) continue; int time = (int) ((double) recipe.mDuration / 200D * (200D + (werkstoff.getStats().getProtons() >= mat.getProtons() ? (double) mat.getProtons() - (double) werkstoff.getStats().getProtons() : (double) mat.getProtons()*2.75D - (double) werkstoff.getStats().getProtons()))); - toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{new FluidStack(fluids.get(werkstoff), recipe.mFluidInputs[0].amount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); + toAdd.add(new BWRecipes.DynamicGTRecipe(false, recipe.mInputs, recipe.mOutputs, recipe.mSpecialItems, recipe.mChances, new FluidStack[]{new FluidStack(Objects.requireNonNull(fluids.get(werkstoff)), recipe.mFluidInputs[0].amount)}, recipe.mFluidOutputs, time, recipe.mEUt, recipe.mSpecialValue)); } for (Materials materials : Materials.values()) { if (!materials.contains(GasTag)) @@ -462,22 +477,13 @@ public final class MainMod { } } toAdd.removeAll(duplicates); - for (GT_Recipe recipe : toAdd) - GT_Recipe.GT_Recipe_Map.sBlastRecipes.add(recipe); + toAdd.forEach(GT_Recipe.GT_Recipe_Map.sBlastRecipes::add); } private static void addElectricImplosionCompressorRecipes() { if (eicMap == null) { eicMap = new GT_Recipe.GT_Recipe_Map(new HashSet<>(GT_Recipe.GT_Recipe_Map.sImplosionRecipes.mRecipeList.size()), "gt.recipe.electricimplosioncompressor", "Electric Implosion Compressor", (String) null, "gregtech:textures/gui/basicmachines/Default", 1, 2, 1, 0, 1, "", 1, "", true, true); - for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sImplosionRecipes.mRecipeList) { - if (recipe == null || recipe.mInputs == null) - continue; - HashSet inputs = new HashSet<>(); - for (ItemStack is : recipe.mInputs) - if (!MainMod.checkForExplosives(is)) - inputs.add(is); - eicMap.addRecipe(true, inputs.toArray(new ItemStack[0]), recipe.mOutputs, null, null, null, recipe.mDuration, BW_Util.getMachineVoltageFromTier(10), 0); - } + GT_Recipe.GT_Recipe_Map.sImplosionRecipes.mRecipeList.stream().filter(e -> e.mInputs != null).forEach(recipe -> eicMap.addRecipe(true, Arrays.stream(recipe.mInputs).filter(e -> !MainMod.checkForExplosives(e)).distinct().toArray(ItemStack[]::new), recipe.mOutputs, null, null, null, recipe.mDuration, BW_Util.getMachineVoltageFromTier(10), 0)); } } diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/configs/ConfigHandler.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/configs/ConfigHandler.java index b5d5d8b972..da0397087e 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/configs/ConfigHandler.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/configs/ConfigHandler.java @@ -64,6 +64,7 @@ public class ConfigHandler { //One-Side-Only public static boolean debugLog; + public static boolean GTppLogDisabler; public static boolean tooltips = true; public static boolean[] enabledPatches; @@ -92,6 +93,7 @@ public class ConfigHandler { ConfigHandler.IDOffset = 12600; ConfigHandler.c.get("System", "ID Offset", 12600, "ID Offset for this mod. This Mod uses " + ConfigHandler.IDU + " IDs. DO NOT CHANGE IF YOU DONT KNOW WHAT THIS IS").set(12600); } + ConfigHandler.GTppLogDisabler = ConfigHandler.c.get("System", "Disable GT++ Logging", false, "Enables or Disables GT++ Logging.").getBoolean(false); ConfigHandler.debugLog = ConfigHandler.c.get("System", "Enable Debug Log", false, "Enables or Disables the debug log.").getBoolean(false); ConfigHandler.experimentalThreadedLoader = ConfigHandler.c.get("System", "Enable Experimental Threaded Material Loader", false, "Enables or Disables the Experimental Threaded Material Loader.").getBoolean(false); diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/log/DebugLog.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/log/DebugLog.java index 9e832e0820..f0854d78a9 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/log/DebugLog.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/log/DebugLog.java @@ -36,7 +36,7 @@ import java.util.logging.Logger; public class DebugLog { private static boolean init; - private static FileHandler fh; + static FileHandler fh; private static Logger utilLog; public DebugLog(FMLPreInitializationEvent event) throws IOException { if (DebugLog.init) diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/log/STFUGTPPLOG.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/log/STFUGTPPLOG.java new file mode 100644 index 0000000000..21268ac1c2 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/log/STFUGTPPLOG.java @@ -0,0 +1,653 @@ +/* + * Copyright (c) 2019 bartimaeusnek + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.github.bartimaeusnek.bartworks.system.log; + + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.message.Message; +import org.apache.logging.log4j.message.MessageFactory; + +public class STFUGTPPLOG implements Logger { + + @Override + public void catching(Level level, Throwable t) { + + } + + @Override + public void catching(Throwable t) { + + } + + @Override + public void debug(Marker marker, Message msg) { + + } + + @Override + public void debug(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void debug(Marker marker, Object message) { + + } + + @Override + public void debug(Marker marker, Object message, Throwable t) { + + } + + @Override + public void debug(Marker marker, String message) { + + } + + @Override + public void debug(Marker marker, String message, Object... params) { + + } + + @Override + public void debug(Marker marker, String message, Throwable t) { + + } + + @Override + public void debug(Message msg) { + + } + + @Override + public void debug(Message msg, Throwable t) { + + } + + @Override + public void debug(Object message) { + + } + + @Override + public void debug(Object message, Throwable t) { + + } + + @Override + public void debug(String message) { + + } + + @Override + public void debug(String message, Object... params) { + + } + + @Override + public void debug(String message, Throwable t) { + + } + + @Override + public void entry() { + + } + + @Override + public void entry(Object... params) { + + } + + @Override + public void error(Marker marker, Message msg) { + + } + + @Override + public void error(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void error(Marker marker, Object message) { + + } + + @Override + public void error(Marker marker, Object message, Throwable t) { + + } + + @Override + public void error(Marker marker, String message) { + + } + + @Override + public void error(Marker marker, String message, Object... params) { + + } + + @Override + public void error(Marker marker, String message, Throwable t) { + + } + + @Override + public void error(Message msg) { + + } + + @Override + public void error(Message msg, Throwable t) { + + } + + @Override + public void error(Object message) { + + } + + @Override + public void error(Object message, Throwable t) { + + } + + @Override + public void error(String message) { + + } + + @Override + public void error(String message, Object... params) { + + } + + @Override + public void error(String message, Throwable t) { + + } + + @Override + public void exit() { + + } + + @Override + public R exit(R result) { + return null; + } + + @Override + public void fatal(Marker marker, Message msg) { + + } + + @Override + public void fatal(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void fatal(Marker marker, Object message) { + + } + + @Override + public void fatal(Marker marker, Object message, Throwable t) { + + } + + @Override + public void fatal(Marker marker, String message) { + + } + + @Override + public void fatal(Marker marker, String message, Object... params) { + + } + + @Override + public void fatal(Marker marker, String message, Throwable t) { + + } + + @Override + public void fatal(Message msg) { + + } + + @Override + public void fatal(Message msg, Throwable t) { + + } + + @Override + public void fatal(Object message) { + + } + + @Override + public void fatal(Object message, Throwable t) { + + } + + @Override + public void fatal(String message) { + + } + + @Override + public void fatal(String message, Object... params) { + + } + + @Override + public void fatal(String message, Throwable t) { + + } + + @Override + public MessageFactory getMessageFactory() { + return null; + } + + @Override + public String getName() { + return null; + } + + @Override + public void info(Marker marker, Message msg) { + + } + + @Override + public void info(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void info(Marker marker, Object message) { + + } + + @Override + public void info(Marker marker, Object message, Throwable t) { + + } + + @Override + public void info(Marker marker, String message) { + + } + + @Override + public void info(Marker marker, String message, Object... params) { + + } + + @Override + public void info(Marker marker, String message, Throwable t) { + + } + + @Override + public void info(Message msg) { + + } + + @Override + public void info(Message msg, Throwable t) { + + } + + @Override + public void info(Object message) { + + } + + @Override + public void info(Object message, Throwable t) { + + } + + @Override + public void info(String message) { + + } + + @Override + public void info(String message, Object... params) { + + } + + @Override + public void info(String message, Throwable t) { + + } + + @Override + public boolean isDebugEnabled() { + return false; + } + + @Override + public boolean isDebugEnabled(Marker marker) { + return false; + } + + @Override + public boolean isEnabled(Level level) { + return false; + } + + @Override + public boolean isEnabled(Level level, Marker marker) { + return false; + } + + @Override + public boolean isErrorEnabled() { + return false; + } + + @Override + public boolean isErrorEnabled(Marker marker) { + return false; + } + + @Override + public boolean isFatalEnabled() { + return false; + } + + @Override + public boolean isFatalEnabled(Marker marker) { + return false; + } + + @Override + public boolean isInfoEnabled() { + return false; + } + + @Override + public boolean isInfoEnabled(Marker marker) { + return false; + } + + @Override + public boolean isTraceEnabled() { + return false; + } + + @Override + public boolean isTraceEnabled(Marker marker) { + return false; + } + + @Override + public boolean isWarnEnabled() { + return false; + } + + @Override + public boolean isWarnEnabled(Marker marker) { + return false; + } + + @Override + public void log(Level level, Marker marker, Message msg) { + + } + + @Override + public void log(Level level, Marker marker, Message msg, Throwable t) { + + } + + @Override + public void log(Level level, Marker marker, Object message) { + + } + + @Override + public void log(Level level, Marker marker, Object message, Throwable t) { + + } + + @Override + public void log(Level level, Marker marker, String message) { + + } + + @Override + public void log(Level level, Marker marker, String message, Object... params) { + + } + + @Override + public void log(Level level, Marker marker, String message, Throwable t) { + + } + + @Override + public void log(Level level, Message msg) { + + } + + @Override + public void log(Level level, Message msg, Throwable t) { + + } + + @Override + public void log(Level level, Object message) { + + } + + @Override + public void log(Level level, Object message, Throwable t) { + + } + + @Override + public void log(Level level, String message) { + + } + + @Override + public void log(Level level, String message, Object... params) { + + } + + @Override + public void log(Level level, String message, Throwable t) { + + } + + @Override + public void printf(Level level, Marker marker, String format, Object... params) { + + } + + @Override + public void printf(Level level, String format, Object... params) { + + } + + @Override + public T throwing(Level level, T t) { + return null; + } + + @Override + public T throwing(T t) { + return null; + } + + @Override + public void trace(Marker marker, Message msg) { + + } + + @Override + public void trace(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void trace(Marker marker, Object message) { + + } + + @Override + public void trace(Marker marker, Object message, Throwable t) { + + } + + @Override + public void trace(Marker marker, String message) { + + } + + @Override + public void trace(Marker marker, String message, Object... params) { + + } + + @Override + public void trace(Marker marker, String message, Throwable t) { + + } + + @Override + public void trace(Message msg) { + + } + + @Override + public void trace(Message msg, Throwable t) { + + } + + @Override + public void trace(Object message) { + + } + + @Override + public void trace(Object message, Throwable t) { + + } + + @Override + public void trace(String message) { + + } + + @Override + public void trace(String message, Object... params) { + + } + + @Override + public void trace(String message, Throwable t) { + + } + + @Override + public void warn(Marker marker, Message msg) { + + } + + @Override + public void warn(Marker marker, Message msg, Throwable t) { + + } + + @Override + public void warn(Marker marker, Object message) { + + } + + @Override + public void warn(Marker marker, Object message, Throwable t) { + + } + + @Override + public void warn(Marker marker, String message) { + + } + + @Override + public void warn(Marker marker, String message, Object... params) { + + } + + @Override + public void warn(Marker marker, String message, Throwable t) { + + } + + @Override + public void warn(Message msg) { + + } + + @Override + public void warn(Message msg, Throwable t) { + + } + + @Override + public void warn(Object message) { + + } + + @Override + public void warn(Object message, Throwable t) { + + } + + @Override + public void warn(String message) { + + } + + @Override + public void warn(String message, Object... params) { + + } + + @Override + public void warn(String message, Throwable t) { + + } +} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BWUnificationEnforcer.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BWUnificationEnforcer.java deleted file mode 100644 index 784459f25e..0000000000 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/BWUnificationEnforcer.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2019 bartimaeusnek - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.github.bartimaeusnek.bartworks.system.material; - -import net.minecraftforge.oredict.OreDictionary; - -import java.util.HashSet; - -public class BWUnificationEnforcer { - private static boolean enabled; - private static final HashSet UNIFICATION_TARGETS = new HashSet<>(); - public static boolean isEnabled() { - return BWUnificationEnforcer.enabled; - } - - public static HashSet getUnificationTargets() { - return BWUnificationEnforcer.UNIFICATION_TARGETS; - } - - public static void addUnificationTarget(String aOreDictName){ - if (aOreDictName == null || aOreDictName.isEmpty() || !OreDictionary.doesOreNameExist(aOreDictName)) - return; - BWUnificationEnforcer.UNIFICATION_TARGETS.add(aOreDictName); - BWUnificationEnforcer.enabled = true; - } - - -} diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/Werkstoff.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/Werkstoff.java index c9ae650d36..0144404b46 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/Werkstoff.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/Werkstoff.java @@ -38,7 +38,7 @@ import java.util.*; public class Werkstoff implements IColorModulationContainer, ISubTagContainer { - static final LinkedHashSet werkstoffHashSet = new LinkedHashSet<>(); + public static final LinkedHashSet werkstoffHashSet = new LinkedHashSet<>(); public static final LinkedHashMap werkstoffHashMap = new LinkedHashMap<>(); public static final LinkedHashMap werkstoffNameHashMap = new LinkedHashMap<>(); @@ -164,10 +164,6 @@ public class Werkstoff implements IColorModulationContainer, ISubTagContainer { } this.texSet = texSet; - if (this.getGenerationFeatures().enforceUnification) { - for (OrePrefixes prefix : OrePrefixes.values()) - BWUnificationEnforcer.addUnificationTarget(prefix+this.getDefaultName()); - } Werkstoff.werkstoffHashSet.add(this); Werkstoff.werkstoffHashMap.put(this.mID, this); Werkstoff.werkstoffNameHashMap.put(this.defaultName,this); @@ -378,23 +374,28 @@ public class Werkstoff implements IColorModulationContainer, ISubTagContainer { Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.dust,0b1); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.dustTiny,0b1); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.dustSmall,0b1); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.ingot,0b10); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.ingotHot,0b10); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.nugget,0b10); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.gem,0b100); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.gemFlawed,0b100); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.gemExquisite,0b100); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.gemChipped,0b100); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.gemFlawless,0b100); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.ore,0b1000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.dustImpure,0b1000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.dustPure,0b1000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.crushed,0b1000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.crushedPurified,0b1000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.crushedCentrifuged,0b1000); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.cell,0b10000); + Werkstoff.GenerationFeatures.prefixLogic.put(WerkstoffLoader.cellMolten,0b1000000); - Werkstoff.GenerationFeatures.prefixLogic.put(WerkstoffLoader.cellMolten,0b1000000); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.plate,0b10000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.stick,0b10000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.rod,0b10000000); @@ -407,6 +408,7 @@ public class Werkstoff implements IColorModulationContainer, ISubTagContainer { Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.spring,0b100000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.springSmall,0b100000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.rotor,0b100000000); + Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.wireFine,0b100000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.plateDouble,0b1000000000); Werkstoff.GenerationFeatures.prefixLogic.put(OrePrefixes.plateTriple,0b1000000000); diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/WerkstoffLoader.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/WerkstoffLoader.java index 96fe88d759..d4307a13dd 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/WerkstoffLoader.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/WerkstoffLoader.java @@ -48,6 +48,7 @@ import gregtech.api.interfaces.ISubTagContainer; import gregtech.api.objects.GT_Fluid; import gregtech.api.objects.GT_MultiTexture; import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.objects.ItemData; import gregtech.api.util.*; import gregtech.common.GT_Proxy; import gregtech.common.items.behaviors.Behaviour_DataOrb; @@ -106,7 +107,8 @@ public class WerkstoffLoader implements Runnable { WerkstoffLoader.smallGearShape = Enum.valueOf(ItemList.class, "Shape_Extruder_Small_Gear"); WerkstoffLoader.ringMold = Enum.valueOf(ItemList.class, "Shape_Mold_Ring"); WerkstoffLoader.boltMold = Enum.valueOf(ItemList.class, "Shape_Mold_Bolt"); - }catch (NullPointerException | IllegalArgumentException e){} + } catch (NullPointerException | IllegalArgumentException e){} + Element t = EnumHelper.addEnum(Element.class,"Tr",new Class[]{long.class, long.class, long.class, long.class, String.class, String.class, boolean.class}, new Object[]{123L, 203L, 0L, -1L, (String) null, "Tiberium", false}); } //TODO: FREE ID RANGE: 19-32766 @@ -945,7 +947,7 @@ public class WerkstoffLoader implements Runnable { new Werkstoff.GenerationFeatures().disable().onlyDust().addCells(), 66, TextureSet.SET_DULL, - new Pair<>(Ruthenium,1), + new Pair<>(WerkstoffLoader.Ruthenium,1), new Pair<>(Materials.Oxygen,4) //No Byproducts ); @@ -958,7 +960,7 @@ public class WerkstoffLoader implements Runnable { new Werkstoff.GenerationFeatures().disable().addCells(), 67, TextureSet.SET_FLUID, - new Pair<>(Ruthenium,1), + new Pair<>(WerkstoffLoader.Ruthenium,1), new Pair<>(Materials.Oxygen,4), new Pair<>(Materials.Chlorine,2), new Pair<>(Materials.Sodium,2), @@ -1193,7 +1195,27 @@ public class WerkstoffLoader implements Runnable { new Pair<>(Materials.Palladium,3), new Pair<>(WerkstoffLoader.Rhodium,1) ); - + public static final Werkstoff Tiberium = new Werkstoff( + new short[]{0x22,0xEE,0x22}, + "Tiberium", + "Tr", + new Werkstoff.Stats().setProtons(123).setMass(326), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().onlyDust().addGems(), + 89, + TextureSet.SET_DIAMOND + ); + public static final Werkstoff LuVFineWireMaterial = new Werkstoff( + new short[]{0xA4,0xA4,0xA4}, + "Ruridit", + new Werkstoff.Stats().setCentrifuge(true).setBlastFurnace(true).setMeltingPoint(4500), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems().addMixerRecipes().addSimpleMetalWorkingItems().addCraftingMetalWorkingItems().addMultipleIngotMetalWorkingItems(), + 90, + TextureSet.SET_METALLIC, + new Pair<>(WerkstoffLoader.Ruthenium,2), + new Pair<>(Materials.Iridium,1) + ); public static HashMap items = new HashMap<>(); public static HashBiMap fluids = HashBiMap.create(); @@ -1423,6 +1445,7 @@ public class WerkstoffLoader implements Runnable { WerkstoffLoader.items.put(spring, new BW_MetaGenerated_Items(spring)); WerkstoffLoader.items.put(springSmall, new BW_MetaGenerated_Items(springSmall)); WerkstoffLoader.items.put(rotor, new BW_MetaGenerated_Items(rotor)); + WerkstoffLoader.items.put(wireFine, new BW_MetaGenerated_Items(wireFine)); } if ((WerkstoffLoader.toGenerateGlobal & 0b1000000000) != 0) { WerkstoffLoader.items.put(plateDouble, new BW_MetaGenerated_Items(plateDouble)); @@ -1438,8 +1461,6 @@ public class WerkstoffLoader implements Runnable { } - - public void gameRegistryHandler(){ if (FMLCommonHandler.instance().getSide().isClient()) RenderingRegistry.registerBlockHandler(BW_Renderer_Block_Ores.INSTANCE); @@ -1452,24 +1473,59 @@ public class WerkstoffLoader implements Runnable { public static void runGTItemDataRegistrator(){ HashSet toRem = new HashSet<>(); for (Werkstoff werkstoff : Werkstoff.werkstoffHashSet) { - Materials werkstoffBridgeMaterial = new Materials(-1,werkstoff.getTexSet(),0,0,0,false,werkstoff.getDefaultName().replaceAll(" ",""),werkstoff.getDefaultName()); - GT_OreDictUnificator.addAssociation(ore,werkstoffBridgeMaterial,new ItemStack(WerkstoffLoader.BWOres,1,werkstoff.getmID()),false); + Materials werkstoffBridgeMaterial = new Materials(-1, werkstoff.getTexSet(), 0, 0, 0, false, werkstoff.getDefaultName().replaceAll(" ", ""), werkstoff.getDefaultName()); for (OrePrefixes prefixes : values()) { - if ((werkstoff.getGenerationFeatures().toGenerate & Werkstoff.GenerationFeatures.prefixLogic.get(prefixes)) != 0 && werkstoff.get(prefixes) != null && werkstoff.get(prefixes).getItem() != null) - GT_OreDictUnificator.addAssociation(prefixes, werkstoffBridgeMaterial, werkstoff.get(prefixes), false); - } - if (werkstoff.getGenerationFeatures().hasCells()) { - werkstoffBridgeMaterial.setHasCorrespondingFluid(true); - werkstoffBridgeMaterial.setHasCorrespondingGas(true); - werkstoffBridgeMaterial.mFluid = werkstoff.getFluidOrGas(1).getFluid(); - werkstoffBridgeMaterial.mGas = werkstoff.getFluidOrGas(1).getFluid(); - } - if (werkstoff.getGenerationFeatures().hasMolten()) { - werkstoffBridgeMaterial.mStandardMoltenFluid = werkstoff.getMolten(1).getFluid(); + if (!(prefixes == cell && werkstoff.getType().equals(Werkstoff.Types.ELEMENT))) { + if (prefixes == dust && werkstoff.getType().equals(Werkstoff.Types.ELEMENT)) { + if (werkstoff.getType().equals(Werkstoff.Types.ELEMENT)) { + boolean ElementSet = false; + for (Element e : Element.values()) { + if (e.toString().equals(werkstoff.getToolTip())) { + if (e.mLinkedMaterials.size() > 0) + break; + werkstoffBridgeMaterial = new Materials(-1, werkstoff.getTexSet(), 0, 0, 0, true, werkstoff.getDefaultName().replaceAll(" ", ""), werkstoff.getDefaultName()); + werkstoffBridgeMaterial.mElement = e; + e.mLinkedMaterials = new ArrayList<>(); + e.mLinkedMaterials.add(werkstoffBridgeMaterial); + GT_OreDictUnificator.addAssociation(dust, werkstoffBridgeMaterial, werkstoff.get(dust), false); + GT_OreDictUnificator.set(dust, werkstoffBridgeMaterial, werkstoff.get(dust), true, true); + ElementSet = true; + break; + } + } + if (!ElementSet) + continue; + try { + Field f = Materials.class.getDeclaredField("MATERIALS_MAP"); + f.setAccessible(true); + Map MATERIALS_MAP = (Map) f.get(null); + MATERIALS_MAP.remove(werkstoffBridgeMaterial.mName); + } catch (NoSuchFieldException | IllegalAccessException | ClassCastException e) { + e.printStackTrace(); + } + ItemStack scannerOutput = ItemList.Tool_DataOrb.get(1L); + Behaviour_DataOrb.setDataTitle(scannerOutput, "Elemental-Scan"); + Behaviour_DataOrb.setDataName(scannerOutput, werkstoff.getToolTip()); + GT_Recipe.GT_Recipe_Map.sScannerFakeRecipes.addFakeRecipe(false, new BWRecipes.DynamicGTRecipe(false, new ItemStack[]{werkstoff.get(prefixes)}, new ItemStack[]{scannerOutput}, ItemList.Tool_DataOrb.get(1L), null, null, null, (int) (werkstoffBridgeMaterial.getMass() * 8192L), 30, 0)); + GT_Recipe.GT_Recipe_Map.sReplicatorFakeRecipes.addFakeRecipe(false, new BWRecipes.DynamicGTRecipe(false, null, new ItemStack[]{werkstoff.get(prefixes)}, scannerOutput, null, new FluidStack[]{Materials.UUMatter.getFluid(werkstoffBridgeMaterial.getMass())}, null, (int) (werkstoffBridgeMaterial.getMass() * 512L), 30, 0)); + } + } else if ((werkstoff.getGenerationFeatures().toGenerate & Werkstoff.GenerationFeatures.prefixLogic.get(prefixes)) != 0 && (werkstoff.getGenerationFeatures().blacklist & Werkstoff.GenerationFeatures.prefixLogic.get(prefixes)) == 0 && werkstoff.get(prefixes) != null && werkstoff.get(prefixes).getItem() != null) + GT_OreDictUnificator.addAssociation(prefixes, werkstoffBridgeMaterial, werkstoff.get(prefixes), false); + + if (werkstoff.getGenerationFeatures().hasCells()) { + werkstoffBridgeMaterial.setHasCorrespondingFluid(true); + werkstoffBridgeMaterial.setHasCorrespondingGas(true); + werkstoffBridgeMaterial.mFluid = werkstoff.getFluidOrGas(1).getFluid(); + werkstoffBridgeMaterial.mGas = werkstoff.getFluidOrGas(1).getFluid(); + } + if (werkstoff.getGenerationFeatures().hasMolten()) { + werkstoffBridgeMaterial.mStandardMoltenFluid = werkstoff.getMolten(1).getFluid(); + } + werkstoffBridgeMaterial.mName = werkstoff.getDefaultName(); + toRem.add(werkstoffBridgeMaterial); + werkstoff.setBridgeMaterial(werkstoffBridgeMaterial); + } } - werkstoffBridgeMaterial.mName = werkstoff.getDefaultName(); - toRem.add(werkstoffBridgeMaterial); - werkstoff.setBridgeMaterial(werkstoffBridgeMaterial); } try { Field f = Materials.class.getDeclaredField("MATERIALS_MAP"); @@ -1639,6 +1695,11 @@ public class WerkstoffLoader implements Runnable { GT_ModHandler.addCraftingRecipe(werkstoff.get(gearGt), GT_Proxy.tBits, new Object[]{"SPS", "PwP", "SPS", 'P', werkstoff.get(plate), 'S', werkstoff.get(stick)}); GT_Values.RA.addExtruderRecipe(werkstoff.get(ingot,4), ItemList.Shape_Extruder_Gear.get(0L), werkstoff.get(gearGt), (int) Math.max(werkstoff.getStats().getMass() * 5L, 1), 8 * tVoltageMultiplier); + //wireFine + GT_Values.RA.addExtruderRecipe(werkstoff.get(ingot), ItemList.Shape_Extruder_Wire.get(0L), werkstoff.get(wireFine,8), (int) Math.max(werkstoff.getStats().getMass() * 1.5F, 1F), 8 * tVoltageMultiplier); + GT_Values.RA.addWiremillRecipe(werkstoff.get(ingot), werkstoff.get(wireFine,8), (int) Math.max(werkstoff.getStats().getMass(), 1), 8 * tVoltageMultiplier); + GT_Values.RA.addWiremillRecipe(werkstoff.get(stick), werkstoff.get(wireFine,4), (int) Math.max(werkstoff.getStats().getMass() * 0.5F, 1F), 8 * tVoltageMultiplier); + //smallGear if (WerkstoffLoader.smallGearShape != null) GT_Values.RA.addExtruderRecipe(werkstoff.get(ingot), WerkstoffLoader.smallGearShape.get(0L), werkstoff.get(gearGtSmall), (int) werkstoff.getStats().mass, 8 * tVoltageMultiplier); @@ -1819,39 +1880,6 @@ public class WerkstoffLoader implements Runnable { GT_ModHandler.addPulverisationRecipe(werkstoff.get(ingot),werkstoff.get(dust)); GT_ModHandler.addPulverisationRecipe(werkstoff.get(nugget),werkstoff.get(dustTiny)); } - - if (werkstoff.getType().equals(Werkstoff.Types.ELEMENT)) { - Materials werkstoffBridgeMaterial = null; - boolean ElementSet = false; - for (Element e : Element.values()){ - if (e.toString().equals(werkstoff.getToolTip())){ - if (e.mLinkedMaterials.size() > 0) - break; - werkstoffBridgeMaterial = new Materials(-1,werkstoff.getTexSet(),0,0,0,false,werkstoff.getDefaultName().replaceAll(" ",""),werkstoff.getDefaultName()); - werkstoffBridgeMaterial.mElement = e; - e.mLinkedMaterials.add(werkstoffBridgeMaterial); - ElementSet = true; - break; - } - } - if (!ElementSet) - return; - - GT_OreDictUnificator.addAssociation(dust,werkstoffBridgeMaterial, werkstoff.get(dust),false); - try { - Field f = Materials.class.getDeclaredField("MATERIALS_MAP"); - f.setAccessible(true); - Map MATERIALS_MAP = (Map) f.get(null); - MATERIALS_MAP.remove(werkstoffBridgeMaterial.mName); - } catch (NoSuchFieldException | IllegalAccessException | ClassCastException e) { - e.printStackTrace(); - } - ItemStack scannerOutput = ItemList.Tool_DataOrb.get(1L); - Behaviour_DataOrb.setDataTitle(scannerOutput,"Elemental-Scan"); - Behaviour_DataOrb.setDataName(scannerOutput,werkstoff.getToolTip()); - GT_Recipe.GT_Recipe_Map.sScannerFakeRecipes.addFakeRecipe(false,new BWRecipes.DynamicGTRecipe(false, new ItemStack[]{werkstoff.get(dust)}, new ItemStack[]{scannerOutput}, ItemList.Tool_DataOrb.get(1L), null, null, null, (int) (werkstoffBridgeMaterial.getMass()* 8192L),30,0)); - GT_Recipe.GT_Recipe_Map.sReplicatorFakeRecipes.addFakeRecipe(false,new BWRecipes.DynamicGTRecipe(false, null,new ItemStack[]{werkstoff.get(dust)}, scannerOutput, null, new FluidStack[]{Materials.UUMatter.getFluid(werkstoffBridgeMaterial.getMass())}, null, (int) (werkstoffBridgeMaterial.getMass() * 512L),30,0)); - } } } @@ -2042,7 +2070,7 @@ public class WerkstoffLoader implements Runnable { } if (!ElementSet) return; - + GT_OreDictUnificator.addAssociation(cell,werkstoffBridgeMaterial, werkstoff.get(cell),false); try { Field f = Materials.class.getDeclaredField("MATERIALS_MAP"); diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java index 56ad180e95..b865c9e39f 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/AdditionalRecipes.java @@ -126,127 +126,9 @@ public class AdditionalRecipes implements Runnable { Materials.SolderingAlloy.getMolten((i + 1) * 144) }, null, (i + 1) * 1500, BW_Util.getMachineVoltageFromTier(i + 1), CLEANROOM)); } - GregTech_API.sAfterGTPostload.add(new AdditionalRecipes.LuVHullReplacer()); + GregTech_API.sAfterGTPostload.add(new LuVTierEnhancer()); AdditionalRecipes.oldGThelperMethod(); } - - public static class LuVHullReplacer implements Runnable { - - public void run() { - List bufferedRecipeList = null; - try { - bufferedRecipeList = (List) FieldUtils.getDeclaredField(GT_ModHandler.class, "sBufferRecipeList", true).get(null); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - assert bufferedRecipeList != null; - - HashSet LuVMachines = new HashSet<>(); - OrePrefixes[] LuVMaterialsGenerated = {dust, ingot, plate, stick, stickLong, rotor, plateDouble, plateDense}; - for (ItemList item : ItemList.values()) { - if (item.toString().contains("LuV") && item.hasBeenSet()) - LuVMachines.add(item.get(1)); - } - if (Loader.isModLoaded("dreamcraft")) { - try { - Class customItemListClass = Class.forName("com.dreammaster.gthandler.CustomItemList"); - Method hasnotBeenSet = MethodUtils.getAccessibleMethod(customItemListClass, "hasBeenSet"); - Method get = MethodUtils.getAccessibleMethod(customItemListClass, "get", long.class, Object[].class); - for (Enum customItemList : (Enum[]) FieldUtils.getField(customItemListClass, "$VALUES", true).get(null)) { - if (customItemList.toString().contains("LuV") && (boolean) hasnotBeenSet.invoke(customItemList)) - LuVMachines.add((ItemStack) get.invoke(customItemList, 1, new Object[0])); - } - } catch (IllegalAccessException | ClassNotFoundException | InvocationTargetException e) { - e.printStackTrace(); - } - } - GT_ModHandler.addCraftingRecipe(ItemList.Casing_LuV.get(1), GT_ModHandler.RecipeBits.BUFFERED | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.DELETE_ALL_OTHER_RECIPES, new Object[]{"PPP", "PwP", "PPP", 'P', WerkstoffLoader.LuVTierMaterial.get(plate)}); - for (ItemStack stack : LuVMachines) { - for (GT_Recipe.GT_Recipe_Map map : GT_Recipe.GT_Recipe_Map.sMappings) { - for (GT_Recipe recipe : map.mRecipeList) { - for (OrePrefixes prefixes : LuVMaterialsGenerated) { - if (AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - } - if (AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mOutputs, stack, false)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - } - } - if (AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - } - if (AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mOutputs, stack, false)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); - } - } - } - for (OrePrefixes prefixes : LuVMaterialsGenerated) { - for (Object obj : CraftingManager.getInstance().getRecipeList()) { - if (!(obj instanceof GT_Shaped_Recipe)) - continue; - if (GT_Utility.areStacksEqual(((GT_Shaped_Recipe) obj).getRecipeOutput(), stack, true)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(((GT_Shaped_Recipe) obj).getInput(), GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - } - } - for (Object obj : bufferedRecipeList) { - if (!(obj instanceof GT_Shaped_Recipe)) - continue; - if (GT_Utility.areStacksEqual(((GT_Shaped_Recipe) obj).getRecipeOutput(), stack, true)) { - AdditionalRecipes.LuVHullReplacer.doStacksCointainAndReplace(((GT_Shaped_Recipe) obj).getInput(), GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); - } - } - } - } - } - - private static boolean doStacksCointainAndReplace(FluidStack[] stacks, FluidStack stack, boolean replace, Fluid... replacement) { - boolean replaced = false; - for (int i = 0; i < stacks.length; i++) { - if (GT_Utility.areFluidsEqual(stack, stacks[i])) - if (!replace) - return true; - else { - int amount = stacks[i].amount; - stacks[i] = new FluidStack(replacement[0], amount); - replaced = true; - } - } - return replaced; - } - - private static boolean doStacksCointainAndReplace(Object[] stacks, ItemStack stack, boolean replace, ItemStack... replacement) { - boolean replaced = false; - for (int i = 0; i < stacks.length; i++) { - if (!GT_Utility.isStackValid(stacks[i])) { - if (stacks[i] instanceof ArrayList && ((ArrayList)stacks[i]).size() > 0) { - if (GT_Utility.areStacksEqual(stack, (ItemStack) ((ArrayList)stacks[i]).get(0), true)) - if (!replace) - return true; - else { - int amount = ((ItemStack) ((ArrayList)stacks[i]).get(0)).stackSize; - stacks[i] = new ArrayList<>(); - ((ArrayList)stacks[i]).add(replacement[0].splitStack(amount)); - replaced = true; - } - - } else - continue; - } else if (GT_Utility.areStacksEqual(stack, (ItemStack) stacks[i], true)) - if (!replace) - return true; - else { - int amount = ((ItemStack) stacks[i]).stackSize; - stacks[i] = replacement[0].splitStack(amount); - replaced = true; - } - } - return replaced; - } - } private static void oldGThelperMethod(){ //manual override for older GT Werkstoff werkstoff = WerkstoffLoader.Oganesson; diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/LuVTierEnhancer.java b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/LuVTierEnhancer.java new file mode 100644 index 0000000000..7542253844 --- /dev/null +++ b/src/main/java/com/github/bartimaeusnek/bartworks/system/material/processingLoaders/LuVTierEnhancer.java @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2019 bartimaeusnek + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package com.github.bartimaeusnek.bartworks.system.material.processingLoaders; + +import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; +import com.github.bartimaeusnek.bartworks.util.BW_Util; +import cpw.mods.fml.common.Loader; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.objects.ItemData; +import gregtech.api.util.*; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.commons.lang3.reflect.MethodUtils; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import static gregtech.api.enums.OrePrefixes.*; + +public class LuVTierEnhancer implements Runnable { + + public void run() { + LuVTierEnhancer.replaceAsslineRecipes(); + List bufferedRecipeList = null; + try { + bufferedRecipeList = (List) FieldUtils.getDeclaredField(GT_ModHandler.class, "sBufferRecipeList", true).get(null); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + assert bufferedRecipeList != null; + + HashSet LuVMachines = new HashSet<>(); + OrePrefixes[] LuVMaterialsGenerated = {dust, ingot, plate, stick, stickLong, rotor, plateDouble, plateDense}; + for (ItemList item : ItemList.values()) { + if (item.toString().contains("LuV") && item.hasBeenSet()) + LuVMachines.add(item.get(1)); + } + if (Loader.isModLoaded("dreamcraft")) { + try { + Class customItemListClass = Class.forName("com.dreammaster.gthandler.CustomItemList"); + Method hasnotBeenSet = MethodUtils.getAccessibleMethod(customItemListClass, "hasBeenSet"); + Method get = MethodUtils.getAccessibleMethod(customItemListClass, "get", long.class, Object[].class); + for (Enum customItemList : (Enum[]) FieldUtils.getField(customItemListClass, "$VALUES", true).get(null)) { + if (customItemList.toString().contains("LuV") && (boolean) hasnotBeenSet.invoke(customItemList)) + LuVMachines.add((ItemStack) get.invoke(customItemList, 1, new Object[0])); + } + } catch (IllegalAccessException | ClassNotFoundException | InvocationTargetException e) { + e.printStackTrace(); + } + } + GT_ModHandler.addCraftingRecipe(ItemList.Casing_LuV.get(1), GT_ModHandler.RecipeBits.BUFFERED | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.DELETE_ALL_OTHER_RECIPES, new Object[]{"PPP", "PwP", "PPP", 'P', WerkstoffLoader.LuVTierMaterial.get(plate)}); + for (ItemStack stack : LuVMachines) { + for (GT_Recipe.GT_Recipe_Map map : GT_Recipe.GT_Recipe_Map.sMappings) { + for (GT_Recipe recipe : map.mRecipeList) { + for (OrePrefixes prefixes : LuVMaterialsGenerated) { + if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + } + if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, stack, false)) { + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + } + } + if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mInputs, stack, false)) { + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + } + if (LuVTierEnhancer.doStacksCointainAndReplace(recipe.mOutputs, stack, false)) { + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidInputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + LuVTierEnhancer.doStacksCointainAndReplace(recipe.mFluidOutputs, Materials.Chrome.getMolten(1), true, WerkstoffLoader.LuVTierMaterial.getMolten(1).getFluid()); + } + } + } + for (OrePrefixes prefixes : LuVMaterialsGenerated) { + for (Object obj : CraftingManager.getInstance().getRecipeList()) { + if (!(obj instanceof GT_Shaped_Recipe)) + continue; + if (GT_Utility.areStacksEqual(((GT_Shaped_Recipe) obj).getRecipeOutput(), stack, true)) { + LuVTierEnhancer.doStacksCointainAndReplace(((GT_Shaped_Recipe) obj).getInput(), GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + } + } + for (Object obj : bufferedRecipeList) { + if (!(obj instanceof GT_Shaped_Recipe)) + continue; + if (GT_Utility.areStacksEqual(((GT_Shaped_Recipe) obj).getRecipeOutput(), stack, true)) { + LuVTierEnhancer.doStacksCointainAndReplace(((GT_Shaped_Recipe) obj).getInput(), GT_OreDictUnificator.get(prefixes, Materials.Chrome, 1), true, WerkstoffLoader.LuVTierMaterial.get(prefixes)); + } + } + } + } + } + + private static void replaceAsslineRecipes(){ + for (GT_Recipe.GT_Recipe_AssemblyLine recipe_assemblyLine : GT_Recipe.GT_Recipe_AssemblyLine.sAssemblylineRecipes){ + if (recipe_assemblyLine.mEUt > 6000) + continue; + for (int i = 0; i < recipe_assemblyLine.mInputs.length; i++) { + ItemStack stack = recipe_assemblyLine.mInputs[i]; + if (!BW_Util.checkStackAndPrefix(stack)) + continue; + ItemData ass = GT_OreDictUnificator.getAssociation(stack); + if (ass.mMaterial.mMaterial.equals(Materials.Osmiridium)) + recipe_assemblyLine.mInputs[i] = WerkstoffLoader.LuVFineWireMaterial.get(ass.mPrefix,stack.stackSize); + } + } + for (GT_Recipe recipe_assemblyLine : GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList){ + if (recipe_assemblyLine.mEUt > BW_Util.getTierVoltage(6)) + continue; + if (BW_Util.checkStackAndPrefix(recipe_assemblyLine.mOutputs[0])) + continue; + for (int i = 0; i < recipe_assemblyLine.mInputs.length; i++) { + ItemStack stack = recipe_assemblyLine.mInputs[i]; + if (!BW_Util.checkStackAndPrefix(stack)) + continue; + ItemData ass = GT_OreDictUnificator.getAssociation(stack); + if (ass.mMaterial.mMaterial.equals(Materials.Osmiridium)) + recipe_assemblyLine.mInputs[i] = WerkstoffLoader.LuVFineWireMaterial.get(ass.mPrefix,stack.stackSize); + } + } + for (GT_Recipe recipe_assemblyLine : GT_Recipe.GT_Recipe_Map.sAssemblylineVisualRecipes.mRecipeList){ + if (recipe_assemblyLine.mEUt > 6000) + continue; + for (int i = 0; i < recipe_assemblyLine.mInputs.length; i++) { + ItemStack stack = recipe_assemblyLine.mInputs[i]; + if (!BW_Util.checkStackAndPrefix(stack)) + continue; +