Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите .subtract как работает?

Статус
Закрыто для дальнейших ответов.

Andrine

Активный участник
Пользователь
Баллы
66
Код:
    boolean checkBlock(Location location) {
        Bukkit.broadcastMessage(location.getBlockX() + " " + location.getBlockY() + location.getBlockZ());
        for (int x = -1; x <= 1; x++) {
            for (int z = -1; z <= 1; z++) {
                for (int y = -1; y <= 0; y++) {
                    Bukkit.broadcastMessage("XYZ " + x + " " + y + " " + z);
                    Bukkit.broadcastMessage("SUBTRACT " + location.subtract(x, y, z).getBlockX() + " " + location.subtract(x, y, z).getBlockY() + " " + location.subtract(x, y, z).getBlockZ());
                    if (location.subtract(x, y, z).getBlock().getType().equals(Material.BEDROCK))
                        return true;
                }
            }
        }
        return false;
    }
Нужно проверить все клетки вокруг игрока, а при данной проверки циклы работают правильно, а с локацией игрока что-то не так, все игрики больше предыдущих на два раза, иксы больше предыдущих на 4 раза, с зетом вообще не понятно что. Помогите пожалуйста)
 
Код:
    boolean checkBlock(Location location) {
        Bukkit.broadcastMessage(location.getBlockX() + " " + location.getBlockY() + location.getBlockZ());
        for (int x = -1; x <= 1; x++) {
            for (int z = -1; z <= 1; z++) {
                for (int y = -1; y <= 0; y++) {
                    Bukkit.broadcastMessage("XYZ " + x + " " + y + " " + z);
                    Bukkit.broadcastMessage("SUBTRACT " + location.subtract(x, y, z).getBlockX() + " " + location.subtract(x, y, z).getBlockY() + " " + location.subtract(x, y, z).getBlockZ());
                    if (location.subtract(x, y, z).getBlock().getType().equals(Material.BEDROCK))
                        return true;
                }
            }
        }
        return false;
    }
Нужно проверить все клетки вокруг игрока, а при данной проверки циклы работают правильно, а с локацией игрока что-то не так, все игрики больше предыдущих на два раза, иксы больше предыдущих на 4 раза, с зетом вообще не понятно что. Помогите пожалуйста)
Метод substract вычитает указанные координаты в экземпляре Location. Для дебага ты вызываешь 3 раза substract, поэтому 3 раза он буде вычтен, потому что ты используешь один и тот же экземпляр Location.
Сделай эту операцию один раз а затем получай координаты или что то еще.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх