Forge覆盖主菜单

时间:2015-06-30 22:46:52

标签: java minecraft-forge

我必须使用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");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在1.7.x中使用ASM,但它很复杂且不必为您的目的。 订阅GuiOpenEvent,检查gui是否是主菜单,如果是,请调用event.setGui方法将其设置为GUI。