我的世界服务器物品在护甲,我的世界1.9自定义物品盔甲值方法

本文详细讲述了如何在《Minecraft》中通过属性NBT改变盔甲的护甲值,实验了无敌30和负值效果,并揭示了护甲值的真正作用。作者通过实例验证了护甲并非绝对无敌,仅提供基础防护,对可抗力伤害无效。

实验之前我先开启了对自己盔甲值判据的计分板以便分析。

首先跟以往不同的就是盔甲值可以由玩家改变了,官.方数值在0~30之内

a814b57caab9316b524233d5250d3cd0.png

默认的装备盔甲值是固定的,而且是锁定在身上的效果。

那么如果用之前的装备属性NBT来改变呢,就又是另一种情况。

用指令刷出一个带有速度加成的盔甲

d9369ea9530a1786039fa94c254a1496.png

指令:

/give @a minecraft:diamond_chestplate 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:0.05,AttributeName:generic.movementSpeed,Name:speed}]}

这样刷出的是对所有列出物品栏条件都触发效果,光是拿在手上就有速度加成,

但是穿上以后整个人都慌了。。。

7fcdcaaf2c44f4ca5e7ecb69177993f2.png

可以看到全身钻石甲的人护甲值不满20.其实准确的说就是胸甲本身没有被赋予护甲值的属性。

那么就需要相应的属性NBT。

指令:

/give @a minecraft:diamond_chestplate 1 0 {AttributeModifiers:[{Operation:0,UUIDLeast:1,UUIDMost:1,Amount:30,AttributeName:generic.Armor,Name:armor}]}

这里新增的属性名字为:generic.Armor

好了,这样就获得一个护甲值为30的胸甲,瞬间秒杀其他防具

fd5f32bc698fc4467cd2ec344232a81a.png

前面说过了,任何物品都能被赋予这个属性并且有效,那是因为这种方式得到的物品对所有之中列出的物品栏都有效

开启盔甲值判据计分板

将物品拿在手上,可以看到护甲值变为30

eb740cce37a8a4d136a3dfed65bdabc8.png

只穿这个胸甲也是可以的

07a31ffe3a3cfefcda2dc7304c9ae219.png

那么接下来我们研究护甲值高低的影响,取两个最值来研究,30和负值。

官.方描述护甲30就是所谓的无敌,我们来试试。

83f38946010f5aefe5cf5d017170832a.png

通过普通僵尸的攻击后会发现,我们的血量并不是不会减少,而是半颗心半颗心地扣,

所谓的无敌只能说是最大防御,不能避免损害

接下来试试摔伤,用胸甲判定摔伤显然不行。

6da82da8d3b672d28a878ff36377ec9a.png

那么我们试试靴子,穿上护甲值30的靴子以后,从24格高空摔落,发现然并卵。

8f0784a1ad982196309635426a49d456.png

那么可以得出结论:护甲值只能防护非不可抗力的伤害,外来伤害除了基础防护,其余直接影响。

接下来试试负数等级的防护值,将胸甲的防护值设为-10

b16d52ae76c12a7d9952c0398de56ec0.png

试验后发现护甲值依旧是0,攻击也没有增加损害

1adeb4ebc493062240f748080f14aed8.png

因此负数等级的护甲值将会被视作无护甲值计算。

最后的亮点:护甲值为30的羊毛

afa4860d70e7bc62041c99c90c32e243.png

在Minecraft 1.20.1 Spigot API中,给马穿上护甲需要通过插件编程来实现,因为Spigot API允许自定义游戏内容。以下是一个简单的代码示例,假设你已经创建了一个名为`MyPlugin`的插件,并且有一个管理护甲方法`equipArmorToHorse`: ```java import org.spigotmc.entity.living.horse.Horse; import org.spigotmc.inventory.crafting.InstrumentedCraftingManager; public class MyPlugin { @Override public void onEnable() { // 注册事件监听器,在玩家交互时检查是否装备马匹护甲 InstrumentedCraftingManager eventManager = getInstrumentedCraftingManager(); eventManager.registerCraftingListener(this::equipArmorToHorse); } private void equipArmorToHorse(PlayerInteractEvent event) { Horse horse = (Horse) event.getClickedEntity(); // 确保点击的是马 if (horse != null && horse.isTame()) { // 只对驯服的马操作 // 这里只是一个模拟,实际游戏中你需要有对应的护甲库存 ItemStack chestplate = getOrCreateChestplateItemStack(); // 创建或获取胸甲物品 if (chestplate != null) { horse.setEquipment(chestplate, EquipmentSlot.CHESTPLATE); // 给马穿上胸甲 } } } // 获取或创建胸甲的ItemStack实例,这里仅作为例子,实际游戏中应从仓库或合成系统获取 private ItemStack getOrCreateChestplateItemStack() { // 实现你的逻辑,比如从数据存储获取,或者通过合成表生成 // 示例返回一个空的ItemStack,这在现实中是不可能的,只是一个占位符 return new ItemStack(Material.AIR); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值