我的世界如何用游戏内命令移除生物受击后的无敌帧
Minecraft 纯指令移除生物受伤无敌帧解决方案
你之前的命令未生效主要有两个核心问题:
HurtTime字段的类型为短整型,单位是游戏刻(1刻=0.05s),你填写的0s属于类型不匹配,游戏会直接忽略该修改操作,正确取值应为不带单位的整数0- 普通数据包tick函数的默认执行时机晚于每tick的伤害判定阶段,等你修改
HurtTime时本次tick的无敌帧判定已经完成,修改不会对本次击中生效
可用解决方法
方法1:全局移除所有生物无敌帧(适配所有Java版版本)
将以下命令放到你的数据包的tick函数中,同时在pack.mcmeta中将数据包的加载优先级设为最高,确保命令会在每tick伤害判定之前执行:
execute as @e run data modify entity @s HurtTime set value 0
方法2:仅针对你的高速箭矢生效(性能损耗更低)
- 生成你的自定义高速箭矢时,给箭矢打上专属标签,示例命令:
tag @e[type=arrow,nbt=<你的箭矢自定义NBT>] add high_speed_arrow
- 每tick检测高速箭矢的击中状态,命中时立即清空目标的无敌帧:
execute as @e[tag=high_speed_arrow] at @s if entity @e[type=!arrow,distance=..0.5,limit=1] run data modify entity @e[type=!arrow,distance=..0.5,limit=1] HurtTime set value 0
方法3:1.19.4及以上版本专用方案
1.19.4版本新增了伤害源参数,你可以直接重写高速箭矢的伤害逻辑,用damage命令自定义伤害时直接添加忽略冷却的属性,无需修改HurtTime字段,示例命令:
damage <被击中实体> 2 arrow bypasses_cooldown from <箭矢持有者>
内容的提问来源于stack exchange,提问作者hfanatic
相关产品推荐
相关产品推荐

