Вопрос Nuker | Expensive 3.1

Начинающий
Статус
Оффлайн
Регистрация
20 Дек 2022
Сообщения
54
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Переделал логику ломания блоков но не знаю как изменить логику их обнаружения.

onWorld method:
     @Subscribe
    private void onWorld(WorldEvent worldEvent) {
        int range = Math.round(rangeScanning.get());
        long scanInterval = Math.round(intervalScanning.get());
        Vector3d playerPos = mc.player.getPositionVec();

        if (System.currentTimeMillis() - lastScanTime >= scanInterval) {
            blocksToBreak.clear();
            for (int dx = -range; dx <= range; ++dx) {
                for (int dy = 0; dy <= range; ++dy) {
                    for (int dz = -range; dz <= range; ++dz) {
                        BlockPos targetPos = new BlockPos(playerPos.x + (double)dx, playerPos.y + (double)dy, playerPos.z + (double)dz);
                        if (mc.world.getBlockState(targetPos).getBlockHardness(mc.world, targetPos) > 0) {
                            blocksToBreak.add(targetPos);
                        }
                    }
                }
            }
            lastScanTime = System.currentTimeMillis();
        }

        processAndBreakBlocks();
    }
Как мне сделать так что бы блоки находились начиная не от самых дальних а от самых ближних к игроку

Сейчас происходит так:
1727408748441.png
А нужно что бы сканирование происходило так:
Где зелёный - ломается первым, а красный - последним
1727408796259.png

То есть нужно примерно ломание как в нурсултане(noad)

Извините за моё объяснение, надеюсь поможете
 
Начинающий
Статус
Оффлайн
Регистрация
4 Апр 2023
Сообщения
12
Реакции[?]
0
Поинты[?]
0
Nuker:
@Subscribe

private void onWorld(WorldEvent worldEvent) {

    int range = Math.round(rangeScanning.get());

    long scanInterval = Math.round(intervalScanning.get());

    Vector3d playerPos = mc.player.getPositionVec();



    if (System.currentTimeMillis() - lastScanTime >= scanInterval) {

        blocksToBreak.clear();



        // Сканируем блоки послойно пон?

        for (int layer = 0; layer <= range; ++layer) {

            for (int dx = -layer; dx <= layer; ++dx) {

                for (int dy = 0; dy <= layer; ++dy) {

                    for (int dz = -layer; dz <= layer; ++dz) {

                        // Проверяем слой блока типооо

                        if (Math.abs(dx) == layer || Math.abs(dz) == layer) {

                            BlockPos targetPos = new BlockPos(playerPos.x + (double)dx, playerPos.y + (double)dy, playerPos.z + (double)dz);

                            if (mc.world.getBlockState(targetPos).getBlockHardness(mc.world, targetPos) > 0) {

                                blocksToBreak.add(targetPos);

                            }

                        }

                    }

                }

            }

        }



        lastScanTime = System.currentTimeMillis();

    }



    processAndBreakBlocks();

}
 
Начинающий
Статус
Оффлайн
Регистрация
20 Дек 2022
Сообщения
54
Реакции[?]
0
Поинты[?]
0
Nuker:
@Subscribe

private void onWorld(WorldEvent worldEvent) {

    int range = Math.round(rangeScanning.get());

    long scanInterval = Math.round(intervalScanning.get());

    Vector3d playerPos = mc.player.getPositionVec();



    if (System.currentTimeMillis() - lastScanTime >= scanInterval) {

        blocksToBreak.clear();



        // Сканируем блоки послойно пон?

        for (int layer = 0; layer <= range; ++layer) {

            for (int dx = -layer; dx <= layer; ++dx) {

                for (int dy = 0; dy <= layer; ++dy) {

                    for (int dz = -layer; dz <= layer; ++dz) {

                        // Проверяем слой блока типооо

                        if (Math.abs(dx) == layer || Math.abs(dz) == layer) {

                            BlockPos targetPos = new BlockPos(playerPos.x + (double)dx, playerPos.y + (double)dy, playerPos.z + (double)dz);

                            if (mc.world.getBlockState(targetPos).getBlockHardness(mc.world, targetPos) > 0) {

                                blocksToBreak.add(targetPos);

                            }

                        }

                    }

                }

            }

        }



        lastScanTime = System.currentTimeMillis();

    }



    processAndBreakBlocks();

}
Спасибо большое
 
Начинающий
Статус
Оффлайн
Регистрация
19 Сен 2024
Сообщения
17
Реакции[?]
0
Поинты[?]
0
Nuker:
@Subscribe

private void onWorld(WorldEvent worldEvent) {

    int range = Math.round(rangeScanning.get());

    long scanInterval = Math.round(intervalScanning.get());

    Vector3d playerPos = mc.player.getPositionVec();



    if (System.currentTimeMillis() - lastScanTime >= scanInterval) {

        blocksToBreak.clear();



        // Сканируем блоки послойно пон?

        for (int layer = 0; layer <= range; ++layer) {

            for (int dx = -layer; dx <= layer; ++dx) {

                for (int dy = 0; dy <= layer; ++dy) {

                    for (int dz = -layer; dz <= layer; ++dz) {

                        // Проверяем слой блока типооо

                        if (Math.abs(dx) == layer || Math.abs(dz) == layer) {

                            BlockPos targetPos = new BlockPos(playerPos.x + (double)dx, playerPos.y + (double)dy, playerPos.z + (double)dz);

                            if (mc.world.getBlockState(targetPos).getBlockHardness(mc.world, targetPos) > 0) {

                                blocksToBreak.add(targetPos);

                            }

                        }

                    }

                }

            }

        }



        lastScanTime = System.currentTimeMillis();

    }



    processAndBreakBlocks();

}
Спасибо, добавлю себе в пасту года
 
Начинающий
Статус
Оффлайн
Регистрация
18 Авг 2023
Сообщения
216
Реакции[?]
0
Поинты[?]
0
Nuker:
@Subscribe

private void onWorld(WorldEvent worldEvent) {

    int range = Math.round(rangeScanning.get());

    long scanInterval = Math.round(intervalScanning.get());

    Vector3d playerPos = mc.player.getPositionVec();



    if (System.currentTimeMillis() - lastScanTime >= scanInterval) {

        blocksToBreak.clear();



        // Сканируем блоки послойно пон?

        for (int layer = 0; layer <= range; ++layer) {

            for (int dx = -layer; dx <= layer; ++dx) {

                for (int dy = 0; dy <= layer; ++dy) {

                    for (int dz = -layer; dz <= layer; ++dz) {

                        // Проверяем слой блока типооо

                        if (Math.abs(dx) == layer || Math.abs(dz) == layer) {

                            BlockPos targetPos = new BlockPos(playerPos.x + (double)dx, playerPos.y + (double)dy, playerPos.z + (double)dz);

                            if (mc.world.getBlockState(targetPos).getBlockHardness(mc.world, targetPos) > 0) {

                                blocksToBreak.add(targetPos);

                            }

                        }

                    }

                }

            }

        }



        lastScanTime = System.currentTimeMillis();

    }



    processAndBreakBlocks();

}
уважение к таким как ты
 
Похожие темы
Сверху Снизу