diff --git a/client-mod/src/client/java/net/momirealms/craftengine/fabric/client/CraftEngineFabricModClient.java b/client-mod/src/client/java/net/momirealms/craftengine/fabric/client/CraftEngineFabricModClient.java index 04198be2a..a893a53cc 100644 --- a/client-mod/src/client/java/net/momirealms/craftengine/fabric/client/CraftEngineFabricModClient.java +++ b/client-mod/src/client/java/net/momirealms/craftengine/fabric/client/CraftEngineFabricModClient.java @@ -7,10 +7,12 @@ import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.block.Block; import net.minecraft.client.color.world.BiomeColors; import net.minecraft.client.gui.screen.DisconnectedScreen; import net.minecraft.client.render.RenderLayer; +import net.minecraft.network.DisconnectionInfo; import net.minecraft.registry.Registries; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -19,7 +21,11 @@ import net.minecraft.world.biome.FoliageColors; import net.momirealms.craftengine.fabric.client.config.ModConfig; import net.momirealms.craftengine.fabric.client.network.CraftEnginePayload; +import java.net.URI; +import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.Optional; public class CraftEngineFabricModClient implements ClientModInitializer { public static final String MOD_ID = "craftengine"; @@ -47,11 +53,21 @@ public class CraftEngineFabricModClient implements ClientModInitializer { if (decoded.startsWith("cp:")) { int blockRegistrySize = Integer.parseInt(decoded.substring(3)); if (Block.STATE_IDS.size() != blockRegistrySize) { - client.disconnect(new DisconnectedScreen( - client.currentScreen, - Text.translatable("disconnect.craftengine.title"), - Text.translatable("disconnect.craftengine.block_registry_mismatch", Block.STATE_IDS.size(), blockRegistrySize)) - ); + if (client.player != null) { + client.player.networkHandler.getConnection().disconnect( + new DisconnectionInfo( + Text.translatable("disconnect.craftengine.block_registry_mismatch", Block.STATE_IDS.size(), blockRegistrySize), + Optional.of(FabricLoader.getInstance().getConfigDir().resolve("craft-engine-fabric-mod/mappings.yml")), + Optional.of(URI.create("https://github.com/Xiao-MoMi/craft-engine")) + ) + ); + } else { + client.disconnect(new DisconnectedScreen( + client.currentScreen, + Text.translatable("disconnect.craftengine.title"), + Text.translatable("disconnect.craftengine.block_registry_mismatch", Block.STATE_IDS.size(), blockRegistrySize)) + ); + } } } });