Что вы хотите получить

В игре нужно, чтобы при ударе киркой ломались блоки в квадрате 3x3 (центр - это блок, по которому попали). Обычно это делается на уровне мода - перехватом события добычи или обработкой инструмента при клике.

Ниже - рабочие подходы, которые встречаются в моддинге и плагинах. Схема общая, но конкретные классы и хуки зависят от версии Minecraft и от того, делаете вы мод под Forge или Fabric.

Подготовьте логику: какие блоки ломать

При добыче нужно вычислить позиции девяти блоков:

  • центр: позиция блока, на который сработал удар
  • по X: центр +/- 1
  • по Z: центр +/- 1
  • по Y: тот же уровень, что и у центра (если вы хотите именно 3x3 на одной плоскости)

Итого координаты:
(x-1, y, z-1) ... (x+1, y, z+1)

Если хотите 3x3 “по направлению” (например, чтобы ломать плоскость перед игроком в зависимости от взгляда), тогда приходится учитывать направление цели. Но для большинства “копает 3 на 3” достаточно ровно одной плоскости в Y.

Вариант 1 (самый простой для модов): перехват добычи и ручное разрушение соседей

Смысл: вы позволяете игре сломать “центр” обычным способом, а затем вручную запускаете разрушение для ещё восьми блоков с тем же шансом/совместимостью, что и у центра.

Шаги

  1. Найдите, на какой версии вы пишете мод и какой API используете (Forge/Fabric).
  2. Найдите событие/хук, который вызывается при использовании инструмента по блоку.
  3. Внутри обработчика:
  4. берите BlockPos цели (центр)
  5. соберите сетку 3x3
  6. для каждого BlockPos:
    • проверьте, что блок реально можно ломать киркой (в противном случае кирка будет “магически” разрушать всё)
    • сломайте блок или инициируйте добычу в мире так, чтобы выпали предметы как положено

Частые правила для корректной работы

Чтобы кирка не ломала лишнее и не ломала всё “в ноль”:
- проверяйте, что инструмент достаточно эффективен (или хотя бы что это кирка нужного уровня, если вы делаете баланс)
- проверяйте расстояние до блока (иначе получится чит на дальность)
- следите за тем, чтобы не спамить ломанием, если событие вызвалось несколько раз

Вариант 2: сделать “3x3” через разметку области и утилиты добычи

Если у вас уже есть код, который ломает один блок, обычно удобнее обернуть его в функцию:

  • breakBlockAt(player, pos, tool, fortune/flags)
  • дальше просто вызываете её 9 раз для позиций 3x3

Так вы сохраните всю вашу текущую логику: выпадение дропа, шанс на ресурсы, обработку “не ломается” и т.д.

Пример логики (псевдокод)

Ниже намеренно не привязан к конкретным пакетам, чтобы вы могли перенести идею в minecraft-мод под вашу версию:

onToolUseOnBlock(player, targetPos, tool):
    world = player.world
    breakCenter = canBreak(targetPos, tool, player)

    if not breakCenter:
        return

    breakBlockAt(player, targetPos, tool)

    for dx in [-1, 0, 1]:
        for dz in [-1, 0, 1]:
            pos = (targetPos.x + dx, targetPos.y, targetPos.z + dz)
            if pos == targetPos:
                continue
            if canBreak(pos, tool, player):
                breakBlockAt(player, pos, tool)

Если ломать нужно “только если центр сломался” - это как раз то, что делает breakCenter и return.

Типичные ошибки

Ошибка Как проявляется Как исправить
Ломаете 3x3 без проверок canBreak кирка разрушает блоки, которые не должны ломаться добавьте проверку, что блок подходит под инструмент и условия
Позиция цели берётся не ту ломает не ту плоскость или смещается используйте BlockPos именно того блока, по которому сработал удар/целевание
Обработчик срабатывает несколько раз ломание рывками, дубли выпадения, лаги защититесь флагом на тик/вызов или используйте правильный хук именно на “фактическое” разрушение
Ломание сразу девяти блоков “без синхронизации” визуально игрок бьет один блок, но ломается больше при необходимости синхронизируйте поведение с механикой добычи или ломайте только после подтверждения
Плоскость всегда фиксирована по Y 3x3 выглядит странно при углах определите, что вы хотите: строго 3x3 по горизонтали или плоскость перед игроком

Как понять, что вы сделали правильно

Проверьте на тестовом участке:
- камень с киркой (должно ломаться 9 блоков)
- блоки, которые киркой не ломаются (не должны ломаться в 3x3)
- руды и блоки с дропом (должны выдавать дроп корректно, включая fortune, если вы его поддерживаете)

Полезные ссылки

  • Форум с примером идеи “киракой 3x3” для модов: https://forum.mcmodding.ru/threads/kak-sozdat-kirku-kotoraja-kopaet-bloki-3x3.21728/
  • Тема про инструменты с областью разрушения на базе команд/средств редактирования (как ориентир по механике области): https://ru-minecraft.ru/forum/showtopic-19677/