move static info out of mod file
This commit is contained in:
		
							parent
							
								
									3db9cf6ccd
								
							
						
					
					
						commit
						2600f92b2a
					
				
					 10 changed files with 146 additions and 131 deletions
				
			
		|  | @ -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<ModuleBase> registeredMods = new ArrayList<>(); | ||||
| 
 | ||||
| 	public static void registerMod(Class<? extends ModuleBase> 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<ModuleBase> getMod(String modName) { | ||||
| 		return registeredMods.stream().filter(mod -> mod.getModuleName().equals(modName)).findFirst(); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Gets active mods. | ||||
| 	 * | ||||
| 	 * @return the active mods | ||||
| 	 */ | ||||
| 	public static List<ModuleBase> getRegisteredMods() { | ||||
| 		return registeredMods; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * The constant registeredBinds. | ||||
| 	 */ | ||||
| 	private static final List<KeyBinding> 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<KeyBinding> 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> modContainer = FabricLoader.getInstance().getModContainer("kerosene"); | ||||
| 		modContainer.ifPresent(container -> modData = container.getMetadata()); | ||||
| 		modContainer.ifPresent(container -> ModInfoProvider.modData = container.getMetadata()); | ||||
| 
 | ||||
| 		Optional<ConfigHolder> 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); | ||||
| 				} | ||||
|  |  | |||
|  | @ -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<ModuleBase> 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))); | ||||
|  |  | |||
|  | @ -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<ModuleBase> mod = KeroseneMod.getMod("petroleum.modmenu"); | ||||
| 		Optional<ModuleBase> 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<KeyBinding> 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<KeyBinding> getActiveKeybinds() { | ||||
| 		return registeredBinds; | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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<ModuleBase> getEnabledModules() { | ||||
| 		List<ModuleBase> modules = KeroseneMod.getRegisteredMods(); | ||||
| 		List<ModuleBase> 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(); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
|  |  | |||
|  | @ -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<ModuleBase> mods = KeroseneMod.getRegisteredMods(); | ||||
| 		List<ModuleBase> 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); | ||||
| 			} | ||||
|  |  | |||
|  | @ -10,6 +10,5 @@ public class DefaultConfig extends GlobalConfig { | |||
| 	 * Instantiates a new Default config. | ||||
| 	 */ | ||||
| 	public DefaultConfig() { | ||||
| 		this.enabledModules = Collections.singletonList("petroleum.splashtext"); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -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<ModuleBase> match = KeroseneMod.getMod(info.attachedModuleName); | ||||
| 		Optional<ModuleBase> match = ModInfoProvider.getMod(info.attachedModuleName); | ||||
| 		match.ifPresent(moduleBase -> setBinding(reconstructBinding(info), | ||||
| 				moduleBase)); | ||||
| 	} | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ public class Category { | |||
| 	 * @return the category map | ||||
| 	 */ | ||||
| 	public static Map<String, List<ModuleBase>> getCategoryMap() { | ||||
| 		List<ModuleBase> modules = KeroseneMod.getRegisteredMods(); | ||||
| 		List<ModuleBase> modules = ModInfoProvider.getRegisteredMods(); | ||||
| 		Map<String, List<ModuleBase>> categoryMap = new HashMap<>(); | ||||
| 		modules.forEach(module -> { | ||||
| 			if (!categoryMap.containsKey(module.getCategory())) { | ||||
|  |  | |||
							
								
								
									
										80
									
								
								src/main/java/pm/j4/kerosene/util/data/ModInfoProvider.java
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								src/main/java/pm/j4/kerosene/util/data/ModInfoProvider.java
									
										
									
									
									
										Normal file
									
								
							|  | @ -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<ModuleBase> registeredMods = new ArrayList<>(); | ||||
| 
 | ||||
| 	public static void registerMod(Class<? extends ModuleBase> 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<ModuleBase> getMod(String modName) { | ||||
| 		return registeredMods.stream().filter(mod -> mod.getModuleName().equals(modName)).findFirst(); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Gets active mods. | ||||
| 	 * | ||||
| 	 * @return the active mods | ||||
| 	 */ | ||||
| 	public static List<ModuleBase> 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; | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue