• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Nuker | Expensive 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
20 Дек 2022
Сообщения
155
Реакции
0
Переделал логику ломания блоков но не знаю как изменить логику их обнаружения.

onWorld method:
Expand Collapse Copy
     @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)

Извините за моё объяснение, надеюсь поможете
 
Nuker:
Expand Collapse Copy
@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();

}
 
Nuker:
Expand Collapse Copy
@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();

}
Спасибо большое
 
Nuker:
Expand Collapse Copy
@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();

}
Спасибо, добавлю себе в пасту года
 
Nuker:
Expand Collapse Copy
@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();

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