我正在为一款名为Minecraft的游戏制作一个被黑客入侵/欺骗。我编译了我的mods,当我尝试打开某些东西时,我得到一个崩溃报告,无论它将黑客名称绘制到屏幕上。
我不知道出了什么问题,它在Eclipse中完美运行,但在游戏中却没有。这段代码有什么明显错误吗?
if(Client.flight){
var8.drawString("Flight",GuiScreen.width-var8.getStringWidth("Flight")-1,arraySeperator,0xCCFF33);
arraySeperator+=11;
}
if(Client.sneak){
var8.drawString("Sneak",GuiScreen.width-var8.getStringWidth("Sneak")-1,arraySeperator,0x007700);
arraySeperator+=11;
}
if(Client.nofall){
var8.drawString("NoFall",GuiScreen.width-var8.getStringWidth("NoFall")-1,arraySeperator,0xFF0000);
arraySeperator+=11;
}
if(Client.sprint){
var8.drawString("Speed",GuiScreen.width-var8.getStringWidth("Speed")-1,arraySeperator,0x99CCFF);
arraySeperator+=11;
}
if(Client.killaura){
var8.drawString("Kill Aura",GuiScreen.width-var8.getStringWidth("Kill Aura")-1,arraySeperator,0xe11a1a);
arraySeperator+=11;
}
if(Client.brightness){
var8.drawString("Brightness",GuiScreen.width-var8.getStringWidth("Brightness")-1,arraySeperator,0xCCFF33);
mc.gameSettings.gammaSetting = 10000;
arraySeperator+=11;
}else{
mc.gameSettings.gammaSetting = 1;
}
if(Client.speedmine){
var8.drawString("Cleany Consuela",GuiScreen.width-var8.getStringWidth("Cleany Consuela")-1,arraySeperator,0xF4DF76);
arraySeperator+=11;
}
if(Client.instant){
var8.drawString("Instant",GuiScreen.width-var8.getStringWidth("Instant")-1,arraySeperator,0xf4df76);
arraySeperator+=11;
}
if(Client.tracers){
var8.drawString("Tracers",GuiScreen.width-var8.getStringWidth("Tracers")-1,arraySeperator,0xFF0000);
arraySeperator+=11;
}
它在正确的地方;一切都很完美。当我尝试打开它时,它会在var8.drawString行上崩溃。
这是stacktrace / crash报告:
ava.lang.IncompatibleClassChangeError: Expected static field awe.g
at avj.a(GuiIngame.java:370)
at bfe.b(SourceFile:700)
at atv.S(SourceFile:686)
at atv.d(SourceFile:619)
at net.minecraft.client.main.Main.main(SourceFile:101)
错误,代码路径和所有已知详细信息的详细演练如下:
- 头 - 堆栈跟踪: 在avj.a(GuiIngame.java:370)
- 受影响的水平 - 细节: 级别名称:MpServer 所有球员:总共1人; [bdi ['ostrichparty101'/ 11,l ='MpServer',x = -757.69,y = 4.62,z = 1605.43]] 块状态:MultiplayerChunkCache:441 等级种子:0 电平发生器:ID 01 - flat,ver 0.功能启用:false 液位发生器选项: 等级产卵位置:世界:( - 744,4,1570),块:(在8,4,2英寸-47,98;包含块-752,0,1568到-737,255,1583),区域:( - 2 ,3;包含块-64,96到-33,127,块-1024,0,1536到-513,255,2047) 等级时间:799游戏时间,799天时间 等级维度:0 级别存储版本:0x00000 - 未知? 等级天气:降雨时间:0(现在:假),雷声时间:0(现在:假) 关卡游戏模式:游戏模式:创意(ID 1)。铁杆:假。秘籍:假 强迫实体:总共1个; [bdi ['ostrichparty101'/ 11,l ='MpServer',x = -757.69,y = 4.62,z = 1605.43]] 重试实体:总共0个; [] 服务器品牌:香草 服务器类型:集成单人服务器 堆栈跟踪: at bdd.a(SourceFile:284) 在atv.b(SourceFile:1761) 在atv.d(SourceFile:633) 在net.minecraft.client.main.Main.main(SourceFile:101)
答案 0 :(得分:0)
您对客户端代码所做的更改使其与Minecraft运行时库不兼容。由于它在Eclipse中工作,因此IDE必须使用不同版本的库。重新编译库及其任何依赖项,并将它们部署到运行时环境中。
答案 1 :(得分:0)
您应该使用ScaledResolution对象,而不是直接引用GuiScreen.width。
new ScaledResolution(Minecraft.getMinecraft().gameSettings, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight);
然后,您可以使用scaledResolution.getScaledWidth()
代替GuiScreen.width
。
编辑:只是为了解释您的错误意味着什么,您试图以静态方式引用非静态字段GuiScreen.width。如果你想坚持使用GuiScreen宽度字段,你需要有一个GuiScreen兼容对象的实例。 Minecraft.getMinecraft()。currentScreen引用当前打开的GuiScreen对象,但是当没有Guis打开时,此引用为null。