diff --git a/.gitignore b/.gitignore index a5cb846..e094af8 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,6 @@ replay_pid* .idea .gradle -build/* \ No newline at end of file +build/* + +/resources \ No newline at end of file diff --git a/src/main/java/eu/mhsl/minenet/minigames/Main.java b/src/main/java/eu/mhsl/minenet/minigames/Main.java index 427397a..17c0d47 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/Main.java +++ b/src/main/java/eu/mhsl/minenet/minigames/Main.java @@ -7,10 +7,15 @@ import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask; import eu.mhsl.minenet.minigames.server.provider.ByPlayerNameUuidProvider; import io.github.bloepiloepi.pvp.PvpExtension; import net.minestom.server.MinecraftServer; +import net.minestom.server.extras.bungee.BungeeCordProxy; import net.minestom.server.extras.lan.OpenToLAN; import net.minestom.server.extras.velocity.VelocityProxy; import net.minestom.server.timer.TaskSchedule; +import org.spongepowered.configurate.ConfigurateException; +import org.spongepowered.configurate.ConfigurationNode; +import org.spongepowered.configurate.yaml.YamlConfigurationLoader; +import java.util.Objects; import java.util.logging.Logger; public class Main { @@ -18,15 +23,28 @@ public class Main { * Starts minenet minigames services */ private final static Logger logger = Logger.getGlobal(); - public static void main(String[] args) { + private static ConfigurationNode globalConfig; + + public static void main(String[] args) throws ConfigurateException { + //noinspection ResultOfMethodCallIgnored + Resource.values(); // This initializes and preloads the enum and extracts the resources + Languages.getInstance(); //Preload languages into the jvm + + globalConfig = YamlConfigurationLoader + .builder() + .path(Resource.CONFIG.getPath()) + .build() + .load(); + + ConfigurationNode serverConfig = globalConfig.node("server"); logger.info("Initialize Minecraft server..."); MinecraftServer server = MinecraftServer.init(); PvpExtension.init(); MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom"); - MinecraftServer.setCompressionThreshold(0); - System.setProperty("minestom.chunk-view-distance", "12"); + MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0)); + System.setProperty("minestom.chunk-view-distance", String.valueOf(serverConfig.node("view-distance").getInt())); MinecraftServer.getConnectionManager().setUuidProvider(new ByPlayerNameUuidProvider()); @@ -35,15 +53,18 @@ public class Main { MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20)); - //noinspection ResultOfMethodCallIgnored - Resource.values(); // This initializes and preloads the enum and extracts the resources - Languages.getInstance(); //Preload languages into the jvm - logger.info("Starting Minecraft server ... "); - OpenToLAN.open(); - //MojangAuth.init(); LET NON MIGRATORS PLAY! - VelocityProxy.enable("sKkDO9lGfpS7"); - server.start("0.0.0.0", 25565); + + if(serverConfig.node("open-to-lan").getBoolean()) OpenToLAN.open(); + + if(globalConfig.node("bungeecord", "enabled").getBoolean()) BungeeCordProxy.enable(); + + if(globalConfig.node("velocity", "enabled").getBoolean()) { + VelocityProxy.enable(Objects.requireNonNull(globalConfig.node("velocity", "secret").getString())); + + } + + server.start("0.0.0.0", serverConfig.node("port").getInt(25565)); System.gc(); MinecraftServer.getSchedulerManager().scheduleNextTick(() -> logger.info("Minecraft server is now running!")); diff --git a/src/main/java/eu/mhsl/minenet/minigames/Resource.java b/src/main/java/eu/mhsl/minenet/minigames/Resource.java index a2b3f8e..8c76339 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/Resource.java +++ b/src/main/java/eu/mhsl/minenet/minigames/Resource.java @@ -11,6 +11,7 @@ import java.util.logging.Logger; * Predefined resources which are extracted on Runtime */ public enum Resource { + CONFIG("config.yml"), HUB_MAP("maps/hub"), LOBBY_MAP("maps/lobby"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..8977df1 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,14 @@ +server: + port: 25565 + view-distance: 12 + compression-threshold: 0 + open-to-lan: false + +bungeecord: + enabled: false + +velocity: + enabled: false + secret: '' + +