Skip to content

[Modding]如何在后1710时代继续生存?

Published: at 15:22

我们知道,1710 已经是有年代的存在了。且不说新到 1.12.2 (这也是历史版本了吧)都会中招的 OpenJDK 破坏性更新,也不谈 Intellij IDEA 不再支持 Gradle 4以下项目,光是 mavenCentral 不再支持 http 就够我们喝一壶了:

嘛,其实这样也没什么(?),只不过我们需要通过特殊的手段解决“不再维护版本”的问题了。

话不多说,先说简单的吧。最简单的方式就是换 ForgeGradle。这里有一个 ForgeGradle 的 Fork,按照上面的操作就可以获得一个能够正常运转的 FG1.2……好吧,还是有一些问题不行的,比如上面链接说到的 OpenJDK 问题,以及他的样例项目其实是跑不起来的,你还是不能用 Gradle 5.0,只能用 4.x。具体原因相信翻一下源码就知道了。

嘛,那 OpenJDK 怎么办呢?出现了!这里有另外一个 ForgeGradle 的 Fork,是基于上面那个修改得来的。这个修改中使用了 #652 提到的解决方案,解决了 OpenJDK 的 NPE 问题。但这个版本的使用有点复杂,你需要配置 build.gradle 以使用 GitHub Packages 的 Maven。当然了,这一切都是可以搜索找到结果的。

注:之后我说不定会水一篇博客专门来讲 GitHub Packages,谁知道呢(


当然了,有简单的就有相对复杂的方法。如果你对非官方 ForgeGradle 还是没那么信任,那么你可以想办法把 http 流量上升为 https 流量。具体怎么操作呢?对了,就是 [mitmproxy](https://mitmproxy.org/)

我们这里对 mitmproxy 的使用是非常简单的。因为最后返回的是 http 流量,因此我们不需要考虑 CA 的问题。与此同时,我们也不需要解析 https 流量。最后,我们得到了下面这个脚本:

from mitmproxy import http
def request(flow: http.HTTPFlow):
if flow.request.scheme == "http" and (flow.request.pretty_host == "repo1.maven.org" or flow.request.pretty_host == "jcenter.bintray.com"):
flow.request.scheme = "https"
flow.request.port = 443

注:其实 jcenter 不是必须的,看你项目中是否用到而定。

使用方法也很简单,将文件保存为 main.py ,使用如下命令执行:

Terminal window
mitmproxy -s ./main.py --mode socks5 --ignore :443 --ssl-insecure

这样我们就启动了一个 socks5://127.0.0.1:8080socks5 mitmproxy 了。这时候只要使用 -DproxyHost=127.0.0.1 -DproxyPort=8080
就可以正常下载了。

你问我前置代理怎么办?这个我也没办法,毕竟我是透明代理用户啊((

自己去搜吧,rua


Previous Post
ArchLinux 系折腾记(1): 自建软件仓库
Next Post
*nix 权限初探