Проиграть звук у игроков

Версия Minecraft
1.7.10
127
0
Добрый день,

Стоит задача что при использовании предмета игроком, у других игроков в радиусе проигрался звук.
Как такую задачу правильно реализовать?

обработка использование предмета
Java:
@Override
    public ItemStack onItemRightClick(ItemStack p_77659_1_, World world, EntityPlayer player) {
        playSound(world, player);
        return p_77659_1_;
    }
    
private void playSound(World world, EntityPlayer player)
    {
        int x = player.getPlayerCoordinates().posX;
        int y = player.getPlayerCoordinates().posY;
        int z = player.getPlayerCoordinates().posZ;
        
        AxisAlignedBB box = AxisAlignedBB.getBoundingBox(x - Distance, y - Distance, z - Distance, x + Distance, y + Distance, z + Distance);
        
        List<EntityPlayer> list = world.getEntitiesWithinAABB(EntityPlayer.class, box);

        for (EntityPlayer p : list)
        {
            вот такой вариант работает только на клиенте, а сервер крашит
            p.playSound("GuitarEtc:guitar", 1.0F, 1.0F);
        }
    }

вот такой вариант работает только на клиенте, а сервер крашит. Как я понимаю нужно чтобы сервер оповестил определенного клиента и уже клиент проиграл звук, если я правильно думаю, то как правильно это делается? или где можно подсмотреть?

Спасибо
 

Icosider

Kotliner
Администратор
3,603
99
664
Ещё лучше использовать не World#playSound, а MovingSoundPosition или подобный класс(не помню). Тогда если игрок движется звук не будет отставать от игрока(а даже если и будет, то не так сильно как при playSound).
 
Сверху