E1m0Dev:Главным двигателем и идеей этого плагина стала моя личная прихоть, мои старые плагины как то не зажигали что ли. Я уже очень давно не занимался чем то реально большим, как только поуходил с больших проектов и начал заниматся частниками как делал это несколько лет назад в своих эксперементах.
🩷 Благодарю что зашли посмотреть на мое творение, плагин вышел не маленький по этому функций много.
❗- | Если что в тексте я буду говорить администратор но это больше как абстракция, это может быть и модератор, и хелпер, и фембой, кто угодно кто имеет власть.offtop
❗ Скорее зацени обновление 4.0 на GitHub проекта ❤️
❓| А про что вообще говорим?:
Плагин главным образом хорошо показывает себя на расстоянии трех разных лиц:
STAFF: Обязанность курирующей группы - сохранять порядок, дисциплину и боевой дух своего сервера.
ADMIN: Обязанность администратора - охранять сервер, с тулсом - станет намного легче.
PLAYER: В трудную минуту - администрация всегда на связи и увидит Ваш репорт.
Разберем пример от: Игрока:
Я - рядовой игрок, меня начинают оскорблять, всячески задевать родню и прочее. Можно - написать администратору/модератору в ЛС, ответит ли мне модератор который и так занят? - Вряд-ли, по этому мы создаем репорт и запускаем цепь: У администрации есть свои нормативы на нормальных серверах, и все должны выполнять свою норму, это нормальная практика решать задачи, а игрока СОЗДАЕТ эту задачу, то есть это не случайно а именно специально нацеленно на цепь Игрок -> Админ - Наказание -> Справедливость -> Норматив -> Бонус (Бонус который можно выдать в плагине ниже в функциях расскажу)
Разберем пример от: Администратора:
Я - Младший Администратор, норма большая, зарплата маленькая хочу больше. Но и помогать надо больше, вместо того чтобы просто летать по серверу - я начинаю смотреть репорты. Например прилетает жалоба на игрока bobobo, что он не работает. Я делаю /re Отправитель (Допустим: /re E1m0) и начинаю собирать контекст. Вижу что нарушитель реально нарушает правила и создается цепь:
Игрок ->Админ -> Нарушение -> Факт -> Наказание -> Пополняю свою норму.
Разберем пример от: Старшего Администратора:
Я - Сотрудник специального дозора за администрацией, допустим - Куратор Администрации. Мне нужно как либо регулировать свою администрацию. Так как в плагине есть доступный API - допустим у меня есть сайт. Я могу с сайта - выдавать повышения и понижения лишь одной кнопкой потому что это позволяет делать API. И запускается цепь от функции: STAFF - ADMIN - Ситуация: Администратор прошел условия повышения -> Повышение + Бонус (Например) -> Администратор работает еще лучше.
Получается так что один плагин - запускает и шевелит всю систему администрации 🩷
❓| А какие функции вообще есть?:
Если честно - ассортимент не из дешевых.
config:
# База Данных | Важная вещь, без нее плагин работать - не будет.
# Данные - берутся именно с Вашего сервера с Вашей СУБД.
Database:
type: "PostgreSQL" # PostgreSQL, MySQL, MariaDB
user: "postgre" # Пример: E1m0
pass: "postgre" # Пример: Elm0Dev
name: "E1m0Admin" # Пример: Server_Prod
host: "127.0.0.1" # Пример: 217.171.146.202
port: 5433 # Пример: 3306, 5432, 5433
# Параметры плагина | Параметры самого плагина на которые он будет опираться в работе своих функций.
Settings:
mainLanguage: "ru_ru.yml"
consoleLogActive: true # Сообщения | Будут ли логироватся действия администратора?
consolePrefix: "CONSOLE" # Сообщения | Как будет отображаться префикс консоли? Terminal, E1m0, Console, Бог - Вам решать.
prefixEnable: true # Сообщения | Будет ли показываться префикс? Пример: E1m0-Admin - Внимание | У Вас - нет на это права!
prefix: "&cE1m0-Admin |" # Сообщения | Префикс при системных сообщениях. Пример: ADM | У вас нет на это прав!
world: "world" # Мир | В папке с Вашим сервером, у Вас есть в server.properties название Вашего мира.
# | Комплименты | Сколько в МИНУТАХ будет длиться задержка перед следующей возможностью кинуть похвалу администратору.
complimentCooldown: 1440 # ❓ | Почему 1440 минут (24 часа в переводе)? - Потому что 1 раз в день обычный игрок отправляет репорт.
# PIN-Код | Максимальное кол-во попыток ввода секретного кода до блокировки админ-прав?
maxSecretCodeInputWrong: 3
Dev:
salaryCheck: 60 # | ❗ Через сколько МИНУТ будет проходить проверка scheduler на зарплаты админов? Советую не трогать если не знаем что такое. Действия с базой там плотные.
# Стандарт: 60 или же 1 час.
rewatchTick: 1 # Слежка |❗ Опасная настройка, только для знающих людей с уровнем допуска DEV Рекомендуемое значение: 10+.
# ❓- Сколько тиков будет длиться один кадр слежки? Меньше тиков = больше плавности == БОЛЬШЕ нагрузка на сервер! Если у Вас тпс ниже 20 - Не советую.
# Параметры | Связанные с разрешениями для главных администраторов серверов+,
# которые в праве сами выбирать способности своей администрации.
Server:
# - | ADMIN
invisibility: true # Невидимость | Включать ли возможность e1m0-невидимки?
adminzone: true # Админ-Зона | Включать ли возможность телепорта в админ-зону?
rewatch: true # Слежка за юзером | Включать ли возможность e1m0-rewatcher?
godmode: true # Администрация | Включать ли возможность включать режим бога?
report: true # Репорты | Включить ли возможность отправлять и управлять репортами?
amenu: true # Админ-Меню | Включить ли возможность открывать админ-меню сервера?
aban: true # Админ-Блок | Включить ли возможность блокировать администраторам доступ при сливе?
# - | PLAYER
admins: true # Администрация | Включать ли возможность просматривать админ-состав?
compliment: true # Администрация | Включать ли возможность кидать админу /thanks, похвалы и другие комплименты?
reportPlayer: true # Слежка за юзером | Включать ли возможность e1m0-rewatcher?
# - | STAFF
abonusall: true # Бонусы | Включить ли возможность выдавать бонусы всем?
abonus: true # Бонусы | Включить ли возможность выдавать бонус админу?
adminPay: true # Зарплата | Каждый отыгранный администратором час = определенные действия в отношении администратора.
adminBonus: true # Зарплата | Каждый дополнительный наигранный час = дополнительные действия.
emergencyRep: true # Репорт | Будет ли оповещение в чате администрации при: Срочном репорте?
donateReport: true # Репорт | Будет ли оповещение в чате администрации при: Донат репорте?
newReport: true # Репорт | Будет ли оповещение в чате администрации при: Новом репорте?
ablacklist: true # Администрация | Включить ли возможность взаимодействия с черным списком?
smenu: true # Меню | Включить ли возможность открывать стафф-меню?
# PermissionManager:
# При каких разрешениях у администраторов будут работать команды?
# Вы - можете полностью настроить какие команды включены на сервере, какие выключены, у кого есть к ним доступ у кого нет. Полная адаптивность к Вашему серверу.
Permissions:
# 🎫 | Главные разрешения | Печать администратора.
admin: "e1admin.admin" # Печать | Является-ли данный пользователь администратором сервера?
staff: "e1admin.staff" # Печать | Является-ли данный администратор, главой сервера?
# 🕹️ | Например для обычных игроков:
compliment: "e1m0.compliment" # Админ-коин | Какое разрешение на выдачу "Сбер-Спасибо" для администрации?
admins: "e1admin.admins" # Админ-Лист | Какое разрешение на чек администрации?
# 🎫 | Например разрешение обычных администраторов:
invisibility: "e1admin.invise" # Невидимость | Какое разрешение на просмотр и использование способности?
adminzone: "e1admin.adminzone" # Адм-Зона | Какое разрешение на телепортацию в админ зону?
godmode: "e1admin.godmode" # Бессмертие | Какое разрешение на использование /godmode (/agm) - Бессмертие
rewatch: "e1admin.rewatch" # Слежка | Какое разрешение на просмотр и использование просмотра за игроками?
smenu: "e1admin.smenu" # Меню | Какое разрешение на открытие STAFF меню?
amenu: "e1admin.amenu" # Меню | Какое разрешение на открытие ADMIN меню?
arep: "e1admin.arep" # Репорт | Какое разрешение на просмотр и использование систем репорта?
aban: "e1admin.aban" # Репорт | Какое разрешение на блокировку возможностей админ-доступа?
# 🔐 | Например кураторы:
adminbonus: "e1admin.adminbonus" # Администрация | Какое разрешение у администратора для выдачи бонуса другому администраторУ?
adminbonusall: "e1admin.adminbonusall" # Администрация | Какое разрешение у администратора для выдачи бонуса другим администраторАМ?
# ❗ | STAFF:
ablocklist: "e1admin.ablocklist" # Админ | Какое разрешение у высших адм на занесение в черный список администрации?
secretcode: "e1admin.asecret" # Админ | Какое разрешение у высших адм на установление секретного пароля?
downadm: "e1admin.downadmin" # Админ | Какое разрешение у высших адм на понижение других администраторов?
deladm: "e1admin.deladmin" # Админ | Какое разрешение у высших адм на удаление других администраторов?
setadm: "e1admin.setadmin" # Админ | Какое разрешение у высших адм на постановление других администраторов?
upadm: "e1admin.upadmin" # Админ | Какое разрешение у высших адм на повышение других администраторов?
# Параметры | Связанные с игрой администраторации, их зарплаты, АЗ, их бонусы за безумные трюки,
# которые Вы можете полностью настраивать как душе угодно, развлекайтесь.
Admin:
Rewatch:
rewatchVectorX: 0 # Слежка | На сколько "глубоко" будет камера у администратора?
rewatchVectorY: 2 # Слежка | На сколько высоко будет камера у администратора?
rewatchVectorZ: 1 # Слежка | На сколько "отдаленно" будет камера у администратора?
rewatchVectorYaw: 0 # Слежка | Поворот камеры влево/вправо (0 = как у игрока)
rewatchVectorPitch: 45 # Слежка | Наклон камеры вверх/вниз (0 = прямо, -90 = вверх, 90 = вниз)
# ПРЕСЕТЫ REWATCH | Если Вам хочется взять готовый пресет настроек и не играться с ними, прошу:
# | Поближе
# rewatchVectorX: 0 # Слежка | На сколько "глубоко" будет камера у администратора?
# rewatchVectorY: 2 # Слежка | На сколько высоко будет камера у администратора?
# rewatchVectorZ: 1 # Слежка | На сколько "отдаленно" будет камера у администратора?
# rewatchVectorYaw: 0 # Слежка | Поворот камеры влево/вправо (0 = как у игрока)
# rewatchVectorPitch: 45 # Слежка | Наклон камеры вверх/вниз (0 = прямо, -90 = вверх, 90 = вниз)
# | Средне
# rewatchVectorX: 0 # Слежка | На сколько "глубоко" будет камера у администратора?
# rewatchVectorY: 2 # Слежка | На сколько высоко будет камера у администратора?
# rewatchVectorZ: 2 # Слежка | На сколько "отдаленно" будет камера у администратора?
# rewatchVectorYaw: 0 # Слежка | Поворот камеры влево/вправо (0 = как у игрока)
# rewatchVectorPitch: 45 # Слежка | Наклон камеры вверх/вниз (0 = прямо, -90 = вверх, 90 = вниз)
# | Подальше
# rewatchVectorX: 1 # Слежка | На сколько "глубоко" будет камера у администратора?
# rewatchVectorY: 3 # Слежка | На сколько высоко будет камера у администратора?
# rewatchVectorZ: 3 # Слежка | На сколько "отдаленно" будет камера у администратора?
# rewatchVectorYaw: 0 # Слежка | Поворот камеры влево/вправо (0 = как у игрока)
# rewatchVectorPitch: 45 # Слежка | Наклон камеры вверх/вниз (0 = прямо, -90 = вверх, 90 = вниз)
# Амин-Зона | Сюда, администраторы попадают при регистрации например, или при окончании реватча (/reoff)
# Амин-Зона | ❗ Лучше сразу заполнить.
AdminZone:
pitch: 0 # Наклон взгляда | 0 = прямо, -90 = вверх, 90 = вниз.
yaw: 0 # Направление взгляда | Куда будет смотреть администратор после телепортации.
# Пример: 0 = юг, 90 = запад, 180 = север, -90 = восток.
x: 0 # Координата X | Положение "Левее или правее"
y: 80 # Координата Y | Высота. Чем больше значение, тем выше находится точка.
z: 0 # Координата Z | Положение "Глубже"
Salary:
# Или же - AdminPay, зарплата для администраторов которая выдается за определенные действия в игре.
# Можно так же настроить действия для большего кол-ва часов выставляя большие minutes.
SalaryActions:
1:
minutes: 60
Actions:
- "msg %player Привет. Ты отыграл час! Твоя зарплата: %salary!"
2:
minutes: 120
Actions:
- "msg %player Привет! Ты отыграл целых два часа. Вот твоя награда! Спасибо что трудишься сверх своей нормы!"
- "eco give %player 100"
# Параметры бонусов | Старшая администрация может выдать бонус в N кол-ве, Вам решать что это будет, например у кого-либо есть админ коины, вставляете команду сюда и Воуаля.
# Крутить %admin %bonus можно в любом порядке, это переменные абстракции которые перенимают форму заданную плагином.
Bonus:
giveBonus: "eco give %admin %bonus" # ❗НУЖЕН VAULT, лучше заменить на что то другое, это - Ваша фантазия уже.
# | Staff
# Вот тут - очень интересно. Полностью настраиваемая система рангов, вы можете создавать сколько угодно уровней
# админ-допуска, называть их по-разному, не советую конечно менять названия в runtime потому что может быть путаница,
# но тут - и лежат Ваши администраторы и их разрешения.
AdminRanks:
# Минимальный ранг на который будет поставлен администратор при setAdmin.
mladm:
prefix: "Младший администратор" # Важно | Какой префикс в DB будет выдаваться при постановлении на адм?
weight: 1 # Важно | Какой вес будет у данной роли? Например: Некоторые администраторы - не могут забанить некоторых игроков.
salary: 333 # Важно | Какая зарплата будет у администратора в Вашей валюте?
scom: "eco give %player %salary" # Важно | Какая команда будет выдавать валюту которая закреплена за администратором? Или например предмет из ресурс-пака?
# Около средние ранги на который будет поставлен администратор при повышении.
adm:
prefix: "Администратор"
salary: 777
weight: 2
scom: "eco give %player %salary"
# Здесь например ваши максимальные ранги среди всех.
stadm:
prefix: "Ст. Администратор"
weight: 3
salary: 888
scom: "eco give %player %salary"
# PIN-Code | Или же SecretCode, параметры при котором используются действия с PIN кодом администратора.
# Каждому администратору Выдается старшим администратором свой PIN-Code и позже вводится на постоянной основе.
SecretCode:
wrongCodeTrigger: true # ❗| Будет ли извещение, что администратор не правильно ввел пароль?
accessCodeTrigger: true # ❗| Будет ли извещение, что администратор правильно ввел пароль?
adminAccessNotify: "&aПоприветствуйте! Администратор %admin зарегистрировался в системе!" # | Успешная регистрация в системе.
wrongCodeNotify: "&4&bОй! Администратор %admin ввел не правильный секретный код!" # | Не успешная регистрация в системе.
# Trigger Action | Действия при одном из состояний входа, то есть, если админ не правильно ввел пин код, я могу забанить его аккаунт,
# Отобрать права, или просто кикнуть. А если ввел правильно, могу написать в админ чат или весь чат, что все хорошо.
Actions:
accessCodeActions:
- "say §aАдминистратор %admin успешно авторизовался!"
wrongCodeActions:
- "msg %admin Не верно ввел админ код!"
# Админ-Лист | Как будет выглядеть для игрока сообщение об админ-листе?
AdminList:
notAdminPlayer: "&6Не найден!" # Если Администратор не найден.
notAdminPrefix: "&6Нет.." # Если префикс администратора - не найден.
notAdminWeight: "&6Нет.." # Если вес администратора - не найден.
List:
- ""
- "&6Администраторы &7на &aрабочем посту:"
- "&7- | Префикс: &6%adminPrefix &7| Администратор: &6%adminInJob&7 | Вес: &6%adminWeight"
- ""
- ""
- "&6Администраторы &7в &aигре:"
- "&7- | Префикс: &6%adminPrefix &7| Администратор: &6%adminInGame&7 | Вес: &6%adminWeight"
- ""
# Если просто хотите вывести всех администраторов, я это понимаю:
# - "%adminInGame"
# - "%adminInJob"
# Здесь - я думаю все должно быть понятно, Вы сами прописываете свои сценарии и формы заданные на своих серверах,
# Я понимаю - что у всех все разное, по этому, адаптируюсь под Вас 💚
AHelp:
admin: # Если у администратора есть печать старшего (Permissions.admin)
- ""
- "&aКоманды для администрации: "
- "&a/acc &7— Зарегистрироваться в системе."
- ""
- "&a/az &7— Телепорт в админ зону."
- "&a/re [Игрок] &7— Слежка за целью от лица."
- "&a/agm &7— Активировать админский GM - не получение урона."
- "&a/arep [Ответ] &7— Открыть меню репортов с Вашей формой."
- "&a/ainv &7— Уйти в продвинутую невидимку."
- "&a/aban [Админ] &7— При сливе отобрать доступ у администратора!"
- "&a/amenu [Не обязательно | Игрок] &7— При совершении каких либо дейсвтий!"
- ""
- ""
- "&6Сценарии их применения: "
- "&fСитуация: Нужно быстро переговорить с админами, или отдохнуть от игроков: &6— /az"
- "&fСитуация: Игроки на анархии постоянно пытаются напасть а gamemode нет: &6— /agm"
- "&fСитуация: Чтобы получить доступ к командам нужно получить разрешение: &6— /acc"
- "&fСитуация: Нужно проследить за целью оставаясь не замеченным: &6— /re E1m0 (Пример)"
- "&fСитуация: Нужно проследить за ситуацией от своего лица: &6— /ainv + /tp [Игрок]"
- "&fСитуация: Нужно посмотреть ситуацию на сервере и помочь: &6— /arep Администратор E1m0 — уже работает по Вашей жалобе!"
- "&fСитуация: Человек сливает сервер, банит всех под ряд: &6— /aban E1m0"
- "&fСитуация: Нужно быстро пробить /areport а вам не хочется, и если у Вас разрешены fast-репорты: &6— /am -> Репорты -> И форма автоматически вставляется!"
- ""
staff: # Если у администратора есть печать старшего (Permissions.staff)
- ""
- "&aКоманды для STAFF: "
- "&a/aup &7— Повысить администратора."
- "&a/adel &7— Уволить администратора."
- "&a/smenu &7— Меню STAFF администратора."
- "&a/adown &7— Понизить администратора."
- "&a/aset &7— Поставить администратора."
- "&a/ablist &7— Выдать ЧС администрации."
- "&a/abonus &7— Выдать бонус администратору."
- "&a/aunban &7— Выдать администратору доступ если он в бане."
- "&a/abdlist &7— Снять ЧС администрации."
- "&a/abonusall &7— Выдать бонус администраторам."
- "&a/asetsecret &7— Выдать секретный код."
- ""
# Настройки комплиментов (/thaks) и их методов, здесь Вы можете заполнить дейсвтия например со своими админ коинами, своей валютой и в общем то чем либо своим
Compliment:
enable: true # | Будет ли работать функция?
Actions: # | При получении админом похвалы какие действия будут совершатся?
- "msg %admin 💚"
- "eco give %admin 77"
- "msg %admin 💚"
# - | Функция 3.0: Автоматическое заполнение администратора правами, командами, скинами, и всем нужным ему для работы.
AutoSetAdmin:
# - | Здесь автоматически Вы сами можете настроить права.
autoSetPermissions:
enable: true # | Будет ли работать функция авто-заполнения?
permissionInWeight: # | Смотрите на weight своих рангов, у меня например они 1, 2, 3. Но так же, Вы можете добавить и 4, и 5, и 777, короче как то так.
1: # | У меня - Это младший администратор. Смотрим AdminRanks..
permissions:
- "lp user %admin permission set e1admin.admin"
- "lp user %admin permission set e1admin.arep"
- "lp user %admin permission set e1admin.aban"
- "lp user %admin permission set e1admin.amenu"
- "lp user %admin permission set e1admin.invise"
- "lp user %admin permission set e1admin.godmode"
- "lp user %admin permission set e1admin.rewatch"
- "lp user %admin permission set e1admin.adminzone"
2: # | У меня - Это администратор. Смотрим AdminRanks.. Выдаю уровень 1, и добавляю 2.
permissions:
- "lp user %admin permission set e1admin.admin"
- "lp user %admin permission set e1admin.arep"
- "lp user %admin permission set e1admin.aban"
- "lp user %admin permission set e1admin.amenu"
- "lp user %admin permission set e1admin.invise"
- "lp user %admin permission set e1admin.godmode"
- "lp user %admin permission set e1admin.rewatch"
- "lp user %admin permission set e1admin.adminzone"
- "lp user %admin permission set e1admin.adminbonus"
- "lp user %admin permission set e1admin.adminbonusall"
3: # | У меня - Это старший администратор. Смотрим AdminRanks.. Выдаю ВСЕ права.
permissions:
- "lp user %admin permission set e1admin.admin"
- "lp user %admin permission set e1admin.arep"
- "lp user %admin permission set e1admin.aban"
- "lp user %admin permission set e1admin.amenu"
- "lp user %admin permission set e1admin.invise"
- "lp user %admin permission set e1admin.godmode"
- "lp user %admin permission set e1admin.rewatch"
- "lp user %admin permission set e1admin.adminzone"
- "lp user %admin permission set e1admin.adminbonus"
- "lp user %admin permission set e1admin.adminbonusall"
- "lp user %admin permission set e1admin.smenu"
-
- "lp user %admin permission set e1admin.asecret"
- "lp user %admin permission set e1admin.upadmin"
- "lp user %admin permission set e1admin.deladmin"
- "lp user %admin permission set e1admin.setadmin"
- "lp user %admin permission set e1admin.downadmin"
- "lp user %admin permission set e1admin.ablocklist"
-
# - | Здесь автоматически Вы сами можете настроить скины.
autoSetSkins:
enable: true
skinsInWeight:
1: # | У меня - Это младший администратор. Смотрим AdminRanks..
skin:
- "skin set ADMIN %admin" # | ❗ У МЕНЯ СТОИТ SKINS RESTORER ВЫ МОЖЕТЕ ДОБАВИТЬ СВОЙ АДАПТЕР СКИНОВ ПО КОМАНДЕ.
2: # | У меня - Это администратор. Смотрим AdminRanks..
skin:
- "skin set STAFF %admin" # | ❗ У МЕНЯ СТОИТ SKINS RESTORER ВЫ МОЖЕТЕ ДОБАВИТЬ СВОЙ АДАПТЕР СКИНОВ ПО КОМАНДЕ.
3: # | У меня - Это старший администратор. Смотрим AdminRanks..
skin:
- "skin set CONSOLE %admin" # | ❗ У МЕНЯ СТОИТ SKINS RESTORER ВЫ МОЖЕТЕ ДОБАВИТЬ СВОЙ АДАПТЕР СКИНОВ ПО КОМАНДЕ.
# - | Функция 3.0: Автоматическое удаление всего у администратора при его снятии.
AutoDelAdmin:
# - | Здесь автоматически Вы сами можете настроить снятие прав.
autoDelPermissions:
enable: true # | Будет ли работать функция авто-удаления?
permissionInWeight: # | Смотрите на weight своих рангов, у меня например они 1, 2, 3. Но так же, Вы можете добавить и 4, и 5, и 777, короче как то так.
1: # | У меня - Это младший администратор. Смотрим AdminRanks..
permissions:
- "lp user %admin permission unset e1admin.admin"
- "lp user %admin permission unset e1admin.arep"
- "lp user %admin permission unset e1admin.aban"
- "lp user %admin permission unset e1admin.amenu"
- "lp user %admin permission unset e1admin.invise"
- "lp user %admin permission unset e1admin.godmode"
- "lp user %admin permission unset e1admin.rewatch"
- "lp user %admin permission unset e1admin.adminzone"
2: # | У меня - Это младший администратор. Смотрим AdminRanks..
permissions:
- "lp user %admin permission unset e1admin.admin"
- "lp user %admin permission unset e1admin.arep"
- "lp user %admin permission unset e1admin.aban"
- "lp user %admin permission unset e1admin.amenu"
- "lp user %admin permission unset e1admin.invise"
- "lp user %admin permission unset e1admin.godmode"
- "lp user %admin permission unset e1admin.rewatch"
- "lp user %admin permission unset e1admin.adminzone"
- "lp user %admin permission unset e1admin.adminbonus"
- "lp user %admin permission unset e1admin.adminbonusall"
3: # | У меня - Это младший администратор. Смотрим AdminRanks..
permissions:
- "lp user %admin permission unset e1admin.admin"
- "lp user %admin permission unset e1admin.staff"
- "lp user %admin permission unset e1admin.arep"
- "lp user %admin permission unset e1admin.aban"
- "lp user %admin permission unset e1admin.amenu"
- "lp user %admin permission unset e1admin.invise"
- "lp user %admin permission unset e1admin.godmode"
- "lp user %admin permission unset e1admin.rewatch"
- "lp user %admin permission unset e1admin.adminzone"
- "lp user %admin permission unset e1admin.adminbonus"
- "lp user %admin permission unset e1admin.adminbonusall"
- "lp user %admin permission unset e1admin.smenu"
- "lp user %admin permission unset e1admin.asecret"
- "lp user %admin permission unset e1admin.upadmin"
- "lp user %admin permission unset e1admin.setadmin"
- "lp user %admin permission unset e1admin.deladmin"
- "lp user %admin permission unset e1admin.downadmin"
- "lp user %admin permission unset e1admin.ablocklist"
# - | Здесь автоматически Вы сами можете настроить скины, а точнее их удаление.
autoDelSkins:
enable: true # | Будет ли работать функция авто-удаления?
skinsInWeight: # | Смотрите на weight своих рангов, у меня например они 1, 2, 3. Но так же, Вы можете добавить и 4, и 5, и 777, короче как то так.
1: # | У меня - Это старший администратор. Смотрим AdminRanks..
skin:
- "skin clear %admin"
2: # | У меня - Это старший администратор. Смотрим AdminRanks..
skin:
- "skin clear %admin"
3: # | У меня - Это старший администратор. Смотрим AdminRanks..
skin:
- "skin clear %admin"
# - | Новая функция 3.0: Триггер на слив, здесь Вы можете настроить параметры связанные по подозрению в сливе.
Leak:
enable: true # | Будет ли работать функция авто-удаления?
LeakSound: "ENTITY_ENDER_DRAGON_DEATH" # | Звук, который будет воспроизводиться всей администрации при снятии админ прав. Ирония с падшим ангелом у которого отобрали все что он имел.
LeakActions: # | Действия которые будут направлятся против сливщика.
# - "ban %leak 777y Подозрения в сливе админ-прав."
- "kick %leak Подозрения в сливе админ-прав."
BlackList:
IPBlackForm:
- "Замечен аккаунт в черном листе!"
- "Кол-во аккаунтов в черном листе: %count"
- "Причина: %reason"
- "Никнейм: %admin"
- "Занес: %staff"
# Репортики | Связанные с игрой администрации и игроков, контрольные слова, статусы, бонусы и прочее.
# Здесь можно настроить GUI, авто-ответы на репорты, бонусы за репорты и т.д:
Report:
minReportLength: 3 # Репорт | Минимальное кол-во символов в репорте для администрации?
reportMaxSize: 44 # Репорт | Сколько будет максимальное кол-во репортов до переполнения?
# Репортики | Статусы, которые приобретают свою роль в базе и GUI.
status_send: "&aОтправлен!"
status_inJob: "&6В работе.."
status_answered: "&cОтвечен."
# Репортики | Слова, которые в репорте вызывают триггер emergencyRep, на который можно быстро отреагировать просто нажав на сообщение
EmergencyReportSword:
- "убивают"
- "гриферят"
- "читерят"
# | https://minecraftsounds.com/
# Репортики | Новый репорт, действия + звук для всей администрации?
NewReport:
sound: "entity.player.attack.knockback"
reportMessage:
- ""
- "&7Внимание, поступил новый &cрепорт&7: &b%content&7. Отправитель: %player"
- ""
# | https://minecraftsounds.com/
# Репортики | Срочный репорт, действия + звук для всей администрации?
EmergencyReport:
sound: "entity.player.levelup"
emergencyMessage:
- ""
- "&4Внимание 🚨 &7| Обнаружен срочный репорт: &7%content"
- ""
# | https://minecraftsounds.com/
# Репортики | Донат репорт, действия + звук для всей администрации?
DonateReport:
sound: "entity.ender_dragon.hurt"
permission: "e1admin.bypass"
donateMessage:
- ""
- "<gradient:#FD1AB6:#6554B6>Внимание❗ Репорт от VIP клиента! %content. Отправитель: %player</gradient>"
- ""
# Репортики | Функция при которой при нажатии на срочный репорт не нужно вводить форму для определенного администратора.
# При /arep - Нужно указывать форму сервера на некоторых проектах. Пример: /arep Слежу за Вами.. // By E1m0
# Здесь же - Форма автоматическая.
AutoReport:
enable: true
auto_answer: "&aСпешим к Вам на помощь!"
# Репортики | Если навести на emergency report что будет показано?
HoverReport:
- "&aНажмите чтобы взять ❤"
- "&cРепорт&7: %content"
- "&aСтатус&7: %status"
- ""
- "&aОтправил&7: %player"
- "&7Дата: %date"Вы - сами создаете себе права которые нужны, и сами выдаете их как написано в README:
Система адаптивных Permissions:
ПООООЛНОСТЬЮ адаптивные к Вам Permissions которые ВЫ сами настриваете для каждого своего администратора и выдаете им именно те права - которые нужны именно им, у каждого администратора отличается род деятельности, по этому - я не стал ограничивать систему.
❓| А что по командам?:
Прошу на выбор:
COMMANDS:
ADMIN:
1. /acc - Личный приватный пин-код администратора который выдает ему доступ к серверу;
2. /are [Player] - Просмотр за игроком, телепортация к нему в инв + гм;
3. /arep [Response] - Открыть меню репортов сразу с ответом;
4. /ainv - Уйти в невидимку БЕЗ партиклов..;
💚 2.0: /admins - Посмотреть кто из администраторов находится на работе, а кто просто в игре, можно выдавать как за донат версию.
💚 2.0: /ahelp - Полный список сценариев, команд, подробного использования и ситуаций применения тех или иных возможностей.
💚 2.0: /aban [Admin] - Выдать админу блокировку возможностей его аккаунта в замен потери и своих возможностей.
💚 4.0: /am [Опционально: Player] - Открыть админ меню быстрых действий, для некоторых функций нужен игрок!
💚 4.0: /az - Телепортироватся в админ зону отдыха задающей стаффом сервера!
💚 4.0: /godmode - Выдать себе бессмертие от любых видов урона!
STAFF:
5. /aup [Admin] - Повысить администратора | Управляемая и гибкая система конфига которую Вы сами можете крутить как душе угодно - построенная лично под каждый Ваш сервер ❤️ - Сделает все за Вас.
6. /adel [Admin] - Уволить администратора сервера | Администратор и его ПИН код триггером удаляются, а так же заносится спец. лог о снятии для ведения аудита Вашего сервера.
7. /aset [Player] [Weight] - Поставить на пост Администратора игрока с определенным Weight | С удобной системой конфига которую Вы настраиваете сами и логикой плагина Вы можете это делать даже удаленно, скоро расскажу
8. /adown [Admin] - Понизить администратора | Управляемая и гибкая система конфига которую Вы сами можете крутить как душе угодно - построенная лично под каждый Ваш сервер ❤️ - Сделает все за Вас.
9. /abonus [Admin] [Sum] [Message] - Выдать бонус администраторУ | Когда мои админы хорошо работали я обычно выдавал им валюту но всегда не годовал что нет логов, теперь - Есть через админ систему, не частый случай но все равно есть.
10. /abonusall [Sum] [Message] - Выдать бонус администраторАМ | Когда мои админы хорошо работали я обычно выдавал им валюту но всегда не годовал что нет логов, теперь - Есть через админ систему, не частый случай но все равно есть.
11. /setsecret [Admin] [Code] - Выставить секретный код | Личный приватный 4-ех значный пин-код администратора который выставляет сотрудник STAFF (Главный админ, Тех/Разработчик и т.д)
💚 2.0: /aunban [Admin] - Снять админу блокировку возможностей его аккаунта
💚 3.0: /ablist [User] [Reason] - Переводится дословно как AdminBlackList - Позволяет Вам добавлять людей в ЧС сервера, чтобы дальше не напоротся на таких как он.
💚 3.0: /abdlist [User] [Reason] - Переводится дословно как AdminBlackDeleteList - Позволяет Вам убирать людей из ЧСА (Черный список администрации) сервера, чтобы дальше не напоротся на таких как он.
💚 4.0: /sm [arg1 (Player || sum)] [arg2 (Message || sum || weight || reason)] [arg3 (Message)]- Меню стафф администратора быстрых действий если например Я - забыл команду для повышения /sm Admin -> Повысить
💚 Другая ситуация, я забыл как поставить на пост - /sm Admin 1
💚 Другая ситуация, я забыл как снять с поста админа - /sm Admin Снят. Статья правил: 12 часть 4.
CONSOLE:
12. /cup - Повысить администратора, удаленно (Консоль/API) | Управляемая и гибкая система конфига которую Вы сами можете крутить как душе угодно - построенная лично под каждый Ваш сервер ❤️ - Сделает все за Вас.
13. /cdel - Уволить администратора сервера, удаленно (Консоль/API) | Администратор и его ПИН код триггером удаляются, а так же заносится спец. лог о снятии для ведения аудита Вашего сервера.
14. /cdown - Понизить администратора, удаленно (Консоль/API) | Управляемая и гибкая система конфига которую Вы сами можете крутить как душе угодно - построенная лично под каждый Ваш сервер ❤️ - Сделает все за Вас.
15. /csetadmin - Поставить на пост Администратора игрока с определенным Weight, удаленно (Консоль/API) | Как и обещал, можно делать через запросы RCON с специально выделенным UUID для понимания откуда пришел запрос, UUID плагина: "77777777-7777-7777-7777-777777777777"
16. /csetsecret - Выставить секретный код, удаленно (Консоль/API) | Личный приватный 4-ех значный пин-код администратора который выставляет сотрудник STAFF (Главный админ, Тех/Разработчик и т.д)
💚 2.0: /cgivebonus [Admin] - Выдать администраторУ премию, удаленно (Консоль/API) | Когда мои админы хорошо работали я обычно выдавал им валюту но всегда не годовал, что нет логов, теперь есть даже через консоль!
💚 2.0: /cgivebonusall - Выдать всем администраторам премию, удаленно (Консоль/API) | Когда мои админы хорошо работали я обычно выдавал им валюту но всегда не годовал, что нет логов, теперь есть даже через консоль!
💚 3.0: /cban [Admin] - Позволяет выдать блокировку админ-возможностей прямо в консоли, это особенно удобно когда нужно решить проблему быстро.
💚 3.0: /cunban [Admin] - Позволяет снять блокировку админ-возможностей прямо в консоли, это особенно удобно когда нужно решить проблему быстро.
💚 4.0: /cblist [Admin] [Reason] - Admin Black List расшифровывается как добавление администратора в ЧСА - Черный Список Администрации. | КОНСОЛЬ
💚 4.0: /cbdlist [Admin] [Reason] - Admin Delete Black List расшифровывается как удаление администратора из ЧСА - Черный Список Администрации. | КОНСОЛЬ❓| А что по API?:
Прошу посмотреть на README в раздел архитектуры:
Прошу посмотреть на README в раздел архитектуры:
🧑💻 E1m0dev: На деле - Систем куча, плагин старается и выдерживать архитектуру цепей по типу:
❓ | Архитектура ЦЕПЕЙ:
Для обычных команд: PLAYER -> COMMAND (Адаптер) -> SERVICE (Принятие решений, обработка абстракций) -> REPOSITORY (Принятие факта, ведение диалога с базой данных) -> DAO (Структурирование и подготовка | Доступ) -> DATABASE (Хранение информации | MAIN PLUGIN STATE, там - только факты системы);
Для например репорта: PLAYER -> GUI -> CONTROLLER -> SERVICE -> REPOSITORY -> DAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
А если это emergency? - PLAYER -> COMMAND -> COMMAND-CONTROLLER -> REPOSITORYDAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
В пин-коде - тоже самое: PLAYER -> GUI -> CONTROLLER -> SERVICE -> REPOSITORY -> DAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
‼️| Архитектура*:
Мои:
Главные управляющие абстракции: API;
Главные точки входа: COMMANDS;
Обработчики логики: SERVICE;
Ведущие диалог с базой: REPOSITORY;
Адаптирующиеся под условия: DAO;
Хранящие значения: DATABASE;
Вызывающиеся: Events;
Слушающие: LISTENERS;
Хранящие: STATE;
Подсказывающие: COMPLETERS;
Помогающие: UTILS;
Регулируемые: CONFIGS;
API:
Есть 4 слоя абстракции плагина:
GUI;
REPO;
SERVICE;
UTILS;
GUI:
ReportGuiAPI: Позволяет взаимодействовать с репортами из вне, то есть из другого плагина например.
Пример: Сейчас там метод: openReportGUI | Позволяет открывать меню сразу с сообщением из другого плагина.
SecretCodeGuiAPI: Позволяет взаимодействовать с репортами из вне, то есть из другого плагина например.
Пример: Сейчас там метод: openReportGUI | Позволяет открывать меню сразу с сообщением из другого плагина.
REPO:
GUI:
ReportSystemRepositoryAPI: Отвечает за репорты а точнее - внутри системы.
Пример: В нем есть метод на данный момент как: gameReportSend, именно он распределяет обязанности транспортировки моего DAO запроса по цепи после контроллера и сервиса, то есть он - исходит от запроса системы по прихоти клиента - по этому и System.
SecretCodeRepositoryAPI: Отвечает за обработку пин-кодов для администрации в GUI, то есть он тоже системный и исходит от контроллера. Почему не SecretCodeSystemRepositoryAPI? Название получилось бы слишком длинным и выходило за рамки приличия, по этому я решил оставить как есть.
Пример: В нем есть методы управления секретными кодами на момент создания такие как: staffSetSecretCode, systemDeleteAdmin, systemSetSecretCode, getSecretCode, все они - расписаны внутри.
PLUGIN:
GameRepositoryAPI: Отвечает за все что связанно в игре с администратором и базой данных его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система.
Пример: Если когда нибудь понадобится логировать rewatch logs администратора -> это пойдет туда. Сейчас я считаю такое небольшим перегрузом, по этому он сейчас пустует, НО, существует для будущих обновлений.
StaffRepositoryAPI: Абсолютно все что связанно с администратором и его старшим.
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все, но тут передача с базой через DAO
SystemRepositoryAPI: Системы которые связаны с системой администрации.
Пример: Посмотреть зарплату игрока, его префикс, его уровень админки или состоит ли он вообще в администрации?
Service:
GUI:
ReportSystemServiceAPI: Отвечает за взаимодейсвтие между системами
Пример: В нем есть метод на данный момент как: clickToReport. Он передает данные из GUI контроллера в сервис для обработки бизнес логики самого Backend.
SecretCodeServiceAPI: Отвечает за клики и логику, за нее отвечает не сколь контроллер сколь сам сервис, потому что именно он хранитель бизнес логики, а контроллер - удобный адаптер
Пример: В нем есть методы "Дистанционного доступа" к меню SecretCode: oneStepHandler, который можно вызвать игроку сразу же с первой цифрой кода которую можно узнать вторым методом getInputCode, продолжая дальше идти по цепи логики.
PLUGIN:
ConsoleServiceAPI: Отвечает за все что связанно в игре с администратором.
Пример: Все взаимодействия а точнее обработка логики связанные с консолью.
GameServiceAPI: Отвечает за все что связанно в игре с администратором связанный с игровыми взаимодействиями включая обработку логики, его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система но она имеет место в самом администраторе, то есть это его и игра и задача, по этому репорты обычно в двух местах в отдельных ReportService и в GameService
Пример: Реватч, невидимка, репорты, и прочие функции.
StaffServiceAPI: Абсолютно все что связанно с администратором и его старшим.
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все.
SystemServiceAPI: Системы контроллеров систем
Пример: handleReportAccept, это системный контроллер точки входа в команду: ReportAcceptController.
UTILS:
PLUGIN:
PermissionsManagerAPI: Отвечает естевственно за права администратора в игре.
Пример: checkSecretCodeAccess буквально вопрос: Есть ли у администратора доступ к админке?
GameServiceAPI: Отвечает за все что связанно в игре с администратором связанный с игровыми взаимодействиями включая обработку логики, его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система но она имеет место в самом администраторе, то есть это его и игра и задача, по этому репорты обычно в двух местах в отдельных ReportService и в GameService
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все. Но тут передача логики и ее обработки через внутренности
А теперь по самим назначениям!
COMMANDS:
Каждые из команд разделены так же на свои отделы ответственности:
Admin -> Команды для администрации.
Staff -> Команды для обычных игроков.
Player -> Команды для обычных игроков.
System -> Системные команды больше контроллеры и отправные точки СИСТЕМЫ
Console -> Контрольные точки которые можно задавать из вне не заходя в игру по средствам самих точек или что самое интересное: API - А это уже сайты, веб, приложения и прочее.
Admin:
AHelpCommand: Адаптер точки логики отправки администратору списка помощи.
AMenuCommand: Точка перехода в открытие быстрого меню выбора администрации в виде GUI.
AccessCommand: Первая точка входа. Без нее админ - просто игрок, без ввода секретного пароля он ничем не отличается от обычного игрока и все права у него заблокированы.
ReportCommand: Команда-GUI. Открывает свод репортов которые появились за последнее время.
ABlockCommand: Заблокировать доступ адмнистратору в случае сливов с его стороны, но блокируется доступ и тому кто использует команду!
RewatchCommand: Точка слежки. Команда позволяет следить за игроками от 3-его лица.
InvisibilityCommand: Команда для использования спец невидимости, прямо "Из коробки", никаких партиклов и эффектов, бесконечная невидимка и все тут..
Staff:
AdminDelBlackListCommand: Удалить администратора из черного списка администрации.
AdminAddBlackListCommand: Добавить администратора в черный список администрации.
AdminSetSecretCode: Установить пин-код администратору если его еще нет в базе.
AStaffMenuCommand: Открыть Staff меню (Много возможных адаптивных аргументов)
AdminDeleteCommand: Уволить администратора от лица стафф сотрудника сервера.
AdminBonusCommand: Выдать бонус ОДНОМУ администратору который указан внутри.
AdminDownCommand: Понизить администратора от лица стафф сотрудника сервера.
AdminSetCommand: Поставить администратора от лица стафф сотрудника сервера.
AdminUnBanCommand: Снять блокировку с администратора от лица стафф сервера.
AdminUpCommand: Повысить в доходяги администратора от лица стафф сотрудника.
Player:
ThanksCommand: Позволяет игроку, отправить раз в определенное кол-во времени, админский thanks который может являтся внутренней валютой
AdminsCommand: Позволяет увидеть сколько администраторов на сервере, кто они, на месте или нет.
PlayerReportCommand: Позволяет отправить новый репорт.
System:
ReportAcceptController: Обычный контроллер arepaccept, который перехватывает репорт и начинает работать через сервис, то есть обычная прокладка которая слушает как Listener.
Console:
ConsoleGiveBonusAllCommand: Выдать бонус ВСЕМ администраторАМ от лица консоли сервера.
ConsoleDelBlackListCommand: Удалить из черного списка администрации от лица консоли сервера.
ConsoleAddBlackListCommand: Добавить в черный список администрации от лица консоли сервера.
ConsoleUnBanAdminCommand: Разблокировать возможности администратору в случае опровержения слива админки.
ConsoleGiveBonusCommand: Выдать бонус администратораУ от лица консоли.
ConsoleSetSecretCommand: Установить пин-код администратору от лица API если его еще нет в базе.
ConsoleDownAdminCommand: Понизить администратора от лица консоли сервера.
ConsoleBanAdminCommand: Занести админа в список потенциального слива, или просто отобрать возможности.
ConsoleDelAdminCommand: Уволить администратора от лица консоли сервера.
ConsoleSetAdminCommand: Поставить администратора от лица консоли сервера.
ConsoleUpAdminCommand: Повысить администратора от лица консоли сервера.
SERVICE:
Сервисы главные обработчики логики, не важно это бизнес логика или внутриигровая, именно на них сгружена ответственность думать и принимать решения.
Есть несколько основных сервисов:
GUI:
ReportSystemService: Некоторые действия которые связаны с репортами, только некоторые! Которые не касаются гейма но касаются системы по этому ReportSYSTEMService
SecretCodeService: Исполнение действий из меню сразу в "Just In Time" почти никогда не нужно oneStepHandler, но он заполняет цепь, хотя скорее всего я его уберу.
PLUGIN:
AdminsStaffService: Выполнение все что связано с: Стафф -> Админ. Связан с: StaffServiceAPI
AdminSystemService: Выполнение все что связано с: Система -> Система Связан с: SystemServiceAPI
AdminGameService: Выполнение все что связано с: Админ -> Игра. Связан с: GameServiceAPI
ConsoleService: Выполнение все что связано с: Консоль -> Админ. Связан с: ConsoleServiceAPI
REPOSITORY:
Если сервисы у меня принимают решения - репозитории ведут диалог с базой и записывают через DAO сразу в базу окончательные заключения логики если значение прошло все проверки Service.
Есть несколько основных репо как и сервисов:
GUI:
ReportSystemRepository: gameReportSend -> Как главный из методов позволяет отправить факт о закрытом репорте, соеденен с ReportDAO.
SecretCodeRepositoryAPI: SET, SETSYSTEM, GET, RESET, все как у людей, отправят как захочешь, легко подстраиваются связаны с SecretCodeDAO
PLUGIN:
AdminSystemRepository: Логирование фактов по обычным системным транзакциям по типу adminPay или handleReportAccept.
AdminStaffRepository: Логирование фактов по взаимодействию с составом, set, del, up и так далее по накладной.
AdminGameRepository: Факты системы для логирования ДЕЙСТВИЙ администратора в ИГРЕ а не в системе.
DAO:
Мои обработчики обьектов в базе данных, очень способные и полезные при работе цепь POINT-SERVICE-REPO-DAO-DATA.
PLUGIN:
SecretCodeDAO: Работа с пин кодами администрации;
AdminsDAO: Работа с администраторами в Базе Данных;
ReportDAO: Работа с репортами в Базе Данных;
BonusDAO: Работа с логированием бонусов а Базе Данных;
BlockDAO: Работа с блокировками возможностей админов;
DATABASE:
Без базы данных очень сложно держать структуру а с ней в плагине я использовал и кэширование и трансфер в базу.
PLUGIN:
DatabaseSource: Установщик связи с драйверами, HickariCP, HickariDataSource и прочим через конфиг и JDBC ну или коннектор базы данных.
DatabaseManager: На основе DatabaseSource, создает и управляет таблицами в установленной связью базе данных.
EVENTS:
Личные и приватные ивенты плагина которые очень помогают в разгрузке сервисов и упрощении кода в сервисах перекладывая ответственность на распределяющую Event прокладку Listener.
E1m0:
AdminComplimentEvent: Когда администртатора получает /thanks от игрока -> Вызвается ивент.
AdminAccessEvent: Когда администратор регистрируется в системе -> Вызвается ивент.
AdminLeakEvent: Когда администратор пытается в действия не по рангу (Слив) -> Вызвается ивент.
AdminSetEvent: Факт: Был поставлен новый администратор -> Вызвается ивент.
AdminDetEvent: Факт: Был снят администратор -> Вызвается ивент.
LISTENERS:
Подразделены на несколько слоев ответственности чтобы не путать холодное с теплым:
Bukkit:
GodModeListener: Когда игрок получает урон, сразу идет проверка на то существует ли он в списке и режиме бога и в случае - урон по администратору полностью - отменяется.
JoinListener: Когда игрок заходит на сервер, там сразу проверяется статус администратора, его сессии, права, т.д, можно сделать систему синхронизации API для защиты.
QuitListener: Когда игрок выходит из сервера, там если он админ - удаляется его State, AdminSession, и отбираются права администратора.
E1m0:
AdminComplimentListener: Когда администратор получает похвалу от игроков, игрока и т.д, срабатывает слушатель, триггер.
AdminAccessListener: Когда администратор подтверждает себя как полноправного владельца прав, срабатывает триггер.
AdminLeakListener: Слушатель и триггер события о сливе админ-прав, или использования прав не по рангу.
AdminSetListener: Слушатель события о факте постановления нового администратора на пост.
AdminDelListener: Слушатель события о факте снятия администратора с его поста.
STATE:
Мои не наглядные состояния, есть так же несколько типов хэширования данных в системе:
Admin;
Report;
Session;
SecretCode;
Admin:
Admin: Record с snapshot immutable состоянием администратора который позже mutable менеджером перетекает.
AdminManager: Помогает справлятся с состоянием Admin через mutable рычаги виксируя diff изменения, прямо как в React
BlackList:
BlackListState: Для базового взаимодействия с БД сервера создан некий request данных дампа с кэша.
Session:
AdminSession: А именно сюда и перетекает STATE состояние через mutable manager;
AdminSessionManager: А этим констракт методом управляется состояние, для JoinListener && QuitListener у AdminSessionManager есть методы: join и quit, которые заполняют и очищают кэш память админ сессий.
Report:
Report: Report а вот это уже - не постоянное состояние, и оно не может быть immutable, хоть он и имеет mutable состояние он все равно живет от силы 20 секунд и умирает передаваясь уже в DAO и в Database так что состояние не долговечное а значит надежное
SecretCode:
SecretCodeState: Тоже вроде понятно, тот же mutable state class который управляет цепью порядка SecretCode, да возможно не так "профессионально" через сеттеры состояний mutable Manager в Immutable состоянии State но система все равно надежна.
SecretCodeManager: Управление состоянием разрешений, выдать когда нужно, забрать когда не нужно, проверить когда спросят - красота.
COMPLETERS:
Обычный комплитер, он у меня один много делать не стал а то утонул бы в папках
MainTabCompleter: Главный помощник написания команд.
UTILS:
Без них было бы сложно что то смастерить, есть всего три вида:
Color;
Messages;
Permissions;
Color:
E1m0Color: Он если честно вообще не мой, я его выкрал у какого то индуса по но он работает.
Message:
E1m0Sender: Вот это уже мое, криво - косо, но сообщения отправляет как я хочу, плейсы поддерживает как я скажу, сильно не хамит не кусается и что главное - работает.
Permissions:
E1m0Permissions: Тоже мое творение checkSecretCodeAccess специально был создан для работы с Access.
❓ | Архитектура ЦЕПЕЙ:
Для обычных команд: PLAYER -> COMMAND (Адаптер) -> SERVICE (Принятие решений, обработка абстракций) -> REPOSITORY (Принятие факта, ведение диалога с базой данных) -> DAO (Структурирование и подготовка | Доступ) -> DATABASE (Хранение информации | MAIN PLUGIN STATE, там - только факты системы);
Для например репорта: PLAYER -> GUI -> CONTROLLER -> SERVICE -> REPOSITORY -> DAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
А если это emergency? - PLAYER -> COMMAND -> COMMAND-CONTROLLER -> REPOSITORYDAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
В пин-коде - тоже самое: PLAYER -> GUI -> CONTROLLER -> SERVICE -> REPOSITORY -> DAO -> DATABASE -> EVENT -> LISTENER -> ACTIONS
‼️| Архитектура*:
Мои:
Главные управляющие абстракции: API;
Главные точки входа: COMMANDS;
Обработчики логики: SERVICE;
Ведущие диалог с базой: REPOSITORY;
Адаптирующиеся под условия: DAO;
Хранящие значения: DATABASE;
Вызывающиеся: Events;
Слушающие: LISTENERS;
Хранящие: STATE;
Подсказывающие: COMPLETERS;
Помогающие: UTILS;
Регулируемые: CONFIGS;
API:
Есть 4 слоя абстракции плагина:
GUI;
REPO;
SERVICE;
UTILS;
GUI:
ReportGuiAPI: Позволяет взаимодействовать с репортами из вне, то есть из другого плагина например.
Пример: Сейчас там метод: openReportGUI | Позволяет открывать меню сразу с сообщением из другого плагина.
SecretCodeGuiAPI: Позволяет взаимодействовать с репортами из вне, то есть из другого плагина например.
Пример: Сейчас там метод: openReportGUI | Позволяет открывать меню сразу с сообщением из другого плагина.
REPO:
GUI:
ReportSystemRepositoryAPI: Отвечает за репорты а точнее - внутри системы.
Пример: В нем есть метод на данный момент как: gameReportSend, именно он распределяет обязанности транспортировки моего DAO запроса по цепи после контроллера и сервиса, то есть он - исходит от запроса системы по прихоти клиента - по этому и System.
SecretCodeRepositoryAPI: Отвечает за обработку пин-кодов для администрации в GUI, то есть он тоже системный и исходит от контроллера. Почему не SecretCodeSystemRepositoryAPI? Название получилось бы слишком длинным и выходило за рамки приличия, по этому я решил оставить как есть.
Пример: В нем есть методы управления секретными кодами на момент создания такие как: staffSetSecretCode, systemDeleteAdmin, systemSetSecretCode, getSecretCode, все они - расписаны внутри.
PLUGIN:
GameRepositoryAPI: Отвечает за все что связанно в игре с администратором и базой данных его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система.
Пример: Если когда нибудь понадобится логировать rewatch logs администратора -> это пойдет туда. Сейчас я считаю такое небольшим перегрузом, по этому он сейчас пустует, НО, существует для будущих обновлений.
StaffRepositoryAPI: Абсолютно все что связанно с администратором и его старшим.
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все, но тут передача с базой через DAO
SystemRepositoryAPI: Системы которые связаны с системой администрации.
Пример: Посмотреть зарплату игрока, его префикс, его уровень админки или состоит ли он вообще в администрации?
Service:
GUI:
ReportSystemServiceAPI: Отвечает за взаимодейсвтие между системами
Пример: В нем есть метод на данный момент как: clickToReport. Он передает данные из GUI контроллера в сервис для обработки бизнес логики самого Backend.
SecretCodeServiceAPI: Отвечает за клики и логику, за нее отвечает не сколь контроллер сколь сам сервис, потому что именно он хранитель бизнес логики, а контроллер - удобный адаптер
Пример: В нем есть методы "Дистанционного доступа" к меню SecretCode: oneStepHandler, который можно вызвать игроку сразу же с первой цифрой кода которую можно узнать вторым методом getInputCode, продолжая дальше идти по цепи логики.
PLUGIN:
ConsoleServiceAPI: Отвечает за все что связанно в игре с администратором.
Пример: Все взаимодействия а точнее обработка логики связанные с консолью.
GameServiceAPI: Отвечает за все что связанно в игре с администратором связанный с игровыми взаимодействиями включая обработку логики, его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система но она имеет место в самом администраторе, то есть это его и игра и задача, по этому репорты обычно в двух местах в отдельных ReportService и в GameService
Пример: Реватч, невидимка, репорты, и прочие функции.
StaffServiceAPI: Абсолютно все что связанно с администратором и его старшим.
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все.
SystemServiceAPI: Системы контроллеров систем
Пример: handleReportAccept, это системный контроллер точки входа в команду: ReportAcceptController.
UTILS:
PLUGIN:
PermissionsManagerAPI: Отвечает естевственно за права администратора в игре.
Пример: checkSecretCodeAccess буквально вопрос: Есть ли у администратора доступ к админке?
GameServiceAPI: Отвечает за все что связанно в игре с администратором связанный с игровыми взаимодействиями включая обработку логики, его игровой в общем то процесс, репорты != игровая логика, это уже отдельная система но она имеет место в самом администраторе, то есть это его и игра и задача, по этому репорты обычно в двух местах в отдельных ReportService и в GameService
Пример: Повышения, понижения, удаления, постановление, бонусы и все, все, все. Но тут передача логики и ее обработки через внутренности
А теперь по самим назначениям!
COMMANDS:
Каждые из команд разделены так же на свои отделы ответственности:
Admin -> Команды для администрации.
Staff -> Команды для обычных игроков.
Player -> Команды для обычных игроков.
System -> Системные команды больше контроллеры и отправные точки СИСТЕМЫ
Console -> Контрольные точки которые можно задавать из вне не заходя в игру по средствам самих точек или что самое интересное: API - А это уже сайты, веб, приложения и прочее.
Admin:
AHelpCommand: Адаптер точки логики отправки администратору списка помощи.
AMenuCommand: Точка перехода в открытие быстрого меню выбора администрации в виде GUI.
AccessCommand: Первая точка входа. Без нее админ - просто игрок, без ввода секретного пароля он ничем не отличается от обычного игрока и все права у него заблокированы.
ReportCommand: Команда-GUI. Открывает свод репортов которые появились за последнее время.
ABlockCommand: Заблокировать доступ адмнистратору в случае сливов с его стороны, но блокируется доступ и тому кто использует команду!
RewatchCommand: Точка слежки. Команда позволяет следить за игроками от 3-его лица.
InvisibilityCommand: Команда для использования спец невидимости, прямо "Из коробки", никаких партиклов и эффектов, бесконечная невидимка и все тут..
Staff:
AdminDelBlackListCommand: Удалить администратора из черного списка администрации.
AdminAddBlackListCommand: Добавить администратора в черный список администрации.
AdminSetSecretCode: Установить пин-код администратору если его еще нет в базе.
AStaffMenuCommand: Открыть Staff меню (Много возможных адаптивных аргументов)
AdminDeleteCommand: Уволить администратора от лица стафф сотрудника сервера.
AdminBonusCommand: Выдать бонус ОДНОМУ администратору который указан внутри.
AdminDownCommand: Понизить администратора от лица стафф сотрудника сервера.
AdminSetCommand: Поставить администратора от лица стафф сотрудника сервера.
AdminUnBanCommand: Снять блокировку с администратора от лица стафф сервера.
AdminUpCommand: Повысить в доходяги администратора от лица стафф сотрудника.
Player:
ThanksCommand: Позволяет игроку, отправить раз в определенное кол-во времени, админский thanks который может являтся внутренней валютой
AdminsCommand: Позволяет увидеть сколько администраторов на сервере, кто они, на месте или нет.
PlayerReportCommand: Позволяет отправить новый репорт.
System:
ReportAcceptController: Обычный контроллер arepaccept, который перехватывает репорт и начинает работать через сервис, то есть обычная прокладка которая слушает как Listener.
Console:
ConsoleGiveBonusAllCommand: Выдать бонус ВСЕМ администраторАМ от лица консоли сервера.
ConsoleDelBlackListCommand: Удалить из черного списка администрации от лица консоли сервера.
ConsoleAddBlackListCommand: Добавить в черный список администрации от лица консоли сервера.
ConsoleUnBanAdminCommand: Разблокировать возможности администратору в случае опровержения слива админки.
ConsoleGiveBonusCommand: Выдать бонус администратораУ от лица консоли.
ConsoleSetSecretCommand: Установить пин-код администратору от лица API если его еще нет в базе.
ConsoleDownAdminCommand: Понизить администратора от лица консоли сервера.
ConsoleBanAdminCommand: Занести админа в список потенциального слива, или просто отобрать возможности.
ConsoleDelAdminCommand: Уволить администратора от лица консоли сервера.
ConsoleSetAdminCommand: Поставить администратора от лица консоли сервера.
ConsoleUpAdminCommand: Повысить администратора от лица консоли сервера.
SERVICE:
Сервисы главные обработчики логики, не важно это бизнес логика или внутриигровая, именно на них сгружена ответственность думать и принимать решения.
Есть несколько основных сервисов:
GUI:
ReportSystemService: Некоторые действия которые связаны с репортами, только некоторые! Которые не касаются гейма но касаются системы по этому ReportSYSTEMService
SecretCodeService: Исполнение действий из меню сразу в "Just In Time" почти никогда не нужно oneStepHandler, но он заполняет цепь, хотя скорее всего я его уберу.
PLUGIN:
AdminsStaffService: Выполнение все что связано с: Стафф -> Админ. Связан с: StaffServiceAPI
AdminSystemService: Выполнение все что связано с: Система -> Система Связан с: SystemServiceAPI
AdminGameService: Выполнение все что связано с: Админ -> Игра. Связан с: GameServiceAPI
ConsoleService: Выполнение все что связано с: Консоль -> Админ. Связан с: ConsoleServiceAPI
REPOSITORY:
Если сервисы у меня принимают решения - репозитории ведут диалог с базой и записывают через DAO сразу в базу окончательные заключения логики если значение прошло все проверки Service.
Есть несколько основных репо как и сервисов:
GUI:
ReportSystemRepository: gameReportSend -> Как главный из методов позволяет отправить факт о закрытом репорте, соеденен с ReportDAO.
SecretCodeRepositoryAPI: SET, SETSYSTEM, GET, RESET, все как у людей, отправят как захочешь, легко подстраиваются связаны с SecretCodeDAO
PLUGIN:
AdminSystemRepository: Логирование фактов по обычным системным транзакциям по типу adminPay или handleReportAccept.
AdminStaffRepository: Логирование фактов по взаимодействию с составом, set, del, up и так далее по накладной.
AdminGameRepository: Факты системы для логирования ДЕЙСТВИЙ администратора в ИГРЕ а не в системе.
DAO:
Мои обработчики обьектов в базе данных, очень способные и полезные при работе цепь POINT-SERVICE-REPO-DAO-DATA.
PLUGIN:
SecretCodeDAO: Работа с пин кодами администрации;
AdminsDAO: Работа с администраторами в Базе Данных;
ReportDAO: Работа с репортами в Базе Данных;
BonusDAO: Работа с логированием бонусов а Базе Данных;
BlockDAO: Работа с блокировками возможностей админов;
DATABASE:
Без базы данных очень сложно держать структуру а с ней в плагине я использовал и кэширование и трансфер в базу.
PLUGIN:
DatabaseSource: Установщик связи с драйверами, HickariCP, HickariDataSource и прочим через конфиг и JDBC ну или коннектор базы данных.
DatabaseManager: На основе DatabaseSource, создает и управляет таблицами в установленной связью базе данных.
EVENTS:
Личные и приватные ивенты плагина которые очень помогают в разгрузке сервисов и упрощении кода в сервисах перекладывая ответственность на распределяющую Event прокладку Listener.
E1m0:
AdminComplimentEvent: Когда администртатора получает /thanks от игрока -> Вызвается ивент.
AdminAccessEvent: Когда администратор регистрируется в системе -> Вызвается ивент.
AdminLeakEvent: Когда администратор пытается в действия не по рангу (Слив) -> Вызвается ивент.
AdminSetEvent: Факт: Был поставлен новый администратор -> Вызвается ивент.
AdminDetEvent: Факт: Был снят администратор -> Вызвается ивент.
LISTENERS:
Подразделены на несколько слоев ответственности чтобы не путать холодное с теплым:
Bukkit:
GodModeListener: Когда игрок получает урон, сразу идет проверка на то существует ли он в списке и режиме бога и в случае - урон по администратору полностью - отменяется.
JoinListener: Когда игрок заходит на сервер, там сразу проверяется статус администратора, его сессии, права, т.д, можно сделать систему синхронизации API для защиты.
QuitListener: Когда игрок выходит из сервера, там если он админ - удаляется его State, AdminSession, и отбираются права администратора.
E1m0:
AdminComplimentListener: Когда администратор получает похвалу от игроков, игрока и т.д, срабатывает слушатель, триггер.
AdminAccessListener: Когда администратор подтверждает себя как полноправного владельца прав, срабатывает триггер.
AdminLeakListener: Слушатель и триггер события о сливе админ-прав, или использования прав не по рангу.
AdminSetListener: Слушатель события о факте постановления нового администратора на пост.
AdminDelListener: Слушатель события о факте снятия администратора с его поста.
STATE:
Мои не наглядные состояния, есть так же несколько типов хэширования данных в системе:
Admin;
Report;
Session;
SecretCode;
Admin:
Admin: Record с snapshot immutable состоянием администратора который позже mutable менеджером перетекает.
AdminManager: Помогает справлятся с состоянием Admin через mutable рычаги виксируя diff изменения, прямо как в React
BlackList:
BlackListState: Для базового взаимодействия с БД сервера создан некий request данных дампа с кэша.
Session:
AdminSession: А именно сюда и перетекает STATE состояние через mutable manager;
AdminSessionManager: А этим констракт методом управляется состояние, для JoinListener && QuitListener у AdminSessionManager есть методы: join и quit, которые заполняют и очищают кэш память админ сессий.
Report:
Report: Report а вот это уже - не постоянное состояние, и оно не может быть immutable, хоть он и имеет mutable состояние он все равно живет от силы 20 секунд и умирает передаваясь уже в DAO и в Database так что состояние не долговечное а значит надежное
SecretCode:
SecretCodeState: Тоже вроде понятно, тот же mutable state class который управляет цепью порядка SecretCode, да возможно не так "профессионально" через сеттеры состояний mutable Manager в Immutable состоянии State но система все равно надежна.
SecretCodeManager: Управление состоянием разрешений, выдать когда нужно, забрать когда не нужно, проверить когда спросят - красота.
COMPLETERS:
Обычный комплитер, он у меня один много делать не стал а то утонул бы в папках
MainTabCompleter: Главный помощник написания команд.
UTILS:
Без них было бы сложно что то смастерить, есть всего три вида:
Color;
Messages;
Permissions;
Color:
E1m0Color: Он если честно вообще не мой, я его выкрал у какого то индуса по но он работает.
Message:
E1m0Sender: Вот это уже мое, криво - косо, но сообщения отправляет как я хочу, плейсы поддерживает как я скажу, сильно не хамит не кусается и что главное - работает.
Permissions:
E1m0Permissions: Тоже мое творение checkSecretCodeAccess специально был создан для работы с Access.


