nnLogger

Плагин nnLogger 3.1

Создайте и подтвердите аккаунт для скачивания
Поддерживаемые версии
  1. 1.16
  2. 1.17
  3. 1.18
  4. 1.19
  5. 1.20
Ядра и Прокси
  1. Bukkit
  2. Spigot
  3. Paper
Понравился плагин, есть идея для его улучшения или нашли баг? Тогда вам You must be logged in to see this link.!

Почему именно этот плагин?

- Гибкая настройка нужных Вам ивентов для логирования
- Счётчик аккаунтов
- Подсчёт максимально достигнутого онлайна игроков

На текущий момент плагин может логировать:
- Команды консоли
- Сообщения игроков
- Команды игроков
- Смерти игроков
- Вход/первый вход/выход игроков

Плейсхолдеры:
- %nnLogger_id% - айди аккаунта игрока
- %nnLogger_total_accounts% - количество зарегистрированных аккаунтов
- %nnLogger_maximum_online% - получить максимально достигнутый онлайн сервера


config.yml
YAML:
debug-enabled: true

# По умолчанию плагин использует свои плейсхолдеры, которые
# позволяют увеличить скорость работы. Но вы можете дополнительно
# использовать плейсхолдеры от PlaceholderAPI, включив этот параметр.
# В логах, не использующих аргумент [PLAYER], будут использоваться
# только доступные локальные плейсхолдеры.
use-placeholderAPI: false
# Формат времени:
# MM - месяц
# dd - день
# yyyy - год
# hh - часы
# mm - минуты
# ss - секунды
time-format: 'MM/dd/yyyy hh:mm:ss'

# Ивенты - описание - особенные плейсхолдеры:
#  [SERVER] [COMMAND] - использование команды из консоли - %command%
#
#  [PLAYER] [FIRST_JOIN] - игрок присоединился - %name%, %id%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#  [PLAYER] [JOIN] - игрок присоединился - %name%, %id%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#  [PLAYER] [CHAT] - игрок написал сообщение - %name%, %id%, %message%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#  [PLAYER] [COMMAND] - игрок выполнил команду - %name%, %id%, %command%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#  [PLAYER] [DEATH] - игрок умер - %name%, %id%, %command%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#  [PLAYER] [QUIT] - игрок вышел - %name%, %id%, %command%, %ip%, %world%, %x%, %y%, %z%, %uuid%
#
# Плейсхолдеры, которые можно использовать в любом ивенте:
#  %date% - дата лога
#
# Условия:
#  name - == || != - ник игрока
#  ip - == || != - айпи игрока

events:
  on-console-command:
    event: '[SERVER] [COMMAND]'
    log:
      - '[console.log] Была выполнена команда от имени консоли: %command% (дата: %date%)'

  on-player-first-join:
    event: '[PLAYER] [FIRST_JOIN]'
    log:
      - '[local-logs/%name%/join.log] %name% (%id%) присоединился к серверу впервые (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) присоединился к серверу впервые (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/login.log] %name% (%id%) присоединился к серверу впервые (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) присоединился к серверу впервые (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-player-join:
    event: '[PLAYER] [JOIN]'
    log:
      - '[local-logs/%name%/join.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/login.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-admin-join:
    event: '[PLAYER] [JOIN]'
    condition: 'name == nnikitochka'
    log:
      - '[admin logs/login.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[admin logs/global.log] %name% (%id%) присоединился к серверу (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-player-chat:
    event: '[PLAYER] [CHAT]'
    log:
      - '[local-logs/%name%/chat.log] %name% (%id%) написал: %message% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) написал: %message% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/chat.log] %name% (%id%) написал: %message% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) написал: %message% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-player-command:
    event: '[PLAYER] [COMMAND]'
    log:
      - '[local-logs/%name%/command.log] %name% (%id%) выполнил команду: %command% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) выполнил команду: %command% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/command.log] %name% (%id%) выполнил команду: %command% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) выполнил команду: %command% (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-player-death:
    event: '[PLAYER] [DEATH]'
    log:
      - '[local-logs/%name%/death.log] %name% (%id%) умер (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) умер (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/death.log] %name% (%id%) умер (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) умер (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
  on-player-quit:
    event: '[PLAYER] [QUIT]'
    log:
      - '[local-logs/%name%/quit.log] %name% (%id%) вышел с сервера (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[local-logs/%name%/global.log] %name% (%id%) вышел с сервера (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/quit.log] %name% (%id%) вышел с сервера (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'
      - '[logs/global.log] %name% (%id%) вышел с сервера (айпи: %ip%) (дата: %date%) (локация: %world%, %x%, %y%, %z%) (uuid: %uuid%)'

messages.yml
YAML:
reload: '&x&1&f&f&b&0&0[✔] Успешно! &fПлагин был перезагружен за &x&f&b&4&d&0&0%reload_time%&f миллисекунд!'
error-permission: '&x&f&b&4&d&0&0[⚠] Ошибка! &fУ вас недостаточно прав!'
error-argument: '&x&f&b&4&d&0&0[⚠] Ошибка! &fНеизвестный аргумент!'
unknown-player: '&x&f&b&4&d&0&0[⚠] Ошибка! &fИгрок не найден!'
player-only: '&x&f&b&4&d&0&0[⚠] Ошибка! &fДанная команда может быть выполнена только от имени игрока!'
information-not-found: 'информация не найдена'
help:
  - '&x&f&d&e&4&0&0[⚡] &fПомощь с плагином:'
  - ' &x&f&d&e&4&0&0/logger reload &f- перезагрузить плагин'
  - ' &x&f&d&e&4&0&0/logger info id <айди> &f- получить информацию о игроке с помощью айди'
  - ' &x&f&d&e&4&0&0/logger info name <ник> &f- получить информацию о игроке с помощью ника'
  - ' &x&f&d&e&4&0&0/logger info max_online &f- получить максимально достигнутый онлайн сервера'
  - ' &x&f&d&e&4&0&0/logger info total_accounts &f- получить количество зарегистрированных аккаунтов'

get-command:
  no-value-selected: '&x&f&b&0&0&0&0[✘] Ошибка! &fВы не выбрали значение!'
  no-player-selected: '&x&f&b&0&0&0&0[✘] Ошибка! &fВы не выбрали игрока!'
  no-id-selected: '&x&f&b&0&0&0&0[✘] Ошибка! &fВы не ввели айди!'
  account-count: '&x&f&d&e&4&0&0[⚡] &fНа сервере зарегистрировано &x&2&8&f&b&a&b%total_accounts% &fаккаунтов.'
  max-online: '&x&f&d&e&4&0&0[⚡] &fМаксимальный онлайн: &x&2&8&f&b&a&b%maximum_online%&f.'
  info:
    - '&x&f&d&e&4&0&0[⚡] &fИнформация о игроке:'
    - ' &fДата первого входа: &x&f&d&e&4&0&0%first_join_date%&f.'
    - ' &fДата последнего входа: &x&f&d&e&4&0&0%last_join_date%&f.'
    - ' &fДата последнего выхода: &x&f&d&e&4&0&0%last_quit_date%&f.'
    - ' &fid игрока: &x&f&d&e&4&0&0%id%&f.'
    - ' &fНик игрока: &x&f&d&e&4&0&0%name%&f.'
    - ' &fUUID игрока: &x&f&d&e&4&0&0%uuid%&f.'
Команды и права
Команды - описание - права:
- /logger reload - перезагрузка плагина - nnlogger.reload
- /logger info id <айди> - получить информацию о игроке с помощью айди - nnlogger.info
- /logger info name <ник> - получить информацию о игроке с помощью ника - nnlogger.info
- /logger info max_online - получить максимально достигнутый онлайн сервера - nnlogger.info
- /logger info total_accounts - получить количество зарегистрированных аккаунтов - nnlogger.info
  • Мне нравится (+1)
Реакции: Shon
Автор
nennikitochka
Скачивания
106
Просмотры
2 261
Первый выпуск
Обновление
Оценка
4.00 звёзд 2 оценок

Другие ресурсы пользователя nennikitochka

  • nnTNTs
    Плагин nnTNTs
    Лучший БЕСПЛАТНЫЙ плагин на кастомный динамит! Много функций, гибкая настройка!

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

Последние обновления

  1. 3.1

    Новое: Добавлено api плагина Добавлены новые параметры в базу данных (советую избавиться от...

Последние рецензии

Очень топовый плагин. Главная особенность как я считаю - разбитые на отдельные каталоги логи каждого игрока. Не надо теперь хуzzzть по логам, чтобы найти нужного человека, если он нужен один и единственный.

Также разраб сверх отзывчивый. Я только написал, он в 10 вечера даже ответил (чем не похвастаются многие разрабы).

И разрабу 5, и плагину 5. 10!
nennikitochka
nennikitochka
В моём регионе было 2 ночи)
Никто не просил оценки, но я оценю:

Плагин прикольный, но можешь переписать свой код получше.

Именование полей/классов/методов: Начни использовать camelCase для полей/методов, и PascalCase для классов.

К слову в Enum'ах используй желательно используй CAPS.
Класс Date со статик методом Date#get(); по сути и не нужен.
Можно было создать Utils.java, в котором был бы метод Utils#getFormattedDate(); просто и понятно что ты получаешь форматированную дату.

Метод Conditions#check, аналогично можно было бы запихнуть в Utils.java, - Utils#checkConditions();

С классами LogsReader, LogsWriter - абсолютно тоже самое, зачем создавать два класса в которых один метод?

SRP? Тогда уж можно создать условно класс Logs с методами Logs#writeFile(), Logs#readFile();

По поводу базы данных:
Зачем было тащить к себе в плагин лишние библиотеки?
Типа всяких HikariCP, jdbi3-sqlobject?

Всё же можно было реализовать и без них?

И постарайся не использовать паттерн Singleton, если интересно почитай об этом, синглтон - антипаттерн, об этом есть куча ресурсов и лекций.

В целом, критиковать и обсуждать код можно долго, твой плагин прикольный, но над кодом стоить хорошо поработать и посидеть.
Назад
Сверху Снизу