[英]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)
不要尝试将软件重新分发为您自己的软件。 这会给你带来很多麻烦,合法与否。 不值得窃取代码并声称它是您自己的代码。 如果您打算发布更新版本,请确保您相信该mod的原始作者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.