wshycaa
本帖最后由 wshycaa 于 2019-4-1 04:39 编辑

我在写一个mod服插件,遇到点问题。怎么把net.minecraft.entity.player.EntityPlayerMP转换成LivingEnyity这类实体呢?强制转换会出错

或者告诉我怎么能够根据EntityId获得某一个Entity呢?

白灯
//player 得你自己获取啦, 我这里就写成null了, 这个方法应该是可以的, 如果不行就通过player获取玩家名, 然后在用Bukkit.getPlayer("名字")再转换成LivingEntity
  1. EntityPlayerMP player = null;
  2. LivingEntity le = (LivingEntity) Bukkit.getEntity(player.getUniqueID())
复制代码

wshycaa
本帖最后由 wshycaa 于 2019-4-1 11:06 编辑
cws_sh 发表于 2019-4-1 05:07
//player 得你自己获取啦, 我这里就写成null了, 这个方法应该是可以的, 如果不行就通过player获取玩家名,  ...


额,用uuid的确是可以得到玩家,我昨天已经测试成功了,但是如果想要转换类型的不是玩家而是其他实体呢?  比如我通过某种方法获取的是net minecraft entity Entity 里面的其他实体……

我可以获取到这个实体的uuid和Entity Id,可是bukkit里面貌似没有直接通过这些得到该实体的方法,只能遍历。有没有高效一些的办法呢?

白灯
wshycaa 发表于 2019-4-1 11:00
额,用uuid的确是可以得到玩家,我昨天已经测试成功了,但是如果想要转换类型的不是玩家而是其他实体呢?  ...

Entity entity = Bukkit.getEntity(UUID uuid);

wshycaa
cws_sh 发表于 2019-4-1 14:32
Entity entity = Bukkit.getEntity(UUID uuid);

我是1.710的服务端,好像没有这个方法。。我也是想找这个的

白灯
wshycaa 发表于 2019-4-1 19:16
我是1.710的服务端,好像没有这个方法。。我也是想找这个的

看了一下Bukkit.getEntity(UUID uuid);是怎么实现的


wshycaa
本帖最后由 wshycaa 于 2019-4-1 20:37 编辑
cws_sh 发表于 2019-4-1 20:25
看了一下Bukkit.getEntity(UUID uuid);是怎么实现的

这么说来,worldserver里面的getEntity(uuid)方法的实现手段可能还是遍历那个世界的所有实体取相同uuid的那一个?
好吧,我干脆直接遍历世界实体取uuid相同的那一个好了 谢谢你了
这个方法具体的路径是在哪个包里啊?我去研究研究