繁体   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