diff --git a/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricLogger.java b/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricLogger.java index c3f151c4c..40e18e43b 100644 --- a/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricLogger.java +++ b/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricLogger.java @@ -25,10 +25,14 @@ package org.geysermc.platform.fabric; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.geysermc.connector.GeyserLogger; public class GeyserFabricLogger implements GeyserLogger { + private final Logger logger = LogManager.getLogger("geyser-fabric"); + private boolean debug; public GeyserFabricLogger(boolean isDebug) { @@ -37,38 +41,38 @@ public class GeyserFabricLogger implements GeyserLogger { @Override public void severe(String message) { - System.out.println(message); + logger.fatal(message); } @Override public void severe(String message, Throwable error) { - System.out.println(message); + logger.fatal(message, error); } @Override public void error(String message) { - System.out.println(message); + logger.error(message); } @Override public void error(String message, Throwable error) { - System.out.println(message); + logger.error(message, error); } @Override public void warning(String message) { - System.out.println(message); + logger.warn(message); } @Override public void info(String message) { - System.out.println(message); + logger.info(message); } @Override public void debug(String message) { if (debug) { - info(message); + logger.info(message); } } diff --git a/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricMod.java b/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricMod.java index fda3eb9ad..22d48013c 100644 --- a/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricMod.java +++ b/bootstrap/fabric/src/main/java/org/geysermc/platform/fabric/GeyserFabricMod.java @@ -28,8 +28,9 @@ package org.geysermc.platform.fabric; import net.fabricmc.api.DedicatedServerModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.server.dedicated.DedicatedServer; +import org.apache.logging.log4j.LogManager; import org.geysermc.connector.GeyserConnector; import org.geysermc.connector.GeyserLogger; import org.geysermc.connector.bootstrap.GeyserBootstrap; @@ -76,7 +77,7 @@ public class GeyserFabricMod implements DedicatedServerModInitializer, GeyserBoo (x) -> x.replaceAll("generateduuid", UUID.randomUUID().toString())); this.geyserConfig = FileUtils.loadConfig(configFile, GeyserFabricConfiguration.class); } catch (IOException ex) { - System.out.println(LanguageUtils.getLocaleStringLog("geyser.config.failed")); + LogManager.getLogger("geyser-fabric").error(LanguageUtils.getLocaleStringLog("geyser.config.failed"), ex); ex.printStackTrace(); } @@ -86,6 +87,14 @@ public class GeyserFabricMod implements DedicatedServerModInitializer, GeyserBoo if (this.geyserConfig.getRemote().getAddress().equalsIgnoreCase("auto")) { this.geyserConfig.setAutoconfiguredRemote(true); + ServerLifecycleEvents.SERVER_STARTING.register((server) -> { + String ip = server.getServerIp(); + int port = server.getServerPort(); + if (ip != null && !ip.isEmpty() && !ip.equals("0.0.0.0")) { + this.geyserConfig.getRemote().setAddress(ip); + } + this.geyserConfig.getRemote().setPort(port); + }); } if (geyserConfig.getBedrock().isCloneRemotePort()) { @@ -94,6 +103,9 @@ public class GeyserFabricMod implements DedicatedServerModInitializer, GeyserBoo this.connector = GeyserConnector.start(PlatformType.ANDROID, this); + // Register onDisable so players are properly kicked + ServerLifecycleEvents.SERVER_STOPPING.register((server) -> onDisable()); + this.geyserPingPassthrough = GeyserLegacyPingPassthrough.init(connector); this.geyserCommandManager = new GeyserFabricCommandManager(connector);