刀的种类

在拔刀剑中,绝大多数刀都是同一个物品但具有不同的NBT。

在拔刀剑内部有一个存储了不同种类刀的注册表,不妨称其中储存的刀为“刀原器”。

玩家获得的刀都是“刀原器”的复制品。

注册一个种类的刀,只需要向该注册表中添加“刀原器”。


SlashBladeTweaker现提供的注册方法不止一种,但最为推荐,也是示例中使用的方法是使用BladeRegistry链。

  • 先调用named开始创建拔刀

  • 使用方法调整参数

  • 调用register完成注册

  • 可以紧接着下一把刀的注册

整个过程可以像这样:

BladeRegistry
.named("example:test_one").killCount(10000).refine(1000).proudSoul(2600000)
.texture("named/sange/white").model("named/sange/sange").specialAttack(20).wrap(BladeRegistry.findItem("minecraft:wooden_sword"))
.process(function(s as crafttweaker.item.IItemStack){SERegistry.addSEToItem(s, "test_se");return s;}).register()
.named("example:test_two").register();

这种链可以无限长。

SA

SA,全称SpecialAttack,是玩家特有的使用拔刀剑的攻击方式。在拔刀剑中,SA拥有一套使用数字的注册表,并在nbt中使用数字区分SA。

SlashBladeTweaker现提供的注册方法只有一种。

SARegistry.registerSAregisterSA(int, String, ISpecialAttackFunction)
名称的翻译键为"flammpfeil.slashblade.specialattack.%NAME%"

ISpecialAttackFunction会在玩家使用SA后前后端各调用一次。

SE

SE在拔刀剑中用NBT表示,SE本身无任何作用,也没有任何接口,仅和附魔一样作为信息在其他地方实现。SE使用字符串作为注册名。

SlashBladeTweaker现提供的注册方法不止一种,但是这里只介绍一种:

SEType.create(10, "example_se").register(); 第一个参数为默认的SE等级,第二个参数为名称。

名称的翻译键是"slashblade.seffect.name.%NAME%"。

添加SE可以直接操作NBT,也可以用SERegistry#addSEToItem

杂项

wrap

黑白狐内置木剑,你可以在创建BladeType时修改wrap(BladeTypeBuilder#wrap(IItemStack))

使用拔刀剑攻击相当于内置的物品攻击,这也是

创造背包中的该刀面板下有一行字:
is demo item. is wooden sword true performance : please crafting
(大意为:这是创造模式展示的刀,只有木刀的威力,它的真正威力需要你合成。)
若使用武士刀合成的利刀「无名」红玉合成而来,将继承武士刀的能力丶耐久丶伤害。
SA为幻影刃类型的每段伤害(幻影刃,极臆斩,波刀龙胆等)相比其他拔刀剑,会额外增加拔刀剑无任何附加状态下的“+4攻击伤害”

的原因。

重注册

使用BladeRegistry#reregister(String,IItemStack)可以强制将一个ItemStack注册到该刀名上,由此实现刀的覆盖或修改

以修改为例:

val blade as IItemStack = BladeRegistry.getBladeItemStack("flammpfeil.slashblade.named.fox.white"); 
BladeUtils.setKillCount(blade, 114514); 
BladeRegistry.reregister("flammpfeil.slashblade.named.fox.white", blade);

这样,狐月刀「白狐」的默认杀敌数就成了114514,你可以直接从创造模式物品栏中拿出114514杀敌的白狐。