如何获取一个指定id或uuid的正版玩家的头颅物品
翻了半天doc没找到。。。
正版服插件用到
根据uuid或者根据id获取都行
同时想问下国内服务器如何避免获取头颅瞬间的卡顿
翻了半天doc没找到。。。
正版服插件用到
根据uuid或者根据id获取都行
同时想问下国内服务器如何避免获取头颅瞬间的卡顿
新建一个skull 的itemstack
然后SkullMeta meta
meta.setOwner(name);//低版本用的是玩家名 高版本是啥我没试过
卡顿瞬间可以用异线程加载
然后SkullMeta meta
meta.setOwner(name);//低版本用的是玩家名 高版本是啥我没试过
卡顿瞬间可以用异线程加载
ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, Short.parseShort("3"));
SkullMeta sm = (SkullMeta) item.getItemMeta();
sm.setOwningPlayer(org.bukkit.Bukkit.getOfflinePlayer("Hypergryph/UUID"));
item.setItemMeta(sm);
我是这么写的, 最后 item 就是头颅物品, 1.12可用
避免延迟我记得可以先返回默认史蒂夫头颅然后异步修改回去,不知道是否可行
SkullMeta sm = (SkullMeta) item.getItemMeta();
sm.setOwningPlayer(org.bukkit.Bukkit.getOfflinePlayer("Hypergryph/UUID"));
item.setItemMeta(sm);
我是这么写的, 最后 item 就是头颅物品, 1.12可用
避免延迟我记得可以先返回默认史蒂夫头颅然后异步修改回去,不知道是否可行
本帖最后由 殇晨呦 于 2020-7-19 22:13 编辑
我引用的是1.16.1的spigot
Material里没有SKULL_ITEM。。。
啊没事了,playerhead也可以的
蕾米洛伊 发表于 2020-7-19 21:37
ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, Short.parseShort("3"));
SkullMeta sm = (Skull ...
我引用的是1.16.1的spigot
Material里没有SKULL_ITEM。。。
啊没事了,playerhead也可以的
殇晨呦 发表于 2020-7-19 22:11
我引用的是1.16.1的spigot
Material里没有SKULL_ITEM。。。
1.13之后ID扁平化了,原先采用附加值实现的东西基本不需要那么复杂了
William_Shi 发表于 2020-7-19 22:22
1.13之后ID扁平化了,原先采用附加值实现的东西基本不需要那么复杂了
顺带想问下,怎么判断DamageCause.ENTITY_ATTACK这个伤害来源是玩家还是别的实体呢
殇晨呦 发表于 2020-7-19 22:48
顺带想问下,怎么判断DamageCause.ENTITY_ATTACK这个伤害来源是玩家还是别的实体呢 ...
获取Entity
然后
- if(entity instanceof Player)
殇晨呦 发表于 2020-7-19 22:48
顺带想问下,怎么判断DamageCause.ENTITY_ATTACK这个伤害来源是玩家还是别的实体呢 ...
好问题!你要换位思考
首先你既然逻辑是需要监听实体被实体伤害(cause)
直接监听这个
https://bukkit.windit.net/javado ... eByEntityEvent.html
然后再判断这个
https://bukkit.windit.net/javado ... t.html#getDamager--
是不是玩家
William_Shi 发表于 2020-7-19 22:51
好问题!你要换位思考
首先你既然逻辑是需要监听实体被实体伤害(cause)
大概就是判断最后一次伤害属于实体造成伤害,且该实体属于玩家类
可以具体点吗。。。