Дистанция отображения сообщения в чате

Версия Minecraft
1.12.2
6
0
Добрый день. У меня есть команда, которая возвращает какое-то сообщение. Но она это делает на весь мир, а я хочу чтобы сообщение было видно всем игрокам только в определённом радиусе. Что имею на данный момент:

Java:
float radius = 32F;
        List<EntityPlayerMP> playerList = (List<EntityPlayerMP>) server.getPlayerList();
        
        Iterator iterator = playerList.iterator();   
        while (iterator.hasNext()) {
        for (EntityPlayerMP player : playerList) {
            player = (EntityPlayerMP)iterator.next();
            float offsetX = (float)(player.posX - senderPlayer.posX);
            float offsetZ = (float)(player.posZ - senderPlayer.posZ);
            double dis = Math.sqrt(offsetX * offsetX + offsetZ * offsetZ);
            if (dis <= radius) {
                player.sendMessage(message);
                    }
                
                }
            }
При попытке использовать команду вместо сообщения появляется ошибка: "An unknown error occurred while attempting to perform this command".
Сначала пытался делать через PlayerList, но с ним не хочет работать вот эта строчка for (EntityPlayerMP player : playerList).
 
Решение
Тему закрой и лайк поставь лучшему ответу)
Java:
World world = senderPlayer.getEntityWorld();
        List<EntityPlayer> playerEntities = world.playerEntities;
        int radius = 20;
        for (EntityPlayer listeningPlayer : playerEntities){
            if ((senderPlayer.getPosition().distanceSq(listeningPlayer.posX, listeningPlayer.posY, listeningPlayer.posZ)) <= (radius*radius)) {
                listeningPlayer.sendMessage(message);
        }
1,057
50
234
Ничего, что он радиус чекает от каждого игрока? Конечно всем будет отображаться
 
6
0
Полное цитирование предыдущего сообщения запрещено
Ничего, что он радиус чекает от каждого игрока? Конечно всем будет отображаться
Можете пожалуйста сказать номер строчки, где допущена ошибка? Он вроде как вычисляет расстояние между отправителем и другими игроками и уже его сравнивает с радиусом. Так задумывалось, по крайней мере.
 
586
32
136
Java:
        float radius = 32F;
        BlockPos pos = sender.getPosition();
        List<EntityPlayerMP> playerList = server.getPlayerList().getPlayers();
        AxisAlignedBB alignedBB = new AxisAlignedBB(pos.getX() - radius, pos.getY() - radius, pos.getZ() - radius,
                pos.getX() + radius, pos.getY() + radius, pos.getZ() + radius);
        playerList.stream().filter(entityPlayerMP -> alignedBB.contains(new Vec3d(entityPlayerMP.posX, entityPlayerMP.posY, entityPlayerMP.posZ)))
                .forEach(entityPlayerMP -> entityPlayerMP.sendMessage(new TextComponentString(message)));
 
6
0
Спасибо, уже сам расковырял один мод на 1.7.10 :D
Java:
World world = senderPlayer.getEntityWorld();
        List<EntityPlayer> playerEntities = world.playerEntities;
        int radius = 20;
        for (EntityPlayer listeningPlayer : playerEntities){
            if (2*2==5){ //тупо затычка потому что в моде откуда я это скомуниздил тут была переменная из конфига ;..;
            }
        else {
            if ((senderPlayer.getPosition().distanceSq(listeningPlayer.posX, listeningPlayer.posY, listeningPlayer.posZ)) <= (radius*radius)) {
                listeningPlayer.sendMessage(message);
            }
        }
Оставлю, вдруг кому ещё понадобится.
 
586
32
136
Тему закрой и лайк поставь лучшему ответу)
Java:
World world = senderPlayer.getEntityWorld();
        List<EntityPlayer> playerEntities = world.playerEntities;
        int radius = 20;
        for (EntityPlayer listeningPlayer : playerEntities){
            if ((senderPlayer.getPosition().distanceSq(listeningPlayer.posX, listeningPlayer.posY, listeningPlayer.posZ)) <= (radius*radius)) {
                listeningPlayer.sendMessage(message);
        }
 
Сверху