Player 继承了 HumanEntity
HumanEntity 继承了 LivingEntity
LivingEntity 翻译是活的实体
不能根据这个判断实体是否存活?
玩家死后实体ID会变吗?
能直接保存 Entity吗
比如保存到list 和map里
这个是原引用还是什么
实体死亡后会发生什么
会变成null?
还是说依旧可以使用
如果直接存储 Entity
在事件里是否能直接==来对比
是在是太麻烦了 懒得测试了QAQ
谁知道能回答一下吗
本帖最后由 q513902026 于 2016-4-14 04:18 编辑
Bukkit的源码 CraftEntity的remove方法
public void remove() {
entity.dead = true;
}
同时CraftLivingEntity的构造函数是
public CraftLivingEntity(final CraftServer server, final EntityLiving entity)
可以推断 CraftLivingEntity会在Entity死亡后重新生成
然后通过JAVA自带的DEBUG功能进行验证
玩家只有在服务器reload和死后重生的情况下会重新生成实例
其他情况下会反序列化获得之前的实例
Bukkit的源码 CraftEntity的remove方法
public void remove() {
entity.dead = true;
}
同时CraftLivingEntity的构造函数是
public CraftLivingEntity(final CraftServer server, final EntityLiving entity)
可以推断 CraftLivingEntity会在Entity死亡后重新生成
然后通过JAVA自带的DEBUG功能进行验证
玩家只有在服务器reload和死后重生的情况下会重新生成实例
其他情况下会反序列化获得之前的实例
你可以使用player.getName()来对比。
q513902026 发表于 2016-4-14 03:50
Bukkit的源码 CraftEntity的remove方法
public void remove() {
entity.dead = true;
为什么
玩家死后重生 实体ID并没有变
本帖最后由 q513902026 于 2016-4-14 19:08 编辑
你可以根据JAVA DEBUG的功能 进行DEBUG会发现实例变化了
494308843 发表于 2016-4-14 13:49
为什么
玩家死后重生 实体ID并没有变
你可以根据JAVA DEBUG的功能 进行DEBUG会发现实例变化了
q513902026 发表于 2016-4-14 19:02
你可以根据JAVA DEBUG的功能 进行DEBUG会发现实例变化了
Σ( ° △ °|||)︴ 好吧。。。
没遇见过。。。
我好多都不懂
唔……从你的问题里我觉得你java基础不扎实
应该会重新创建一个玩家实例。因为玩家死后已经从服务端移除了,继续保存是没有意义的,可能还会导致内存泄露吧
但是如果你把它放进list里,它并不会变成null。因为你还持有它的引用。如果没有放进list里,它应该会被删除的。
splt 发表于 2016-4-16 19:00
唔……从你的问题里我觉得你java基础不扎实
还有一个问题
区块卸载的时候
已有的实体
会在数据里删除?
获取所有实体的时候 不在列表里了?
重新加载区块的时候
实体ID还是之前的ID吗
如何给每个实体做个唯一的标记
写元数据吗?
区块重新加载的时候元数据还会存在吗?
107874017 发表于 2016-4-29 10:32
唔...
我觉得玩家死亡的话只是一个生命值的问题
还不如说理解能力不强
不不不,他问那个会不会变成null的问题……一看就是java基础不行