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

Помогите Не взрывается фейерверк 1.12.2

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    GoodPlayer
    Сижу уже часа 4, ничё понять не могу. Пытаюсь запустить фейерверк над игроком. В итоге, он запускается, но взрываться не взрывается, он тупо пропадает в воздухе. Пробовал firework.detonate(), но он также тупо исчезает. Пробовал firework.setTicksLived(100), но тоже ничего не меняет. Пытался менять тип фейерверка, тоже ничего не меняет. Код:
    Код:
        private void launchFireworks(Player player) {
          
            Location location = player.getLocation();
            for (int i = 0; i < 10; i++) {
                Firework firework = (Firework) location.getWorld().spawnEntity(location, EntityType.FIREWORK);
                FireworkMeta meta = firework.getFireworkMeta();
                meta.addEffect(FireworkEffect.builder()
                        .withColor(Color.RED, Color.GREEN, Color.BLUE)
                        .with(FireworkEffect.Type.BURST)
                        .withTrail()
                        .build());
                meta.setPower(2);
                firework.setFireworkMeta(meta);
              
            }
        }
    }
     
  2. Автор темы
    GoodPlayer

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

    Баллы:
    66
    Имя в Minecraft:
    GoodPlayer
  3. SashaBrine

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

    Баллы:
    76
    Имя в Minecraft:
    IJustFortiLive
    Меня чёто напрягает логика твоего кода. Ты сначало спавнишь, а потом мету меняешь. И не уверен на 100% что ты сущность до предмета не кастишь.
     
  4. Автор темы
    GoodPlayer

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

    Баллы:
    66
    Имя в Minecraft:
    GoodPlayer
    Как я могу сначала задать фейерверку мету, а потом его спавнить? Посмотрел код других плагинов, там точно также, сначала спавнят, потом задают мету, но там всё работает. Даже брал оттуда код, вставлял в свой плагин, тоже самое, фейерверк просто пропадает в воздухе.
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Передавай в метод спауна функцию, которая будет вызвана ещё до фактического спауна сущности: https://jd.papermc.io/paper/1.12/or...ion-java.lang.Class-org.bukkit.util.Consumer-

    В коде это выглядит так:
    PHP:
    Firework firework location.getWorld().spawn(locationFirework.class, firework1 -> {
        
    FireworkMeta meta firework1.getFireworkMeta();
        
    // Действия с meta
        
    firework1.setFireworkMeta(meta);
    });
    В конце не забудь вызывать firework.detonate()

    Эти два изменения решают проблему.

    Скорее всего, в других плагинах detonate() вызывается с задержкой в 1 тик после спауна сущности. Это тоже работает, можешь сделать и так. Но предложенный мной вариант кажется более адекватным
     
    Последнее редактирование: 17 авг 2024
  6. Автор темы
    GoodPlayer

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

    Баллы:
    66
    Имя в Minecraft:
    GoodPlayer
    Спасибо огромное, заработало!
     
Статус темы:
Закрыта.

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