在mc中,修改物品属性有很多种方法,比如Property Modifier模组;但是他只能修改被限定的物品,如近战武器、工具、盔甲,如果你想要给铁锭加上攻击伤害,或者改变弓箭的弹射物伤害,这个模组是做不到的;kjs或许可以,但是实现起来非常麻烦(同理,如果要使用kjs删除或修改物品的硬编码描述,操作也会比较繁琐,但是对于各位大佬来说无所谓);
这篇教程只会写非常基础的用法,力求让“今天之前还不认识crt的人”看了也能知道怎么修改物品属性和描述;
前期准备
首先在你的游戏里装上[CrT]CraftTweaker以及包含“你想要修改物品”的模组并打开游戏。
打开游戏后你应该能在你的版本文件夹里找到一个名为scripts的文件夹。
在该文件夹里新建一个扩展名为zs的文件,比如 物品.zs translate.zs 等,名字不限,可以是任何你喜欢的名字,只要保证扩展名是.zs就行。
注意:命名不需要和我这些文件一样!你自己随便取名就行,不管取得什么名字用什么语言,都不影响使用。
修改物品属性
在做完上面的一切后,打开你的zs文件,用记事本或者notepad++都行,输入
import crafttweaker.api.ingredient.IIngredient;
之后的一切修改要在你写了上面这串代码的同一个zs文件里输入。
接下来,依旧是先举例子:
这个三叉戟位于副手时,会增加玩家的游泳速度,想要为他加上“游泳速度”这个属性,你只需在你刚刚的zs文件里输入这行代码。
<item:minecraft:trident>.anyDamage().addGlobalAttributeModifier(<attribute:forge:swim_speed> , "attribute1", 0.5, crafttweaker.api.entity.attribute.AttributeOperation.MULTIPLY_TOTAL, [<constant:minecraft:equipmentslot:offhand>]);
接下来详细解释这段代码的结构:
<item:minecraft:trident>:这是指代“要修改的物品”,通常,你在游戏中手持要修改的物品,并使用指令
/ct hand
后,系统就会将这个物品的id以crt要用的尖括号形式复制到你的粘贴板里,比如<item:minecraft:wooden_hoe><item:minecraft:raw_iron><item:bakery:oat_crate>等;
.anyDamage():这串代码表示你的这项属性修改不论在物品耐久为多少时都会正常生效。如果不添加这串代码,你的属性添加只会在物品满耐久时存在,失去耐久后额外属性就会消失;
.addGlobalAttributeModifier(...):这行字母的意思是为物品添加全局属性修改器,告诉模组你想要影响玩家的属性值,具体怎么影响,要看括号里填写的是什么,而接下来则介绍括号内的代码们;
<attribute:forge:swim_speed>:指定要修改的属性,这里是“游泳速度”,下面是一个只装了forge和crt后可以调用的属性列表:
属性标签 属性名称 备注 <attribute:minecraft:generic.attack_knockback> 击退 <attribute:minecraft:generic.flying_speed> 生物飞行速度 对蝙蝠、幻翼等生效,对玩家无效 <attribute:minecraft:generic.armor_toughness> 盔甲韧性 <attribute:minecraft:generic.armor> 护甲值 <attribute:minecraft:generic.attack_damage> 攻击伤害 最常见的“物理伤害” <attribute:minecraft:horse.jump_strength> 马的跳跃力量 对坐骑生效,不会修改玩家的数值 <attribute:minecraft:zombie.spawn_reinforcements> 僵尸增援 对玩家无效 <attribute:minecraft:generic.knockback_resistance> 击退抗性 <attribute:minecraft:generic.movement_speed> 移动速度 <attribute:minecraft:generic.follow_range> 跟随范围 对玩家无效 <attribute:minecraft:generic.max_health> 最大生命值 <attribute:minecraft:generic.attack_speed> 攻击速度 <attribute:minecraft:generic.luck> 幸运值 提高玩家钓鱼、打开奖励箱获得稀有物品的概率 <attribute:forge:step_height_addition> 抬步高度 可以让玩家直接走上一格高或者更高 <attribute:forge:reach_distance> 触及距离 仅修改玩家挖掘方块和打开工作方块的距离 <attribute:forge:attack_range> 攻击距离 仅修改玩家攻击距离,必须小于触及距离 <attribute:forge:swim_speed> 游泳速度 改变玩家在液体中游泳(疾跑)的速度 <attribute:forge:entity_gravity> 重力 会改变玩家的跳跃高度和摔落速度;为0时玩家不能改变自己的Y坐标 <attribute:forge:nametag_distance> 名称显示距离 一般对命名牌生效 "attribute1":属性修改器的名称,这个双引号内可以填入任何字母或单词,但是不能重复,你如果修改了两个物品的属性,这两个“名称”必须不同。
0.5, crafttweaker.api.entity.attribute.AttributeOperation.MULTIPLY_TOTAL:属性修改的数值和操作类型
·这个“0.5”可以填写你任何想要的数值,但是必须配合后面的操作类型,如(MULTIPLY_TOTAL)等。
·操作类型有:添加(ADDITION)、基础倍乘(MULTIPLY_BASE)、独立乘区(MULTIPLY_TOTAL)等。
·一个属性的最终值通常为:(基础伤害+ADDITION)x(1+MULTIPLY_BASE)x(MULTIPLY_TOTAL),其中,基础倍乘默认为0,独立乘区通常默认为1。
·以物理攻击为例,在钻石剑上使用ADDITION并填写数值“1”,你会得到一把攻击力+8的钻石剑,在钻石剑的原基础伤害(7)上增加了1点基础伤害,即伤害为(7+1)x(1+0)x1=8;这时,你给你的钻石剑再使用一次MULTIPLY_BASE或MULTIPLY_TOTAL,并填写数值0.5,你的钻石剑伤害会变为(7+1)x(1+0.5)x1=12或(7+1)x(1+0)x1.5=12,乍一看两者似乎没什么区别,如果你再使用一次属性修改器,即总共使用两次MULTIPLY_BASE或两次MULTIPLY_TOTAL并还是填写数值为0.5呢?
·最终,在“使用一次ADDITION和两次MULTIPLY_BASE”后你的钻石剑伤害为(7+1)x(1+0.5+0.5)x1=16而“使用一次ADDITION和两次MULTIPLY_TOTAL”之后则为(7+1)x(1+0)x1.5x1.5=18;通常的说,计算公式越为复杂,玩家对某个属性的加成越多,比如玩家饮用了力量药水、附魔了锋利,独立乘区(MULTIPLY_TOTAL)的收益也就更大;因此,在一些模组(神化)中,会用“基础攻击伤害”和“总攻击伤害”来区分添加攻击力时的MULTIPLY_BASE和MULTIPLY_TOTAL,部分材质包也会使用+ X%和x X%来区分。
[<constant:minecraft:equipmentslot:mainhand>]:指定属性修改生效的装备槽位,如主手(mainhand)、副手(offhand)、头盔栏位(head)、胸甲栏位(chest)、护腿栏位(legs)、靴子栏位(feet)等;举例中的三叉戟,便只有在副手时才能增加游泳速度,如果改为mainhand,就可以在主手生效了。
有人可能会问:我要怎么删去工具原版的属性呢?只要在“数值”部分填入负数,数值等于其原版数值就行。
使物品带有更多种类的属性
上面的列表可以说只有一些非常基础的属性,在我的截图中,还有“魔法伤害”“伤害吸收”“闪避”等属性,我们要如何修改这种列表上没有提到的属性呢?
首先,我们要为游戏添加这些属性,大佬们会自己注册,而我这种普通人选择添加带有这些属性的模组,如“神化”“星月遗物”“海灵物语”“莱特兰系列”,他们添加了诸如暴击率、闪避率、格挡值、魔法伤害、火焰伤害、冰霜伤害等大量的属性值,可以为我们所用。
添加完毕后,我们需要得知属性的属性标签,这时,我们打开游戏,并输入指令:
/ct dump attributes
而后直接点击系统生成的蓝字即可在这份文件的结尾处查看你的游戏中所有模组提供的所有属性。
至于他们属性名称和具体翻译,请借助各大翻译软件。
学会上面这些后,你就可以自由的修改物品属性了;修改物品描述
关于物品描述的汉化教程详情请查看我写的另一篇关于模组武器道具的汉化教程