494308843


Player 继承了 HumanEntity

HumanEntity 继承了 LivingEntity
LivingEntity 翻译是活的实体

不能根据这个判断实体是否存活?

玩家死后实体ID会变吗?

能直接保存  Entity吗
比如保存到list 和map里
这个是原引用还是什么
实体死亡后会发生什么
会变成null?
还是说依旧可以使用
如果直接存储 Entity
在事件里是否能直接==来对比



是在是太麻烦了  懒得测试了QAQ
谁知道能回答一下吗






q513902026
本帖最后由 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和死后重生的情况下会重新生成实例
其他情况下会反序列化获得之前的实例

4one_R
你可以使用player.getName()来对比。

494308843
q513902026 发表于 2016-4-14 03:50
Bukkit的源码 CraftEntity的remove方法
    public void remove() {
        entity.dead = true;

为什么
玩家死后重生   实体ID并没有变

q513902026
本帖最后由 q513902026 于 2016-4-14 19:08 编辑
494308843 发表于 2016-4-14 13:49
为什么
玩家死后重生   实体ID并没有变

你可以根据JAVA DEBUG的功能 进行DEBUG会发现实例变化了

494308843
q513902026 发表于 2016-4-14 19:02
你可以根据JAVA DEBUG的功能 进行DEBUG会发现实例变化了

Σ( ° △ °|||)︴   好吧。。。
没遇见过。。。
我好多都不懂

云闪
唔……从你的问题里我觉得你java基础不扎实

494308843
splt 发表于 2016-4-16 19:00
唔……从你的问题里我觉得你java基础不扎实

5555555555555

107874017
splt 发表于 2016-4-16 19:00
唔……从你的问题里我觉得你java基础不扎实

唔...
我觉得玩家死亡的话只是一个生命值的问题
还不如说理解能力不强

bzbz167
应该会重新创建一个玩家实例。因为玩家死后已经从服务端移除了,继续保存是没有意义的,可能还会导致内存泄露吧

bzbz167
但是如果你把它放进list里,它并不会变成null。因为你还持有它的引用。如果没有放进list里,它应该会被删除的。

494308843
splt 发表于 2016-4-16 19:00
唔……从你的问题里我觉得你java基础不扎实

还有一个问题
区块卸载的时候
已有的实体
会在数据里删除?
获取所有实体的时候   不在列表里了?
重新加载区块的时候
实体ID还是之前的ID吗

如何给每个实体做个唯一的标记
写元数据吗?
区块重新加载的时候元数据还会存在吗?



云闪
107874017 发表于 2016-4-29 10:32
唔...
我觉得玩家死亡的话只是一个生命值的问题
还不如说理解能力不强

不不不,他问那个会不会变成null的问题……一看就是java基础不行

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