我已经下载了一个forge mod(ArrowMarker 1.7.10版本),我想更新它,因此它适用于1.8 forge Minecraft。我尝试了什么:
首先,我设置了一个基本的1.8锻造mod,完全可以工作。
然后我尝试了多个反编译器来反编译.jar存档,但是当我粘贴这些文件的代码时,我会遇到很多错误。 (例如,不存在的功能)。我怎么能将这个mod更新为1.8?
Arrow marker 1.7.10
奇怪的反编译的例子:(它在func_151468_f或mc.field事情上的错误)
<bean id="sysProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="databaseConfigurator" />
<property name="targetMethod" value="getProperties"/>
</bean>
<bean id="databaseConfigurator" class="my.util.config.MyDatabaseConfigurator">
<property name="datasource" ref="dataSource" />
<property name="propertyFile" value="/WEB-INF/my.properties" />
<property name="applicationName" value="ThisApp" />
</bean>
<bean name="PropertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="CommonsConfigurationFactoryBean"/>
</bean>
<bean name="CommonsConfigurationFactoryBean" class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean">
<constructor-arg ref="databaseConfigurator"/>
</bean>
答案 0 :(得分:3)
我理解这篇文章是旧的,但它有助于给出一个清晰简洁的答案。这可以帮助新开发人员了解正在发生的事情。
您看到的是混淆的方法/字段名称(称为searge名称)。这是因为代码保护系统称为obfuscation。它可以防止人们复制您的代码,并为此获得赞誉。通常情况下,这不会造成太多问题,因为它只会创建难以辨认但工作正常的代码。
由于你说这个mod是在1.7.10中编写的,它使用1.7.10混淆,这意味着你应该下载this file。此文件包含三个 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目录中。将弹出多个错误,您最好的机会是查看它们,并尝试查找发生的错误。伪造forums是完美的,因为那里的用户在混淆和存在的新方法/领域方面有广泛的知识。另一种方法是交叉引用1.7.10混淆与1.8混淆(可以找到其csv文件here)。这意味着你采用混淆的方法/字段,并在1.8 csv文件中搜索它。这种方法通常效果不好,但在某些情况下确实有效。
总结(或tl; dr)
请勿尝试将软件重新分发为您自己的软件。这会给你带来很多麻烦,合法与否。不值得窃取代码并声称它是您自己的代码。如果您打算发布更新版本,请确保您归功于该mod的原始作者。