Time__sg
尝试了用下落的方块

一来是方块必须落地才能造成伤害 落地之后又变成方块 非常麻烦
二来是需要前摇 还要坠落一会才能落地造成伤害
还试过用瞬间伤害药水的效果
之前都是用这个办法 但是伤害貌似只能是4的倍数 也很不方便
求一个可以瞬间造成伤害的指令组 感谢



Dahesor
本帖最后由 Dahesor 于 2021-9-21 03:46 编辑

如果是对非玩家,有需要精确定控制生命值,可以直接用/data修改nbt。
玩家的话就很麻烦,不如直接使用虚拟生命值。

要伤害发红特效可以用雪球砸一下(或者,HurtTime?没试过不知道有没有用)

会用/data么?就默认你会了,不过还是附教程:修改NBT/data




阿仟
如果是非玩家,就采用楼上的办法,用data来更改实体的生命值
实例是/data modify entity @e[type=zombie,limit=1,sort=nearest] Health set value 1s
这个是把最近的僵尸的生命值改成1,你可以用execute 里的store来调节分数与生命值的关系

如果是玩家的话,就采用瞬间伤害和瞬间治疗配合使用,因为瞬间伤害的伤害是比瞬间治疗高一点点的(1级是6和4)

Chelover_C60
本帖最后由 Chelover_C60 于 2021-9-21 12:00 编辑

实际上对非玩家实体造成指定伤害最常用的不是/data而是记分板
先建立一个准则为dummy的记分板,然后获取自身血量。一般为了保证精度会作适当放大。此处放大1000倍
  1. execute as 实体 store result score @s 记分板 run data get entity @s Health 1000
复制代码
然后减去分数。比如要造成1点伤害,则将分数减去1000(注意造成的伤害也要放大对应倍数)
  1. scoreboard players remove 实体 记分板 1000
复制代码
最后将分数存回nbt,并缩小一定倍数
  1. execute as 实体 store result entity @s Health float 0.001 run scoreboard players get @s 记分板
复制代码

对于玩家的处理则相对麻烦
这里找了个链接,帖子本身和后面的回复讨论都可以看看
虽然是讨论恢复血量的,但对造成伤害的思路比较类似
https://www.mcbbs.net/thread-943616-1-1.html


12:00
找到了一个现成的数据包,可供参考
https://www.mcbbs.net/thread-1181242-1-1.html