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

Помогите Скрыть неймтэг игрока

Тема в разделе "Разработка плагинов для новичков", создана пользователем OmEga31, 29 фев 2020.

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

    OmEga31 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Chebyrek
    Код:
        public Map<ArrayList<UUID>, EntityArmorStand> hiddenmap = new HashMap<ArrayList<UUID>, EntityArmorStand>();
    
        public void hide(Player player, Player hideFrom) {
            if (player == hideFrom)
                return;
            // Add Players to the List
            ArrayList<UUID> list = new ArrayList<UUID>();
            list.add(player.getUniqueId());
            list.add(hideFrom.getUniqueId());
            if (hiddenmap.containsKey(list)) {
                return;
            }
            // spawning the Armorstand & setting it up
            Location pos = player.getLocation();
            EntityArmorStand stand = new EntityArmorStand(((CraftWorld) pos.getWorld()).getHandle(), pos.getX(), pos.getY(),pos.getZ());
            stand.setInvisible(true);
            stand.setInvulnerable(true);
            stand.setMarker(true);
            stand.setCustomNameVisible(false);
            CraftPlayer p = (CraftPlayer) player;
            p.getHandle().passengers.add(stand);
            // Packet packing
            PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(stand);
            // "Registering" the Stand and the Players
            hiddenmap.put(list, stand);
            // Packet sending
            CraftPlayer ply = (CraftPlayer) hideFrom;
            ply.getHandle().playerConnection.sendPacket(packet);
    
        }
    
        public void unhide(Player player, Player hiddenFrom) {
            if (player == hiddenFrom)
                return;
            ArrayList<UUID> list = new ArrayList<UUID>();
            list.add(player.getUniqueId());
            list.add(hiddenFrom.getUniqueId());
            if (!(hiddenmap.containsKey(list))) {
                return;
            }
            EntityArmorStand stand = hiddenmap.get(list);
            PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(stand.getId());
            CraftPlayer ply = (CraftPlayer) hiddenFrom;
            ply.getHandle().playerConnection.sendPacket(packet);
            hiddenmap.remove(list);
        }
    
    Есть вот такой код, но он скрывает игрока полностью, как скрывать только неймтег?
     
    Последнее редактирование: 2 мар 2020
  2. Автор темы
    OmEga31

    OmEga31 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Chebyrek
  3. Kurumi

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

    Баллы:
    76
    Юзай протокол либ
     
  4. alexandrage

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

    Баллы:
    173
    Низя его скрыть, если тока цветовые коды в имени проюзать, если еще игра такое позволяет.
     
  5. Kurumi

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

    Баллы:
    76
    Прикольный такой рофл
     
  6. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Вообще можно, но костылями.
    Можно либо добавить всех игроков в одну команду скорбордов и поставить опцию на скрытие неймтегов.
    Либо посадить игроку в качестве пассажира какого-нибудь моба (желательно делать это пакетами, чтобы самому игроку не мешать) (причём посдаить можно и невидимую энтитю, например арморстенд с невидимостью, или летучую мышь с зельем невидимости (правда партиклы будут видны, но что поедалешь)).
     
    Последнее редактирование: 3 мар 2020

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