如何根据刷怪蛋获取到对应怪物的类型? 有这方法吗...
南柯郡守 发表于 2020-7-24 17:38
https://papermc.io/javadocs/paper/1.12/org/bukkit/inventory/meta/SpawnEggMeta.html
多看看文档 ...

南柯郡守 发表于 2020-7-24 17:38
https://papermc.io/javadocs/paper/1.12/org/bukkit/inventory/meta/SpawnEggMeta.html
多看看文档 ...

丶米饭 发表于 2020-7-25 14:14
获取手上的刷怪蛋,然后给我这玩意...我想根据这玩意获取到对应的EntityType
...
- ItemStack#getItemMeta==cast=>SpawnEggMeta#getSpawnedType
丶米饭 发表于 2020-7-25 14:46
谢谢大佬回复,非常感谢..在三麻烦您,非常不好意思
..但是你这个代码,我也没看懂... ...
java类型描述记法
#代表对上一级的对象调用成员函数
cast代表强制类型转换
- ItemMeta im = itemStack.getItemMeta();
- SpawnEggMeta sem = (SpawnEggMeta) im;
- sem.getSpawnedType();
疾风暗影 发表于 2020-7-25 14:50
java类型描述记法
#代表对上一级的对象调用成员函数
cast代表强制类型转换

get的时候会直接报错
java.lang.UnsupportedOperationException: Must check item type to get spawned type
丶米饭 发表于 2020-7-25 14:57
get的时候会直接报错
java.lang.UnsupportedOperationException: Must check item type to get spawned ...
你的版本SpawnEggMeta中不包含entity信息了,也就是1.13及以上版本,id扁平化了
直接ItemStack#getType()获得material,然后直接得到刷怪蛋和entitytype一一对应的关系
疾风暗影 发表于 2020-7-25 15:04
你的版本SpawnEggMeta中不包含entity信息了,也就是1.13及以上版本,id扁平化了
直接ItemStack#getType( ...

丶米饭 发表于 2020-7-25 15:13
问题又回到第一张图了..你看图啊,获取手上的刷怪蛋..类型特么是air 空气啊..就离谱,要不早处理完 ...
既然扁平化就只能用查询法构建一个HashMap
Key: Material
Value: EntityType
map.put(Material.PIG_SPAWN_EGG, EntityType.PIG);
加上所有的spawnegg=>type的映射
- Player p = (Player)sender;
- ItemStack itemStack = p.getInventory().getItemInMainHand();
- SpawnEggMeta egg = (SpawnEggMeta) itemStack.getItemMeta();
- p.sendMessage(egg.getSpawnedType().name());
实验证明,这是没有问题的
嘶,没看清楚问题。。这是1.12.2测试的。。走错片场了