From b0b5fe5c752822fd0e632d189eacafa8afcd417e Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Wed, 15 Jun 2022 18:39:15 +0200 Subject: [PATCH] move minecraft home path retrieval to separate util class --- .../lib/config/ConfigurationManager.java | 14 +++++++++----- .../lib/dependencies/DependencyLoader.java | 3 ++- .../lib/internal/CoreLoadingPlugin.java | 3 --- .../com/falsepattern/lib/mixin/IMixinPlugin.java | 4 +++- .../java/com/falsepattern/lib/util/FileUtil.java | 13 +++++++++++++ 5 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/falsepattern/lib/util/FileUtil.java diff --git a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java index 3c2d671..9720bd7 100644 --- a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java +++ b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java @@ -3,10 +3,13 @@ package com.falsepattern.lib.config; import com.falsepattern.lib.StableAPI; import com.falsepattern.lib.internal.CoreLoadingPlugin; import com.falsepattern.lib.internal.FalsePatternLib; +import com.falsepattern.lib.util.FileUtil; import cpw.mods.fml.client.config.IConfigElement; import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; + +import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.nio.file.Path; @@ -24,6 +27,7 @@ import lombok.NoArgsConstructor; import lombok.SneakyThrows; import lombok.val; import lombok.var; +import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.config.ConfigElement; import net.minecraftforge.common.config.Configuration; @@ -49,6 +53,7 @@ public class ConfigurationManager { * @param configClass The class to register. */ public static void registerConfig(Class configClass) throws ConfigException { + init(); val cfg = Optional.ofNullable(configClass.getAnnotation(Config.class)) .orElseThrow(() -> new ConfigException( "Class " + configClass.getName() + " does not have a @Config annotation!")); @@ -192,6 +197,7 @@ public class ConfigurationManager { */ @SuppressWarnings({"rawtypes", "unchecked"}) public static List getConfigElements(Class configClass) throws ConfigException { + init(); val cfg = Optional.ofNullable(configClass.getAnnotation(Config.class)) .orElseThrow(() -> new ConfigException( "Class " + configClass.getName() + " does not have a @Config annotation!")); @@ -217,14 +223,11 @@ public class ConfigurationManager { })).collect(Collectors.toList()); } - /** - * Internal, do not use. - */ - public static void init() { + private static void init() { if (initialized) { return; } - configDir = CoreLoadingPlugin.mcDir.toPath().resolve("config"); + configDir = FileUtil.getMinecraftHome().toPath().resolve("config"); FMLCommonHandler.instance().bus().register(instance); initialized = true; } @@ -236,6 +239,7 @@ public class ConfigurationManager { */ @SubscribeEvent public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) { + init(); val config = configs.get(event.modID); if (config == null) { return; diff --git a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java index 220614a..b383c3c 100644 --- a/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java +++ b/src/main/java/com/falsepattern/lib/dependencies/DependencyLoader.java @@ -14,6 +14,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import com.falsepattern.lib.util.FileUtil; import lombok.*; import net.minecraft.launchwrapper.LaunchClassLoader; @@ -84,7 +85,7 @@ public class DependencyLoader { } return; } - val modsDir = new File(CoreLoadingPlugin.mcDir, "mods"); + val modsDir = new File(FileUtil.getMinecraftHome(), "mods"); val mavenJarName = String.format("%s-%s%s.jar", artifactId, preferredVersion, (suffix != null) ? ("-" + suffix) : ""); val jarName = groupId + "-" + mavenJarName; diff --git a/src/main/java/com/falsepattern/lib/internal/CoreLoadingPlugin.java b/src/main/java/com/falsepattern/lib/internal/CoreLoadingPlugin.java index 3ae78b3..dd4adc2 100644 --- a/src/main/java/com/falsepattern/lib/internal/CoreLoadingPlugin.java +++ b/src/main/java/com/falsepattern/lib/internal/CoreLoadingPlugin.java @@ -12,7 +12,6 @@ import java.util.Map; @Name(Tags.MODID) @SortingIndex(500) public class CoreLoadingPlugin implements IFMLLoadingPlugin { - public static File mcDir; @Override public String[] getASMTransformerClass() { @@ -31,8 +30,6 @@ public class CoreLoadingPlugin implements IFMLLoadingPlugin { @Override public void injectData(Map data) { - mcDir = (File) data.get("mcLocation"); - ConfigurationManager.init(); } @Override diff --git a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java index 2042c81..918da2a 100644 --- a/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java +++ b/src/main/java/com/falsepattern/lib/mixin/IMixinPlugin.java @@ -11,6 +11,8 @@ import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; + +import com.falsepattern.lib.util.FileUtil; import lombok.val; import net.minecraft.launchwrapper.Launch; import org.apache.logging.log4j.LogManager; @@ -23,7 +25,7 @@ import static java.nio.file.Files.walk; @StableAPI(since = "0.8.0") public interface IMixinPlugin extends IMixinConfigPlugin { - Path MODS_DIRECTORY_PATH = CoreLoadingPlugin.mcDir.toPath().resolve("mods"); + Path MODS_DIRECTORY_PATH = FileUtil.getMinecraftHome().toPath().resolve("mods"); static Logger createLogger(String modName) { return LogManager.getLogger(modName + " Mixin Loader"); diff --git a/src/main/java/com/falsepattern/lib/util/FileUtil.java b/src/main/java/com/falsepattern/lib/util/FileUtil.java new file mode 100644 index 0000000..15dea6a --- /dev/null +++ b/src/main/java/com/falsepattern/lib/util/FileUtil.java @@ -0,0 +1,13 @@ +package com.falsepattern.lib.util; + +import com.falsepattern.lib.StableAPI; +import net.minecraft.launchwrapper.Launch; + +import java.io.File; + +@StableAPI(since = "0.8.2") +public class FileUtil { + public static File getMinecraftHome() { + return Launch.minecraftHome == null ? new File(".") : Launch.minecraftHome; + } +}