本帖最后由 何以加冕 于 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包的类访问它肯定会出非法访问错误
你确定字段net.minecraft.client.renderer.entity.RenderLivingBase.field_177097_h在运行时是public的吗,如果不是,那你mod包的类访问它肯定会出非法访问错误
你的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
我记得是写了的
何以加冕 发表于 2022-8-30 10:19
是public的
看仔细点,是protected的
何以加冕 发表于 2022-8-30 14:31
我记得是写了的
如果实在不行有一个阴间方法,用反射,Field f=net.minecraft.client.renderer.entity.RenderLivingBase.class.getDeclaredField("field_177097_h");
f.setAccessible(true);
虽然很慢但是就是可以用,但是这样做还有一个坏处就是调试的时候更麻烦了,因为调试的时候用的mcp名,生产环境用的是searge名
吕易天 发表于 2022-8-31 20:41
如果实在不行有一个阴间方法,用反射,Field f=net.minecraft.client.renderer.entity.RenderLivingBase. ...
你这太阴间了,不建议轻易反射,除非急了
teddyxlandlee 发表于 2022-9-4 12:40
你这太阴间了,不建议轻易反射,除非急了或者不知方法返回类型的情况下,或者可以运行时动态获取ma ...
除了反射还能用方法句柄,比反射快,而且检查少,能直接设置static final字段