LuxinfinePermissions-9.5-1.7.10
Информация:
Мод-аналог плагинов на права с удобным апи, заточкой под производительность, полную настройку и удобство работы. Работает с БД mysql/mariadb. Позволяет выдавать группы прав, а также права отдельно. Имеет систему аттрибутов, с помощью которых можно задать префиксы, суффиксы, лимиты для наших модов и прочее, что вы можете добавить сами и проверять через апи.
Поддерживаются SuperPerms (иерархичные права со звёздочкой, по типу command.warps.*
), в т.ч. пермишен-звёздочка.
Также есть поддержка авто-обновления прав, атрибутов, групп игроков налету, если настроить слушатель ивентов БД.
Для пользователей Bukkit:
Рекомендуется default группе выдать отрицательный пермишен "*". Это заблокирует разрешенные по умолчанию права бакита, по типу команды /plugins.
Мод по возможности будет заменять I'm sorry, but you do not have permission to perform this command. Please contact the server administrators if you believe that this is in error.
сообщение на нормальное локализованное сообщение нехватки прав.
Полностью реализуется Vault Permission & Chat API, инжектит Permissible для игрока, по этому будет совместим со всеми плагинами. Также мод изменяет систему прав для команд из модов. Если удаётся определить мод-источник команды, то вместо имени класса у команды будет пермишен в формате command.MOD_ID.COMMAND_NAME
, что намного удобнее.
Для работы мода требуется LuxinfineDatabaseLib мод.
Конфигурация:
{
"configuration": {
"admins": {
"comment": "Список игроков, которые будут иметь все права и возможности",
"type": "Set<String>",
"default": [
"Angelok",
"daniorio"
],
"value": [
"Angelok",
"daniorio"
]
},
"allow_ops": {
"comment": "Если true - то опка будет равна привилегии администратора, иначе вся власть опки будет обнулена, включая всю ванильную логику, и заменена на лист администраторов из этого конфига",
"type": "boolean",
"default": false,
"value": false
},
"default_group": {
"comment": "Имя группы по умолчанию. Лучше не трогать, иначе можно что-то сломать",
"type": "String",
"default": "default",
"value": "default"
},
"database": {
"properties": {
"replication_id": {
"comment": "Индекс репликации для обновления прав в режиме реального времени",
"range": "От -2147483648 до 2147483647",
"type": "int",
"default": 0,
"value": 0
},
"connection_id": {
"comment": "Индекс подключения к БД",
"range": "От -2147483648 до 2147483647",
"type": "int",
"default": 0,
"value": 0
},
"user_permissions": {
"properties": {
"column_expire_time": {
"type": "String",
"default": "expire_time",
"value": "expire_time"
},
"column_allow": {
"type": "String",
"default": "allow",
"value": "allow"
},
"column_user": {
"type": "String",
"default": "uuid",
"value": "uuid"
},
"table_name": {
"type": "String",
"default": "user_permissions",
"value": "user_permissions"
},
"column_permission": {
"type": "String",
"default": "permission",
"value": "permission"
}
}
},
"group_info": {
"properties": {
"column_priority": {
"type": "String",
"default": "priority",
"value": "priority"
},
"column_group_name": {
"type": "String",
"default": "name",
"value": "name"
},
"table_name": {
"type": "String",
"default": "group_info",
"value": "group_info"
},
"column_display_name": {
"type": "String",
"default": "display_name",
"value": "display_name"
}
}
},
"group_attributes": {
"properties": {
"column_group": {
"type": "String",
"default": "name",
"value": "name"
},
"column_value": {
"type": "String",
"default": "value",
"value": "value"
},
"column_attribute": {
"type": "String",
"default": "attribute",
"value": "attribute"
},
"table_name": {
"type": "String",
"default": "group_attributes",
"value": "group_attributes"
}
}
},
"group_permissions": {
"properties": {
"column_allow": {
"type": "String",
"default": "allow",
"value": "allow"
},
"column_permission": {
"type": "String",
"default": "permission",
"value": "permission"
},
"column_group": {
"type": "String",
"default": "name",
"value": "name"
},
"table_name": {
"type": "String",
"default": "group_permissions",
"value": "group_permissions"
}
}
},
"user_groups": {
"properties": {
"column_expire_time": {
"type": "String",
"default": "expire_time",
"value": "expire_time"
},
"column_group": {
"type": "String",
"default": "group_name",
"value": "group_name"
},
"table_name": {
"type": "String",
"default": "user_groups",
"value": "user_groups"
},
"column_user": {
"type": "String",
"default": "uuid",
"value": "uuid"
}
}
},
"user_attributes": {
"properties": {
"column_attribute": {
"type": "String",
"default": "attribute",
"value": "attribute"
},
"column_expire_time": {
"type": "String",
"default": "expire_time",
"value": "expire_time"
},
"column_user": {
"type": "String",
"default": "uuid",
"value": "uuid"
},
"column_value": {
"type": "String",
"default": "value",
"value": "value"
},
"table_name": {
"type": "String",
"default": "user_attributes",
"value": "user_attributes"
}
}
},
"group_parents": {
"properties": {
"column_parent": {
"type": "String",
"default": "parent",
"value": "parent"
},
"table_name": {
"type": "String",
"default": "group_parents",
"value": "group_parents"
},
"column_group": {
"type": "String",
"default": "group",
"value": "group"
}
}
}
}
},
"debug": {
"properties": {
"database": {
"comment": "Отладка мода без подключения к БД",
"type": "boolean",
"default": false,
"value": false
},
"general": {
"comment": "Вывод отладочной информации",
"type": "boolean",
"default": true,
"value": true
}
}
},
"replaceTabUsernames": {
"comment": "Подмена ников в S38PacketPlayerListItem. За счёт этого реализуются префиксы и суффиксы в списке онлайн-игроков (таб). Если у вас кастомный ТАБ и эта опция конфликтует - можете выключить её",
"type": "boolean",
"default": true,
"value": true
},
"rcon_group": {
"comment": "Имя группы, права которой используются для R-CON. Если указать пустую строку - прав вообще не будет. Если указать звёздочку - будут все права. Иначе - будут права по указанному имени группы",
"type": "String",
"default": "",
"value": ""
},
"command_blocks_group": {
"comment": "Имя группы, права которой используются для командных блоков. Если указать пустую строку - прав вообще не будет. Если указать звёздочку - будут все права. Иначе - будут права по указанному имени группы",
"type": "String",
"default": "",
"value": ""
},
"customSendersPermissions": {
"comment": "Map классов 'доверенных' ICommandSender, для которых будут действовать права на основе указанного значения. Если значение звёздочка - то будут все права, если пустая строка - никаких прав не будет, иначе - права из группы по указанному названию",
"type": "Map<Class<? extends net.minecraft.command.ICommandSender>, String>",
"default": {},
"value": {}
}
}
}
SQL скрипт развёртывания структуры БД для мода:
-- Создание структур в БД
-- Если переименуете колонки - не забудьте отредактировать конфиг мода!
CREATE TABLE `group_info` (
`name` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
`display_name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
`priority` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`name`)
);
CREATE TABLE `group_parents` (
`group` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
`parent` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
PRIMARY KEY (`group`, `parent`),
CONSTRAINT `fk_group_parents_group_info` FOREIGN KEY (`group`) REFERENCES `group_info` (`name`) ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT `fk_group_parents_parent_group_info` FOREIGN KEY (`parent`) REFERENCES `group_info` (`name`) ON UPDATE NO ACTION ON DELETE CASCADE
);
CREATE TABLE `group_attributes` (
`name` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
`attribute` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_bin',
`value` VARCHAR(100) NOT NULL COLLATE 'utf8mb4_bin',
PRIMARY KEY (`name`, `attribute`),
CONSTRAINT `fk_group_attributes` FOREIGN KEY (`name`) REFERENCES `group_info` (`name`) ON UPDATE NO ACTION ON DELETE CASCADE
);
CREATE TABLE `group_permissions` (
`name` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
`permission` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_bin',
`allow` TINYINT(1) NOT NULL,
PRIMARY KEY (`name`, `permission`),
CONSTRAINT `fk_group_permissions` FOREIGN KEY (`name`) REFERENCES `group_info` (`name`) ON UPDATE NO ACTION ON DELETE CASCADE
);
CREATE TABLE `user_attributes` (
`uuid` CHAR(36) NOT NULL COLLATE 'latin1_swedish_ci',
`attribute` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_bin',
`value` VARCHAR(100) NOT NULL COLLATE 'utf8mb4_bin',
`expire_time` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`uuid`, `attribute`)
);
CREATE TABLE `user_permissions` (
`uuid` CHAR(36) NOT NULL COLLATE 'latin1_swedish_ci',
`permission` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_bin',
`allow` TINYINT(1) NOT NULL,
`expire_time` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`uuid`, `permission`)
);
CREATE TABLE `user_groups` (
`uuid` CHAR(36) NOT NULL COLLATE 'latin1_swedish_ci',
`group_name` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_bin',
`expire_time` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`uuid`, `group_name`),
INDEX `fk_user_groups` (`group_name`),
CONSTRAINT `fk_user_groups` FOREIGN KEY (`group_name`) REFERENCES `group_info` (`name`) ON UPDATE NO ACTION ON DELETE CASCADE
);
-- Группа по умолчанию ОБЯЗАТЕЛЬНО должна быть в БД!
INSERT INTO `group_info` (`name`, `display_name`, `priority`) VALUES ('default', 'Игроки', 0);
Команды:
/permissions user <игрок> setpermission <право> <true|false> [длительность]
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.setpermission
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Устанавливает игроку пермишен.
Если true - пермишен положительный, если false - отрицательный.
Если длительность права не указана - оно выдаётся навсегда
/permissions user <игрок> setattribute <атрибут> <значение> [длительность]
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.setattribute
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Устанавливает игроку значение атрибута.
Если длительность не указана - устанавливается навсегда
/permissions user <игрок> removeattribute <атрибут>
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.removeattribute
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Удаляет указанный атрибут у игрока
/permissions user <игрок> removepermission <право>
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.removepermission
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Удаляет указанное право у игрока
/permissions user <игрок> permissions
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.permissions
Дополнительные права:
command.permissions.permissions.user.offline
- просмотр прав офлайн игрокаcommand.permissions.permissions.user.other
- просмотр прав другого игрока
Просмотр прав, заданных для указанного игрока
/permissions user <игрок> attributes
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.attributes
Дополнительные права:
command.permissions.permissions.user.offline
- просмотр атрибутов офлайн игрокаcommand.permissions.permissions.user.other
- просмотр атрибутов другого игрока
Просмотр атрибутов, заданных для указанного игрока
/permissions user <игрок> setgroup <группа> [длительность]
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.setgroup
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Добавляет игрока в указанную группу на указанное время.
Если длительность не задана - добавляется навсегда
/permissions user <игрок> removegroup <группа>
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.removegroup
Дополнительные права:
command.permissions.permissions.user.offline
- изменения для офлайн игрокаcommand.permissions.permissions.user.other
- изменения для другого игрока
Удаляет игрока из указанной группы
/permissions user <игрок> groups
Основные права:
command.permissions.permissions
command.permissions.permissions.user
command.permissions.permissions.user.groups
Дополнительные права:
command.permissions.permissions.user.offline
- просмотр групп офлайн игрокаcommand.permissions.permissions.user.other
- просмотр групп другого игрока
Просмотр групп, в которые добавлен указанный игрок
/permissions group <группа> setpermission <право> <true|false>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.setpermission
Устанавливает группе пермишен.
Если true - пермишен положительный, если false - отрицательный
/permissions group <группа> setattribute <атрибут> <значение>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.setattribute
Устанавливает группе значение атрибута
/permissions group <группа> removeattribute <атрибут>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.removeattribute
Удаляет атрибут из группы
/permissions group <группа> removepermission <право>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.removepermission
Удаляет право из группы
/permissions group <группа> permissions
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.permissions
Просмотр заданных прав в группе
/permissions group <группа> attributes
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.attributes
Просмотр заданных атрибутов в группе
/permissions group <группа> addparent <группа>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.addparent
Добавляет родительскую группу для указанной группы. Первый аргумент - группа, для которой задаём родителя, второй аргумент - родитель
/permissions group <группа> removeparent <группа>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.removeparent
Удаляет родительскую группу для указанной группы. Первый аргумент - группа, из которой удаляем родителя, второй аргумент - родитель
/permissions group <группа> setpriority <приоритет>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.setpriority
Устанавливает приоритет группе Приоритетом может быть любое целое число, в том числе и отрицательное. Чем больше значение - тем приоритетнее группа
/permissions group <группа> setdisplayname <имя>
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.setdisplayname
Устанавливает отображаемое имя группы Это имя никак не связано с префиксами! Оно может быть получено кодом для вывода куда-либо
/permissions group <группа> removedisplayname
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.removedisplayname
Удаляет отображаемое имя группы
/permissions group <группа> info
Основные права:
command.permissions.permissions
command.permissions.permissions.group
command.permissions.permissions.group.info
Вывод информацию о группе: приоритет, отображаемое имя, родительские группы
/permissions creategroup <имя>
Основные права:
command.permissions.permissions
command.permissions.permissions.creategroup
Создаёт новую группу с указанным названием
/permissions removegroup <группа>
Основные права:
command.permissions.permissions
command.permissions.permissions.removegroup
Удаляет группу по названию
/permissions grouplist
Основные права:
command.permissions.permissions
command.permissions.permissions.grouplist
Список существующих групп в данный момент
/permissions testpermission <игрок> <право>
Основные права:
command.permissions.permissions
command.permissions.permissions.testpermission
Дополнительные права:
command.permissions.permissions.testpermission.other
- проверка права для другого игрокаcommand.permissions.permissions.testpermission.offline
- проверка права для офлайн игрока
Проверяет наличие указанного права у игрока. Команда используется в отладочных целях
/permissions getattribute <игрок> <атрибут>
Основные права:
command.permissions.permissions
command.permissions.permissions.getattribute
Дополнительные права:
command.permissions.permissions.getattribute.other
- проверка права для другого игрокаcommand.permissions.permissions.getattribute.offline
- проверка права для офлайн игрока
Получает значение атрибута для игрока. Команда используется в отладочных целях
/permissions reload
Основные права:
command.permissions.permissions
command.permissions.permissions.reload
Перезагружает мод, выкачивая актуальную информацию из базы данных
/permissions verbose
Основные права:
command.permissions.permissions
command.permissions.permissions.verbose
Включает/выключает режим логгирования всех проверок прав игрока Команда используется в отладочных целях
Дополнительные атрибуты мода:
prefix
префикс игрока в отображаемом имени
suffix
суффикс игрока в отображаемом имени
tab_prefix
префикс игрока в табе (списке игроков)
tab_suffix
суффикс игрока в табе (списке игроков)
Last updated