[Bug] CSL在24w21b中崩溃
TorkenLaber opened this issue · 4 comments
描述问题
CSL在1.21快照版本24w21b中不可用,使用模组加入服务器或是进入一个世界会导致客户端崩溃
在上一个快照24w20a中仍然可用
复现步骤
1. 加入一个服务器或者一个单人世界存档
2. 游戏崩溃
崩溃报告查看地址
CustomSkinLoader.log 查看地址
latest.log 查看地址
[仅Forge用户] Forge Log 查看地址
No response
模组版本
CustomSkinLoader_Fabric-14.19.1
Minecraft游戏版本
24w21b
Minecraft启动器 名称 及 版本
PCL
模组加载器
Fabric
操作系统
Windows
在提交错误报告之前,有没有做到...
-
先尝试搜索issues里面, 查看并确认打开或关闭的工单, 是否搜索不到
-
确认你的模组版本是最新的开发版本,且文件下载正确,没有出现类似forge下载了fabric版的这类基础问题
-
这个问题是在最新的mod版本触发(若不是最新的请先升级mod)
从24w21a开始,net/minecraft/util/Identifier
的Constructor变成private了,因此不能用new ResourceLocation(java.lang.String)
24w20a 24w21a 1.21
可以改用Identifier.tryParse(String id)(Lnet/minecraft/class_2960;method_12829(Ljava/lang/String;)Lnet/minecraft/class_2960;),大概能解决24w21a开始到1.21存在的这个崩溃问题
但是我不太会修。。本人水平低看不太懂这个项目
通过一些Bytecode编辑确定只需把
private static final ResourceLocation TEXTURE_ELYTRA = new ResourceLocation("textures/entity/elytra.png");
改成
private static final ResourceLocation TEXTURE_ELYTRA = ResourceLocation.tryParse("textures/entity/elytra.png");
就能解决1.21上的NoSuchMethodError崩溃问题并正常工作
在有人来修之前,可以尝试自行用Recaf编辑<clinit>解决
因为LICENSE限制我无法分发修改后的文件
通过一些Bytecode编辑确定只需把
private static final ResourceLocation TEXTURE_ELYTRA = new ResourceLocation("textures/entity/elytra.png");
改成private static final ResourceLocation TEXTURE_ELYTRA = ResourceLocation.tryParse("textures/entity/elytra.png");
就能解决1.21上的NoSuchMethodError崩溃问题并正常工作 在有人来修之前,可以尝试自行用Recaf编辑解决 因为LICENSE限制我无法分发修改后的文件
Thanks, this works. However, since we modify the bytecode of the class, I had to re-sign the jar file, or else I'd get a SHA-256 Digest Error
谢谢,这可行。但是,由于我们修改了类的字节码,我必须重新签名 jar 文件,否则我会收到 SHA-256 摘要错误