本篇教程由作者设定使用 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(显示的物品)"
]
}
最终效果