package eu.mhsl.minenet.minigames; import eu.mhsl.minenet.minigames.api.HttpServer; import eu.mhsl.minenet.minigames.command.Commands; import eu.mhsl.minenet.minigames.handler.Listeners; import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.lang.Languages; import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask; import net.minestom.server.Auth; import net.minestom.server.MinecraftServer; import net.minestom.server.extras.lan.OpenToLAN; 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 { /** * Starts minenet minigames services */ private final static Logger logger = Logger.getGlobal(); public static ConfigurationNode globalConfig; @SuppressWarnings("ResultOfMethodCallIgnored") 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"); // muss vor MinecraftServer.init() gesetzt werden: ServerFlag liest die Properties statisch beim Klassenladen; // bei fehlendem/ungueltigem Config-Wert den Minestom-Default behalten (0 wuerde keine Chunks senden) int viewDistance = serverConfig.node("view-distance").getInt(0); if(viewDistance > 0) { System.setProperty("minestom.chunk-view-distance", String.valueOf(viewDistance)); } logger.info("Initialize Minecraft server..."); Auth auth = new Auth.Offline(); if(globalConfig.node("bungeecord", "enabled").getBoolean()) { auth = new Auth.Bungee(); } else if(globalConfig.node("velocity", "enabled").getBoolean()) { auth = new Auth.Velocity(Objects.requireNonNull(globalConfig.node("velocity", "secret").getString())); } MinecraftServer server = MinecraftServer.init(auth); // MinestomPvP.init(); // Dimensionen muessen vor server.start() registriert werden: // seit Minestom 26.x sind die dynamischen Registries nach dem Start eingefroren Dimension.values(); MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom"); MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0)); Commands.values(); Listeners.values(); new HttpServer(); MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20)); logger.info("Starting Minecraft server ... "); if(serverConfig.node("open-to-lan").getBoolean()) OpenToLAN.open(); server.start("0.0.0.0", serverConfig.node("port").getInt(25565)); System.gc(); MinecraftServer.getSchedulerManager().scheduleNextTick(() -> logger.info("Minecraft server is now running!")); } }