Render crash on Transfur to Latex Human (Game freezes, World rendered unjoinable)

未关闭 适合新手
#1,867 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
67/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
java
领域
game-dev

调研方向

从 LatexHuman.java 中的 getGameProfile()(第 71 行)开始,然后追踪它的调用方 registerTextures() 和 getModelName();报告称,只有在 keepConscious 为 false 时变形成 Latex Human 才会崩溃。检查玩家的档案名称是如何获取的,并运行相关的渲染或变形测试;当此情况不再抛出报告中的 NullPointerException 或导致世界卡死时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

Description: Unexpected error
Exception: java.lang.NullPointerException: Profile name must not be null

	at java.base/java.util.Objects.requireNonNull(Unknown Source) ~[?:?] {}
	at MC-BOOTSTRAP/[email protected]/com.mojang.authlib.GameProfile.<init>(GameProfile.java:31) ~[authlib-6.0.54.jar%23110!/:?] {re:mixin}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.entity.beast.LatexHuman.lambda$getGameProfile$2(LatexHuman.java:71) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:classloading}

Offending code:

    public Optional<GameProfile> getGameProfile() {
        return this.entityData.get(DATA_PLAYER).map(uuid -> new GameProfile(uuid, null));
    }
Thread: Render thread
Stacktrace:
	at java.base/java.util.Objects.requireNonNull(Unknown Source) ~[?:?] {}
	at MC-BOOTSTRAP/[email protected]/com.mojang.authlib.GameProfile.<init>(GameProfile.java:31) ~[authlib-6.0.54.jar%23110!/:?] {re:mixin}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.entity.beast.LatexHuman.lambda$getGameProfile$2(LatexHuman.java:71) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:classloading}
	at java.base/java.util.Optional.map(Unknown Source) ~[?:?] {}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.entity.beast.LatexHuman.getGameProfile(LatexHuman.java:71) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:classloading}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.entity.beast.LatexHuman.registerTextures(LatexHuman.java:88) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:classloading}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.entity.beast.LatexHuman.getModelName(LatexHuman.java:121) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:classloading}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.init.ChangedEntityRenderers.lambda$getComplexRenderer$0(ChangedEntityRenderers.java:38) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:mixin,re:classloading}
	at java.base/java.util.Optional.map(Unknown Source) ~[?:?] {}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.init.ChangedEntityRenderers.getComplexRenderer(ChangedEntityRenderers.java:38) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:mixin,re:classloading}
	at TRANSFORMER/[email protected]/net.minecraft.client.renderer.entity.EntityRenderDispatcher.handler$feg000$changed$getRendererOrOverridden(EntityRenderDispatcher.java:4158) ~[client-1.21.1-20240808.144430-srg.jar%23308!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/[email protected]/net.minecraft.client.renderer.entity.EntityRenderDispatcher.getRenderer(EntityRenderDispatcher.java) ~[client-1.21.1-20240808.144430-srg.jar%23308!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/[email protected]/net.minecraft.client.Camera.adjustAnimForEntity(Camera.java:3056) ~[client-1.21.1-20240808.144430-srg.jar%23308!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/[email protected]/net.minecraft.client.Camera.md214cc9$changed$lambda$animateCamera$0$3(Camera.java:3121) ~[client-1.21.1-20240808.144430-srg.jar%23308!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/[email protected]/net.furrymodder.changed.process.ProcessTransfur.ifPlayerTransfurred(ProcessTransfur.java:629) ~[Changed-m1.21.1-neo-0.15.7.3.jar%23327!/:0.15.7.3] {re:mixin,re:classloading}

Notes:

  • the actual transfur is fine
  • this only applies to the Latex-Human beast entity
  • keepConscious must be false
主要语言
Java
星标
87
派生
58
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 有 Pull Request 模板
  • 没有贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

LtxProgrammer/Changed-Minecraft-Mod 的其他 Issue

查看 LtxProgrammer/Changed-Minecraft-Mod 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。