xusheng93217
如何将ItemStack形式的 player_head头颅转成 Block方块


好问题 请问这个方块是存在于虚空之中吗

xusheng93217
雨 发表于 2020-8-18 17:49
好问题 请问这个方块是存在于虚空之中吗

就是放置在某个地方啊。   我其实想要实现的就是  一个放置在地上的头颅 且有皮肤

2514385345
xusheng93217 发表于 2020-8-18 17:50
就是放置在某个地方啊。   我其实想要实现的就是  一个放置在地上的头颅 且有皮肤 ...

66666666666

洞穴夜莺
你的游戏版本是啥?

南柯郡守
尝试阅读api或者别人的代码寻找解决方案
或者提出自己对该问题的思考/代码实现

而不是简单的提出问题

William_Shi
https://bukkit.windit.net/javadoc/org/bukkit/block/Skull.html
这是一个BlockState
该怎么获得BlockState,再设置回去不用多讲了吧

xusheng93217
William_Shi 发表于 2020-8-18 22:12
https://bukkit.windit.net/javadoc/org/bukkit/block/Skull.html
这是一个BlockState
该怎么获得BlockStat ...

您可能需要在稍微讲一下。  我反编译过一个插件,那个插件是直接修改的 ItemStack的头颅皮肤, 我想套用他那个方法 实现修改摆在地上的头颅皮肤。

xusheng93217 发表于 2020-8-19 07:22
您可能需要在稍微讲一下。  我反编译过一个插件,那个插件是直接修改的 ItemStack的头 ...
  1. Skull skull = (Skull) b.getState();
  2.                         GameProfile gf = new GameProfile(UUID.randomUUID(), null);
  3.                         gf.getProperties().put("textures", new Property("textures", value));
  4.                         try {
  5.                                 Field f = skull.getClass().getDeclaredField("profile");
  6.                                 f.setAccessible(true);
  7.                                 f.set(skull, gf);
  8.                         } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
  9.     e.printStackTrace();
  10.                         }
  11.                         skull.update();
复制代码
以上方法在1.15可以使用

William_Shi
xusheng93217 发表于 2020-8-19 07:22
您可能需要在稍微讲一下。  我反编译过一个插件,那个插件是直接修改的 ItemStack的头 ...

这没什么区别啊
首先你确定某一个方块是头颅
用这个
https://bukkit.windit.net/javado ... ock.html#getState--
获取BlockState
因为它是一个头颅,所以就可以强转为Skull(Skull是BlockState子类)
和楼上代码第一行一样
然后
https://bukkit.windit.net/javado ... kkit.OfflinePlayer-
最后设置进去
https://bukkit.windit.net/javado ... te-boolean-boolean-

xusheng93217
雨 发表于 2020-8-19 08:10
以上方法在1.15可以使用

非常感谢,解决了。