@EventHandler
public void Death(EntityDeathEvent event) {
Entity entity = event.getEntity();
String uuid = entity.getUniqueId().toString();
if (uuid.equalsIgnoreCase("d75af8f9-e53e-4c9b-bea4-f556f1710963")) {
Bukkit.broadcastMessage("**");
}
}
这是我写的,一个实体死亡事件,判定这个实体的uuid,然后死了发一条消息,这个实体是1.12.2的NPCmod弄出来的,我杀死了这个实体,确实提醒了消息,但是只提醒了一次,后面在杀死这个实体就没反应了,请求大佬指点一下,难道要写个BukkitRunnable?
public void Death(EntityDeathEvent event) {
Entity entity = event.getEntity();
String uuid = entity.getUniqueId().toString();
if (uuid.equalsIgnoreCase("d75af8f9-e53e-4c9b-bea4-f556f1710963")) {
Bukkit.broadcastMessage("**");
}
}
这是我写的,一个实体死亡事件,判定这个实体的uuid,然后死了发一条消息,这个实体是1.12.2的NPCmod弄出来的,我杀死了这个实体,确实提醒了消息,但是只提醒了一次,后面在杀死这个实体就没反应了,请求大佬指点一下,难道要写个BukkitRunnable?
后面你重新召唤这个实体的时候
uuid已经变了吧(
死去的NPC 怎么可能会再生呢
你再生的只是躯干 而不是灵魂 X
uuid已经变了吧(
你再生的只是躯干 而不是灵魂 X
也许可以用名字(如果没有重复的)或者其他特征来判断是不是某个实体?
阴阳师元素祭祀 发表于 2020-7-21 12:38
后面你重新召唤这个实体的时候
uuid已经变了吧(
是npcmod创建出来的一个npc,我重启服务器过后,这个npc刷新了,但是我把他杀了,他还是提醒了消息,
QQ2418818133 发表于 2020-7-21 12:39
是npcmod创建出来的一个npc,我重启服务器过后,这个npc刷新了,但是我把他杀了,他还是提醒了消息, ...
这个可能要问神奇的uuid算法(?)
反正用uuid来判断有点不靠谱
毕竟...不是玩家那种固定的UUID(?)
或者可能是每次服务器重新刷新的时候第一次生成uuid是这个
阴阳师元素祭祀 发表于 2020-7-21 12:42
这个可能要问神奇的uuid算法(?)
反正用uuid来判断有点不靠谱
毕竟...不是玩家那种固定的UUID(?)
刚刚试了一下,判定名字也是,也只提醒一次,然后打杀死就没效果了
QQ2418818133 发表于 2020-7-21 12:50
刚刚试了一下,判定名字也是,也只提醒一次,然后打杀死就没效果了
npcmod的npc应该有nbt的吧?
多添加几个logger.info看看哪里出了问题 比如if之前输出一次uuid 看几次有啥不一样
南柯郡守 发表于 2020-7-21 13:24
多添加几个logger.info看看哪里出了问题 比如if之前输出一次uuid 看几次有啥不一样 ...
都是一样的,uuid一直没变
把UUID写死不是什么好选择
最好还是想办法换一个逻辑
比如说在某些时候存储这个UUID,需要的时候 读取
UUID具有唯一性,理论上来说死掉之后也不会有相同UUID的npc了
至于重启服务器后为什么刷新了我也不知道,但是理论上应该是不重复的
最好还是想办法换一个逻辑
比如说在某些时候存储这个UUID,需要的时候 读取
UUID具有唯一性,理论上来说死掉之后也不会有相同UUID的npc了
至于重启服务器后为什么刷新了我也不知道,但是理论上应该是不重复的
William_Shi 发表于 2020-7-21 13:41
把UUID写死不是什么好选择
最好还是想办法换一个逻辑
比如说在某些时候存储这个UUID,需要的时候 读取
但是我每次把他杀死,然后get他的uuid,一直都是一个,没变
阴阳师元素祭祀 发表于 2020-7-21 13:44
也许是mod特性
之后死亡/复活不算是死亡(?)
也有可能
那要看mod内部的逻辑了,或许是直接取消掉了死亡事件也未可知,那样的话就不算是重新生成了实体,就相当于是没死,但mod与bukkit插件的事件监听的先后,或者说服务端内部如何处理两条事件总线的优先级的我实在不知道,能力所限。