本篇教程由作者设定使用 CC BY-NC 协议。

准备材料crt匠魂cot匠魂盔甲)以及一个好用的文本编辑器懂的都懂。

//工具的特性

//声明该脚本由cot运行。

#loader contenttweaker

//导包

import mods.contenttweaker.tconstruct.TraitBuilder;

import mods.contenttweaker.Color;

//该教程示例所用到的包

import crafttweaker.entity.IEntity;

import crafttweaker.entity.IEntityLivingBase;

(以下为匠魂提供的特性事件函数,选择性导包)

import mods.tconstruct.traits.Update;

特性事件

//声明一个特性构建器

//val 变量名 = TraitBuilder.create("特性ID");

val buoyantTrait = TraitBuilder.create("buoyant");

//特性显示的颜色

//变量名.color = Color.fromHex("16进制颜色").getIntColor();

buoyantTrait.color = Color.fromHex("5d4037").getIntColor();

//特性的名字

//变量名.localizedName = "名字";

buoyantTrait.localizedName = "强劲";

//特性的描述

//变量名.localizedDescription = "描述";

buoyantTrait.localizedDescription = "你变得更加强壮";

//重点的来了

//特性的效果

//以下是一个”拿着“带有该特性的装备时每tick给予20tick的力量II。

//所以这里使用onUpdate(在手上时就会触发事件)

//变量名.相对应的事件函数

buoyantTrait.onUpdate = function(thisTrait, tool, world, entity, itemSlot, isSelected) {

//由于entity函数默认为IEntity,所以需要强转为可以使用添加添加药水方法的IEntityLivingBase

    if (entity instanceof IEntityLivingBase) {

//声明这个函数所获得到的IEntityLivingBase

        var entity as IEntityLivingBase = entity;

//给获取到的IEntityLivingBase添加力量II(在代码里0才是1)药水。

        entity.addPotionEffect(<potion:minecraft:strength>.makePotionEffect(20, 1, false, false));

    }

};

//构建器的句号,不写就不会构建。

buoyantTrait.register();

//装备的特性

(不建议工具与盔甲的词条放同一个脚本)

//声明该脚本由cot运行。

#loader contenttweaker

//导包

import mods.contenttweaker.Color;

import mods.contenttweaker.tconstruct.Trait;

import mods.contenttweaker.conarm.ArmorTrait;

import mods.contenttweaker.tconstruct.TraitBuilder;

import mods.contenttweaker.conarm.ArmorTraitBuilder;

//声明一个特性构建器

(盔甲特性会自动在ID后面添加“_armor”后缀)

//val 变量名 = ArmorTraitBuilder.create("特性ID");

val buoyantTrait = ArmorTraitBuilder.create("buoyant");

//特性的颜色

//变量名.color = Color.fromHex("16进制颜色").getIntColor();

buoyantTrait.color = Color.fromHex("2196f3").getIntColor();

//特性的名字

//变量名.localizedName = "名字";

buoyantTrait.localizedName = "强劲";

//特性的描述

//变量名.localizedDescription = "描述";

buoyantTrait.localizedDescription = "你变得更加强壮";

//重点的来了

//特性的效果

//以下是一个”穿着“带有该特性的装备时每tick给予20tick的力量II。

//所以这里使用onArmorTick(穿上后的每个tick都会触发事件)

//变量名.相对应的事件函数

buoyantTrait.onArmorTick = function(trait, armor, world, player) {

//对player判空以防空指针。

    if (!isNull(player)) {

//给player添加力量II(在代码里0才是1)药水。

            player.addPotionEffect(<potion:minecraft:strength>.makePotionEffect(20, 1, false, false));

    }

//构建器的句号,不写就不会构建。

buoyantTrait.register();


既然可以自定义词条,那“强化”呢?当然可以!

 在中途插入


//特性的最大等级

//变量名.maxLevel = 等级;

buoyantTrait.maxLevel = 5;

//特性的每级需求

//变量名.countPerLevel = 每级需求;

buoyantTrait.countPerLevel = 20;

//特性强化所需的材料以及材料的点数

//变量名.addItem(材料, 材料的数量, 材料的点数);

//下面实例的就是这个强化需要铁块,4个铁块为2点强化

buoyantTrait.addItem(<item:minecraft:iron_block>, 4, 2);


强化写好了,书里没有怎么办?

安装资源加载

打开匠魂.jar把tconstruct\book\sections里的文件复制一份,到resources\tconstruct\book\sections里

modifiers.json按格式接着写

[
   {
    "type": "modifier",
    "data": "modifiers/extratrait.json"
  },
  {
      "type": "modifier",
    "data": "modifiers/特性的ID.json"   
  }
]

打开匠魂.jar把tconstruct\book\zh_cn\modifiers里的文件随便复制一份,到resources\tconstruct\book\zh_cn\modifiers里

这里用diamond.json举例

{
  "modifier": "diamond(特性ID)",
  "text": [
    {
      "text": "使用钻石强化工具能有效提升工具的耐久度,可以使工具拥有更长的使用时间。除此之外,工具变得也更好看了(描述)"
    }
  ],
  "effects(作用)": [
    "增加耐久度",
    "次要属性的增加",
    "挖掘等级提升到黑曜石级",
    "只能强化一次",
    "太棒了!"
  ],
  "demoTool": [
    "tconstruct:pickaxe(显示的物品)"
  ]
}

最终效果

使用Cot构建匠魂新特性(词条)-第1张图片

使用Cot构建匠魂新特性(词条)-第2张图片