Не проигрываются звуки для других игроков

Статус
В этой теме нельзя размещать новые ответы.
Версия Minecraft
1.12.2
API
Forge
12
1
0
Мне нужно сделать так, чтобы при нажатии клавиши игрок воспроизводил звук. Нажатие клавиши я уже сделал и звук запилил. При нажатии клавиши звук спокойно проигрывается, но только для того, кто нажал клавишу(т.е. другие игроки вокруг не слышат этот звук). Нужно чтобы и другие игроки слышали этот звук. Как я могу решить эту проблему? Заранее спасибо.
Java:
public class Events {
    @SubscribeEvent
    public void onPlayerUpdate(LivingUpdateEvent event) {
        if (event.getEntityLiving() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) event.getEntityLiving();                         
                if(KeyBindings.MY_KEY_FIRST.isPressed()) {
                    player.getEntityWorld().playSound(player.posX, player.posY, player.posZ, Sounds.test, SoundCategory.PLAYERS, 10F, 1F, false);
                }
        }
    }
}
 
12
1
0
@will0376 Я не совсем понимаю как отправлять пакеты на сервер
Добавил эту строчку:
player.getEntityWorld().sendPacketToServer(new SPacketSoundEffect(Sounds.test,SoundCategory.PLAYERS, player.posX, player.posY, player.posZ, 10F, 1F));
Вот полный код:
Java:
public class Events {
    @SubscribeEvent
    public void onPlayerUpdate(LivingUpdateEvent event) {
        if (event.getEntityLiving() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) event.getEntityLiving();                         
                if(KeyBindings.MY_KEY_FIRST.isPressed()) {
                    player.getEntityWorld().sendPacketToServer(new SPacketSoundEffect(Sounds.test,SoundCategory.PLAYERS, player.posX, player.posY, player.posZ, 10F, 1F));
                    player.getEntityWorld().playSound(player.posX, player.posY, player.posZ, Sounds.test, SoundCategory.PLAYERS, 10F, 1F, false);
                }
        }
    }
}
Но теперь когда нажимаю на кнопку, майнкрафт виснет намертво.
Как правильно отправить пакет на сервер?
 
711
9
105
Ууу, щас Агровэйн придет, не знаю что с вами сделает..
А вы знали, что эвент LivingUpdateEvent вызывается и на сервере?
Поэтому достаточно просто
используй Entity#playSoundAtEntity
(Первый аргумент там, должен быть игрок)
 
1,143
47
124

tox1cozZ

aka Agravaine
Модератор
7,401
469
2,293
Ууу, щас Агровэйн придет, не знаю что с вами сделает..
Ага, с тобой...
А вы знали, что эвент LivingUpdateEvent вызывается и на сервере?
Поэтому достаточно просто
используй Entity#playSoundAtEntity
И клавиатура есть на сервере? И сервер знает что какой-то там скязист у себя в мухосранске кнопочку тыкнул?
 
711
9
105
1,173
23
166
@will0376 Я не совсем понимаю как отправлять пакеты на сервер
Добавил эту строчку:
player.getEntityWorld().sendPacketToServer(new SPacketSoundEffect(Sounds.test,SoundCategory.PLAYERS, player.posX, player.posY, player.posZ, 10F, 1F));
Вот полный код:
Java:
public class Events {
    @SubscribeEvent
    public void onPlayerUpdate(LivingUpdateEvent event) {
        if (event.getEntityLiving() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) event.getEntityLiving();                        
                if(KeyBindings.MY_KEY_FIRST.isPressed()) {
                    player.getEntityWorld().sendPacketToServer(new SPacketSoundEffect(Sounds.test,SoundCategory.PLAYERS, player.posX, player.posY, player.posZ, 10F, 1F));
                    player.getEntityWorld().playSound(player.posX, player.posY, player.posZ, Sounds.test, SoundCategory.PLAYERS, 10F, 1F, false);
                }
        }
    }
}
Но теперь когда нажимаю на кнопку, майнкрафт виснет намертво.
Как правильно отправить пакет на сервер?
во первых, если мне не изменяет память то на 1.7.10 уже был эвент для клавиатуры(т.е. по нажатию кнопки он проигрывался), а значит бери его а не универсальный метод обновления существа(потому-что у тебя он проигрывается на обновлении каждого игрока, а значит это в принципе костыль который может тупо не работать),
1. меняешь эвент
2. делаешь пакетную систему
3. по нажатии кнопки отправляешь пакет на сервер то что ты тыкнул кнопку проигрывания музыки
4. рассылаешь пакет игрокам
5. при получении пакета на клиенте - проигрываешь музыку
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху