83 lines
3.3 KiB
Java
83 lines
3.3 KiB
Java
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!"));
|
|
}
|
|
}
|