簡體   English   中英

將下載的minecraft mod更新為1.8

[英]Update a downloaded minecraft mod to 1.8

我已經下載了一個forge mod(ArrowMarker 1.7.10版本),我想更新它,所以它適用於1.8 forge Minecraft。 我嘗試過的:首先我設置了一個基本的1.8鍛造mod,它完全有效。 然后我嘗試了多個反編譯器來反編譯.jar存檔,但是當我粘貼這些文件的代碼時,我會遇到很多錯誤。 (例如,不存在的功能)。 我怎么能將這個mod更新為1.8?
箭頭標記1.7.10

奇怪的反編譯的例子:(它在func_151468_f或mc.field事情上的錯誤)

@SubscribeEvent
      public void RenderVillageCheckerFromEvent(InputEvent.KeyInputEvent event)
      {

        if (key_enable.func_151468_f())
        {
            ArrowMarker.arrowMarker.mode += 1;
          if (ArrowMarker.arrowMarker.mode == 4) {
              ArrowMarker.arrowMarker.mode = 0;
          }
        }
        if (key_h.func_151468_f()) {
          ArrowMarker.arrowMarker.Hactive = (ArrowMarker.arrowMarker.Hactive);
        }
        if (sen == -1.0F) {
          sen = mc.field_71474_y.field_74341_c;
        }
        if (key_slow.func_151470_d()) {
          mc.field_71474_y.field_74341_c = (sen / 10.0F);
        } else {
          mc.field_71474_y.field_74341_c = sen;
        }
        if ((mc.field_71462_r != null) && (ArrowMarker.arrowMarker.mode > 2)) {
            ArrowMarker.arrowMarker.mode = 1;
        }
      }

我知道這篇文章很老了,但是給出一個清晰簡潔的答案是有幫助的。 這可以幫助新開發人員了解正在發生的事情。

信息

您所看到的是混淆的方法/字段名稱(稱為searge名稱)。 這是由於代碼保護系統稱為混淆 它可以防止人們復制您的代碼,並為此獲得贊譽。 通常,這不會造成太多問題,因為它只會創建難以辨認但其他工作代碼。

問題

然而,Minecraft Forge的運作方式略有不同。 由於它反編譯並重新格式化整個minecraft客戶端,因此它可以訪問模糊方法/字段無法找到的非常具體的名稱。 這會導致Java IDE拋出錯誤,主要是未實現的錯誤,它無法找到指定的方法/字段。 同樣重要的是要注意'方法'總是以func開頭,這意味着函數。 同樣,字段將與現場開始,參數將與開始。

既然你說這個mod是在1.7.10中編寫的,它使用1.7.10混淆,這意味着你應該下載這個文件 此文件包含三個csv文件,名為methods,fields和params。 你關心的是方法和領域。 如果您擁有它,請在文本編輯器或Excel中打開這些文件。 現在,將模糊的方法名稱或字段名稱復制到剪貼板上。 完成后,打開相應的文件(如果您復制了“func_”,打開methods.csv等)。 使用“查找”選項查找模糊名稱。 除此之外,應列出官方MC名稱。 例如,您的混淆代碼,翻譯成正常的MC代碼應該如下所示:

@SubscribeEvent
public void RenderVillageCheckerFromEvent(InputEvent.KeyInputEvent event)
{
    if (key_enable.isPressed())
    {
        ArrowMarker.arrowMarker.mode += 1;
        if (ArrowMarker.arrowMarker.mode == 4) {
            ArrowMarker.arrowMarker.mode = 0;
        }
    }
    if (key_h.isPressed()) {
        ArrowMarker.arrowMarker.Hactive = (ArrowMarker.arrowMarker.Hactive);
    }
    if (sen == -1.0F) {
        sen = mc.gameSettings.mouseSensitivity;
    }
    if (key_slow.getIsKeyPressed()) {
        mc.gameSettings.mouseSensitivity = (sen / 10.0F);
    } else {
        mc.gameSettings.mouseSensitivity = sen;
    }
    if ((mc.currentScreen != null) && (ArrowMarker.arrowMarker.mode > 2)) {
        ArrowMarker.arrowMarker.mode = 1;
    }
}

現在上面只解決了1.7.10客戶端的錯誤。 大多數方法名稱/字段都會更改每個版本,並且大部分代碼都會被破壞。 我的建議是首先執行上述解決方案並構建1.7.10 forge下載。 一旦確認構建並正常工作,請下載forge for 1.8並將paste src文件夾復制到新的forge目錄中。 將彈出多個錯誤,您最好的機會是查看它們,並嘗試查找發生的錯誤。 偽造論壇是完美的,因為那里的用戶在混淆和存在的新方法/領域方面有廣泛的知識。 另一種方法是交叉引用1.7.10混淆與1.8混淆(其csv文件可以在這里找到)。 這意味着你采用混淆的方法/字段,並在1.8 csv文件中搜索它。 這種方法通常效果不好,但在某些情況下確實有效。

結論

總結(或tl; dr)

  • 這里下載混淆的名稱參考列表。
  • 找到混淆的名稱引用,並找到官方記錄的名稱(是混淆名稱中的第二個值,即func_123456_a,methodName,0,description)
  • 編譯並運行1.7.10,然后復制粘貼到1.8目錄,通過交叉引用從1.7.10 - > 1.8解決錯誤。
  • mod應該正確更新。 玩最新的mod玩得開心!

重要的提醒

不要嘗試將軟件重新分發為您自己的軟件。 這會給你帶來很多麻煩,合法與否。 不值得竊取代碼並聲稱它是您自己的代碼。 如果您打算發布更新版本,請確保您相信該mod的原始作者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM