AthAntiWater — специализированный PvP-плагин для серверов режима Анархия и Гриф, разработанный для решения проблемы абуза воды во время сражений (аналог механики на FunTime).
В стандартном Minecraft игроки часто прыгают в воду во время PvP, чтобы избежать урона, сбить комбо, засейвиться или бесконечно убегать. AthAntiWater отслеживает нахождение игрока в режиме боя (CombatManager) и при попытке зайти в воду моментально наказывает нарушителя: вешает кастомные негативные эффекты, замедляет плавание, отправляет предупреждения и воспроизводит эффекты.
Особенности и функционал:
В стандартном Minecraft игроки часто прыгают в воду во время PvP, чтобы избежать урона, сбить комбо, засейвиться или бесконечно убегать. AthAntiWater отслеживает нахождение игрока в режиме боя (CombatManager) и при попытке зайти в воду моментально наказывает нарушителя: вешает кастомные негативные эффекты, замедляет плавание, отправляет предупреждения и воспроизводит эффекты.
Особенности и функционал:
- Combat Tracker (CombatManager): точное отслеживание входа и выхода из PvP-режима без конфликтов с другими боевыми плагинами.
- Water Slowdown (WaterSlowTask): динамическое замедление передвижения игрока внутри воды во время активного боя.
- Гибкая система эффектов (EffectService): возможность вешать любые настраиваемые зелья/эффекты (замедление, утомление, слепота и др.) при контакте с водой.
- Визуальные и звуковые эффекты: отображение кастомных партиклов вокруг игрока (Particles) и воспроизведение звуковых сигналов тревоги (SoundSettings).
- Информативные уведомления: вывод предупреждений прямо в Actionbar (ActionbarSettings) или чат через удобный менеджер форматирования текста с поддержкой HEX/градиентов (Text, MessageService).
- Оптимизация: минимальное потребление ресурсов сервера, асинхронные проверки и быстрая очистка данных сессий.
- /antiwater reload — перезагрузить конфигурацию и языковые файлы плагина (config.yml).
- athantiwater.admin — право на использование команды перезагрузки.
- athantiwater.bypass — иммунитет от действия анти-воды в бою.
Code:
# ╔══════════════════════════════════════════════╗
# ║ AthAntiWater | v1.0.0 ║
# ║ Разработчик: AtheriumDev ║
# ║ Сайт: https://atheriumdev.com ║
# ╚══════════════════════════════════════════════╝
#
# Поддержка цветов: &a, &c, &#FF8000 (hex), форматирование &l, &m и т.д.
# Плейсхолдеры указаны рядом с каждым сообщением.
settings:
# Сколько секунд держится боевой статус после удара/получения урона
combat-duration: 15
# Период проверки воды в тиках (20 = раз в секунду). Минимум 20.
check-interval-ticks: 20
# Сбрасывать ли боевой тег при смерти
clear-tag-on-death: true
# false = тег сохраняется при выходе с сервера и продолжает действовать после перезахода
clear-tag-on-quit: true
# Игнорировать NPC (Citizens и подобные плагины)
npc-support: true
# Миры, где механика полностью отключена
blocked-worlds:
- "example_world"
# Эффект, который накладывается на бойца, пока он находится в воде
effect:
type: SLOWNESS
amplifier: 3 # 3 = Slow IV
duration-ticks: 20 # 20 тиков = 1 секунда
ambient: false
visible-particles: true
visible-icon: true
actionbar:
enabled: true
combat-format: "&#FF8000⚔ &fВы в бою ещё &e{time} &fсек."
water-format: "�BFFF💧 &#FF8000Анти-побег активен: &fскорость снижена! &7(&e{time}&7)"
feedback:
water-particle:
enabled: true
type: SPLASH
points: 14
radius: 1.1
height: 1.0
water-sound:
enabled: true
name: "block.water.ambient"
volume: 0.7
pitch: 0.75
tag-sound:
enabled: true
name: "entity.experience_orb.pickup"
volume: 0.6
pitch: 1.5
untag-sound:
enabled: true
name: "entity.player.levelup"
volume: 0.5
pitch: 1.2
messages:
prefix: ""
no-permission: "&#FF0000[✖️] &fУ вас нет прав для выполнения этой команды!"
player-not-found: "&#FF0000[✖️] &fИгрок &e{player} &fне найден или не в сети!"
console-only-player: "&#FF0000[✖️] &fДанная команда доступна только игрокам!"
reload: "&#FF8000[✔] &fПлагин успешно перезагружен за &e{ms}&fмс!"
combat-enter: "&#FF8000[⚔] &fВы вступили в бой с игроком &e{player}&f! Вода теперь сильно замедляет вас!"
combat-end: "&#FF8000[✔] &fБой окончен — теперь вы свободны!"
combat-rejoin: "&#FF8000[⚔] &fВы всё ещё в бою! Осталось &e{time} &fсек."
status-self: "&#FF8000[⚔] &fСтатус боя: {status}"
status-other: "&#FF8000[⚔] &fИгрок &e{player} &7— {status}"
status-in-combat: "&#FFD500в бою ещё {time} сек."
status-clean: "&#FF8000не в бою"
not-in-combat: "&#FF0000[✖️] &fЭтот игрок сейчас не в бою."
untagged-self: "&#FF8000[✔] &fВы сняли с себя боевой тег."
untagged-other: "&#FF8000[✔] &fБоевой тег снят с игрока &e{player}&f."
bypass-on: "&#FF8000[✔] &fРежим обхода включён — вас больше не тегает, текущий бой сброшен."
bypass-off: "&#FF0000[✖️] &fРежим обхода выключен — вы снова участвуете в боях."
help:
- ""
- "&#FF8000&m──────────────────────────────────"
- " &#FFD500AthAntiWater &7— анти-побег через воду"
- ""
- " &#FF8000▸ &f/atw status [ник] &7— статус боя"
- " &#FF8000▸ &f/atw untag [ник] &7— снять боевой тег"
- " &#FF8000▸ &f/atw bypass &7— личный режим обхода"
- " &#FF8000▸ &f/atw reload &7— перезагрузка конфига"
- ""
- "&#FF8000&m──────────────────────────────────"
- ""