1.前言

当你沉迷于Tetra的武器改造又被史诗战斗炫酷的攻击动画所吸引时,想着把这俩mod加一起,结果发现……我怎么在打拳击?

Tetra最大的特色就是自定义部件,但也是因为这种特色导致武器没有特定的标签,无法区分适配合适的攻击动画。

普通剑的标签
如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第1张图片

大剑的标签

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第2张图片

但是我们再看一下NBT

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第3张图片


可以发现在同一“sword”类型下,他们分别是“basic_blade”和“heavy_blade”,即普通剑刃和巨型剑刃(看不出来可以丢给文心让他帮你看)。所以我们完全可以通过NBT来区分不同类型的武器,这也是这个MOD(Epic Fight NBT Integration)的作用。(非常感谢作者能提供这么个方法,让我们能更好的让史诗战斗适配其他MOD的武器)


2.如何获取NBT

获取NBT的方法非常简单,你只需要一个箱子、一串指令即可,或者借助诸如CraftTweaker、KubeJS之类的MOD可以更快速的获得NBT。

-原版

你只需要将目标放入箱子中(无论是哪一格都行)

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第4张图片

然后把准星对准箱子,输入指令/data get block再空格,系统会出现箱子坐标的补齐选项,鼠标左键点击或者按Tab键补齐即可。

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第5张图片

完成后获得的NBT属性是这样的

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第6张图片-MOD

只需要将目标拿在手中,输入对应的指令即可

CraftTweaker:

/ct hand

/crafttweaker hand

KubeJS:

/kjs hand

/kubejs hand

他们获得的NBT属性分别是这样的

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第7张图片

和这样的

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第8张图片


3.如何从NBT中获取部件ID
本教程以原版为例,来解析一下获得的NBT该如何使用

-PS:在获取NBT时建议,用于区分武器属性的关键部件使用单独的材料锻造,以免出现混淆(本文使用铁iron来区分)

此处为Tetra普通剑用原版方式获得的NBT:

{z: -478, x: 102, ForgeCaps: {}, id: "minecraft:chest", y: 65, Items: [{Slot: 12b, id: "tetra:modular_sword", tag: {Damage: 0, "sword/wide_guard_material": "wide_guard/copper", "sword/pommel": "sword/grip_loop", "sword/basic_blade_material": "basic_blade/iron", "sword/guard": "sword/wide_guard", "sword/hilt": "sword/basic_hilt", "sword/basic_hilt_material": "basic_hilt/copper", "sword/grip_loop_material": "grip_loop/copper", id: "2242eff0-e326-4511-b908-ef69071a7b8a", HideFlags: 1, "sword/hilt:workable": 1, "sword/blade": "sword/basic_blade", honing_progress: 314}, Count: 1b}]}

区分剑类武器的部位是剑刃,所以我们只需要找出剑刃ID即可。由于我只在剑刃部位使用铁,其余部位则使用铜,所以我们直接从NBT中找到包含铁的字段就能找出剑刃的ID,即"sword/basic_blade_material": "basic_blade/iron"。“sword”为武器类型、“iron”为剑刃材料,那么“basic_blade”即为剑刃类型,也就是普通剑刃的ID。

我们再看看大剑的NBT,此处为Tetra大剑用原版方式获得的NBT:

{z: -478, x: 102, ForgeCaps: {}, id: "minecraft:chest", y: 65, Items: [{Slot: 14b, id: "tetra:modular_sword", tag: {"sword/heavy_blade_material": "heavy_blade/iron", Damage: 0, "sword/wide_guard_material": "wide_guard/copper", "sword/pommel": "sword/grip_loop", "sword/guard": "sword/wide_guard", "sword/hilt": "sword/basic_hilt", "sword/grip_loop_material": "grip_loop/copper", "sword/basic_hilt_material": "basic_hilt/copper", id: "7c699dc2-b867-40be-a2c8-0bdabb483b7e", HideFlags: 1, "sword/hilt:workable": 1, "sword/blade": "sword/heavy_blade", honing_progress: 369}, Count: 1b}]}

也是找到包含铁的字段:"sword/heavy_blade_material": "heavy_blade/iron",那么“heavy_blade”即为重型剑刃的ID。

我们再来看看MOD作者给的配置文件:

{
  "sword/blade": {
    "sword/basic_blade": {
      "armor_ignorance": 0,
      "impact": 0.9,
      "hit_at_once": 1,
      "weapon_type": "sword"
    },
    "sword/heavy_blade": {
      "armor_ignorance": 0,
      "impact": 3.6,
      "hit_at_once": 4,
      "weapon_type": "greatsword"
    }
  }
}

可以看到第一段开头和第二段开头就是我们刚刚所提取出的剑刃ID。


4.如何从NBT中获取武器类型

某不知名人士曾说过:“蚁钳是蚁钳,蟹仔是蟹仔,你要是拿蚁钳当蟹仔,哥们你怎么不徒手挖基岩(huaji)”

虽然上面的教程写出了该如何获取部件ID,但这些部件都属于某个武器大类,只能写在这个大类下才能使用,就比如你不能把扁斧头写在剑类武器下面,因为一个是剑类一个是双头类。

通过观察作者给的配置文件我们可以发现,每一大段的开头并不相同,这些不同的开头即代表着不同的武器类型,而在武器类型后与武器类型用斜杠分开的则是用于区分同一武器类型下不同武器属性的关键部件。

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第9张图片

那么这些开头在NBT的哪里可以找到呢?

以剑类武器为例,我们可以在NBT中找到这个字段:"sword/blade": "sword/basic_blade",翻译过来就是"剑/剑刃":"剑/普通剑刃"。

再以单头武器为例,这个字段为:"single/head": "single/spearhead",翻译过来就是"独头/头部":"独头/矛头"

从中我们可以看出武器NBT中包含这么个信息【"武器类型/关键部件位置":"武器类型/关键部件ID"】,这就是我们要用于编写配置文件的信息。


5.配置文件的编写

下方配置文件可供参考,也可直接跳转至第六节学习如何使用:

点击这里直接下载作者已经编写好的配置文件(兼容Tetra及其附属Tetra Niche Materials

配置文件可以在.minecraft\versions\<游戏版本>\saves\<存档名>\epicfightnbt中找到,或者直接解压mod,在fightnbtintegration.jar\assets\fightnbtintegration\中找到。

我们需要将配置文件复制到不会影响游戏运行的位置再进行编辑,MOD作者已经非常贴心的为我们写好了Tetra不同武器大类的开头,需要添加的话只需要在正确的大类下再起一段,并替换其中的部件ID即可。如果需要添加新的武器大类,那就在某一大段后面新起一段,然后替换相应的ID即可。

格式如下:

{
  "武器类型a/关键部件位置": {
    "武器类型a/关键部件ID1": {
      "armor_ignorance": 0,
      "impact": 0.9,
      "hit_at_once": 1,
      "weapon_type": "适配动作"
    },
    "武器类型a/关键部件ID2": {
      "armor_ignorance": 0,
      "impact": 3.6,
      "hit_at_once": 4,
      "weapon_type": "适配动作"
    }
  },
  "武器类型b/关键部件位置": {
    "武器类型b/关键部件ID3": {
      "armor_ignorance": 20,
      "impact": 1.3,
      "hit_at_once": 0,
      "weapon_type": "适配动作"
    }
  }
}

其中武器类型、关键部件位置、关键部件ID都是在NBT中获取的内容

"impact"为冲击力(基础冲击力为0.5,在此处填写的冲击力加0.5才是游戏内看到的冲击力数据,但填写0就是0)

"hit_at_once"为攻击目标上限(基础目标数量为1,在此处填写的数据加1才是游戏内数据,必须为整数)

"armor_ignorance"为穿甲能力(百分比,无需输入百分号)

如何使用NBT让史诗战斗(Epic Fight )兼容其他MOD武器-第10张图片

"weapon_type"则是你希望这个武器所适配的攻击动作,动作的ID表格可以在这个教程中找到https://www.mcmod.cn/post/2659.html

特殊的,双头武器的关键部件位置有"head_left"和"head_right"两种,我们只需要选取其中一边就行,并且关键部件ID后面也要加上相应的方位后缀。

例如:

  "double/head_left": {
    "double/adze_left": {
      "armor_ignorance": 20,
      "impact": 1.3,
      "hit_at_once": 0,
      "weapon_type": "axe"
    }
  }

如果双头武器同一部件既有左的适配又有右的适配,那么就会导致冲突,所以建议双头武器只写一边的适配。

至此我们就完成了配置文件的编写。


6.如何使用配置文件

你可以将配置文件放在.minecraft\versions\<游戏版本>\defaultconfigs目录下,使其能在新世界中加载;

对于已经创建的存档,你可以替换.minecraft\versions\<游戏版本>\saves\<存档名>\epicfightnbt中的配置文件,然后重进存档以重新加载。

注意:请不要加载格式不规范的配置文件,它会使你的游戏崩溃!!!

该篇教程为我的第一篇教程,如果有哪些问题或者术语上的不对欢迎指正,谢谢♪(・ω・)ノ!