前言

我们的匠魂3中文社区现在蒸蒸日上哦,重铸匠魂2荣光,我辈义不容辞

笔者在此会从提供一些设计思路,开发技术和写法优化

由衷希望各位开发者将模组开源至github

技术篇

反混淆

由于mc本身源码经过混淆,我们需要看一些原版实现的时候肯可能会发生以下类似的状况(图仅作举例):

匠魂3附属开发进阶-第1张图片好消息是,1.14后mojang公布了一份混淆对照表,我们可以从工作区的build/createSrgToMcp找到这份

匠魂3附属开发进阶-第2张图片这样,遇到被混淆过的m_xxxxx_就可以对照阅读了

当然,也有一些自动反混淆的小软件,需要的人可以自行查找。

开权限

在我们需要进行一些特殊实现的时候,可能会遇到以下情况:

匠魂3附属开发进阶-第3张图片有的时候,我们可以通过绕一大圈用一个很奇异搞笑的方式实现我们要的效果,但forge给我们提供了一个解决这个问题的方法:

匠魂3附属开发进阶-第4张图片build.gradle里有一行默认被注释掉的accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')

我们启用他

在src/main/resources/META-INF里创建一个accesstransformer.cfg的文件

以etshtinker为例:

匠魂3附属开发进阶-第5张图片public-f 可以将private类转为public并去掉final,重新构建后我们就可以自由使用这部分的权限;

匠魂3附属开发进阶-第6张图片

自写钩子

以下是etsh的星流之刃实现方法:

匠魂3附属开发进阶-第7张图片

骑士史莱姆没有在匠魂3里提供leftclick(左键点击)和leftblock(左击方块),和onentityswing(挥动物品,虽然这个是写在物品里的)

那么要实现这些功能就需要自己造轮子。anyway,别人造的轮子没有自己的好用

首先我们需要写一个继承了匠魂强化的类:

匠魂3附属开发进阶-第8张图片

然后在类里写上事件监听器

匠魂3附属开发进阶-第9张图片

另外,由于在mc中左键空气和左键方块是不会向服务端发包的,所以我们需要自己手动向服务端发包。

具体实现方法可以参考乙硫醇的匠魂词条库/植物魔法

匠魂3附属开发进阶-第10张图片现在,写一个继承我们自定义类的强化,我们就可以调用自己写的钩子了。

笔者的话

匠魂附属的开发并不需要很多的代码基础,勤看多看其他模组的实现方法就能用以己用。

多看看,自己写的东西会越来越好的。

设计篇

本篇属笔者的主观意愿,不认同也无妨

强度控制

遗憾的,以匠魂3现在的整体强度而言(回旋镖,巨剑,流体枪)

对强度控制的重要性已经无限接近于0

但不妨我们把强度分为几个阶段

2级材料(落地)  3级材料(小炉子) 4级材料(大炉子) 高贵的四级材料(中期) 更高贵的四级材料(中后期) 更更高贵的四级材料 (末期) 更更更更高贵的四级材料(旅途的终点)

1级材料?只存在于落地五分钟内的东西何必较我混沌徒费口沫

每个阶段是什么强度取决于作者的考虑

笔者建议更高贵的四级材料”可以接受十只坚守者洗澡,末期材料可考虑抗/kill(最后防线),旅途的终点扛循环/kill也不是不可取(无尽套装)

材料比例

其实85%以上的材料应该是四级材料,剩下大概是10%的三级材料和5%的二级材料

匠魂的材料分级还是太单调了,四级材料与四级材料的区别不比一级材料小

一级材料?但石头就是二级材料了。

发展线路

介于mc本身是一个很自由的游戏,提供给玩家很多的选择性是好的

笔者并不赞同死锁阶段的线性

如拥有“钻石”挖掘等级,那么最好让玩家能获得的不少于两个的材料体系,三个以上更好

材料设计

设计一个材料时,我一般会从以下几个方面考虑

这个材料酷吗?

这个材料实用吗?

这个材料是否同类过多?

这个材料好玩吗?

我编写他的过程开心吗?

这个材料是否过于耦合了?

and so on


事实上,材料设计中减法是比加法重要的(参考诸神匠心)

很多不必要的部分都是砍掉更好的(如 blue skies)


遏制滥用

以现在匠魂的环境(1.19)而言,减伤被严重滥用了

这种时候我们可以展开想象力,做出差异化

防御并不局限于减伤

复活(最后防线),格挡(经验防护),闪避,回复血量和额外血上限/黄心都是可行的

实在不行上对数盾


被严重滥用的不止减伤,还有真群攻和粒子(乙硫醇的匠魂词条库)

实际上数值的膨胀有害程度是很低的,整合包作者可以操纵科比js进行调控

改改面板,删删特性,轻而易举

多模组环境下很容易稀释掉膨胀的数值


相比之下表现形式的滥用严重得多

工匠联合写了巨量内置cd判断,乙硫醇的匠魂词条库写了巨量的真群攻和粒子

本来我们用薙刀(工匠匠心),然后有了能量剑和流体枪(乙硫醇的匠魂词条库),之后是三叉戟大荒星陨(工匠联合)。

按照这个趋势,下个匠魂的武器大概是尾兽卫星螺旋手里剑

这样的设计对社区无害,但容易造成玩家审美疲劳和阈值拉高

但归根到底,粒子和ui是过犹不及的东西

一大片UI糊在屏幕上和一大片粒子堆叠会对玩家造成真实的精神伤害。

描述部分

匠魂3附属开发进阶-第11张图片

答应我,不要这么干好吗

匠魂特性的描述最好是简单易懂的,复杂的效果可以分多特性描述或缩减

具体的数值不一定需要写在纸面上

若匠魂3的强度很低,那么具体的数值就很需要考虑

但目前匠魂3的强度,少100点伤害都是没感觉

不要过耦合,不要小作文

开发部分

善用重构

工匠联合的制作者独爱流萤曾发表过以下言论

“我现在完全不知道我写的是什么,很懂类和方法的命名都是111,12这样”

well,命名规范是一部分,项目的维护性毫无疑问是越来越差的。

开发者的技术肯定是越来越高的,早期不成熟的东西后续都有可能成为阻力

笔者简易每次更新新内容前都看看有没有可重构的部分,重构是一种一次偷懒需要更多补救的东西

当然,我们可以每一次大更新都重写一次模组,如果不嫌累的话。

git的使用

idea自带的git可以帮助我们很好的上传源码,但idea经常抽风,容易出现无法上传的现象

所以笔者在此推荐使用GitHub桌面端进行开源

正在开发的你会开源的对吧?对吧?

规划版本号

匠魂3附属开发进阶-第12张图片

version这一块是我们的版本号,不能填中文

规划好版本号是很重要的,否则可能出现像某整合包一样版本号像明日方舟关卡名的惨案 虽然他们好像改了

group这一栏可以填你的mcmod地址 当然填4399也是没问题的

注册表相关

匠魂3附属开发进阶-第13张图片来源暮色森林

实际上,我们有更优雅的方法:

匠魂3附属开发进阶-第14张图片答应我,不要再手动写了好吗。

后文

以上,开发匠魂附属最关键的是充足的激情和想象力。

由衷希望本教程能给予你们启发

感谢牢萤EtSH晓月dddddsj皇家马达博士爬行中的苦力怕gjhicsdy,还有所有匠魂3玩家与社区作者