1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Установить скин на игрока

Тема в разделе "Разработка плагинов для новичков", создана пользователем koliab, 3 окт 2019.

  1. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    Нужно установить скин на игрока по нику "notch"
     
  2. Lemar98

    Lemar98 Активный участник Пользователь

    Баллы:
    76
    Через gameprofile вроде можно
     
  3. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Возможно прокатит:
    player.setPlayerProfile(new CraftPlayerProfile(new GameProfile(player.getUniqueId(), username)));
     
  4. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    такого метода нету (1.14.4)
     
  5. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    каким образом
     
  6. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В paper есть точно, ещё на 1.13
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    paper spigot тебе нужен.
     
  8. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    мне над на spigot 1.14.4
     
  9. olezhe

    olezhe Ньюби Пользователь

    Баллы:
    1
    Решение на какую-то часть взято отсюда:

    Код:
    public boolean setSkin(Player p, String profile_name) {
            CraftPlayer cp = (CraftPlayer) p;
            GameProfile profile = cp.getProfile();
            try {
                profile = GameProfileBuilder.fetch(UUIDFetcher.getUUID(profile_name));
            } catch (Exception e) {
                return false;
            }
           
            Collection<Property> props = profile.getProperties().get("textures");
            cp.getProfile().getProperties().removeAll("textures");
            cp.getProfile().getProperties().putAll("textures", props);
            PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(cp.getEntityId());
            sendPacket(destroy);
            PacketPlayOutPlayerInfo tabremove = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, cp.getHandle());
            sendPacket(tabremove);
            double health = cp.getHealth();
            Location loc = cp.getLocation();
            cp.setHealth(0);
            new BukkitRunnable() {
    
                @Override
                public void run() {
                    PacketPlayOutPlayerInfo tabadd = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, cp.getHandle());
                    sendPacket(tabadd);
                    PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(cp.getHandle());
                    for(Player all : Bukkit.getOnlinePlayers()) {
                        if(!all.getName().equals(cp.getName())) {
                            ((CraftPlayer) p).getHandle().playerConnection.sendPacket(spawn);
                        }
                    }
                    p.spigot().respawn();
                    p.setHealth(health);
                    p.teleport(loc);
                   
                }
            }.runTaskLater(Main.instance, 4);
            return true;
        }
    JSON-щики GameProfileBuilder и UUIDFetcher: http://www.postcrafter.de/viewtopic.php?f=15&t=2116
    и http://www.postcrafter.de/viewtopic.php?f=15&t=2186
     
  10. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    копец жоска как он меняет скин а можно как то полегче?
     
  11. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    его прям калбасит
     
  12. olezhe

    olezhe Ньюби Пользователь

    Баллы:
    1
  13. olezhe

    olezhe Ньюби Пользователь

    Баллы:
    1
    ну также можно еще сделать так чтобы скин был виден только другим игрокам, но зато не будет шатать самого игрока
     
  14. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    И отвалиться на других версиях. Молодец, два.
     
  16. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    скажи лучше как взять файл из джарника
     
  17. olezhe

    olezhe Ньюби Пользователь

    Баллы:
    1
    ПКМ по файлу -> Открыть в WinRAR -> дёргай все файлы которые хочешь.

    вот версия с другим методом, плюс еще по идее баккит сервер должен заработать при таком методе. но на другие версии младше 1.14.4 это не заработает т.к. изменилась структура функции moveToWorld
    Код:
    public boolean setSkin(Player p, String profile_name) {
            CraftPlayer cp = (CraftPlayer) p;
            GameProfile profile = cp.getProfile();
            try {
                profile = GameProfileBuilder.fetch(UUIDFetcher.getUUID(profile_name));
            } catch (Exception e) {
                return false;
            }
          
            Collection<Property> props = profile.getProperties().get("textures");
            cp.getProfile().getProperties().removeAll("textures");
            cp.getProfile().getProperties().putAll("textures", props);
            PacketPlayOutEntityDestroy destroy = new PacketPlayOutEntityDestroy(cp.getEntityId());
            sendPacket(destroy);
            PacketPlayOutPlayerInfo tabremove = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, cp.getHandle());
            sendPacket(tabremove);
            new BukkitRunnable() {
    
                @Override
                public void run() {
                    PacketPlayOutPlayerInfo tabadd = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, cp.getHandle());
                    sendPacket(tabadd);
                    PacketPlayOutNamedEntitySpawn spawn = new PacketPlayOutNamedEntitySpawn(cp.getHandle());
                    for(Player all : Bukkit.getOnlinePlayers()) {
                        if(!all.getName().equals(cp.getName())) {
                            ((CraftPlayer) p).getHandle().playerConnection.sendPacket(spawn);
                        }
                    }
                    ((CraftServer)Bukkit.getServer()).getHandle().moveToWorld(cp.getHandle(), cp.getHandle().getWorldServer().getWorldProvider().getDimensionManager(), false, cp.getLocation(), true);
                  
                }
            }.runTaskLater(Main.instance, 4);
            return true;
        }
     
  18. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    как-то можно юзать skinrestorer без джарника в plugins?
     
  19. Автор темы
    koliab

    koliab Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    я про то что из ресурсов взять его и вставить в папку с мирами
    upload_2019-10-5_16-19-57.png upload_2019-10-5_16-20-8.png
     
  20. maxsovetov

    maxsovetov Новичок Пользователь

    Баллы:
    16
    Скин ночта по дефолту? Если да > скачиваешь плагин ChangeSkin / SkinRestorer и лезешь в конфиг
     

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