往世暮光

Purana Twilight

最近突然学着做一下mc的mod,但是国内这一块的资源很缺乏,官方文档又写的比较糟糕,在这里把我自己遇到的问题和解决办法简单记录,希望能帮到需要的人。

[tip type=”worning” ]

撰文时使用版本:

Minecraft: 1.12.2

Forge: 14.23.5.2768

1.13及以后版本由于MCP Mapping的改变,部分内容出入较大仅供参考。

[/tip]

面向中文社区为数不多的资源推荐

1.我的世界开发者中文指南

类似于一个导航站,总结了大多数优质资源,极具参考性。

2.Harbinger先驱者开发指南

文章内容比较全面,而且使用1.12.2,相对版本很新,但还是有很多地方写着“待补充”,对新手不太友好,部分内容写得比较绕,适合作为参考书。

3.Minecraft 1.8.9 FML Mod 开发教程

中文社区里面口碑非常好的一个系列教程,内容详细全面,适合新手阅读,但版本骗老,而且还是个没什么mod的版本,建议结合上一个参考,一起看效果还是非常不错的

4.Forge官方文档(原版)(中文版

文档写的挺糟糕的,新手基本上看不懂,也正因为这样才会有各路大佬来做mod开发教程。

需要注意的是,目前Forge社区仅支持1.14.4以后的mc版本,而且1.13和1.14的MCP Mapping和Forge有较大改动(这里有总结),所以文档及其内容目前均无支持。中文版有不少内容缺失未翻译,但翻译了的部分质量不错,可以参考。

关于搭建开发环境

我个人使用Jetbrains的Intellij Idea作为开发环境,版本是2020.1 Community。

在Forge的官方文档中,对于如何在Idea中搭建开发环境有比较准确的描述,除了下列两个问题,别的跟着文档做就行。

1 对于Minecraft 1.12.2的Forge MDK,不支持AdoptOpenJDK的OpenJ9虚拟机

使用Openj9进行游戏倒没有问题,相比hotspot可以显著降低内存占用,并且提升一点fps。但是无法在Forge的开发过程中使用,会在执行 setupDecompWorkspace 这项Gradle任务时报错

1
2
Execution failed for task ':applySourcePatches'.
> com.cloudbees.diff.PatchException: Cannot find hunk target

所以在开发过程中还是使用Orcale的JDK或者使用HotSpot的OpenJDK吧

2 使用Idea启动Minecraft可能无法正确加载正在开发调试中的Mod资源

这个问题有两个产生原因,可以自己排除一些

  1. 由于目前最新版的Intellij Idea使用Idea Runtime 14,该运行环境会导致Forge出现兼容性问题。解决办法很简单,使用Jetbrains提供的Idea插件 Choose Runtime,根据插件详情页的教程,选择8u252或其他jdk8最近版本替代默认运行环境即可。
  2. 使用Idea启动Minecraft Client可能会造成此问题,使用Gradle任务 runClient 代替即可。

博主一直在使用HostUS提供的VPS主机服务,昨天想在VPS上搭建一个MySQL服务器来方便程序调试。之前一直以来这个服务器都只用来提供Sock5代理服务,现在为了更加方便地安装MySQL服务器,把VPS的操作系统从CentOS换成了Debian。当然,在服务器ReBuild系统之后,需要再次配置上Sock5的代理服务,这时我尝试通过SSH与远程主机建立连接,但是出现了**REMOTE HOST IDENTIFICATION HAS CHANGED!**这样的报错提示,具体内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Ezreal-MacBook-Pro:~ ezreal$ ssh root@la-server.csjboke.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:SCmYz2hmHAkng.
Please contact your system administrator.
Add correct host key in /Users/ezreal/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/ezreal/.ssh/known_hosts:6
ECDSA host key for la-server.csjboke.com has changed and you have requested strict checking.
Host key verification failed.

最开始看到错误,一脸懵逼,从来没遇到过嘛!什么毛病啊,之前都可以顺利连接的啊这会儿你开始抽风了😒。由于刚开始的时候没有仔细阅读报告内容,只看见其中有一个**.ssh**,顿时吓着了。恰巧在几分钟之前我重新添加了Gitee(其实就是Git@OSC的新域名辣)的密钥,以为是这个导致的无法通过指纹密钥认证,于是急急忙忙地删除了git的ssh密钥,然后发现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Ezreal-MacBook-Pro:~ ezreal$ ssh root@la-server.csjboke.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:SCmYz2KZXqohmHAkng.
Please contact your system administrator.
Add correct host key in /Users/ezreal/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/ezreal/.ssh/known_hosts:6
ECDSA host key for la-server.csjboke.com has changed and you have requested strict checking.
Host key verification failed.

问题依旧没有解决。 再次阅读错误提示,发现其实是.ssh目录下的known_hosts这个文件出现了问题。 known_hosts这个文件的作用是用于记录远程主机的指纹密钥来进行比对,由于服务器只是重新安装了操作系统,导致系统指纹密钥发生了变更,但是访问域名、root用户的密码都没有改变,这就使服务器上的指纹密钥和本地记录的指纹密钥出现了不一致,自然无法通过认证,与git的ssh密钥没有任何关系。 搞清楚了出现问题的原因,解决问题自然也就好搞了。因为我这台MBP只访问la-server.csjboke.com这一台远程服务器,所以known_hosts这个文件里面只会记录la-server.csjboke.com这一台服务器的指纹密钥,所以:

1
sudo rm -rf ~/.ssh/known_hosts

直接删除掉这个文件,这样当你再次发起ssh连接时,这个文件会被重建,就不会再提示**REMOTE HOST IDENTIFICATION HAS CHANGED!**这样的问题了。 如果你的电脑需要访问多台远程主机,为了避免对其他密钥的影响,你只需要打开这个文件,然后删除掉出现问题的那一条密钥信息,即可重新正常地建立SSH连接。 原创文章,转载请在醒目位置注明出处链接

0%