1

Minecraft Forge を使用して Minecraft のメイン メニューを変更する必要があります。基本コードを変更して、保存ファイルを保存フォルダーにコピーし、その保存をロードすることができました。しかし、コンパイルするとうまくいきません。私が編集した基本クラスであり、コンパイルに含まれていないためだと思います。また、基本クラスを編集してはならないことも理解していますが、何にも干渉しないので問題ありません。編集された基本クラスをコンパイルする方法はありますか、それともメインメニューを編集する別の方法がありますか。GUI のロードを中断して自分のものに置き換えることについて読んだことがありますが、それを行う良い方法が見つかりませんでした。

以下はコードを少し省略したものです: net.minecraft.client.gui.GuiMainMenu.java

private void addSingleplayerMultiplayerButtons(int p_73969_1_, int p_73969_2_)
{
    this.buttonList.add(new GuiButton(15, this.width / 2 - 100, p_73969_1_, I18n.format("Quickplay", new Object[0])));
}

protected void actionPerformed(GuiButton p_146284_1_)
{
    if (p_146284_1_.id == 15)
    {
        // Clone and create new map
        File srcFolder = new File(System.getProperty("user.dir") + "\\quickMap");
        File destFolder = new File(System.getProperty("user.dir") + "\\saves\\tempQuickMap");

        //make sure source exists
        if(!srcFolder.exists()){

           //System.out.println("Directory does not exist.");
           //just exit
           //System.exit(0);

        }else{

           try{
            copyFolder(srcFolder,destFolder);
           }catch(IOException e){
            e.printStackTrace();
            //error, just exit
                //System.exit(0);
           }
        }

        //System.out.println("Done");
        // Cloning done

        if (this.mc.getSaveLoader().canLoadWorld("tempQuickMap"))
        {
            FMLClientHandler.instance().tryLoadExistingWorldMainMenu(this, "tempQuickMap", "Quickplay map");
        }
    }
}
4

1 に答える 1

0

1.7.x で ASM を使用できますが、これは複雑で目的には不要です。GuiOpenEvent をサブスクライブし、GUI がメイン メニューであるかどうかを確認し、その場合は event.setGui メソッドを呼び出して GUI に設定します。

于 2016-07-02T12:12:48.147 に答える