我想在我的插件 Gui 中使用自定义头颅样式,但是例如 Minecraft Head 这样的网站只提供了指令。
复制代码那么我应该怎么写 ItemStack 才能拿到这个皮肤的头颅呢?
我看了一下 SkullMeta 的 setOwner 需要使用 OfflinePlayer 对象,这串指令我也没发现 UUID 可以用来获取 OfflinePlayer 对象什么的。
难道需要使用 Head DataBase 这样的插件的 API 吗?

- /give @p minecraft:player_head{display:{Name:"{"text":"Black Backward"}"},SkullOwner:{Id:[I;1725013901,-1319550924,-1685700747,-1241102807],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODY0Zjc3OWE4ZTNmZmEyMzExNDNmYTY5Yjk2YjE0ZWUzNWMxNmQ2NjllMTljNzVmZDFhN2RhNGJmMzA2YyJ9fX0="}]}}} 1
我看了一下 SkullMeta 的 setOwner 需要使用 OfflinePlayer 对象,这串指令我也没发现 UUID 可以用来获取 OfflinePlayer 对象什么的。
难道需要使用 Head DataBase 这样的插件的 API 吗?

本帖最后由 南柯郡守 于 2020-5-4 00:59 编辑
复制代码
打扰了 我没认真审题
我再看看
setOwner();方法不需要OfflinePlayer对象 需要的是玩家的名字 ID 不是UUID
说实话我是没太看懂你发的那一串
但是setOwner("玩家ID"); 确实能获取到玩家皮肤的头颅
- ItemStack item = new (一个头颅);
- SkullMeta meta = (SkullMeta)item.getItemMeta();
- meta.setOwner(player.getName());
- item.setItemMeta(meta);
- return item;
打扰了 我没认真审题
我再看看
setOwner();方法不需要OfflinePlayer对象 需要的是玩家的名字 ID 不是UUID
说实话我是没太看懂你发的那一串
但是setOwner("玩家ID"); 确实能获取到玩家皮肤的头颅
- String uuid = "66d19f8d-b159-4034-9b86-3f75b6064629";
- String textures = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODY0Zjc3OWE4ZTNmZmEyMzExNDNmYTY5Yjk2YjE0ZWUzNWMxNmQ2NjllMTljNzVmZDFhN2RhNGJmMzA2YyJ9fX0=";
- ItemStack head = new ItemStack(Material.PLAYER_HEAD);
- SkullMeta headMeta = (SkullMeta) head.getItemMeta();
- GameProfile profile = new GameProfile(UUID.fromString(uuid), null);
- profile.getProperties().put("textures", new Property("textures", textures));
- Field profileField;
- try {
- profileField = headMeta.getClass().getDeclaredField("profile");
- profileField.setAccessible(true);
- profileField.set(headMeta, profile);
- } catch (NullPointerException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e1) {
- }
- head.setItemMeta(headMeta);
总之是用反射修改GameProfile上述代码是我1.15某插件用的
EntityParrot_ 发表于 2020-5-4 06:03
懂了,感谢大佬,这个 UUID 是可以随便给的吗?
要跟head database保持一致