From 3bff94cd2d92c1329f3de8ed048c6d8d9212681c Mon Sep 17 00:00:00 2001 From: OldSerpskiStalker Date: Tue, 17 Sep 2024 19:50:29 +0500 Subject: [PATCH] Implementation of the config manager --- .../DynamicSpawnControl.java | 12 ++++- .../technical/configs/ConfigManager.java | 24 +++++++++ .../technical/configs/IConfig.java | 13 +++++ .../technical/configs/SettingsLogFile.java | 54 +++++++++++++++++++ .../technical/customlibrary/Log.java | 6 ++- .../technical/proxy/ClientProxy.java | 6 +++ 6 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/ConfigManager.java create mode 100644 dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/IConfig.java create mode 100644 dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/SettingsLogFile.java diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/DynamicSpawnControl.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/DynamicSpawnControl.java index 61051a2..431aaf4 100644 --- a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/DynamicSpawnControl.java +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/DynamicSpawnControl.java @@ -11,6 +11,8 @@ import net.minecraftforge.fml.common.event.FMLServerStoppedEvent; import org.imesense.dynamicspawncontrol.debug.CheckDebugger; +import org.imesense.dynamicspawncontrol.technical.configs.IConfig; +import org.imesense.dynamicspawncontrol.technical.configs.SettingsLogFile; import org.imesense.dynamicspawncontrol.technical.customlibrary.Log; import org.imesense.dynamicspawncontrol.technical.proxy.IProxy; @@ -41,6 +43,11 @@ public class DynamicSpawnControl */ public static final String VERSION = "1.12.2-14.23.5.2860"; + /** + * + */ + public static final String NAME_DIRECTORY = "DynamicsSpawnControl"; + /** * Main class instance */ @@ -50,7 +57,7 @@ public class DynamicSpawnControl /** * */ - private static CheckDebugger checkDebugger; + static CheckDebugger checkDebugger; /** * @@ -94,7 +101,7 @@ public synchronized void preInit(FMLPreInitializationEvent event) checkDebugger = new CheckDebugger(); globalDirectory = event.getModConfigurationDirectory(); - Log.createLogFile(globalDirectory.getPath() + File.separator + "DynamicsSpawnControl"); + Log.createLogFile(globalDirectory.getPath() + File.separator + NAME_DIRECTORY); Log.writeDataToLogFile(Log.TypeLog[0], "Check debugger -> " + checkDebugger.IsRunDebugger); Proxy.preInit(event); @@ -150,5 +157,6 @@ public synchronized void serverLoad(FMLServerStartingEvent event) @EventHandler public synchronized void serverStopped(FMLServerStoppedEvent event) { + Log.closeExecutor(); } } diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/ConfigManager.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/ConfigManager.java new file mode 100644 index 0000000..8236531 --- /dev/null +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/ConfigManager.java @@ -0,0 +1,24 @@ +package org.imesense.dynamicspawncontrol.technical.configs; + +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; + +import java.util.ArrayList; +import java.util.List; + +public class ConfigManager +{ + private static final List settingList = new ArrayList<>(); + + static + { + settingList.add(new SettingsLogFile()); + } + + public static void init(FMLPreInitializationEvent event) + { + for (IConfig config : settingList) + { + config.init(event, config.getClass().getSimpleName()); + } + } +} diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/IConfig.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/IConfig.java new file mode 100644 index 0000000..4d84055 --- /dev/null +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/IConfig.java @@ -0,0 +1,13 @@ +package org.imesense.dynamicspawncontrol.technical.configs; + +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; + +public interface IConfig +{ + void init(FMLPreInitializationEvent event, String nameClass); + + void readProperties(Configuration configuration); + + void read(); +} diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/SettingsLogFile.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/SettingsLogFile.java new file mode 100644 index 0000000..47c4208 --- /dev/null +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/configs/SettingsLogFile.java @@ -0,0 +1,54 @@ +package org.imesense.dynamicspawncontrol.technical.configs; + +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import org.imesense.dynamicspawncontrol.DynamicSpawnControl; +import org.imesense.dynamicspawncontrol.technical.customlibrary.Log; +import org.imesense.dynamicspawncontrol.technical.proxy.ClientProxy; + +import java.io.File; + +public final class SettingsLogFile implements IConfig +{ + public static int LogMaxLines = 32767; + + @Override + public void init(FMLPreInitializationEvent event, String nameClass) + { + Log.writeDataToLogFile(Log.TypeLog[0], nameClass); + + ClientProxy.ConfigLogFile = new Configuration(new File(DynamicSpawnControl.getGlobalPathToConfigs().getPath() + + File.separator + DynamicSpawnControl.NAME_DIRECTORY + File.separator + "configs", "log.ltx")); + + read(); + } + + @Override + public void readProperties(Configuration configuration) + { + LogMaxLines = + configuration.getInt + ("Log maximum lines", "log_file_settings", LogMaxLines, 5, 32767, + "The parameter is responsible for the maximum number of lines in the log"); + } + + @Override + public void read() + { + Configuration configuration = ClientProxy.ConfigLogFile; + + try + { + configuration.load(); + + readProperties(configuration); + } + finally + { + if (configuration.hasChanged()) + { + configuration.save(); + } + } + } +} diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/customlibrary/Log.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/customlibrary/Log.java index fa45aae..397fdfb 100644 --- a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/customlibrary/Log.java +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/customlibrary/Log.java @@ -1,5 +1,7 @@ package org.imesense.dynamicspawncontrol.technical.customlibrary; +import org.imesense.dynamicspawncontrol.technical.configs.SettingsLogFile; + import javax.annotation.Nonnull; import java.io.*; import java.text.SimpleDateFormat; @@ -46,7 +48,7 @@ public static void createLogFile(String path) writer.write("***********************************************"); writer.write("\n** Log file created: " + currentDate); - writer.write("\n** DynamicSpawnControl. Authors: OldSerpskiStalker, acidicMercury8"); + writer.write("\n** DynamicsSpawnControl. Authors: OldSerpskiStalker, acidicMercury8"); writer.write("\n***********************************************"); writer.close(); @@ -123,7 +125,7 @@ public static void writeDataToLogFile(@Nonnull String typeInfo, String data) writer.write("\n" + typeInfo + data); writer.close(); - cleanFile(logFile, 2000/*INFConfigLog._logMaxLines*/); + cleanFile(logFile, SettingsLogFile.LogMaxLines); System.out.println("The data has been successfully written to the log file: " + logFile.getAbsolutePath()); } catch (IOException e) diff --git a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/proxy/ClientProxy.java b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/proxy/ClientProxy.java index c61d752..b6ea48a 100644 --- a/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/proxy/ClientProxy.java +++ b/dynamicspawncontrol-1.12.2/src/main/java/org/imesense/dynamicspawncontrol/technical/proxy/ClientProxy.java @@ -7,15 +7,19 @@ import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; +import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import org.imesense.dynamicspawncontrol.technical.configs.ConfigManager; /** * Client sided proxy */ public class ClientProxy implements IProxy { + public static Configuration ConfigLogFile; + /** * Preinitialize modification * @@ -24,6 +28,7 @@ public class ClientProxy implements IProxy @Override public void preInit(FMLPreInitializationEvent event) { + ConfigManager.init(event); } /** @@ -44,6 +49,7 @@ public void init(FMLInitializationEvent event) @Override public void postInit(FMLPostInitializationEvent event) { + ConfigLogFile.save(); } /**