CHHBlock
1.12.2 forge
我写了一个事件A阻止玩家以任何手段恢复生命,但又写了一个事件B用来恢复玩家的生命
我该如何做到让事件B的回血不会被事件A阻止

南柯郡守
创建一个map 里面放offlineplayer和double
a事件在取消回血的时候  对比一下回血对象和回血量是否和map里面的匹配 不匹配就取消回血

纱夜
你可以让事件B优先级比A高
也可以在A处理代码里面
特化的处理一下B

然后如果要存状态

记得用玩家的名字或者UUID
而不是直接存玩家对象

MaxSeth
给玩家加个capability,里面放boolean值,事件b把capability设成true,在回血,事件a判断capability是不是true,是true就设成false,在通过事件,不是就取消

南柯郡守
阴阳师元素祭祀 发表于 2020-7-1 18:29
你可以让事件B优先级比A高
也可以在A处理代码里面
特化的处理一下B

在这里想顺便问下 存player对象容易出事 那么应该offlineplayer没事吧因为我有个插件就是存了offlineplayer

CHHBlock
阴阳师元素祭祀 发表于 2020-7-1 18:29
你可以让事件B优先级比A高
也可以在A处理代码里面
特化的处理一下B

虽然知道思路了但不知道该怎么做
但我把player.heal(*)改为了player.setHealth(player.getHealth+*)
达到了我想要的效果,但不知道这么做会不会出一些问题
希望能够教我具体该如何做,谢谢了

3TUSK
CHHBlock 发表于 2020-7-1 20:18
虽然知道思路了但不知道该怎么做
但我把player.heal(*)改为了player.setHealth(player.getHealth+*)
达到 ...
但我把player.heal(*)改为了player.setHealth(player.getHealth+*)
达到了我想要的效果,但不知道这么做会不会出一些问题


https://paste.ubuntu.com 之类的粘贴箱贴代码上来。

CHHBlock
本帖最后由 CHHBlock 于 2020-7-2 02:12 编辑
3TUSK 发表于 2020-7-2 00:54
https://paste.ubuntu.com 之类的粘贴箱贴代码上来。

https://paste.ubuntu.com/p/KJ5m3yk5hj/
是关于一把武器,身上拥有该武器时会无法通过其他手段恢复生命
只有在使用该武器攻击时才会恢复自身生命
不知道这么做会不会出什么问题,也不知道有没有更好的解决方案


3TUSK
CHHBlock 发表于 2020-7-2 02:05
https://paste.ubuntu.com/p/KJ5m3yk5hj/
是关于一把武器,身上拥有该武器时会无法通过其他手段恢复生命
...

抱歉回复迟了。
你现在的写法应该是对的:LivingHealEvent 只会在 EntityLivingBase.heal 调用的时候触发。你那个 hitEntity 直接调用 setHealth 是不会触发 LivingHealEvent 的。
不过这样一来如果有别的 Mod 也调用 setHealth 那就会绕开你的那个事件订阅。这个是无解的……不过我觉得你遇到这样的情况的可能性挺低的。

第一页 上一页 下一页 最后一页