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

注意:

        1. 完整内容请参阅官方wik/其他同志翻译的wiki/其他CoT教程/其他CrT教程等。

            https://docs.blamejared.com/1.12/zh/

            https://crafttweaker.readthedocs.io/zh_CN/latest/

            https://youyi580.gitbook.io/zentutorial/

        2. 本教程适用于1.12.2,如果您希望用于其他版本,请参阅wiki或自行尝试。

        3. 因本人技术有限,该教程必定存在不足之处,尽请谅解.如果您有更好的建议,请在评论区指出。

        4. 本教程需要安装的主要模组:CraftTweaker、ContentTweaker、Tinkers' Construct 2、Pewter(可选)

        5. 教程中可能涉及到的名词不会进行解释,比如“父类”。


// 以下为创建特性的脚本


#loader contenttweaker

#ikwid

#priority 10


import crafttweaker.item.IItemDefinition;

import crafttweaker.events.IEventManager;

import crafttweaker.event.PlayerAttackEntityEvent;

import crafttweaker.player.IPlayer;

import crafttweaker.item.IItemStack;

import crafttweaker.world.IWorld;

import mods.contenttweaker.tconstruct.TraitBuilder;


// 上方的信息从#loader开始 

// 第一行表示这个脚本由CoT来加载这个脚本,没有这一行是默认CrT加载

// 第二行表示报错信息不在玩家的聊天框输出,而是输出到日志中

// 第三行表示加载优先级,优先级是从大到小,以a-z来看谁先加载这个脚本。

// import xxx等表示导入某某包



// 创建一个名为XXX的对象

val trait_moonlight = mods.contenttweaker.tconstruct.TraitBuilder.create("trait_moonlight");


// 设定颜色

trait_moonlight.color = 0x99FFFF;

// 设定特性名称,显示在具备该特性的物品中

trait_moonlight.localizedName = ("月光");

// 设定特性注释,显示在匠魂书中

trait_moonlight.localizedDescription = ("根据月相得到伤害加成");

// 指定的材料可以将这个特性强化到工具上,暂时没找到直接向匠魂注册的材料添加特性的方法(比如为骨头添加这个特性),只能通过这行来给做好的工具在锻造台做强化。

// 只有在锻造台为工具强化才会显示我在上面的color = 0x99FFFF设定的颜色,在如果工具不需要强化就自带这个特性的话,字体颜色是由材料决定的。

trait_moonlight.addItem(<item:skyresources:alchemyitemcomponent:10>);




// 改变玩家攻击实体时计算的伤害

// wiki网页:https://docs.blamejared.com/1.12/zh/Mods/ContentTweaker/Tinkers_Construct/TraitBuilder/#ontoolheal

trait_moonlight.calcDamage = function(trait, tool, attacker, target, originalDamage, newDamage, isCritical) {

     //创建一个变量来保存月相整型

     //attacker是一个IEntityLivingBase类型,所以可以根据他的父类获取到月相信息或者其他世界信息,比如是不是白天。

     var nowMoonPhase as int = attacker.world.getMoonPhase();


    // 判断月相变量是否为空,不为空则返回加成伤害。为空则返回原本伤害

    // 大于等于3判断可以避免除2后变成负面buff的情况,比如我伤害怎么变0了

    // 判断现在是否是夜晚

    // 月相最大为7倍,除以2可以限制伤害最高为3.5倍,可能会因为参与运算的类型不是浮点数或返回的数值必须是整型而达不到3.5倍

    if (nowMoonPhase >= 3 & !attacker.world.isDayTime()){


         return newDamage *(nowMoonPhase /2);


    }else{

        // 不满足条件则返回原本伤害

         return newDamage;

    }

};



// 向游戏注册这个特性

// 当特性写完之后,就可以使用CoT/Pewter向材料添加这个特性了,需要注意优先级

trait_moonlight.register();




结果:使用CoT为匠魂添加自定义特性简单示例-第1张图片使用CoT为匠魂添加自定义特性简单示例-第2张图片



感谢:

        // 抄了他的github

        友:飞翔之路3

        // 翻译的wiki

        酒石酸的汉化CrT的wiki

        youyihj的GitBook

        官方wiki