diff --git a/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java b/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java index 5e66fe8..2efc934 100644 --- a/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java +++ b/src/main/java/io/ib67/sfcraft/mixin/server/MinecraftServerMixin.java @@ -4,10 +4,7 @@ import io.ib67.sfcraft.util.MixinHelper; import io.ib67.sfcraft.util.SFConsts; import net.minecraft.server.MinecraftServer; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Constant; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyConstant; +import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(MinecraftServer.class) diff --git a/src/main/java/io/ib67/sfcraft/mixin/server/ServerHandshakeNetworkHandlerMixin.java b/src/main/java/io/ib67/sfcraft/mixin/server/ServerHandshakeNetworkHandlerMixin.java index 675fbf9..7e6c5f7 100644 --- a/src/main/java/io/ib67/sfcraft/mixin/server/ServerHandshakeNetworkHandlerMixin.java +++ b/src/main/java/io/ib67/sfcraft/mixin/server/ServerHandshakeNetworkHandlerMixin.java @@ -6,6 +6,7 @@ import net.minecraft.network.ClientConnection; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerMetadata; import net.minecraft.server.network.ServerHandshakeNetworkHandler; +import org.spongepowered.asm.mixin.Debug; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -13,6 +14,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(ServerHandshakeNetworkHandler.class) +@Debug(export = true) public abstract class ServerHandshakeNetworkHandlerMixin { @Shadow @Final @@ -20,6 +22,11 @@ public abstract class ServerHandshakeNetworkHandlerMixin { @Redirect(method = "onHandshake", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getServerMetadata()Lnet/minecraft/server/ServerMetadata;")) public ServerMetadata getMetadata(MinecraftServer instance) { - return SFCallbacks.MOTD.invoker().onMotd(instance,connection); + var result = SFCallbacks.MOTD.invoker().onMotd(instance,connection); + if(result == null) { + return instance.getServerMetadata(); + }else{ + return result; + } } } diff --git a/src/main/java/io/ib67/sfcraft/module/MotdModule.java b/src/main/java/io/ib67/sfcraft/module/MotdModule.java index 1e9898b..755b9a1 100644 --- a/src/main/java/io/ib67/sfcraft/module/MotdModule.java +++ b/src/main/java/io/ib67/sfcraft/module/MotdModule.java @@ -3,19 +3,14 @@ package io.ib67.sfcraft.module; import com.google.inject.Inject; import com.google.inject.Provides; import com.google.inject.Singleton; -import io.ib67.sfcraft.callback.SFCallbacks; import io.ib67.sfcraft.inject.MinecraftServerSupplier; import io.ib67.sfcraft.util.Helper; import io.ib67.sfcraft.ServerModule; import io.ib67.sfcraft.config.ConfigResources; import io.ib67.sfcraft.inject.ConfigResource; import io.ib67.sfcraft.inject.ConfigRoot; -import net.minecraft.network.ClientConnection; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.ServerMetadata; import java.nio.file.Path; -import java.util.Optional; public class MotdModule extends ServerModule { @Inject @@ -29,11 +24,6 @@ public class MotdModule extends ServerModule { @Override public void onInitialize() { motd = getMotd(configRoot); - SFCallbacks.MOTD.register(this::onMotd); - } - - private ServerMetadata onMotd(MinecraftServer minecraftServer, ClientConnection clientConnection) { - return minecraftServer.getServerMetadata(); // it works, but who knows why? } @Override