diff --git a/src/main/java/pm/j4/kerosene/KeroseneMod.java b/src/main/java/pm/j4/kerosene/KeroseneMod.java index 4dd231d..4076895 100644 --- a/src/main/java/pm/j4/kerosene/KeroseneMod.java +++ b/src/main/java/pm/j4/kerosene/KeroseneMod.java @@ -1,20 +1,16 @@ package pm.j4.kerosene; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; -import net.fabricmc.loader.api.metadata.ModMetadata; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.options.KeyBinding; -import net.minecraft.server.integrated.IntegratedServer; import pm.j4.kerosene.modules.ExampleModule; import pm.j4.kerosene.modules.bindings.BindingManager; import pm.j4.kerosene.util.config.ConfigHolder; import pm.j4.kerosene.util.config.ConfigManager; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.module.ModuleBase; @@ -23,107 +19,6 @@ import pm.j4.kerosene.util.module.ModuleBase; * The type Kerosene mod. */ public class KeroseneMod implements ModInitializer { - /** - * The Mod data. - */ - public static ModMetadata modData = null; - /** - * The constant client. - */ - private static MinecraftClient client; - /** - * The constant activeMods. - */ - private static List registeredMods = new ArrayList<>(); - - public static void registerMod(Class mod) throws IllegalAccessException, InstantiationException { - ModuleBase base = mod.newInstance(); - if(!registeredMods.contains(base)) { - registeredMods.add(base); - } - } - - /** - * Is active boolean. - * - * @param modName the mod name - * @return the boolean - */ - public static boolean isActive(String modName) { - return registeredMods.stream().anyMatch(mod -> mod.getModuleName().equals(modName)); - } - - /** - * Gets mod. - * - * @param modName the mod name - * @return the mod - */ - public static Optional getMod(String modName) { - return registeredMods.stream().filter(mod -> mod.getModuleName().equals(modName)).findFirst(); - } - - /** - * Gets active mods. - * - * @return the active mods - */ - public static List getRegisteredMods() { - return registeredMods; - } - - /** - * The constant registeredBinds. - */ - private static final List registeredBinds = new ArrayList<>(); - - /** - * Add bind. - * - * @param b the b - */ - public static void addBind(KeyBinding b) { - registeredBinds.add(b); - } - - /** - * Remove bind. - * - * @param b the b - */ - public static void removeBind(KeyBinding b) { - if(registeredBinds.contains(b)) { - registeredBinds.remove(b); - } - } - - /** - * Gets active keybinds. - * - * @return the active keybinds - */ - public static List getActiveKeybinds() { - return registeredBinds; - } - - /** - * Gets server address. - * - * @return the server address - */ - public static String getServerAddress() { - if (client != null && client.getServer() != null) { - IntegratedServer server = client.getServer(); - if (!server.isRemote()) { - return "localhost"; - } - if (server.isRemote() && !server.getServerIp().isEmpty()) { - return server.getServerIp(); - } - } - return null; - } - @Override public void onInitialize() { @@ -131,13 +26,13 @@ public class KeroseneMod implements ModInitializer { // always update mod data Optional modContainer = FabricLoader.getInstance().getModContainer("kerosene"); - modContainer.ifPresent(container -> modData = container.getMetadata()); + modContainer.ifPresent(container -> ModInfoProvider.modData = container.getMetadata()); Optional conf = ConfigManager.getConfig("kerosene"); try { - this.registerMod(ExampleModule.class); - this.registerMod(BindingManager.class); + ModInfoProvider.registerMod(ExampleModule.class); + ModInfoProvider.registerMod(BindingManager.class); } catch (Exception e) { System.out.println(e); @@ -145,14 +40,14 @@ public class KeroseneMod implements ModInitializer { //initialize any keybinds, data, etc. - registeredMods.forEach(ModuleBase::init); + ModInfoProvider.getRegisteredMods().forEach(ModuleBase::init); //initialize keybind handler conf.ifPresent(configHolder -> ClientTickEvents.END_CLIENT_TICK.register(client -> { - if (KeroseneMod.client != client) { - KeroseneMod.client = client; + if (ModInfoProvider.client != client) { + ModInfoProvider.client = client; } - for (KeyBinding b : KeroseneMod.getActiveKeybinds()) { + for (KeyBinding b : BindingManager.getActiveKeybinds()) { while (b.wasPressed()) { configHolder.globalConfig.bindings.get(b).activate(client); } diff --git a/src/main/java/pm/j4/kerosene/gui/POptionsScreen.java b/src/main/java/pm/j4/kerosene/gui/POptionsScreen.java index 1b80680..8811541 100644 --- a/src/main/java/pm/j4/kerosene/gui/POptionsScreen.java +++ b/src/main/java/pm/j4/kerosene/gui/POptionsScreen.java @@ -17,6 +17,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.*; import pm.j4.kerosene.KeroseneMod; import pm.j4.kerosene.util.config.ConfigManager; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.module.ModuleBase; /** @@ -99,7 +100,7 @@ public class POptionsScreen extends Screen { this.configPane.setLeftPos(paneWidth); this.children.add(this.configPane); List configurableModules = new ArrayList<>(); - configurableModules.addAll(KeroseneMod.getRegisteredMods() + configurableModules.addAll(ModInfoProvider.getRegisteredMods() .stream().filter(ModuleBase::configurable) .collect(Collectors.toList())); configurableModules.forEach(module -> this.modules.addEntry(new POptionEntry(module, this.modules))); diff --git a/src/main/java/pm/j4/kerosene/modules/bindings/BindingManager.java b/src/main/java/pm/j4/kerosene/modules/bindings/BindingManager.java index 904cf93..edf2df1 100644 --- a/src/main/java/pm/j4/kerosene/modules/bindings/BindingManager.java +++ b/src/main/java/pm/j4/kerosene/modules/bindings/BindingManager.java @@ -11,6 +11,7 @@ import pm.j4.kerosene.gui.PModuleConfigPane; import pm.j4.kerosene.util.config.ConfigHolder; import pm.j4.kerosene.util.config.ConfigManager; import pm.j4.kerosene.util.config.GlobalConfig; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.module.ModuleBase; import pm.j4.kerosene.util.module.option.KeybindOption; @@ -72,7 +73,7 @@ public class BindingManager extends ModuleBase { return; } GlobalConfig c = config.get().globalConfig; - Optional mod = KeroseneMod.getMod("petroleum.modmenu"); + Optional mod = ModInfoProvider.getMod("petroleum.modmenu"); if (mod.isPresent() && !c.isBound(mod.get())) { //TODO // the only explicit keybinding (for now.) @@ -87,4 +88,38 @@ public class BindingManager extends ModuleBase { config.get().globalConfig.setBinding(binding, mod.get()); } } + + /** + * The constant registeredBinds. + */ + private static final List registeredBinds = new ArrayList<>(); + + /** + * Add bind. + * + * @param b the b + */ + public static void addBind(KeyBinding b) { + registeredBinds.add(b); + } + + /** + * Remove bind. + * + * @param b the b + */ + public static void removeBind(KeyBinding b) { + if(registeredBinds.contains(b)) { + registeredBinds.remove(b); + } + } + + /** + * Gets active keybinds. + * + * @return the active keybinds + */ + public static List getActiveKeybinds() { + return registeredBinds; + } } diff --git a/src/main/java/pm/j4/kerosene/util/config/Config.java b/src/main/java/pm/j4/kerosene/util/config/Config.java index a527854..3486e7f 100644 --- a/src/main/java/pm/j4/kerosene/util/config/Config.java +++ b/src/main/java/pm/j4/kerosene/util/config/Config.java @@ -3,6 +3,7 @@ package pm.j4.kerosene.util.config; import java.util.ArrayList; import java.util.List; import pm.j4.kerosene.KeroseneMod; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.module.ModuleBase; /** @@ -31,8 +32,8 @@ public abstract class Config { * @param mod the mod */ public void disableModule(String mod) { - if (isEnabled(mod) && KeroseneMod.isActive(mod) && KeroseneMod.getMod(mod).isPresent()) { - ModuleBase moduleInfo = KeroseneMod.getMod(mod).get(); + if (isEnabled(mod) && ModInfoProvider.isActive(mod) && ModInfoProvider.getMod(mod).isPresent()) { + ModuleBase moduleInfo = ModInfoProvider.getMod(mod).get(); if (moduleInfo.isActivatable()) { enabledModules.remove(mod); } @@ -45,8 +46,8 @@ public abstract class Config { * @param mod the mod */ public void toggleModule(String mod) { - if (KeroseneMod.isActive(mod) && KeroseneMod.getMod(mod).isPresent()) { - ModuleBase moduleInfo = KeroseneMod.getMod(mod).get(); + if (ModInfoProvider.isActive(mod) && ModInfoProvider.getMod(mod).isPresent()) { + ModuleBase moduleInfo = ModInfoProvider.getMod(mod).get(); if (moduleInfo.isActivatable()) { if (isEnabled(mod)) { enabledModules.remove(mod); diff --git a/src/main/java/pm/j4/kerosene/util/config/ConfigHolder.java b/src/main/java/pm/j4/kerosene/util/config/ConfigHolder.java index 89bc8cd..d6a0f30 100644 --- a/src/main/java/pm/j4/kerosene/util/config/ConfigHolder.java +++ b/src/main/java/pm/j4/kerosene/util/config/ConfigHolder.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; import pm.j4.kerosene.KeroseneMod; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.module.ModuleBase; /** @@ -27,7 +28,7 @@ public class ConfigHolder { */ public boolean isModuleEnabled(String module) { - if (!KeroseneMod.isActive(module)) { + if (!ModInfoProvider.isActive(module)) { return false; } if (globalConfig.isEnabled(module)) { @@ -46,7 +47,7 @@ public class ConfigHolder { * @return the enabled modules */ public List getEnabledModules() { - List modules = KeroseneMod.getRegisteredMods(); + List modules = ModInfoProvider.getRegisteredMods(); return modules.stream().filter(module -> isModuleEnabled(module.getModuleName()) ).collect(Collectors.toList()); @@ -58,7 +59,7 @@ public class ConfigHolder { * @return the server */ public String getServer() { - return KeroseneMod.getServerAddress(); + return ModInfoProvider.getServerAddress(); } /** diff --git a/src/main/java/pm/j4/kerosene/util/config/ConfigManager.java b/src/main/java/pm/j4/kerosene/util/config/ConfigManager.java index f39bb1e..033145c 100644 --- a/src/main/java/pm/j4/kerosene/util/config/ConfigManager.java +++ b/src/main/java/pm/j4/kerosene/util/config/ConfigManager.java @@ -8,6 +8,7 @@ import java.util.*; import net.fabricmc.loader.api.FabricLoader; import pm.j4.kerosene.KeroseneMod; import pm.j4.kerosene.modules.bindings.BindingInfo; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.data.ModuleConfig; import pm.j4.kerosene.util.data.OptionSerializiable; import pm.j4.kerosene.util.module.ModuleBase; @@ -63,7 +64,7 @@ public class ConfigManager { * Init modules. */ public static void initModules(String moduleName) { - KeroseneMod.getRegisteredMods().forEach(module -> { + ModInfoProvider.getRegisteredMods().forEach(module -> { ModuleConfig options = load(moduleName + "/modules/", module.getModuleName() + ".json", ModuleConfig.class); if (options != null && options.options != null) { options.options.forEach((key, option) -> { @@ -158,7 +159,7 @@ public class ConfigManager { * Save all modules. */ public static void saveAllModules() { - List mods = KeroseneMod.getRegisteredMods(); + List mods = ModInfoProvider.getRegisteredMods(); mods.forEach((module) -> { ConfigManager.saveModule(module.getParent(), module); }); @@ -229,7 +230,7 @@ class SerializationHelper { } else { options = new HashMap<>(); } - KeroseneMod.getRegisteredMods().forEach(module -> { + ModInfoProvider.getRegisteredMods().forEach(module -> { if (options.containsKey(module.getModuleName())) { cfg.deserializeModuleConfiguration(options.get(module.getModuleName()), module); } diff --git a/src/main/java/pm/j4/kerosene/util/config/DefaultConfig.java b/src/main/java/pm/j4/kerosene/util/config/DefaultConfig.java index b7d1dbd..956ff83 100644 --- a/src/main/java/pm/j4/kerosene/util/config/DefaultConfig.java +++ b/src/main/java/pm/j4/kerosene/util/config/DefaultConfig.java @@ -10,6 +10,5 @@ public class DefaultConfig extends GlobalConfig { * Instantiates a new Default config. */ public DefaultConfig() { - this.enabledModules = Collections.singletonList("petroleum.splashtext"); } } diff --git a/src/main/java/pm/j4/kerosene/util/config/GlobalConfig.java b/src/main/java/pm/j4/kerosene/util/config/GlobalConfig.java index 6021107..1c85477 100644 --- a/src/main/java/pm/j4/kerosene/util/config/GlobalConfig.java +++ b/src/main/java/pm/j4/kerosene/util/config/GlobalConfig.java @@ -7,6 +7,8 @@ import net.minecraft.client.options.KeyBinding; import net.minecraft.client.util.InputUtil; import pm.j4.kerosene.KeroseneMod; import pm.j4.kerosene.modules.bindings.BindingInfo; +import pm.j4.kerosene.modules.bindings.BindingManager; +import pm.j4.kerosene.util.data.ModInfoProvider; import pm.j4.kerosene.util.data.OptionSerializiable; import pm.j4.kerosene.util.module.ModuleBase; import pm.j4.kerosene.util.module.option.ConfigurationOption; @@ -47,7 +49,7 @@ public class GlobalConfig extends Config { if (bindings.containsValue(func)) { bindings.forEach((key, binding) -> { if (binding.equals(func)) { - KeroseneMod.removeBind(key); + BindingManager.removeBind(key); match.set(key); } }); @@ -57,8 +59,8 @@ public class GlobalConfig extends Config { bindings.remove(match.get()); } - if (KeroseneMod.isActive(func.getModuleName())) { - KeroseneMod.addBind(bind); + if (ModInfoProvider.isActive(func.getModuleName())) { + BindingManager.addBind(bind); bindings.put(bind, func); } } @@ -69,7 +71,7 @@ public class GlobalConfig extends Config { * @param info the info */ private void convertBinding(BindingInfo info) { - Optional match = KeroseneMod.getMod(info.attachedModuleName); + Optional match = ModInfoProvider.getMod(info.attachedModuleName); match.ifPresent(moduleBase -> setBinding(reconstructBinding(info), moduleBase)); } diff --git a/src/main/java/pm/j4/kerosene/util/data/Category.java b/src/main/java/pm/j4/kerosene/util/data/Category.java index f055661..2e2392b 100644 --- a/src/main/java/pm/j4/kerosene/util/data/Category.java +++ b/src/main/java/pm/j4/kerosene/util/data/Category.java @@ -17,7 +17,7 @@ public class Category { * @return the category map */ public static Map> getCategoryMap() { - List modules = KeroseneMod.getRegisteredMods(); + List modules = ModInfoProvider.getRegisteredMods(); Map> categoryMap = new HashMap<>(); modules.forEach(module -> { if (!categoryMap.containsKey(module.getCategory())) { diff --git a/src/main/java/pm/j4/kerosene/util/data/ModInfoProvider.java b/src/main/java/pm/j4/kerosene/util/data/ModInfoProvider.java new file mode 100644 index 0000000..f061aac --- /dev/null +++ b/src/main/java/pm/j4/kerosene/util/data/ModInfoProvider.java @@ -0,0 +1,80 @@ +package pm.j4.kerosene.util.data; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import net.fabricmc.loader.api.metadata.ModMetadata; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.options.KeyBinding; +import net.minecraft.server.integrated.IntegratedServer; +import pm.j4.kerosene.util.module.ModuleBase; + +//TODO refactor into multiple data holders +public class ModInfoProvider { + /** + * The Mod data. + */ + public static ModMetadata modData = null; + /** + * The constant client. + */ + public static MinecraftClient client; + /** + * The constant activeMods. + */ + private static List registeredMods = new ArrayList<>(); + + public static void registerMod(Class mod) throws IllegalAccessException, InstantiationException { + ModuleBase base = mod.newInstance(); + if(!registeredMods.contains(base)) { + registeredMods.add(base); + } + } + + /** + * Is active boolean. + * + * @param modName the mod name + * @return the boolean + */ + public static boolean isActive(String modName) { + return registeredMods.stream().anyMatch(mod -> mod.getModuleName().equals(modName)); + } + + /** + * Gets mod. + * + * @param modName the mod name + * @return the mod + */ + public static Optional getMod(String modName) { + return registeredMods.stream().filter(mod -> mod.getModuleName().equals(modName)).findFirst(); + } + + /** + * Gets active mods. + * + * @return the active mods + */ + public static List getRegisteredMods() { + return registeredMods; + } + + /** + * Gets server address. + * + * @return the server address + */ + public static String getServerAddress() { + if (client != null && client.getServer() != null) { + IntegratedServer server = client.getServer(); + if (!server.isRemote()) { + return "localhost"; + } + if (server.isRemote() && !server.getServerIp().isEmpty()) { + return server.getServerIp(); + } + } + return null; + } +}