返回
960 字
5 分钟
0 次阅读
在网易版《我的世界》里写脚本模组

网易版《我的世界》可以自己做模组,官方给了个叫 MODSDK 的东西。我在那边的开发者名字 就是 tim-lyj,前后做了三个模组。

先说个可能让人意外的:网易版 MODSDK 里内嵌的脚本语言是 Python 2.7。 不是 3,是 2.7。第一次看到的时候我愣了一下,现在写的时候还得提醒自己 print 后面不加括号。

三个模组#

  • 永恒之钢:加了一套新材料和配套工具 —— 剑、镐、斧、锹、锄,还有锭和对应的贴图。
  • 更多的音乐唱片:加了五张唱片,每张有自己的图案和音乐。
  • 超平坦起床刷新方块大陆:这个最费劲,也是这篇主要想讲的。

那个”一起床世界就变了”的模组#

一句话说清楚玩法:你在一张超平坦世界里睡觉,睡醒的那一刻,脚底下的方块全被随机换掉。

听着简单,做起来全是坑。下面这几条是我跟它磨了很久才定下来的规矩。

一、空气不能被替换#

这是最重要的一条。刷新的时候只替换”非空气”方块,空气保持空气。 不然你一觉醒来就被埋在自己家里了 —— 洞穴、房间、你挖的洞,全给你填实。 所以刷新的对象是”实心方块”,不是”所有方块”。

二、水得特殊处理#

大海、河流、湖泊算”非空气”,所以也会被一起翻新。这个一开始我觉得挺可惜, 但如果不换,刷新完之后地图上会留着大片原来的水,看着像一块”泉水大陆”,很出戏。 新的湖由方块池重新随机生成,反而更自然。

三、得有白名单,不然末地进不去#

如果所有方块全换,那末地传送门框架也会被换掉 —— 换掉之后你就永远去不了末地了。 所以有一份白名单,橡木类的原木、石材类、家具,还有末地传送门框架,这些保留不动。 白名单我只留了硬性需要的,没敢放太宽。

四、用”静止的”水,别用会流的#

这条是我吃过亏的。方块池里要放湖,如果放的是会流动的水和岩浆,一刷新就是成百上千格 流体开始算流向,帧率直接跪。

解决办法是用不流动的”静止液体”和固体岩浆去铺湖。湖还是在,但不会乱流。

刷新不是一次性的#

还有个设计选择:不做”挖掉的坐标永久追踪”。本来我打算记录哪些方块被挖了、下次要补回来, 后来发现这会让存档越滚越大,逻辑也乱。

简化版是这样的:每次睡醒 = 整片覆盖刷新一遍。你挖的洞会在下一轮被新方块盖掉, 不需要额外的循环去回填。

另外为了让方块多的地方也不卡,刷新是流式的:玩家走到哪, 新加载的区域才被刷新,随走随刷,最后覆盖整张地图,而不是开局把所有区块一次算完。

做完网易版,还要重写一遍#

网易版用的是 Python 2.7,国际版基岩版用的是 @minecraft/server(JavaScript)。 两套东西不通用,所以计划是两套工程分开写、分开测 —— 先把网易版跑通, 再针对国际版重写一遍。

我知道听起来像要干两遍活,但脚本接口的差别实在太大,硬凑在一起会更麻烦。


三个模组目前都还在我电脑里。等整理好之后我打算把它们的贴图和说明也放上来。

这篇文章讲的东西,可以在这里下载
超平坦起床刷新方块大陆(网易版) 7573464 忧郁兔地图模板 3913086 随心矿车体验版 2691546

全部东西都在下载区, 包括模组、地图和软件。

在网易版《我的世界》里写脚本模组
https://liyuanjie.com/posts/eighth-post/
作者
Liyuanjie
发布于
2026-09-15
许可协议
CC BY-NC-SA 4.0
这篇被看了 0 次