= 创作分享 =
你问我答
求助,1.16.5怎么用crafttweaker修改盔甲与武器的属性 ...
老航海士的喵

求助,1.16.5怎么用crafttweaker修改盔甲与武器的属性

20RF
最近想做一个1.16的魔改整合包,为了提升难度,我要修改mod中武器的耐久和盔甲的盔甲韧性,盔甲值和耐久,急需大佬帮助!

最佳答案

查看完整内容

用CraftTweaker可以修改,只不过有点麻烦,这里我先提供一个示例,写得简略了一些,没看懂可以追问: 首先是修改物品的属性Attribute,这里不包括耐久值。需要用到IIngredient类下的方法addGlobalAttributeModifier,使用之前还要导入两个类IIngredient和AttributeOperation。具体语法如下:那这些参数该怎么填?比如我要把铁头盔的护甲值修改为5,IIngredient要写成.anyDamage() (其中anyDamage()的作用就是使得该物品在任何耐久 ...
发表于 2023-1-24 20:08:21 | 显示全部楼层 |阅读模式

回复 | 举报

该帖共收到 13 条回复!
Alanight
本帖最后由 QQ酱199171 于 2023-1-25 23:48 编辑

用CraftTweaker可以修改,只不过有点麻烦,这里我先提供一个示例,写得简略了一些,没看懂可以追问:
首先是修改物品的属性Attribute,这里不包括耐久值。需要用到IIngredient类下的方法addGlobalAttributeModifier,使用之前还要导入两个类IIngredient和AttributeOperation。具体语法如下:
  1. import crafttweaker.api.item.IIngredient;
  2. import crafttweaker.api.entity.AttributeOperation;

  3. // 所用到的方法具体语法如下(查询MCwiki有关修饰符的资料即能看明白):
  4. IIngredient.addGlobalAttributeModifier(
  5.     attribute as Attribute,             // 要替换的修饰符对应的属性
  6.     uuid as string,                     // 要替换的修饰符的唯一标识符
  7.     name as string,                     // 要替换的修饰符的新名字,个人建议写原名字
  8.     value as double,                    // 要替换的修饰符的具体修饰值
  9.     operation as AttributeOperation,    // 确定修饰符运算模式
  10.     slotTypes as MCEquipmentSlotType[]  // 修饰符起作用的物品栏槽位
  11. ) as void;
复制代码
那这些参数该怎么填?比如我要把铁头盔的护甲值修改为5,IIngredient要写成<item:minecraft:iron_helmet>.anyDamage() (其中anyDamage()的作用就是使得该物品在任何耐久下都能保持属性数值的修改,如果不写,物品一旦损失耐久属性就会恢复成原来的样子),value就是修改后的数值5.0(前提是修饰符运算模式选加法),operation选用加法模式,填AttributeOperation.ADDITION。剩下的参数不知道填的话可以通过游戏内指令获取,主手随便拿个头盔,输入/ct hand attributes可看到聊天栏出现一些信息,如图所示。

屏幕截图 2023-01-25 230151.png

最上面的<equipmentslottype:head>就是slotTypes,也就是头部槽位,<attribute:minecraft:generic.armor>就是护甲值属性attribute,其下对应的Name和ID就是方法中的nameuuid参数,记得打上引号。
至此,便可以写出如下代码 (为方便大量调用,写了个ArmorHelmet函数):
  1. import crafttweaker.api.item.IIngredient;
  2. import crafttweaker.api.entity.AttributeOperation;

  3. function ArmorHelmet(item as IIngredient, armor_value as double) as void {
  4.     item.anyDamage().addGlobalAttributeModifier(
  5.         <attribute:minecraft:generic.armor>,
  6.         "2ad3f246-fee1-4e67-b886-69fd380bb150",
  7.         "Armor modifier",
  8.         armor_value,
  9.         AttributeOperation.ADDITION,             // 采用加法运算模式,具体参考MCwiki中修饰符页面
  10.         [<equipmentslottype:head>]               // 在头部槽位时起作用,可在中括号内添加多个槽位
  11.     );
  12. }

  13. ArmorHelmet(<item:minecraft:iron_helmet>, 5.0);  // 调用函数ArmorHelmet修改铁头盔护甲值为5.0
复制代码
/reload一下就可以看到铁头盔的护甲值成功修改了(原版数值为2):
屏幕截图2.png
最后是耐久修改。在导入了IIngredient类的前提下直接写下面的语句即可搞定(也就是说可直接加在上面代码的后面):
  1. <item:minecraft:iron_helmet>.maxDamage = 2000;   // 直接修改耐久值为2000
复制代码
相关链接(有关修饰符的介绍在第三个链接):
IIngredient - CraftTweaker Documentation (blamejared.com)
AttributeOperation - CraftTweaker Documentation (blamejared.com)
属性 - Minecraft Wiki,最详细的我的世界百科 (fandom.com)
自我吐槽→刚刚体验了Potato推荐的Property Modifier,相比我的来说真的是极度简便[笑哭]
发表于 2023-1-24 20:08:22 | 显示全部楼层

回复 | 举报

狂想ThePotato
本帖最后由 Kasualix 于 2023-1-24 20:34 编辑

https://www.mcmod.cn/class/6009.html
crt……可能不是不行,不过肯定没property modifier一个注册名一个数字方便。
مكتوب
发表于 2023-1-24 20:33:28 | 显示全部楼层

回复 | 举报

老航海士的喵
Kasualix 发表于 2023-1-24 20:33
https://www.mcmod.cn/class/6009.html
crt……可能不是不行,不过肯定没property modifier一个注册名一个 ...

怎么使用呢,求使用教程
发表于 2023-1-24 21:15:27 | 显示全部楼层

回复 | 举报

狂想ThePotato
刘芃皜 发表于 2023-1-24 21:15
怎么使用呢,求使用教程

相关链接有例子啊
这么简单的东西看看例子就能看得懂
مكتوب
发表于 2023-1-24 21:19:36 | 显示全部楼层

回复 | 举报

老航海士的喵
Kasualix 发表于 2023-1-24 21:19
相关链接有例子啊
这么简单的东西看看例子就能看得懂

所以说例子中的格式知道了,但不知道在哪个配置文件上输入,是要先把整合包导出还是直接在mod文件中改?
发表于 2023-1-25 13:37:30 | 显示全部楼层

回复 | 举报

狂想ThePotato
刘芃皜 发表于 2023-1-25 13:37
所以说例子中的格式知道了,但不知道在哪个配置文件上输入,是要先把整合包导出还是直接在mod文件中改? ...

你启动一次游戏config里不就有了
مكتوب
发表于 2023-1-25 14:28:05 | 显示全部楼层

回复 | 举报

老航海士的喵
QQ酱199171 发表于 2023-1-24 20:08
用CraftTweaker可以修改,只不过有点麻烦,这里我先提供一个示例,写得简略了一些,没看懂可以追问:
首先 ...

所以说不用那个armor helmet函数,直接写物品名称打头的语句比如像你最后说的耐久修改语句那样行不行,而且我想问一下盔甲韧性怎么改
发表于 7 天前 | 显示全部楼层

回复 | 举报

Alanight
本帖最后由 QQ酱199171 于 2023-1-26 14:21 编辑
刘芃皜 发表于 2023-1-26 13:59
所以说不用那个armor helmet函数,直接写物品名称打头的语句比如像你最后说的耐久修改语句那样行不行,而 ...

直接写是可以的。修改盔甲韧性和盔甲值差不多,我之前回复的内容中的第一张图中还有一个叫做<attribute:minecraft:generic.armor_toughness>的属性,翻译一下就可以知道这是盔甲韧性,然后接下来的步骤和修改盔甲值大差不差。
理论上这个方法能修改一切属性,你可以用/ct dump attribute查询游戏中所有的属性,输出内容在.minecraft/logs/crafttweaker.log文件里面。在修改某个物品属性之前最好用/ct hand attribute看一下这个物品有什么属性,如果你要修改的属性这个物品没有的话,uuid参数可以不写,name随便命名就行。还有就是要注意一点,如果要修改武器的攻击值和攻击速度,采用加法模式,修改后的实际攻击值和攻击速度分别是value+1以及value+4。
发表于 7 天前 | 显示全部楼层

回复 | 举报

Alanight
QQ酱199171 发表于 2023-1-26 14:17
直接写是可以的。修改盔甲韧性和盔甲值差不多,我之前回复的内容中的第一张图中还有一个叫做的属性,翻译 ...

顺便再纠个错,之前改耐久的方法其实不用任何的导入语句,如果想用变量代替尖括号,才需要导入IItemStack类,变量类型就是IItemStack
发表于 7 天前 | 显示全部楼层

回复 | 举报

12下一页
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表