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

Помогите Голограммы над головами игроков

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

  1. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Жди. (спустя 200 лет появится)

    Прост почему то тупанул и воспринимал "над" как "под" (могу, умею, практикую)
     
  2. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Я так и думал.
    Подробнее можно?
     
  3. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Не умеет Scoreboard отображать что либо над ником. Товарищи несут хрень.
     
  4. xDark

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

    Баллы:
    96
    Скор борд - не может.
    А вот пакеты - могут.
    Не тестил, бейте меня палками...
    Код:
    package test;
    
    import java.lang.reflect.Field;
    
    import org.bukkit.Bukkit;
    import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.ScoreboardManager;
    
    import com.mojang.authlib.GameProfile;
    
    import net.minecraft.server.v1_10_R1.EntityPlayer;
    import net.minecraft.server.v1_10_R1.EntityTracker;
    import net.minecraft.server.v1_10_R1.WorldServer;
    
    public class Main extends JavaPlugin implements Listener {
    
        @Override
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
        }
    
        @EventHandler
        public void onJoin(PlayerJoinEvent e) {
            this.getServer().getScheduler().runTaskLater(
                    this, () -> {
                        try {
                            setPlayerName(e.getPlayer(), "Kek", "Scoreboard magic");
                        } catch (
                                NoSuchFieldException | SecurityException | IllegalArgumentException
                                | IllegalAccessException e1
                        ) {
                            e1.printStackTrace();
                        }
                    }, 60L
            );
        }
    
        private void setPlayerName(Player player, String newname, String scoreboard)
                throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
            EntityPlayer p = ((CraftPlayer) player).getHandle();
            player.setDisplayName(newname);
            WorldServer world = (WorldServer) p.world;
            EntityTracker tracker = world.tracker;
            tracker.untrackEntity(p);
            Field f = GameProfile.class.getDeclaredField("name");
            f.setAccessible(true);
            f.set(p.getProfile(), newname);
            tracker.track(p);
            ScoreboardManager sbManager = Bukkit.getScoreboardManager();
            Scoreboard sb = sbManager.getMainScoreboard();
            Objective OBJECTIVE = sb.registerNewObjective("custom", "dummy");
            OBJECTIVE.setDisplayName(scoreboard);
            OBJECTIVE.setDisplaySlot(DisplaySlot.BELOW_NAME);
            this.getServer().getOnlinePlayers().forEach(ps -> ps.setScoreboard(sb));
        }
    }
    
     
    Последнее редактирование: 17 янв 2017
  5. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Святой.
    Спасибо тебе огромное.
    Из 2 десятков кода я впервые узнал так много новой, полезной инфы. Премного благодарен.
     
  6. xDark

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

    Баллы:
    96
    Это был сарказм...?
    @CoolBoy и да, вернулся к майну?
     
  7. alexandrage

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

    Баллы:
    173
    Я ж говорил, что Scoreboard может. не верующие.
     
  8. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Как видишь, спустя пол года, я всё-таки вернулся.
     
  9. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Если у тебя стоит скорборд, этих тегов видно не будет. Остается лишь
     
  10. TheZefirrkka

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

    Баллы:
    76
    Изначально это я сказал, т.к. увидев, что они подключают ненужный плагин, я решил им всё-таки помочь
     
  11. xDark

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

    Баллы:
    96
    Только я немного дурачек... Уберите вызов PlayerJoinEvent и PlayerQuitEvent, а то зациклится
     

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