diff --git a/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java b/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java deleted file mode 100644 index c633f3d7f..000000000 --- a/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.config; - -import com.google.common.base.StandardSystemProperty; -import de.bixilon.minosoft.util.OSUtil; - -import java.io.File; - -public class StaticConfiguration { - public static final boolean DEBUG_MODE = true; // if true, additional checks will be made to validate data, ... Decreases performance - public static final boolean BIOME_DEBUG_MODE = false; // colors all biomes according to the biome hashCode - public static final boolean DEBUG_SLOW_LOADING = false; // if true, many Thread.sleep will be executed and the start will be delayed (by a lot) - public static final boolean SHOW_LOG_MESSAGES_IN_CHAT = true; // prints all console messages in the chat box - public static final boolean REPLACE_SYSTEM_OUT_STREAMS = true; - public static String CONFIG_FILENAME = "minosoft.json"; // Filename of minosoft's base configuration (located in AppData/Minosoft/config) - public static boolean SKIP_MOJANG_AUTHENTICATION; // disables all connections to mojang - public static boolean COLORED_LOG = true; // the log should be colored with ANSI (does not affect base components) - public static boolean LOG_RELATIVE_TIME; // prefix all log messages with the relative start time in milliseconds instead of the formatted time - public static boolean VERBOSE_ENTITY_META_DATA_LOGGING; // if true, the entity meta data is getting serialized - public static boolean HEADLESS_MODE; // if true, no gui, rendering or whatever will be loaded or shown - public static String HOME_DIRECTORY; - public static final String TEMPORARY_FOLDER = System.getProperty("java.io.tmpdir", HOME_DIRECTORY + "/tmp/") + "/"; - - static { - // Sets Config.homeDir to the correct folder per OS - String homeDir; - homeDir = System.getProperty(StandardSystemProperty.USER_HOME.key()); - if (!homeDir.endsWith(File.separator)) { - homeDir += "/"; - } - homeDir += switch (OSUtil.OS) { - case LINUX -> ".local/share/minosoft/"; - case WINDOWS -> "AppData/Roaming/Minosoft/"; - case MAC -> "Library/Application Support/Minosoft/"; - case OTHER -> ".minosoft/"; - }; - File folder = new File(homeDir); - if (!folder.exists() && !folder.mkdirs()) { - // failed creating folder - throw new RuntimeException(String.format("Could not create home folder (%s)!", homeDir)); - } - HOME_DIRECTORY = folder.getAbsolutePath() + "/"; - } -} diff --git a/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.kt b/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.kt new file mode 100644 index 000000000..68fb3dc54 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/config/StaticConfiguration.kt @@ -0,0 +1,65 @@ +/* + * Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.config + +import com.google.common.base.StandardSystemProperty +import de.bixilon.minosoft.util.OSUtil +import java.io.File + +object StaticConfiguration { + const val DEBUG_MODE = true // if true, additional checks will be made to validate data, ... Decreases performance + const val BIOME_DEBUG_MODE = false // colors all biomes according to the biome hashCode + const val DEBUG_SLOW_LOADING = false // if true, many Thread.sleep will be executed and the start will be delayed (by a lot) + const val SHOW_LOG_MESSAGES_IN_CHAT = true // prints all console messages in the chat box + const val REPLACE_SYSTEM_OUT_STREAMS = true + + @JvmField + var CONFIG_FILENAME = "minosoft.json" // Filename of minosoft's base configuration (located in AppData/Minosoft/config) + + @JvmField + var SKIP_MOJANG_AUTHENTICATION = false // disables all connections to mojang + + @JvmField + var COLORED_LOG = true // the log should be colored with ANSI (does not affect base components) + + @JvmField + var LOG_RELATIVE_TIME = false // prefix all log messages with the relative start time in milliseconds instead of the formatted time + + @JvmField + var VERBOSE_ENTITY_META_DATA_LOGGING = false // if true, the entity meta data is getting serialized + + @JvmField + var HEADLESS_MODE = false // if true, no gui, rendering or whatever will be loaded or shown + + @JvmField + var HOME_DIRECTORY: String = let { + // Sets Config.homeDir to the correct folder per OS + var homeDir: String = System.getProperty(StandardSystemProperty.USER_HOME.key()) + if (!homeDir.endsWith(File.separator)) { + homeDir += "/" + } + homeDir += when (OSUtil.OS) { + OSUtil.OSs.LINUX -> ".local/share/minosoft/" + OSUtil.OSs.WINDOWS -> "AppData/Roaming/Minosoft/" + OSUtil.OSs.MAC -> "Library/Application Support/Minosoft/" + OSUtil.OSs.OTHER -> ".minosoft/" + } + val folder = File(homeDir) + if (!folder.exists() && !folder.mkdirs()) { + // failed creating folder + throw RuntimeException(String.format("Could not create home folder (%s)!", homeDir)) + } + folder.absolutePath + "/" + } + val TEMPORARY_FOLDER = System.getProperty("java.io.tmpdir", "$HOME_DIRECTORY/tmp/") + "/" +} diff --git a/src/main/java/de/bixilon/minosoft/util/OSUtil.java b/src/main/java/de/bixilon/minosoft/util/OSUtil.kt similarity index 64% rename from src/main/java/de/bixilon/minosoft/util/OSUtil.java rename to src/main/java/de/bixilon/minosoft/util/OSUtil.kt index 003484469..7570b28f5 100644 --- a/src/main/java/de/bixilon/minosoft/util/OSUtil.java +++ b/src/main/java/de/bixilon/minosoft/util/OSUtil.kt @@ -10,29 +10,26 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ +package de.bixilon.minosoft.util -package de.bixilon.minosoft.util; +object OSUtil { + @JvmStatic + val OS: OSs -public final class OSUtil { - public static final OSs OS; - - static { - String name = System.getProperty("os.name"); - if (name.startsWith("Windows")) { - OS = OSs.WINDOWS; - } else if (name.startsWith("Linux")) { - OS = OSs.LINUX; - } else if (name.startsWith("Mac")) { - OS = OSs.MAC; - } else { - OS = OSs.OTHER; - } - } - - public enum OSs { + enum class OSs { WINDOWS, LINUX, MAC, - OTHER + OTHER, + } + + init { + val name = System.getProperty("os.name") + OS = when { + name.startsWith("Windows") -> OSs.WINDOWS + name.startsWith("Linux") -> OSs.LINUX + name.startsWith("Mac") -> OSs.MAC + else -> OSs.OTHER + } } }