Bukkit / Spigot как получить индивидуальный идентификатор игрока - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь получить идентификатор SkullOwner и значение текстуры из любого размещенного черепа игрока, но я не могу найти какой-либо метод.Лучшее, что я получил, - это просто имя пользователя головы игрока, которому не нужны такие идентификаторы (в основном это означает, что используется {SkullOwner:"PLAYERNAME"}, как, например, тот, который получен при выполнении /give @p skull 1 3 {SkullOwner:"Notch"})

Thisмой код до сих пор

package me.saltyhelpvampire.spigotmushroom;

import org.bukkit.Material;
import org.bukkit.block.BlockState;
import org.bukkit.block.Skull;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.plugin.java.JavaPlugin;

public final class SpigotMushroom extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        // Plugin startup logic
        System.out.println("This is a generic message");
        getServer().getPluginManager().registerEvents(this, this);

    }

    @EventHandler
    public void onMushroomheadPlace(BlockPlaceEvent event) {
        Player player = event.getPlayer();
        if (event.getBlock().getType() == Material.SKULL) {
                event.getPlayer().sendMessage("Player placed head");
                BlockState block = event.getBlock().getState();
                if(block instanceof Skull) {
                    Skull skull = (Skull) block;
                    String owner = skull.getOwner();
                    event.getPlayer().sendMessage(owner);
                }

        }
    }
}

1 Ответ

0 голосов
/ 11 апреля 2019

В Minecraft, если череп помещен только с именем игрока в качестве значения nbt, клиент загружает данные скина, а не сервер, вы должны использовать для этого mojang api, там вы можете преобразовать имя в UUID, а затемполучить текстуру этого UUID

...