目标是:在检测到怪物仇恨的时候,移除怪物的仇恨,一段时间后恢复
本帖最后由 dpy0428 于 2022-1-7 08:31 编辑
我想到两种控制方法,但是需要验证,一种是修改怪物的generic.follow_range属性为0,
另一种是添加玩家与怪物进入同一队伍,并且同队不能伤害,
我不确定可不可行
没有想到如何检测仇恨..
我想到两种控制方法,但是需要验证,一种是修改怪物的generic.follow_range属性为0,
另一种是添加玩家与怪物进入同一队伍,并且同队不能伤害,
我不确定可不可行
没有想到如何检测仇恨..
大部分怪物的仇恨都不储存在NBT里,原版数据包没法检测这些怪物的仇恨。
有一些“可愤怒生物”,它们的愤怒对象和时间储存在NBT里:
移除怪物仇恨可以用data modify entity <目标选择器> AngerTime set value -1
有一些“可愤怒生物”,它们的愤怒对象和时间储存在NBT里:
可愤怒生物额外字段:
AngerTime: 距离该生物变为中立所剩余的刻数。当值为-2,147,483,648至0时该生物中立;当值为1至2,147,483,647时该生物愤怒。该值在大于0的情况下会每刻递减。当该值从1变为0时,该生物并不会立即停止追踪攻击目标,而是会等到目标离开该生物的探测范围才停止追踪。当该生物或其他32格内的同种生物被玩家攻击时,该值会被随机设为一个400至800的数字。
AngryAt: 引起当前实体愤怒的实体的UUID。
移除怪物仇恨可以用data modify entity <目标选择器> AngerTime set value -1
本帖最后由 minecraftxixi 于 2022-1-7 23:25 编辑
检测怪物仇不清楚,但是可以让怪物失去对任何人的仇恨(除非你靠太近)
把它的视距调下就可以了
普通怪物仇恨是不会存在nbt里的,不然你的mc会卡死(有nbt的怪不占用刷怪上限)
属性值:generic.follow_range
可以见 wiki属性
实在想要实现也可以检测僵尸视距范围内有没有僵尸(函数什么的都整起来)
如果怕不严谨可以函数判断僵尸是否看得见玩家(有没有墙堵着等,这个得参考僵尸视野判定)
就是效率嘛。。。可能会慢
检测怪物仇不清楚,但是可以让怪物失去对任何人的仇恨(除非你靠太近)
把它的视距调下就可以了
普通怪物仇恨是不会存在nbt里的,不然你的mc会卡死(有nbt的怪不占用刷怪上限)
属性值:generic.follow_range
可以见 wiki属性
实在想要实现也可以检测僵尸视距范围内有没有僵尸(函数什么的都整起来)
如果怕不严谨可以函数判断僵尸是否看得见玩家(有没有墙堵着等,这个得参考僵尸视野判定)
就是效率嘛。。。可能会慢