refactor config + modules use @Module annotation now
This commit is contained in:
		
							parent
							
								
									2600f92b2a
								
							
						
					
					
						commit
						7b41f24211
					
				
					 23 changed files with 220 additions and 92 deletions
				
			
		|  | @ -3,41 +3,30 @@ package pm.j4.kerosene; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
| import net.fabricmc.api.ModInitializer; | import net.fabricmc.api.ModInitializer; | ||||||
| import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; | import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; | ||||||
| import net.fabricmc.loader.api.FabricLoader; |  | ||||||
| import net.fabricmc.loader.api.ModContainer; |  | ||||||
| import net.minecraft.client.options.KeyBinding; | import net.minecraft.client.options.KeyBinding; | ||||||
| import pm.j4.kerosene.modules.ExampleModule; | import pm.j4.kerosene.modules.ExampleModule; | ||||||
| import pm.j4.kerosene.modules.bindings.BindingManager; | import pm.j4.kerosene.modules.bindings.BindingManager; | ||||||
| import pm.j4.kerosene.util.config.ConfigHolder; | import pm.j4.kerosene.util.config.ConfigHolder; | ||||||
| import pm.j4.kerosene.util.config.ConfigManager; | import pm.j4.kerosene.util.config.ConfigManager; | ||||||
|  | import pm.j4.kerosene.util.config.Module; | ||||||
| import pm.j4.kerosene.util.data.ModInfoProvider; | import pm.j4.kerosene.util.data.ModInfoProvider; | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * The type Kerosene mod. |  * The type Kerosene mod. | ||||||
|  */ |  */ | ||||||
|  | 
 | ||||||
|  | @Module(ExampleModule.class) | ||||||
|  | @Module(BindingManager.class) | ||||||
| public class KeroseneMod implements ModInitializer { | public class KeroseneMod implements ModInitializer { | ||||||
| 	@Override | 	@Override | ||||||
| 	public void onInitialize() { | 	public void onInitialize() { | ||||||
| 
 | 
 | ||||||
| 		ConfigManager.initConfig("kerosene"); | 		ConfigManager.initConfig("kerosene", KeroseneMod.class); | ||||||
| 
 |  | ||||||
| 		// always update mod data |  | ||||||
| 		Optional<ModContainer> modContainer = FabricLoader.getInstance().getModContainer("kerosene"); |  | ||||||
| 		modContainer.ifPresent(container -> ModInfoProvider.modData = container.getMetadata()); |  | ||||||
| 
 | 
 | ||||||
| 		Optional<ConfigHolder> conf = ConfigManager.getConfig("kerosene"); | 		Optional<ConfigHolder> conf = ConfigManager.getConfig("kerosene"); | ||||||
| 
 | 
 | ||||||
| 		try { |  | ||||||
| 			ModInfoProvider.registerMod(ExampleModule.class); |  | ||||||
| 			ModInfoProvider.registerMod(BindingManager.class); |  | ||||||
| 		} |  | ||||||
| 		catch (Exception e) { |  | ||||||
| 			System.out.println(e); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 		//initialize any keybinds, data, etc. | 		//initialize any keybinds, data, etc. | ||||||
| 		ModInfoProvider.getRegisteredMods().forEach(ModuleBase::init); | 		ModInfoProvider.getRegisteredMods().forEach(ModuleBase::init); | ||||||
|  |  | ||||||
|  | @ -32,13 +32,28 @@ public class PModuleConfigEntry extends ElementListWidget.Entry<PModuleConfigEnt | ||||||
| 	 */ | 	 */ | ||||||
| 	protected final Text displayText; | 	protected final Text displayText; | ||||||
| 
 | 
 | ||||||
| 	private PModuleConfigPane parent; | 	/** | ||||||
|  | 	 * The Parent. | ||||||
|  | 	 */ | ||||||
|  | 	private final PModuleConfigPane parent; | ||||||
| 
 | 
 | ||||||
| 	private List<Element> elements = new ArrayList<>(); | 	/** | ||||||
|  | 	 * The Elements. | ||||||
|  | 	 */ | ||||||
|  | 	private final List<Element> elements = new ArrayList<>(); | ||||||
| 
 | 
 | ||||||
| 	private String trueValue; | 	/** | ||||||
| 	private String falseValue; | 	 * The True value. | ||||||
|  | 	 */ | ||||||
|  | 	private final String trueValue; | ||||||
|  | 	/** | ||||||
|  | 	 * The False value. | ||||||
|  | 	 */ | ||||||
|  | 	private final String falseValue; | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * The Selected. | ||||||
|  | 	 */ | ||||||
| 	private Element selected; | 	private Element selected; | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -46,6 +61,7 @@ public class PModuleConfigEntry extends ElementListWidget.Entry<PModuleConfigEnt | ||||||
| 	 * | 	 * | ||||||
| 	 * @param option the option | 	 * @param option the option | ||||||
| 	 * @param text   the text | 	 * @param text   the text | ||||||
|  | 	 * @param parent the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public PModuleConfigEntry(ConfigurationOption option, Text text, PModuleConfigPane parent) { | 	public PModuleConfigEntry(ConfigurationOption option, Text text, PModuleConfigPane parent) { | ||||||
| 		this.option = option; | 		this.option = option; | ||||||
|  | @ -55,6 +71,15 @@ public class PModuleConfigEntry extends ElementListWidget.Entry<PModuleConfigEnt | ||||||
| 		this.falseValue = "No"; | 		this.falseValue = "No"; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Instantiates a new P module config entry. | ||||||
|  | 	 * | ||||||
|  | 	 * @param option     the option | ||||||
|  | 	 * @param text       the text | ||||||
|  | 	 * @param parent     the parent | ||||||
|  | 	 * @param trueValue  the true value | ||||||
|  | 	 * @param falseValue the false value | ||||||
|  | 	 */ | ||||||
| 	public PModuleConfigEntry(ConfigurationOption option, Text text, PModuleConfigPane parent, String trueValue, String falseValue) { | 	public PModuleConfigEntry(ConfigurationOption option, Text text, PModuleConfigPane parent, String trueValue, String falseValue) { | ||||||
| 		this.option = option; | 		this.option = option; | ||||||
| 		this.displayText = text; | 		this.displayText = text; | ||||||
|  | @ -147,9 +172,7 @@ public class PModuleConfigEntry extends ElementListWidget.Entry<PModuleConfigEnt | ||||||
| 					ButtonWidget bindButton = new ButtonWidget(x, y + (int)(fontHeight * 2.5), | 					ButtonWidget bindButton = new ButtonWidget(x, y + (int)(fontHeight * 2.5), | ||||||
| 							entryWidth, | 							entryWidth, | ||||||
| 							fontHeight * 2, | 							fontHeight * 2, | ||||||
| 							new LiteralText(option.getStringValue().toUpperCase()), (button) -> { | 							new LiteralText(option.getStringValue().toUpperCase()), (button) -> button.setMessage(new LiteralText("Press any key..."))) { | ||||||
| 						button.setMessage(new LiteralText("Press any key...")); |  | ||||||
| 					}) { |  | ||||||
| 						@Override | 						@Override | ||||||
| 						public boolean keyPressed(int keyCode, int scanCode, int modifiers) { | 						public boolean keyPressed(int keyCode, int scanCode, int modifiers) { | ||||||
| 							if (this.active && this.visible) { | 							if (this.active && this.visible) { | ||||||
|  |  | ||||||
|  | @ -22,6 +22,9 @@ public class PModuleConfigPane extends ElementListWidget<PModuleConfigEntry> { | ||||||
| 	 */ | 	 */ | ||||||
| 	private POptionEntry lastSelected; | 	private POptionEntry lastSelected; | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * The Selected config entry. | ||||||
|  | 	 */ | ||||||
| 	private PModuleConfigEntry selectedConfigEntry; | 	private PModuleConfigEntry selectedConfigEntry; | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -82,8 +85,6 @@ public class PModuleConfigPane extends ElementListWidget<PModuleConfigEntry> { | ||||||
| 				GlStateManager.DstFactor.ONE_MINUS_DST_ALPHA, | 				GlStateManager.DstFactor.ONE_MINUS_DST_ALPHA, | ||||||
| 				GlStateManager.SrcFactor.ZERO, | 				GlStateManager.SrcFactor.ZERO, | ||||||
| 				GlStateManager.DstFactor.ONE); | 				GlStateManager.DstFactor.ONE); | ||||||
| 		RenderSystem.disableAlphaTest(); |  | ||||||
| 		RenderSystem.shadeModel(7425); |  | ||||||
| 		RenderSystem.disableTexture(); | 		RenderSystem.disableTexture(); | ||||||
| 
 | 
 | ||||||
| 		// darken config pane area | 		// darken config pane area | ||||||
|  | @ -111,8 +112,6 @@ public class PModuleConfigPane extends ElementListWidget<PModuleConfigEntry> { | ||||||
| 		this.renderList(matrices, rl, sc, mouseX, mouseY, delta); | 		this.renderList(matrices, rl, sc, mouseX, mouseY, delta); | ||||||
| 
 | 
 | ||||||
| 		RenderSystem.enableTexture(); | 		RenderSystem.enableTexture(); | ||||||
| 		RenderSystem.shadeModel(7424); |  | ||||||
| 		RenderSystem.enableAlphaTest(); |  | ||||||
| 		RenderSystem.disableBlend(); | 		RenderSystem.disableBlend(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -19,6 +19,7 @@ import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| /** | /** | ||||||
|  * The type P module configuration widget. |  * The type P module configuration widget. | ||||||
|  */ |  */ | ||||||
|  | @SuppressWarnings("deprecation") | ||||||
| public class PModuleConfigurationWidget extends AlwaysSelectedEntryListWidget<POptionEntry> { | public class PModuleConfigurationWidget extends AlwaysSelectedEntryListWidget<POptionEntry> { | ||||||
| 	/** | 	/** | ||||||
| 	 * The Parent. | 	 * The Parent. | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| /** | /** | ||||||
|  * The type P option entry. |  * The type P option entry. | ||||||
|  */ |  */ | ||||||
|  | @SuppressWarnings("deprecation") | ||||||
| public class POptionEntry extends AlwaysSelectedEntryListWidget.Entry<POptionEntry> { | public class POptionEntry extends AlwaysSelectedEntryListWidget.Entry<POptionEntry> { | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -56,7 +57,7 @@ public class POptionEntry extends AlwaysSelectedEntryListWidget.Entry<POptionEnt | ||||||
| 			nameString = StringVisitable.concat(font.trimToWidth(nameString, maxNameWidth - font.getWidth(ellipse)), ellipse); | 			nameString = StringVisitable.concat(font.trimToWidth(nameString, maxNameWidth - font.getWidth(ellipse)), ellipse); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		font.draw(matrices, Language.getInstance().reorder(nameString), x + 32 + 3, y + (entryHeight / 2), 0xFFFFFF); | 		font.draw(matrices, Language.getInstance().reorder(nameString), x + 32 + 3, y + ((float)entryHeight / 2), 0xFFFFFF); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
|  | @ -88,6 +89,7 @@ public class POptionEntry extends AlwaysSelectedEntryListWidget.Entry<POptionEnt | ||||||
| 	 * | 	 * | ||||||
| 	 * @return the x offset | 	 * @return the x offset | ||||||
| 	 */ | 	 */ | ||||||
|  | 	@SuppressWarnings("SameReturnValue") | ||||||
| 	public int getXOffset() { | 	public int getXOffset() { | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -14,8 +14,9 @@ import net.minecraft.client.render.BufferBuilder; | ||||||
| import net.minecraft.client.render.Tessellator; | import net.minecraft.client.render.Tessellator; | ||||||
| import net.minecraft.client.render.VertexFormats; | import net.minecraft.client.render.VertexFormats; | ||||||
| import net.minecraft.client.util.math.MatrixStack; | import net.minecraft.client.util.math.MatrixStack; | ||||||
| import net.minecraft.text.*; | import net.minecraft.text.StringVisitable; | ||||||
| import pm.j4.kerosene.KeroseneMod; | import net.minecraft.text.Text; | ||||||
|  | import net.minecraft.text.TranslatableText; | ||||||
| import pm.j4.kerosene.util.config.ConfigManager; | import pm.j4.kerosene.util.config.ConfigManager; | ||||||
| import pm.j4.kerosene.util.data.ModInfoProvider; | import pm.j4.kerosene.util.data.ModInfoProvider; | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
|  | @ -99,13 +100,11 @@ public class POptionsScreen extends Screen { | ||||||
| 				this); | 				this); | ||||||
| 		this.configPane.setLeftPos(paneWidth); | 		this.configPane.setLeftPos(paneWidth); | ||||||
| 		this.children.add(this.configPane); | 		this.children.add(this.configPane); | ||||||
| 		List<ModuleBase> configurableModules = new ArrayList<>(); | 		List<ModuleBase> configurableModules = ModInfoProvider.getRegisteredMods() | ||||||
| 		configurableModules.addAll(ModInfoProvider.getRegisteredMods() | 				.stream().filter(ModuleBase::configurable).collect(Collectors.toList()); | ||||||
| 				.stream().filter(ModuleBase::configurable) |  | ||||||
| 				.collect(Collectors.toList())); |  | ||||||
| 		configurableModules.forEach(module -> this.modules.addEntry(new POptionEntry(module, this.modules))); | 		configurableModules.forEach(module -> this.modules.addEntry(new POptionEntry(module, this.modules))); | ||||||
| 		this.addButton(new ButtonWidget(this.width / 2 - 75, this.height - 30, 150, 20, ScreenTexts.DONE, (buttonWidget) -> { | 		this.addButton(new ButtonWidget(this.width / 2 - 75, this.height - 30, 150, 20, ScreenTexts.DONE, (buttonWidget) -> { | ||||||
| 			ConfigManager.saveAllModules(); | 			ConfigManager.saveEverything(); | ||||||
| 			assert this.client != null; | 			assert this.client != null; | ||||||
| 			this.client.openScreen(this.previousScreen); | 			this.client.openScreen(this.previousScreen); | ||||||
| 		})); | 		})); | ||||||
|  | @ -137,7 +136,7 @@ public class POptionsScreen extends Screen { | ||||||
| 				trimmedName = StringVisitable.concat(textRenderer.trimToWidth(name, maxNameWidth - textRenderer.getWidth(ellipsis)), ellipsis); | 				trimmedName = StringVisitable.concat(textRenderer.trimToWidth(name, maxNameWidth - textRenderer.getWidth(ellipsis)), ellipsis); | ||||||
| 			} | 			} | ||||||
| 			if (mouseX > x + offset && mouseY > paneY + 1 && mouseY < paneY + 1 + textRenderer.fontHeight && mouseX < x + offset + textRenderer.getWidth(trimmedName)) { | 			if (mouseX > x + offset && mouseY > paneY + 1 && mouseY < paneY + 1 + textRenderer.fontHeight && mouseX < x + offset + textRenderer.getWidth(trimmedName)) { | ||||||
| 				//TODO tooltop | 				//TODO tooltip | ||||||
| 				//selected.getModName() | 				//selected.getModName() | ||||||
| 			} | 			} | ||||||
| 			textRenderer.draw(matrices, selected.getModName(), x + offset, paneY + 2 + lineSpacing, 0x808080); | 			textRenderer.draw(matrices, selected.getModName(), x + offset, paneY + 2 + lineSpacing, 0x808080); | ||||||
|  |  | ||||||
|  | @ -5,7 +5,6 @@ import net.minecraft.client.options.KeyBinding; | ||||||
| import net.minecraft.client.util.InputUtil; | import net.minecraft.client.util.InputUtil; | ||||||
| import net.minecraft.text.TranslatableText; | import net.minecraft.text.TranslatableText; | ||||||
| import org.lwjgl.glfw.GLFW; | import org.lwjgl.glfw.GLFW; | ||||||
| import pm.j4.kerosene.KeroseneMod; |  | ||||||
| import pm.j4.kerosene.gui.PModuleConfigEntry; | import pm.j4.kerosene.gui.PModuleConfigEntry; | ||||||
| import pm.j4.kerosene.gui.PModuleConfigPane; | import pm.j4.kerosene.gui.PModuleConfigPane; | ||||||
| import pm.j4.kerosene.util.config.ConfigHolder; | import pm.j4.kerosene.util.config.ConfigHolder; | ||||||
|  | @ -109,9 +108,7 @@ public class BindingManager extends ModuleBase { | ||||||
| 	 * @param b the b | 	 * @param b the b | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void removeBind(KeyBinding b) { | 	public static void removeBind(KeyBinding b) { | ||||||
| 		if(registeredBinds.contains(b)) { | 		registeredBinds.remove(b); | ||||||
| 			registeredBinds.remove(b); |  | ||||||
| 		} |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  |  | ||||||
|  | @ -2,7 +2,6 @@ package pm.j4.kerosene.util.config; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import pm.j4.kerosene.KeroseneMod; |  | ||||||
| import pm.j4.kerosene.util.data.ModInfoProvider; | import pm.j4.kerosene.util.data.ModInfoProvider; | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ package pm.j4.kerosene.util.config; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| import pm.j4.kerosene.KeroseneMod; |  | ||||||
| import pm.j4.kerosene.util.data.ModInfoProvider; | import pm.j4.kerosene.util.data.ModInfoProvider; | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,11 +3,15 @@ package pm.j4.kerosene.util.config; | ||||||
| import com.google.common.reflect.TypeToken; | import com.google.common.reflect.TypeToken; | ||||||
| import com.google.gson.*; | import com.google.gson.*; | ||||||
| import java.io.*; | import java.io.*; | ||||||
|  | import java.lang.annotation.Annotation; | ||||||
|  | import java.lang.reflect.AnnotatedElement; | ||||||
| import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  | import net.fabricmc.api.ModInitializer; | ||||||
| import net.fabricmc.loader.api.FabricLoader; | import net.fabricmc.loader.api.FabricLoader; | ||||||
| import pm.j4.kerosene.KeroseneMod; | import pm.j4.kerosene.modules.ExampleModule; | ||||||
| import pm.j4.kerosene.modules.bindings.BindingInfo; | 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.ModInfoProvider; | ||||||
| import pm.j4.kerosene.util.data.ModuleConfig; | import pm.j4.kerosene.util.data.ModuleConfig; | ||||||
| import pm.j4.kerosene.util.data.OptionSerializiable; | import pm.j4.kerosene.util.data.OptionSerializiable; | ||||||
|  | @ -27,7 +31,7 @@ public class ConfigManager { | ||||||
| 	/** | 	/** | ||||||
| 	 * The constant config. | 	 * The constant config. | ||||||
| 	 */ | 	 */ | ||||||
| 	private static Map<String, ConfigHolder> configs = new HashMap<>(); | 	private static final Map<String, ConfigHolder> configs = new HashMap<>(); | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Prepare config file. | 	 * Prepare config file. | ||||||
|  | @ -37,18 +41,36 @@ public class ConfigManager { | ||||||
| 	 * @return the file | 	 * @return the file | ||||||
| 	 */ | 	 */ | ||||||
| 	private static File prepareConfigFile(String path, String filename) { | 	private static File prepareConfigFile(String path, String filename) { | ||||||
| 		if (path != "") { | 		if (!Objects.equals(path, "")) { | ||||||
| 			File directory = new File(FabricLoader.getInstance().getConfigDir().toString(), path); | 			File directory = new File(FabricLoader.getInstance().getConfigDir().toString(), path); | ||||||
| 			if (!directory.exists()) directory.mkdir(); | 			if (!directory.exists()) //noinspection ResultOfMethodCallIgnored | ||||||
|  | 				directory.mkdir(); | ||||||
| 		} | 		} | ||||||
| 		return new File(FabricLoader.getInstance().getConfigDir().toString(), path + filename); | 		return new File(FabricLoader.getInstance().getConfigDir().toString(), path + filename); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Init config. | 	 * Init config. | ||||||
|  | 	 * | ||||||
|  | 	 * @param moduleName the module name | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void initConfig(String moduleName) { | 	public static void initConfig(String moduleName, Class parent) { | ||||||
|  | 		try { | ||||||
|  | 			Annotation moduleAnnotation = parent.getAnnotation(Modules.class); | ||||||
|  | 			assert moduleAnnotation != null; | ||||||
|  | 			Module[] modules = ((Modules)moduleAnnotation).value(); | ||||||
|  | 			System.out.println(modules); | ||||||
|  | 			for (int i = 0; i < modules.length; i++) { | ||||||
|  | 				System.out.println(modules[i].value()); | ||||||
|  | 				ModInfoProvider.registerMod(modules[i].value()); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		catch (Exception e) { | ||||||
|  | 			System.out.println(e); | ||||||
|  | 		} | ||||||
|  | 		System.out.println("init " + moduleName); | ||||||
| 		if (configs.containsKey(moduleName)) { | 		if (configs.containsKey(moduleName)) { | ||||||
|  | 			System.out.println("contains " + configs.get(moduleName)); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -56,22 +78,32 @@ public class ConfigManager { | ||||||
| 		config.globalConfig = new DefaultConfig(); | 		config.globalConfig = new DefaultConfig(); | ||||||
| 		config.serverConfigs = new HashMap<>(); | 		config.serverConfigs = new HashMap<>(); | ||||||
| 
 | 
 | ||||||
|  | 		System.out.println("load cfg"); | ||||||
| 		config = load(moduleName + "/", moduleName +".json", ConfigHolder.class); | 		config = load(moduleName + "/", moduleName +".json", ConfigHolder.class); | ||||||
| 		initModules(moduleName); | 		initModules(); | ||||||
|  | 		System.out.println("put cfg"); | ||||||
|  | 		configs.put(moduleName, config); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Init modules. | 	 * Init modules. | ||||||
|  | 	 * | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void initModules(String moduleName) { | 	public static void initModules() { | ||||||
| 		ModInfoProvider.getRegisteredMods().forEach(module -> { | 		ModInfoProvider.getRegisteredMods().forEach(module -> { | ||||||
| 			ModuleConfig options = load(moduleName + "/modules/", module.getModuleName() + ".json", ModuleConfig.class); | 			System.out.println("module" + module.getModuleName() + " initialized " + module.initialized); | ||||||
| 			if (options != null && options.options != null) { | 			if (!module.initialized) { | ||||||
| 				options.options.forEach((key, option) -> { | 				ModuleConfig options = load(module.getParent() + "/modules/", module.getModuleName() + ".json", ModuleConfig.class); | ||||||
| 					if (module.hasOption(option.key)) { | 				System.out.println("initialize " + module.getModuleName()); | ||||||
| 						module.setConfigOption(option.key, option.value); | 				if (options != null && options.options != null) { | ||||||
| 					} | 					options.options.forEach((key, option) -> { | ||||||
| 				}); | 						if (module.hasOption(option.key)) { | ||||||
|  | 							System.out.println("setting " + option.key + " to " + option.value.getAsString()); | ||||||
|  | 							module.setConfigOption(option.key, option.value); | ||||||
|  | 						} | ||||||
|  | 					}); | ||||||
|  | 				} | ||||||
|  | 				module.initialized = true; | ||||||
| 			} | 			} | ||||||
| 		}); | 		}); | ||||||
| 	} | 	} | ||||||
|  | @ -147,7 +179,8 @@ public class ConfigManager { | ||||||
| 	/** | 	/** | ||||||
| 	 * Save module. | 	 * Save module. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param b the b | 	 * @param modName the mod name | ||||||
|  | 	 * @param b       the b | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void saveModule(String modName, ModuleBase b) { | 	public static void saveModule(String modName, ModuleBase b) { | ||||||
| 		ModuleConfig c = new ModuleConfig(); | 		ModuleConfig c = new ModuleConfig(); | ||||||
|  | @ -160,13 +193,13 @@ public class ConfigManager { | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void saveAllModules() { | 	public static void saveAllModules() { | ||||||
| 		List<ModuleBase> mods = ModInfoProvider.getRegisteredMods(); | 		List<ModuleBase> mods = ModInfoProvider.getRegisteredMods(); | ||||||
| 		mods.forEach((module) -> { | 		mods.forEach((module) -> ConfigManager.saveModule(module.getParent(), module)); | ||||||
| 			ConfigManager.saveModule(module.getParent(), module); |  | ||||||
| 		}); |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Save global config. | 	 * Save global config. | ||||||
|  | 	 * | ||||||
|  | 	 * @param modName the mod name | ||||||
| 	 */ | 	 */ | ||||||
| 	public static void saveGlobalConfig(String modName) { | 	public static void saveGlobalConfig(String modName) { | ||||||
| 		if(configs.containsKey(modName)) { | 		if(configs.containsKey(modName)) { | ||||||
|  | @ -174,9 +207,17 @@ public class ConfigManager { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public static void saveEverything() { | ||||||
|  | 		configs.keySet().forEach(key -> { | ||||||
|  | 			saveGlobalConfig(key); | ||||||
|  | 		}); | ||||||
|  | 		saveAllModules(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Gets config. | 	 * Gets config. | ||||||
| 	 * | 	 * | ||||||
|  | 	 * @param modName the mod name | ||||||
| 	 * @return the config | 	 * @return the config | ||||||
| 	 */ | 	 */ | ||||||
| 	public static Optional<ConfigHolder> getConfig(String modName) { | 	public static Optional<ConfigHolder> getConfig(String modName) { | ||||||
|  | @ -190,6 +231,7 @@ public class ConfigManager { | ||||||
| /** | /** | ||||||
|  * The type Serialization helper. |  * The type Serialization helper. | ||||||
|  */ |  */ | ||||||
|  | @SuppressWarnings("UnstableApiUsage") | ||||||
| class SerializationHelper { | class SerializationHelper { | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  |  | ||||||
|  | @ -1,7 +1,5 @@ | ||||||
| package pm.j4.kerosene.util.config; | package pm.j4.kerosene.util.config; | ||||||
| 
 | 
 | ||||||
| import java.util.Collections; |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * The type Default config. |  * The type Default config. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | @ -5,7 +5,6 @@ import java.util.concurrent.atomic.AtomicBoolean; | ||||||
| import java.util.concurrent.atomic.AtomicReference; | import java.util.concurrent.atomic.AtomicReference; | ||||||
| import net.minecraft.client.options.KeyBinding; | import net.minecraft.client.options.KeyBinding; | ||||||
| import net.minecraft.client.util.InputUtil; | import net.minecraft.client.util.InputUtil; | ||||||
| import pm.j4.kerosene.KeroseneMod; |  | ||||||
| import pm.j4.kerosene.modules.bindings.BindingInfo; | import pm.j4.kerosene.modules.bindings.BindingInfo; | ||||||
| import pm.j4.kerosene.modules.bindings.BindingManager; | import pm.j4.kerosene.modules.bindings.BindingManager; | ||||||
| import pm.j4.kerosene.util.data.ModInfoProvider; | import pm.j4.kerosene.util.data.ModInfoProvider; | ||||||
|  | @ -140,9 +139,7 @@ public class GlobalConfig extends Config { | ||||||
| 	public static Map<String, OptionSerializiable> serializeModuleConfiguration(ModuleBase module) { | 	public static Map<String, OptionSerializiable> serializeModuleConfiguration(ModuleBase module) { | ||||||
| 		Map<String, OptionSerializiable> opts = new HashMap<>(); | 		Map<String, OptionSerializiable> opts = new HashMap<>(); | ||||||
| 		Map<String, ConfigurationOption> configuration = module.getModuleConfiguration(); | 		Map<String, ConfigurationOption> configuration = module.getModuleConfiguration(); | ||||||
| 		configuration.forEach((key, value) -> { | 		configuration.forEach((key, value) -> opts.put(key, new OptionSerializiable(key, value.toJson()))); | ||||||
| 			opts.put(key, new OptionSerializiable(key, value.toJson())); |  | ||||||
| 		}); |  | ||||||
| 		return opts; | 		return opts; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								src/main/java/pm/j4/kerosene/util/config/Module.java
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/main/java/pm/j4/kerosene/util/config/Module.java
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | ||||||
|  | package pm.j4.kerosene.util.config; | ||||||
|  | 
 | ||||||
|  | import java.lang.annotation.Repeatable; | ||||||
|  | import java.lang.annotation.Retention; | ||||||
|  | import java.lang.annotation.RetentionPolicy; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
|  | 
 | ||||||
|  | @Retention(RetentionPolicy.RUNTIME) | ||||||
|  | @Repeatable(Modules.class) | ||||||
|  | public @interface Module { | ||||||
|  | 	public Class<? extends ModuleBase> value(); | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								src/main/java/pm/j4/kerosene/util/config/Modules.java
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main/java/pm/j4/kerosene/util/config/Modules.java
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | package pm.j4.kerosene.util.config; | ||||||
|  | 
 | ||||||
|  | import java.lang.annotation.Retention; | ||||||
|  | import java.lang.annotation.RetentionPolicy; | ||||||
|  | 
 | ||||||
|  | @Retention(RetentionPolicy.RUNTIME) | ||||||
|  | public @interface Modules { | ||||||
|  | 	Module[] value(); | ||||||
|  | } | ||||||
|  | @ -4,7 +4,6 @@ import java.util.ArrayList; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import pm.j4.kerosene.KeroseneMod; |  | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -26,8 +25,7 @@ public class Category { | ||||||
| 				categoryMap.put(module.getCategory(), m); | 				categoryMap.put(module.getCategory(), m); | ||||||
| 			} else { | 			} else { | ||||||
| 				List<ModuleBase> m = categoryMap.get(module.getCategory()); | 				List<ModuleBase> m = categoryMap.get(module.getCategory()); | ||||||
| 				List<ModuleBase> nm = new ArrayList<>(); | 				List<ModuleBase> nm = new ArrayList<>(m); | ||||||
| 				nm.addAll(m); |  | ||||||
| 				nm.add(module); | 				nm.add(module); | ||||||
| 				categoryMap.replace(module.getCategory(), nm); | 				categoryMap.replace(module.getCategory(), nm); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -3,18 +3,15 @@ package pm.j4.kerosene.util.data; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
| import net.fabricmc.loader.api.metadata.ModMetadata; |  | ||||||
| import net.minecraft.client.MinecraftClient; | import net.minecraft.client.MinecraftClient; | ||||||
| import net.minecraft.client.options.KeyBinding; |  | ||||||
| import net.minecraft.server.integrated.IntegratedServer; | import net.minecraft.server.integrated.IntegratedServer; | ||||||
| import pm.j4.kerosene.util.module.ModuleBase; | import pm.j4.kerosene.util.module.ModuleBase; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * The type Mod info provider. | ||||||
|  |  */ | ||||||
| //TODO refactor into multiple data holders | //TODO refactor into multiple data holders | ||||||
| public class ModInfoProvider { | public class ModInfoProvider { | ||||||
| 	/** |  | ||||||
| 	 * The Mod data. |  | ||||||
| 	 */ |  | ||||||
| 	public static ModMetadata modData = null; |  | ||||||
| 	/** | 	/** | ||||||
| 	 * The constant client. | 	 * The constant client. | ||||||
| 	 */ | 	 */ | ||||||
|  | @ -22,8 +19,15 @@ public class ModInfoProvider { | ||||||
| 	/** | 	/** | ||||||
| 	 * The constant activeMods. | 	 * The constant activeMods. | ||||||
| 	 */ | 	 */ | ||||||
| 	private static List<ModuleBase> registeredMods = new ArrayList<>(); | 	private static final List<ModuleBase> registeredMods = new ArrayList<>(); | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Register mod. | ||||||
|  | 	 * | ||||||
|  | 	 * @param mod the mod | ||||||
|  | 	 * @throws IllegalAccessException the illegal access exception | ||||||
|  | 	 * @throws InstantiationException the instantiation exception | ||||||
|  | 	 */ | ||||||
| 	public static void registerMod(Class<? extends ModuleBase> mod) throws IllegalAccessException, InstantiationException { | 	public static void registerMod(Class<? extends ModuleBase> mod) throws IllegalAccessException, InstantiationException { | ||||||
| 		ModuleBase base = mod.newInstance(); | 		ModuleBase base = mod.newInstance(); | ||||||
| 		if(!registeredMods.contains(base)) { | 		if(!registeredMods.contains(base)) { | ||||||
|  |  | ||||||
|  | @ -19,6 +19,7 @@ public abstract class ModuleBase { | ||||||
| 	 * Instantiates a new Module base. | 	 * Instantiates a new Module base. | ||||||
| 	 * Parameters should be constant across restarts. | 	 * Parameters should be constant across restarts. | ||||||
| 	 * | 	 * | ||||||
|  | 	 * @param parent        the parent | ||||||
| 	 * @param name          The name of the module | 	 * @param name          The name of the module | ||||||
| 	 * @param category      the category | 	 * @param category      the category | ||||||
| 	 * @param activatable   Whether a module can be activated, or if it will remain in the state it was upon startup | 	 * @param activatable   Whether a module can be activated, or if it will remain in the state it was upon startup | ||||||
|  | @ -60,11 +61,23 @@ public abstract class ModuleBase { | ||||||
| 		config.ifPresent(configHolder -> configHolder.toggleModule(this.moduleName)); | 		config.ifPresent(configHolder -> configHolder.toggleModule(this.moduleName)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public boolean initialized; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * The Parent. | ||||||
|  | 	 */ | ||||||
| 	private final String parent; | 	private final String parent; | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Gets parent. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the parent | ||||||
|  | 	 */ | ||||||
| 	public String getParent() { | 	public String getParent() { | ||||||
| 		return this.parent; | 		return this.parent; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * The Module's name. | 	 * The Module's name. | ||||||
| 	 */ | 	 */ | ||||||
|  | @ -171,16 +184,19 @@ public abstract class ModuleBase { | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key   the key | 	 * @param key   the key | ||||||
| 	 * @param value the value | 	 * @param value the value | ||||||
| 	 * @return whether the operation was successful. |  | ||||||
| 	 */ | 	 */ | ||||||
| 	public boolean setConfigOption(String key, JsonElement value) { | 	public void setConfigOption(String key, JsonElement value) { | ||||||
| 		if (moduleOptions.containsKey(key)) { | 		if (moduleOptions.containsKey(key)) { | ||||||
| 			moduleOptions.get(key).fromJson(value); | 			moduleOptions.get(key).fromJson(value); | ||||||
| 			return true; |  | ||||||
| 		} | 		} | ||||||
| 		return false; |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Update config option. | ||||||
|  | 	 * | ||||||
|  | 	 * @param key    the key | ||||||
|  | 	 * @param option the option | ||||||
|  | 	 */ | ||||||
| 	public void updateConfigOption(String key, ConfigurationOption option) { | 	public void updateConfigOption(String key, ConfigurationOption option) { | ||||||
| 		System.out.println("update config option" + key + option.getStringValue()); | 		System.out.println("update config option" + key + option.getStringValue()); | ||||||
| 		System.out.println(moduleOptions.keySet()); | 		System.out.println(moduleOptions.keySet()); | ||||||
|  | @ -209,12 +225,15 @@ public abstract class ModuleBase { | ||||||
| 		return new ArrayList<>(); | 		return new ArrayList<>(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Convert default config map. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the map | ||||||
|  | 	 */ | ||||||
| 	private Map<String, ConfigurationOption> convertDefaultConfig() { | 	private Map<String, ConfigurationOption> convertDefaultConfig() { | ||||||
| 		List<ConfigurationOption> options = this.getDefaultConfig(); | 		List<ConfigurationOption> options = this.getDefaultConfig(); | ||||||
| 		Map<String, ConfigurationOption> mapped = new HashMap<>(); | 		Map<String, ConfigurationOption> mapped = new HashMap<>(); | ||||||
| 		options.forEach((option) -> { | 		options.forEach((option) -> mapped.put(option.getConfigKey(), option)); | ||||||
| 			mapped.put(option.getConfigKey(), option); |  | ||||||
| 		}); |  | ||||||
| 		return mapped; | 		return mapped; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -234,6 +253,7 @@ public abstract class ModuleBase { | ||||||
| 	/** | 	/** | ||||||
| 	 * Gets config entries. | 	 * Gets config entries. | ||||||
| 	 * | 	 * | ||||||
|  | 	 * @param sourcePane the source pane | ||||||
| 	 * @return the config entries | 	 * @return the config entries | ||||||
| 	 */ | 	 */ | ||||||
| 	public List<PModuleConfigEntry> getConfigEntries(PModuleConfigPane sourcePane) { | 	public List<PModuleConfigEntry> getConfigEntries(PModuleConfigPane sourcePane) { | ||||||
|  |  | ||||||
|  | @ -16,16 +16,28 @@ public class BooleanOption extends ConfigurationOption { | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
|  | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public BooleanOption(String key, String description, ModuleBase parent) { | 	public BooleanOption(String key, String description, ModuleBase parent) { | ||||||
| 		super(key, description, parent); | 		super(key, description, parent); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Gets value. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the value | ||||||
|  | 	 */ | ||||||
| 	public boolean getValue() { | 	public boolean getValue() { | ||||||
| 		return value; | 		return value; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Sets value. | ||||||
|  | 	 * | ||||||
|  | 	 * @param value the value | ||||||
|  | 	 */ | ||||||
| 	public void setValue(boolean value) { this.value = value; } | 	public void setValue(boolean value) { this.value = value; } | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
|  |  | ||||||
|  | @ -11,19 +11,28 @@ public abstract class ConfigurationOption { | ||||||
| 	 * The Description. | 	 * The Description. | ||||||
| 	 */ | 	 */ | ||||||
| 	private final String description; | 	private final String description; | ||||||
|  | 	/** | ||||||
|  | 	 * The Key. | ||||||
|  | 	 */ | ||||||
| 	private final String key; | 	private final String key; | ||||||
|  | 	/** | ||||||
|  | 	 * The Parent. | ||||||
|  | 	 */ | ||||||
| 	private final ModuleBase parent; | 	private final ModuleBase parent; | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
|  | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
|  | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public ConfigurationOption(String key, String description, ModuleBase parent) { | 	public ConfigurationOption(String key, String description, ModuleBase parent) { | ||||||
| 		this.description = description; | 		this.description = description; | ||||||
| 		this.key = key; | 		this.key = key; | ||||||
| 		this.parent = parent; | 		this.parent = parent; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Gets description. | 	 * Gets description. | ||||||
| 	 * | 	 * | ||||||
|  | @ -32,7 +41,19 @@ public abstract class ConfigurationOption { | ||||||
| 	public final String getDescription() { | 	public final String getDescription() { | ||||||
| 		return this.description; | 		return this.description; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Gets config key. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the config key | ||||||
|  | 	 */ | ||||||
| 	public final String getConfigKey() { return key; } | 	public final String getConfigKey() { return key; } | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Gets parent. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the parent | ||||||
|  | 	 */ | ||||||
| 	public final ModuleBase getParent() { return parent; } | 	public final ModuleBase getParent() { return parent; } | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  |  | ||||||
|  | @ -16,9 +16,9 @@ public class IntegerOption extends ConfigurationOption { | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
| 	 * @param parent | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public IntegerOption(String key, String description, ModuleBase parent) { | 	public IntegerOption(String key, String description, ModuleBase parent) { | ||||||
| 		super(key, description, parent); | 		super(key, description, parent); | ||||||
|  |  | ||||||
|  | @ -24,14 +24,19 @@ public class KeybindOption extends ConfigurationOption { | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
| 	 * @param parent | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public KeybindOption(String key, String description, ModuleBase parent) { | 	public KeybindOption(String key, String description, ModuleBase parent) { | ||||||
| 		super(key, description, parent); | 		super(key, description, parent); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Gets translation key. | ||||||
|  | 	 * | ||||||
|  | 	 * @return the translation key | ||||||
|  | 	 */ | ||||||
| 	public String getTranslationKey() { | 	public String getTranslationKey() { | ||||||
| 		return value.getTranslationKey(); | 		return value.getTranslationKey(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -12,9 +12,9 @@ public class ListOption extends ConfigurationOption { | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
| 	 * @param parent | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public ListOption(String key, String description, ModuleBase parent) { | 	public ListOption(String key, String description, ModuleBase parent) { | ||||||
| 		super(key, description, parent); | 		super(key, description, parent); | ||||||
|  |  | ||||||
|  | @ -17,9 +17,9 @@ public class StringOption extends ConfigurationOption { | ||||||
| 	/** | 	/** | ||||||
| 	 * Instantiates a new Configuration option. | 	 * Instantiates a new Configuration option. | ||||||
| 	 * | 	 * | ||||||
| 	 * @param key | 	 * @param key         the key | ||||||
| 	 * @param description the description | 	 * @param description the description | ||||||
| 	 * @param parent | 	 * @param parent      the parent | ||||||
| 	 */ | 	 */ | ||||||
| 	public StringOption(String key, String description, ModuleBase parent) { | 	public StringOption(String key, String description, ModuleBase parent) { | ||||||
| 		super(key, description, parent); | 		super(key, description, parent); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue