0

我正在为一个名为 Minecraft 的游戏制作一个被黑的客户端/作弊器。我编译了我的模组,当我尝试打开某些东西时,我会收到一份崩溃报告,说明它在哪里将 hack 名称绘制到屏幕上。

我不知道出了什么问题,它在 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 行上崩溃。

这是堆栈跟踪/崩溃报告:

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)

错误的详细演练、其代码路径和所有已知细节如下:


-- 头部 -- Stacktrace:在 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),块:(在 -47,98 中的 8,0,2;包含块 -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)。铁杆:假的。秘籍:false 强制实体:共 1 个;[bdi[' ostrichparty101'/11, l='MpServer', x=-757.69, y=4.62, z=1605.43]] 重试实体:共 0 个;[] 服务器品牌:vanilla 服务器类型:集成单人服务器 Stacktrace:atv.b(SourceFile:1761) atv.d(SourceFile:633) at net.minecraft.client.main 上的 bdd.a(SourceFile:284)。 Main.main(源文件:101)

4

2 回答 2

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 时此引用为空。

于 2013-09-30T16:45:46.237 回答
0

您对客户端代码所做的更改使其与 Minecraft 运行时库不兼容。由于它在 Eclipse 中工作,IDE 必须使用不同版本的库。重新编译库及其任何依赖项并将它们部署到您的运行时环境。

于 2013-09-24T23:45:42.660 回答