Вопрос Как сделать чтобы после смерти игрока появлялись партиклы?

Destroy

Разработчик
Пользователь
Сообщения
777
Решения
30
Веб-сайт
destroydevs.ru
Код:
    @EventHandler
    public void onDeath(PlayerDeathEvent event) {
        Player player = event.getEntity().getPlayer();

        Location loc = player.getLocation();
        player.spawnParticle(Particle.REDSTONE, loc, 10);
        player.playSound(loc, Sound.BLOCK_STONE_BREAK, 1, 0.8f);
    }

Мне нужно чтобы в локации где умер игрок появлялись частицы.

PS. Код сверху не работает.
 
PS. Код сверху не работает.
player.spawnParticle(Particle.REDSTONE, loc, 10); player.playSound(loc, Sound.BLOCK_STONE_BREAK, 1, 0.8f);
Потому что частицы и звук отправляются конкретному игроку, а не на локацию.
 
Java:
@EventHandler
public void onDeath(PlayerDeathEvent event) {
    Player player = event.getEntity();
    Location location = player.getLocation();
    World world = location.getWorld();
    
    world.spawnParticle(Particle.REDSTONE, location, 10);
    world.playSound(location, Sound.BLOCK_STONE_BREAK, 1, 0.8f);
}
По идее, так сработает
 
Java:
@EventHandler
public void onDeath(PlayerDeathEvent event) {
    Player player = event.getEntity();
    Location location = player.getLocation();
    World world = location.getWorld();
   
    world.spawnParticle(Particle.REDSTONE, location, 10);
    world.playSound(location, Sound.BLOCK_STONE_BREAK, 1, 0.8f);
}
По идее, так сработает

не работает. Ошибок нет. Ничего не происходит
Объединено

Пробовал так:
Код:
        Player player = event.getEntity().getPlayer();

        assert player != null;
        if (player.getKiller() != null) {
            player.getWorld().spawnParticle(Particle.REDSTONE, player.getLocation(), 99);
            player.getWorld().playSound(player.getLocation(), Sound.BLOCK_STONE_BREAK, 1, 0.8f);
 
не работает. Ошибок нет. Ничего не происходит
Объединено

Пробовал так:
Код:
        Player player = event.getEntity().getPlayer();

        assert player != null;
        if (player.getKiller() != null) {
            player.getWorld().spawnParticle(Particle.REDSTONE, player.getLocation(), 99);
            player.getWorld().playSound(player.getLocation(), Sound.BLOCK_STONE_BREAK, 1, 0.8f);
На всякий случай спрошу - на клиенте отображение частиц включено?
 
Всё никак не пойму, зачем ты зовёшь getPlayer
Потому-что я максимум неделю Java учу
Объединено

offtop
Всё никак не пойму, зачем ты зовёшь getPlayer
Ты пишешь это чтобы поиздеваться или помочь хочешь? Не понимаю. Англ спигот не помог, там не шарят и не понимают, надеялся что тут помогут но видимо тоже не судьба
 
Последнее редактирование модератором:
Следующий вопрос на проверку - ивент регистрируется при запуске сервера?
Да. Там не 1 эвент стоит. там их 3 штуки. И все работают.
Объединено

Следующий вопрос на проверку - ивент регистрируется при запуске сервера?
Java:
Bukkit.getPluginManager().registerEvents(new Events(), this);
 
Ты через другого игрока проверяешь звук/частицы?
Java:
    @EventHandler
    public void onDeath(PlayerDeathEvent event) {
        Player player = event.getEntity();


        if (player.getKiller() != null) {
            player.getWorld().spawnParticle(Particle.REDSTONE, player.getLocation(), 99);
            player.getWorld().playSound(player.getLocation(), Sound.BLOCK_STONE_BREAK, 1, 0.8f);
        }
    }

Вот весь код
 
Потому-что я максимум неделю Java учу
Я тебе дал код. PlayerDeathEvent#getEntity УЖЕ возвращает Player. Причём тут издевка? Я дал тебе код, где этого не было

Вам необходимо зарегистрироваться для просмотра изображений-вложений


Вызов Player#getPlayer вернёт его же и ничего не изменит
 
Спавню мобов, они меня убивают или просто телепортирую себя наверх
Не проще ли для проверки эффекта спавнить его при убийстве моба? А уже потом, как все настроишь - перенести под игрока.
 
Не проще ли для проверки эффекта спавнить его при убийстве моба? А уже потом, как все настроишь - перенести под игрока.
Уже пробовал - не работает.
Объединено

Java:
@EventHandler
public void onDeath(PlayerDeathEvent event) {
    Player player = event.getEntity();
    Location location = player.getLocation();
    World world = location.getWorld();
   
    world.spawnParticle(Particle.REDSTONE, location, 10);
    world.playSound(location, Sound.BLOCK_STONE_BREAK, 1, 0.8f);
}
По идее, так сработает
Вроде заработало а вроде и нет. Пишет Particle REDSTONE requires data, null provided
ошибкой в консоле при убийстве игрока
 
Последнее редактирование:
if (player.getKiller() != null) { player.getWorld().spawnParticle(Particle.REDSTONE, player.getLocation(), 99); player.getWorld().playSound(player.getLocation(), Sound.BLOCK_STONE_BREAK, 1, 0.8f); }
Спавню мобов, они меня убивают
Player#getKiller возвращает не null, только если убийца - игрок. В твоём случае Player#getKiller всегда null

Particle REDSTONE requires data, null provided
попробуй погуглить
 
Player#getKiller возвращает не null, только если убийца - игрок. В твоём случае Player#getKiller всегда null


попробуй погуглить
Уже решил. Никто не сказал правильный ответ.

Там всё намного запутанней чем казалось
 
Назад
Сверху Снизу