Библиотека для Paper-плагинов, упрощающая разработку мини-игр: очередь игроков, балансировка команд, сохранение результатов и интеграция команд через Brigadier.
- Глобальная очередь игроков (join/leave)
- Балансировка игроков по командам
- Загрузка игроков из файла
- Хранение результатов игр в JSON
- Готовые Brigadier-команды
- Использование как отдельной библиотеки в любом Paper-плагине
Добавьте JAR в зависимости вашего плагина
или подключите как библиотеку через Maven/Gradle.
Добавление игрока:
val domainPlayer = GameQueue.getOrCreatePlayer(bukkitPlayer)
GameQueue.addPlayer(domainPlayer)Удаление игрока:
val domainPlayer = GameQueue.getOrCreatePlayer(bukkitPlayer)
GameQueue.removePlayer(domainPlayer)Методы автоматически обрабатывают случаи, когда игрок уже есть или отсутствует в очереди.
Балансировка из списка:
val players: List<Player> = listOf(
Player("User1"),
Player("User2"),
Player("User3")
)
val teams = TeamBalancer.distributePlayers(players, teamCount = 2)Используется механизм round-robin.
Автоматическая балансировка (из файла):
В config.yml:
teams:
players_file: "teams.txt"В коде:
val result = TeamBalancer.distributeAuto(teamCount = 2)Формат файла:
PlayerOne
PlayerTwo
PlayerThreeБалансировка из произвольного файла:
val teams = TeamBalancer.distributeFromFile(File("teams.txt"), 2)Файлы сохраняются в директорию:
/game_results/Сохранение результата:
GameResultStorage.save(result)Загрузка по UUID:
val result = GameResultStorage.load(uuid)Загрузка всех результатов:
val all = GameResultStorage.loadAll()Удаление:
GameResultStorage.delete(uuid)Очистка:
GameResultStorage.clearAll()Добавляет игрока в очередь. Использовать могут только игроки.
Удаляет игрока из очереди. Только игроки.
Корневая команда без логики. Используется как контейнер для подкоманд.
Команда с аргументом string. Пример расширения:
val startCommand = StartCommand.getBuilder()