Fix: motd showing incorrect version

This commit is contained in:
iceBear67 committed 2025-01-03 23:12:43 +08:00
1 parent 2ed077ceeb
commit a733806f6e
3 files changed
+9 -15

No files matched your search

@@ -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)
@@ -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;
}
}
}
@@ -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