Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

В разработке [1.19.2] Создание Skull определенного игрока.

neverlessy

Новичок
Пользователь
Баллы
21
Имя в Minecraft
neverlessy
Пробовал так, но появляется просто череп скелета.

PHP:
    public ItemStack build() {
        ItemStack item = new ItemStack(Material.LEGACY_SKULL_ITEM);
        SkullMeta meta = (SkullMeta) item.getItemMeta();
        OfflinePlayer player = Bukkit.getOfflinePlayer(displayName);

        meta.setOwningPlayer(player);
        meta.setDisplayName(displayName);
        item.setItemMeta(meta);

        return item;
    }
 
Почему вдруг LEGACY_SKULL_ITEM?
PLAYER_HEAD
Материалы с приставкой LEGACY_ вообще никогда не используй. Их не удаляют чисто из-за поддержки старых плагинов.

Ну и потом вместо meta.setOwningPlayer() лучше так:
meta.setPlayerProfile(player.getPlayer().getPlayerProfile());
Только убедись, что .getPlayer() не null, а то словишь NullPointerException, если игрок ещё ни разу не входил на сервер
 
Впрочем пришлось только заменить skullitem на playerhead и все работает, спасибо.


PHP:
    public ItemStack build() {
        ItemStack item = new ItemStack(Material.PLAYER_HEAD);
        SkullMeta meta = (SkullMeta) item.getItemMeta();
        
        try {
            url = new URL(skinUrl);
        } catch (MalformedURLException e) {
            throw new RuntimeException(e);
        }
        
        PlayerProfile playerProfile = Bukkit.createPlayerProfile(UUID.randomUUID(), "CASE");
        playerProfile.getTextures().setSkin(url);
        assert meta != null;
        meta.setOwnerProfile(playerProfile);
        meta.setDisplayName(displayName);
        ArrayList<String> lore = new ArrayList<String>();
        lore.add("text1");
        meta.setLore(lore);
        item.setItemMeta(meta);

        return item;
    }
 
Видимо фича Paper. Хотя в спиготе вроде тоже какой-то сеттер профиля есть.

Видел, что в других примерах делали через SKULL_ITEM, вот и решил что так надо
SKULL_ITEM - это для версий 1.12.2 и ниже
 

Поделиться этой страницей

Назад
Верх