2015-06-30 4 views
0

Мне нужно изменить главное меню Minecraft с помощью Minecraft Forge. Мне удалось изменить базовый код, чтобы скопировать файл сохранения в папку Saves, а затем загрузить это сохранение. Но когда я его компилирую, это не сработает. Я предполагаю, что это потому, что его базовый класс, который я редактировал, и он не входит в состав компиляции. Я также понимаю, что я не должен редактировать базовые очки, но он не будет мешать никому, поэтому все должно быть в порядке. Есть ли способ компилировать базовые очки, которые были отредактированы, или, возможно, другой способ редактирования главного меню. Я читал о прерывании загрузки графического интерфейса и замене его собственным, но я не нашел хорошего способа сделать это.Главное меню Forge override

Ниже приведен код, слегка урезанная: 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"); 
     } 
    } 
} 
+0

Эй! Не редактируйте вещи, начиная с 'net.minecraft. *' Или 'net.minecraftforge. *'! Вместо этого используйте ASM! –

+0

Я нахожусь в 1.7.x, и я не думаю, что смогу использовать ASM с этой версией. Это API для «редактирования базовых классов без редактирования базовых классов», ey? Тем не менее, ни один из других модов, которые я буду использовать, будет мешать редактированию базового класса, так что это не будет проблемой :) –

ответ

0

Вы можете использовать ASM в 1.7.x, но это сложно и не нужно для вашего цель. Подпишитесь на GuiOpenEvent, проверьте, является ли gui основным меню, и если это так, вызовите метод event.setGui, чтобы вместо этого установить его в свой графический интерфейс.

Смежные вопросы