Legoshi
我想在我的插件 Gui 中使用自定义头颅样式,但是例如 Minecraft Head 这样的网站只提供了指令。
  1. /give @p minecraft:player_head{display:{Name:"{"text":"Black Backward"}"},SkullOwner:{Id:[I;1725013901,-1319550924,-1685700747,-1241102807],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODY0Zjc3OWE4ZTNmZmEyMzExNDNmYTY5Yjk2YjE0ZWUzNWMxNmQ2NjllMTljNzVmZDFhN2RhNGJmMzA2YyJ9fX0="}]}}} 1
复制代码
那么我应该怎么写 ItemStack 才能拿到这个皮肤的头颅呢?
我看了一下 SkullMeta 的 setOwner 需要使用 OfflinePlayer 对象,这串指令我也没发现 UUID 可以用来获取 OfflinePlayer 对象什么的。
难道需要使用 Head DataBase 这样的插件的 API 吗?


南柯郡守
本帖最后由 南柯郡守 于 2020-5-4 00:59 编辑
  1. ItemStack item = new (一个头颅);
  2. SkullMeta meta = (SkullMeta)item.getItemMeta();
  3. meta.setOwner(player.getName());
  4. item.setItemMeta(meta);
  5. return item;
复制代码

打扰了 我没认真审题

我再看看

setOwner();方法不需要OfflinePlayer对象  需要的是玩家的名字  ID  不是UUID

说实话我是没太看懂你发的那一串

但是setOwner("玩家ID"); 确实能获取到玩家皮肤的头颅

天辉胡萝卜
  1. String uuid = "66d19f8d-b159-4034-9b86-3f75b6064629";
  2. String textures = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODY0Zjc3OWE4ZTNmZmEyMzExNDNmYTY5Yjk2YjE0ZWUzNWMxNmQ2NjllMTljNzVmZDFhN2RhNGJmMzA2YyJ9fX0=";

  3. ItemStack head = new ItemStack(Material.PLAYER_HEAD);
  4. SkullMeta headMeta = (SkullMeta) head.getItemMeta();
  5. GameProfile profile = new GameProfile(UUID.fromString(uuid), null);
  6. profile.getProperties().put("textures", new Property("textures", textures));
  7. Field profileField;
  8. try {
  9.     profileField = headMeta.getClass().getDeclaredField("profile");
  10.     profileField.setAccessible(true);
  11.     profileField.set(headMeta, profile);
  12. } catch (NullPointerException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) {

  13. }
  14. head.setItemMeta(headMeta);
复制代码


总之是用反射修改GameProfile上述代码是我1.15某插件用的

Legoshi
疾风暗影 发表于 2020-5-4 01:23
总之是用反射修改GameProfile上述代码是我1.15某插件用的

懂了,感谢大佬,这个 UUID 是可以随便给的吗?

天辉胡萝卜
EntityParrot_ 发表于 2020-5-4 06:03
懂了,感谢大佬,这个 UUID 是可以随便给的吗?

要跟head database保持一致

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