You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用MinecraftClient.getInstance()时Fabric Minecraft模组崩溃求助

Fabric客户端模组崩溃:MinecraftClient.getInstance()调用导致崩溃

崩溃原因

你在非客户端主线程中调用了MinecraftClient.getInstance()。Fabric框架下,MinecraftClient实例仅在客户端主线程(游戏逻辑/渲染线程)中初始化并可用,跨线程调用会因实例未绑定或线程安全问题触发空指针异常,直接导致游戏崩溃。

从崩溃堆栈来看,你的GetPlayersCommand在命令执行线程(非主线程)中执行第21行代码,此时MinecraftClient.getInstance()返回null,进而引发后续崩溃。

修复方案

1. 将逻辑切换到客户端主线程执行

使用客户端实例的execute()方法,把需要调用客户端API的逻辑包装到主线程中执行:

// 替换原第21行及后续相关代码
MinecraftClient.getInstance().execute(() -> {
    MinecraftClient minecraftClient = MinecraftClient.getInstance();
    // 这里执行你的玩家列表获取、UI交互等操作
});

注意:如果代码是在模组加载阶段调用,需先判断客户端实例是否已初始化,避免空指针。

2. 确保命令仅在客户端上下文执行

如果是自定义命令,注册时需限制仅在客户端环境下生效,避免服务端或非主线程触发:

CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
    // 跳过服务端环境
    if (environment.dedicated()) return;
    // 注册你的GetPlayersCommand
    dispatcher.register(/* 你的命令定义 */);
});

关键崩溃信息

异常类型:java.lang.NullPointerException
触发位置:GetPlayersCommand.java:21
核心问题:非主线程调用MinecraftClient.getInstance()返回null,导致后续操作失败。

内容的提问来源于stack exchange,提问作者MARIUCHINAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:09:49