Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите event.getEntity.getCustomName() возвращает null

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

Статус темы:
Закрыта.
  1. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Помогите при эвенте getCustomName возращает Null!!! Хотя у самого энтити есть имя, прикол в том что если получать всех энтити в мире и так же .getCustomName(), то возвращает имя энтити. Предположение что эвент срабатывает быстрее чем майн присваивает ему имя, что делать? Как можно эвент замедлить? код:
    Код:
    
    @EventHandler
    public void SpawnMob(EntitySpawnEvent event) {
    Bukkit.broadcastMessage("имя "+event.getEntity.getCustomName());
    }
    
    
     
  2. Хостинг MineCraft
    <
  3. jusik

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

    Баллы:
    66
    Skype:
    louky94096
    Имя в Minecraft:
    Jusik
    Код:
    @EventHandler
    public void SpawnMob(EntitySpawnEvent event) {
    Bukkit.broadcastMessage("имя "+event.getEntity().getName());
    }
     
  4. Exception_Prototype

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

    Баллы:
    46
    В крайнем случае getType();
     
  5. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Это тоже возращает null. Я говорю же, эвент срабатывает быстрее чем майн присваивает энтити какой либо NBT тег. Как выполнить действие с задержкой?[DOUBLEPOST=1485030701,1485029626][/DOUBLEPOST]
    и это возращает null. Абсолютно все действия для получения инфы у entity будут возращать Null. Только вот если обратится к этому жнтити спусти 1 тик тогда вся инфа будет доступна.
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну вот и работай с энтитей тик спустя. Все просто. Главное, проверяй на отмену эвент.
     
  7. Exception_Prototype

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

    Баллы:
    46
    Не понимаю о чём ты, спокойно получаю подобным способом всю спавнующийся живность. Как и сам спавню так и сервак.
     
  8. GoodCoder

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

    Баллы:
    76
    Потому что сначала спавнится моб в мире, а потом ему присваивается имя. Событие бросается именно в момент спавна, что позволяет его блокировать.
     
  9. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Шедулером
     
  10. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Ладно, сделал шедулером, вот код:
    Код:
    for (Entity entity : world.getEntities()) {
                if ((entity instanceof Guardian)){
                    if (entity.getCustomName().equals("§aЗелёный страж")) {
                        int x = entity.getLocation().getBlockX();
                        int y = entity.getLocation().getBlockY();
                        int z = entity.getLocation().getBlockZ();
                        StructureBlock.paste("GreenGuardian", world, x, y, z, -1, -5, -10);
                        entity.remove();
                    }
                }
            }
    
    Тема закрыта
     
Статус темы:
Закрыта.

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