何以加冕
本帖最后由 何以加冕 于 2022-8-30 01:40 编辑

Caused by: java.lang.IllegalAccessError: tried to access field net.minecraft.client.renderer.entity.RenderLivingBase.field_177097_h from class com.dretha.drethamod.layers.LayersRegister

吕易天
本帖最后由 吕易天 于 2022-8-30 06:59 编辑

你确定字段net.minecraft.client.renderer.entity.RenderLivingBase.field_177097_h在运行时是public的吗,如果不是,那你mod包的类访问它肯定会出非法访问错误

teddyxlandlee
你的at写了吗w

何以加冕
吕易天 发表于 2022-8-30 06:57
你确定字段net.minecraft.client.renderer.entity.RenderLivingBase.field_177097_h在运行时是public的吗, ...

是public的

何以加冕
teddyxlandlee 发表于 2022-8-30 07:41
你的at写了吗w

我记得是写了的

无敌三脚猫

看仔细点,是protected的

吕易天

如果实在不行有一个阴间方法,用反射,Field f=net.minecraft.client.renderer.entity.RenderLivingBase.class.getDeclaredField("field_177097_h");
f.setAccessible(true);
虽然很慢但是就是可以用,但是这样做还有一个坏处就是调试的时候更麻烦了,因为调试的时候用的mcp名,生产环境用的是searge名

teddyxlandlee
吕易天 发表于 2022-8-31 20:41
如果实在不行有一个阴间方法,用反射,Field f=net.minecraft.client.renderer.entity.RenderLivingBase. ...

你这太阴间了,不建议轻易反射,除非急了或者不知方法返回类型的情况下,或者可以运行时动态获取mapping

吕易天
teddyxlandlee 发表于 2022-9-4 12:40
你这太阴间了,不建议轻易反射,除非急了或者不知方法返回类型的情况下,或者可以运行时动态获取ma ...

除了反射还能用方法句柄,比反射快,而且检查少,能直接设置static final字段

teddyxlandlee
吕易天 发表于 2022-9-4 22:54
除了反射还能用方法句柄,比反射快,而且检查少,能直接设置static final字段 ...

能设置static final? MethodHandle有相对来说很严格的access检查

洞穴夜莺
吕易天 发表于 2022-9-4 22:54
除了反射还能用方法句柄,比反射快,而且检查少,能直接设置static final字段 ...

设置static final是否有示例代码?

2442954615
先这样 然后再那样就OK了

吕易天
teddyxlandlee 发表于 2022-9-9 20:15
能设置static final? MethodHandle有相对来说很严格的access检查

能设置,我试过,用https://github.com/Karlatemp/UnsafeAccessor,Root.getTrusted().findStaticSetter就可以

吕易天
洞穴夜莺 发表于 2022-9-10 09:49
设置static final是否有示例代码?

https://github.com/Karlatemp/UnsafeAccessor,Root.getTrusted().findStaticSetter就可以

teddyxlandlee
吕易天 发表于 2022-9-11 18:26
用https://github.com/Karlatemp/UnsafeAccessor,Root.getTrusted().findStaticSetter就可以

我看了,这家伙写的buildscript十分糊弄,完全无法自动化构建

吕易天
teddyxlandlee 发表于 2022-9-11 18:39
我看了,这家伙写的buildscript十分糊弄,完全无法自动化构建

不要尝试手动构建,用它maven仓库构建好的库

李高
这个问题专业性非常强的哦

李高
加油学习可以的哦努力

9a9a9a9
MCBBS有你更精彩~~

9a9a9a9
我是土鳖看不懂