何以加冕
本帖最后由 何以加冕 于 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是否有示例代码?

下一页 最后一页