NullShield - Щиты на регионы WorldGuard

Плагин NullShield - Щиты на регионы WorldGuard 1.0

Создайте и подтвердите аккаунт для скачивания
Поддерживаемые версии
  1. 1.18
  2. 1.19
  3. 1.20
  4. 1.21
Ядра и Прокси
  1. Paper
Минимальная версия Java
17
Исходный код
https://github.com/ZloboocGip/NullShield
NullShield - плагин который добавляет систему щитов для WorldGuard-регионов.
1781345739880.png
Игрок может купить щит на свой регион через GUI или команду. Если у игрока несколько регионов, плагин сначала откроет меню выбора региона, а затем меню выбора щита. После покупки регион получает временную защиту.
Пока щит активен, чужие игроки не смогут ломать, ставить блоки или взаимодействовать с регионом, если они не являются владельцами или участниками этого региона.

Работа плагина:
1. Игрок открывает меню покупки щитов.
2. Если у него один регион, плагин сразу открывает гуишку с щитами.
2.1. Если регионов несколько, сначала открывается гуишку выбора региона.
1781345545055.png

3. После выбора региона игрок выбирает нужный щит.
1781345625997.png

4. Плагин проверяет, принадлежит ли регион игроку, разрешён ли мир, не находится ли регион в исключениях, хватает ли денег, прав или других требований.
5. Если все проверки пройдены, щит активируется на регион
.
1781345709074.png


Настройка плагина:

Почти вся логика плагина настраивается через кфг. Можно изменить сообщения, формат текста, GUI, предметы, типы щитов, требования для покупки, команды после покупки, список миров, исключённые регионы, базу данных и отображение активной защиты.
Плагин поддерживает Legacy и You must be logged in to see this link. форматирование, поэтому сообщения можно оформить под стиль сервера.
Перед активацией щита плагин может проверять разные условия:

  • наличие права;
  • баланс через Vault;
  • значения через PlaceholderAPI;
  • принадлежность региона игроку; (встроено)
  • разрешённый мир; (встроено)
  • исключённые регионы и миры. (встроено)
Владелец сервера может создать любое количество щитов. Для каждого щита отдельно
настраивается:

  • время действия
  • название
  • предмет в GUI
  • слот
  • описание
  • CustomModelData
  • требования и команды, которые выполняются после покупки
Например, можно сделать обычный щит на 30 минут, дорогой щит на несколько часов или отдельный щит только для игроков с определённым правом.

YAML:
  #  █▄ █ █ █ █   █   █▀▀ █▄█ ▀█▀ █▀▀ █   █▀▄
  #  █ ▀█ █▄█ █▄▄ █▄▄ ▄██ █ █ ▄█▄ ██▄ █▄▄ █▄▀
# Покупка временных щитов на регионы WorldGuard.
# Связь с разработчиком плагина (телеграм) : @sssssssss2sss

settings:
  prefix: "&8[&bNullShield&8] "

  # legacy или minimessage.
  # Legacy - цвета через "&", minimessage - цвета через "<color></color>"
  # О minimessage можешь почитать тут: https://docs.papermc.io/adventure/minimessage/format/
  message-format: legacy

  # Если true, щиты живут только до рестарта в памяти сервера.
  # Если false, используется database ниже.
  reset-on-restart: false
  # Где плагин будет проверять регионы (владельца в нём)
  # Пустой список значит проверять только мир, где игрок на данный момент сидит.
  checking-worlds: []

  # Эти миры полностью исключаются из механики щитов.
  ignored-worlds:
    - spawn

  # Эти регионы полностью исключаются из механики щитов.
  ignored-regions:
    - spawn
    - pvp_arena
    - event_region

  # Право обхода защиты NullShield. WorldGuard bypass у админов обычно уже есть,
  # но это право оставлено отдельно, чтобы не зависеть от чужих настроек.
  admin-bypass-permissions:
    - nullshield.bypass
    - worldguard-a
    - worldguard.region.bypass.*

  # Покупать щит может только owner региона?
  owner-only-purchase: true

  # Если в регионе уже есть щит, новая покупка прибавит время к текущему остатку?
  extend-existing-shield: true

  # Включить команды покупки выполняются от консоли после всех проверок
  execute-purchase-commands-as-console: true

database:
  type: sqlite # sqlite, mysql
  sqlite:
    file: shields.db # создаться в папке плагина
  mysql:
    host: localhost
    port: 3306
    database: nullshields
    username: root
    password: password
    use-ssl: false
    table-prefix: ns_

worldguard-flags:
  enabled: true

  # Флаги ставятся на регион при активном щите.
  active:
    build: deny
    use: deny

  # Флаги ставятся после истечения щита.
  expired:
    build: allow
    use: allow

  # Если true, при удалении щита плагин просто убирает указанные active-флаги.
  # Если false, ставит значения из expired.
  remove-active-flags-instead-of-expired: false

gui:
  rows: 3 # строки в гуишке

  region-selection:
    title: "&8Выбор региона"
    empty-regions-item:
      material: BARRIER
      slot: 13
      model-data: 0 # сделал model-data если у вас есть поддержка кастомных рп-менюшек
      name: "&cНет доступных регионов"
      lore:
        - "&7У тебя нет регионов, где ты владелец."
    region-item:
      material: GRASS_BLOCK
      model-data: 0
      name: "&a{region}"
      lore:
        - "&7Мир: &f{world}"
        - "&7Статус: {status}"
        - ""
        - "&eНажми, чтобы выбрать регион"

  shield-selection:
    title: "&8Покупка щита: &f{region}"

  filler:
    enabled: true
    material: BLACK_STAINED_GLASS_PANE
    model-data: 0
    name: " "
    lore: []

shields:
  iron:
    time: 30m
    display-name: "&fIron Shield"
    description:
      - "&7Базовая защита региона на &f30 минут&7."
      - "&7Цена: &a30$ &7и &b15 points"
    item:
      material: IRON_INGOT
      slot: 11
      model-data: 0
      name: "&fIron Shield"
      lore:
        - "&7Время: &f{duration}"
        - "&7Регион: &e{region}"
        - ""
        - "&aНажми, чтобы купить"
    requirements:
      permission:
        type: has_permission
        permission: blablabla
        deny-message: "{prefix}&cНет права: &f{permission}&c."
      money:
        type: vault
        balance: "30"
        deny-message: "{prefix}&cНужно &e{required}&c монет. Сейчас: &e{current}&c."
      vault_placeholder:
        type: placeholderapi
        placeholder: "%vault_eco_balance%"
        check: ">=30"
        deny-message: "{prefix}&cПроверка денег через PlaceholderAPI не пройдена."
      points_placeholder:
        type: placeholderapi
        placeholder: "%playerpoints_points%"
        check: ">15"
        deny-message: "{prefix}&cНужно больше &b15 points&c."
    commands:
      - "eco take {player} 30"
      - "points take {player} 15"

  diamond:
    time: 2h
    display-name: "&bDiamond Shield"
    description:
      - "&7Усиленная защита региона на &f2 часа&7."
      - "&7Цена: &a150$ &7и &b80 points"
    item:
      material: DIAMOND
      slot: 15
      model-data: 0
      name: "&bDiamond Shield"
      lore:
        - "&7Время: &f{duration}"
        - "&7Регион: &e{region}"
        - ""
        - "&aНажми, чтобы купить"
    requirements:
      money:
        type: vault
        balance: "150"
        deny-message: "{prefix}&cНужно &e{required}&c монет. Сейчас: &e{current}&c."
      points_placeholder:
        type: placeholderapi
        placeholder: "%playerpoints_points%"
        check: ">=80"
        deny-message: "{prefix}&cНужно минимум &b80 points&c."
    commands:
      - "eco take {player} 150"
      - "points take {player} 80"

display:
  active-shield:
    enabled: true
    mode: always
    actionbar:
      enabled: true
      interval: 2s
      message: "&aЩит региона &e{region}&a активен ещё &e{expires_in}"
    bossbar:
      enabled: false
      title: "&aЩит региона &e{region}&a активен: &e{expires_in}"
      color: GREEN
      style: SOLID
      progress-mode: time-left
      update-interval: 1s
    chat:
      enabled: false
      interval: 60s
      message: "{prefix}&aРегион &e{region}&a защищён щитом ещё &e{expires_in}&a."
  vulnerable-region:
    enabled: true
    mode: on-enter
    actionbar:
      enabled: true
      interval: 3s
      message: "&cРегион &e{region}&c без щита и уязвим"
    bossbar:
      enabled: false
      title: "&cРегион &e{region}&c уязвим"
      color: RED
      style: SOLID
      progress-mode: full
      update-interval: 1s
    chat:
      enabled: true
      interval: 60s
      message: "{prefix}&cРегион &e{region}&c без щита. Его могут сломать."
  attack-blocked:
    enabled: true
    actionbar:
      enabled: true
      message: "&cРегион &e{region}&c защищён щитом: &e{expires_in}"
    bossbar:
      enabled: false
      title: "&cРегион защищён щитом"
      color: RED
      style: SOLID
      duration: 3s
    chat:
      enabled: false
      message: "{prefix}&cЭтот регион защищён щитом ещё &e{expires_in}&c."

messages:
  only-player: "{prefix}&cКоманда доступна только игроку."
  no-permission: "{prefix}&cНет прав."
  reload: "{prefix}&aКонфиг перезагружен."
  unknown-command: "{prefix}&cНеизвестная команда. Используй: &f/nullshield"
  no-worldguard: "{prefix}&cWorldGuard не найден. Плагин не может работать."
  no-regions: "{prefix}&cУ тебя нет регионов для покупки щита."
  region-not-found: "{prefix}&cРегион &e{region}&c не найден или недоступен."
  region-ignored: "{prefix}&cНа этот регион нельзя купить щит."
  not-region-owner: "{prefix}&cПокупать щит можно только на свой регион."
  shield-not-found: "{prefix}&cЩит &e{shield}&c не найден."
  requirement-denied: "{prefix}&cУсловия покупки не выполнены."
  vault-missing: "{prefix}&cVault или экономика не найдены."
  placeholderapi-missing: "{prefix}&cPlaceholderAPI не найден."
  purchase-success: "{prefix}&aКуплен щит &e{shield}&a для региона &e{region}&a. Истекает через &e{expires_in}&a."
  purchase-error: "{prefix}&cОшибка покупки: &f{error}"
  active-status: "&aактивен ещё &e{expires_in}"
  vulnerable-status: "&cбез щита"
  list-header: "{prefix}&aАктивные щиты:"
  list-entry: "&7- &e{world}&7/&e{region}&7: &f{shield} &7ещё &a{expires_in}"
  list-empty: "{prefix}&7Активных щитов нет."
Зависимости
WorldGuard (Vault, PAPI желательно)
Команды и права
Команды:
/nullshield открыть меню покупки щита.
/nullshield open открыть меню покупки щита.
/nullshield buy <щит> [регион] купить выбранный щит. Если регион не указан и у игрока несколько регионов, откроется меню выбора региона.
/nullshield list посмотреть список всех активных щитов. Админ-команда.
/nullshield info <регион> посмотреть информацию о щите региона. Админ-команда.
/nullshield remove <регион> снять активный щит с региона. Админ-команда.
/nullshield reload перезагрузить конфиг плагина. Админ-команда.
Автор
ZloboocGip
Скачивания
1
Просмотры
12
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Поделиться ресурсом

Назад
Сверху Снизу