0

Minecraft というゲームのハッキングされたクライアント/チートを作成しています。mod をコンパイルして、何かをオンにしようとすると、画面にハック名が描画されている場所でクラッシュ レポートが表示されます。

何が悪いのかわかりません。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)

エラー、そのコード パス、およびすべての既知の詳細の詳細なウォークスルーは次のとおりです。


-- 頭 -- スタックトレース: 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 - フラット、バージョン 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 (現在: false)、雷の時間: 0 (現在: false) レベルのゲーム モード: ゲーム モード: クリエイティブ (ID 1)。ハードコア: 偽。チート: false 強制エンティティ: 合計 1; [bdi[' ostrichparty101'/11, l='MpServer', x=-757.69, y=4.62, z=1605.43]] エンティティの再試行: 合計 0。[] サーバー ブランド: バニラ サーバー タイプ: 統合シングルプレイヤー サーバーMain.main(ソースファイル:101)

4

2 に答える 2

0

クライアント コードに加えた変更により、Minecraft ランタイム ライブラリとの互換性がなくなりました。Eclipse で動作するため、IDE は別のバージョンのライブラリを使用している必要があります。ライブラリとその依存関係を再コンパイルし、ランタイム環境にデプロイします。

于 2013-09-24T23:45:42.660 に答える
0

GuiScreen.width を直接参照するのではなく、ScaledResolution オブジェクトを使用する必要があります。

new ScaledResolution(Minecraft.getMinecraft().gameSettings, Minecraft.getMinecraft().displayWidth, Minecraft.getMinecraft().displayHeight);

scaledResolution.getScaledWidth()次に、代わりに使用できますGuiScreen.width

編集:エラーの意味を説明するために、非静的フィールド GuiScreen.width を静的な方法で参照しようとしています。GuiScreen 幅フィールドに固執したい場合は、GuiScreen 互換オブジェクトのインスタンスが必要です。Minecraft.getMinecraft().currentScreen は、現在開いている GuiScreen オブジェクトを参照しますが、Gui が開いていない場合、この参照は null です。

于 2013-09-30T16:45:46.237 に答える