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
+ }
}
}