Задача простая: нужно заблокировать урон между игроками. Делать это можно разными способами в зависимости от того, что у вас за сервер и как вы хотите управлять правилом.

Ниже - практичные варианты, от самых быстрых до более гибких.

Вариант 1. Отключить PvP для всех на сервере

Если вам нужно, чтобы в игре вообще никто никого не бил, проще всего выключить PvP целиком. Обычно это настраивается плагином или правилами сервера.

Как правило, логика такая:
- при попытке нанести урон возникает событие
- обработчик отменяет урон, если условие не выполняется

Этот подход обсуждают в сообществах для серверов на Bukkit/Spigot, где правило часто переключают через переменную (например, pvp со значениями on/off).

Вариант 2. Отключить удары только для части игроков через “флаг” предметом

Если нужно, чтобы “свои” не били друг друга, а также можно было включать/выключать правило на лету, обычно делают так:
- игрокам выдают предмет-команду
- пока игрок держит этот предмет, урон по игрокам отменяется
- при попытке атаки срабатывает событие “получил урон”, и его отменяют

Смысл из примера с форумов такой: обработчик проверяет условие, и если оно верное, отменяет событие и отправляет сообщение атакующему.

Важно
- предмет команды должен выдаваться сервером
- отмена делается на стороне сервера, а не на клиенте

Если пытаться “обмануть” клиент, сервер все равно получает пакеты о ударах и продолжит считать атаки, как в случаях с modding-темами: клиентская отмена часто не срабатывает надежно.

Вариант 3. Разрешить PvP по правилам групп: scoreboard teams friendlyfire false

Когда требуется управлять PvP по группам, удобнее использовать scoreboard teams.

Идея такая:
- вы создаете команду в scoreboard
- добавляете в нее нужных игроков
- включаете опцию дружеского огня false, чтобы игроки внутри команды не били друг друга

Пример команд (формат зависит от версии, но общая схема такая):

Задача Команда
Создать команду /scoreboard teams add pvp
Добавить игрока в команду /scoreboard teams join pvp Ник_игрока
Запретить friendlyfire внутри команды /scoreboard teams option pvp friendlyfire false

После этого урон между игроками одной команды не проходит.

Плюсы
- работает без плагинов
- правило прозрачно и управляется командами
Минусы
- сложнее настроить частые “переключения” без скриптов или плагина

Вариант 4. На Forge/модах: отменять события нападения на серверной стороне

Для модов на Forge встречается подход, где отменяют эвенты атак. Например, в темах про отмену LivingAttackEvent или близких событий.

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

Если вы отрабатываете отмену только на клиенте, сервер все равно получит действие и продолжит обработку атаки, даже если “визуально” атака не прошла.

Типичные ошибки, из-за которых “не получается”

1) Отменяют только урон на клиенте
Сервер все равно принимает попытку атаки. Итог - пакеты проходят, правило не работает надежно.

2) Неправильно зарегистрирован обработчик события
Событие должно быть подписано и зарегистрировано на нужной стороне и в нужном event bus.

3) Проверяют условие не в том месте
Отмена должна быть там, где реально решается исход атаки. Если вы отменяете не то событие или не в том порядке, удар все равно проходит.

4) Смешивают разные механики PvP
Например, вы отключили PvP в одном месте, но остались другие правила, которые разрешают friendlyfire или боевую механику в регионе/сценарии.

Как выбрать лучший способ

Ситуация Что сделать
Нужно запретить удары полностью всем Отключить PvP целиком (на уровне сервера/плагина)
Нужно запретить удары только “своим” или по условию scoreboard teams friendlyfire false
Нужны быстрые переключения “в игре сейчас можно/нельзя” плагин с переменной (on/off) или предметом команды
Делаете мод на Forge отмена эвентов на серверной стороне и корректная регистрация

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

  • https://ruforum.mineland.net/threads/kak-sdelat-tak-chto-by-igroki-s-1-komandy-ne-mogli-bit-drug-druga.7594/
  • https://ru-minecraft.ru/forum/showtopic-16498/
  • https://forum.mcmodding.ru/threads/zapret-udara-po-suschnosti-na-kliente.27664/
  • https://minecraft.net/ru-ru/article/parental-controls