Skip to content

JouTak/MiniGamesAPI

Repository files navigation

MiniGames API

Библиотека для Paper-плагинов, упрощающая разработку мини-игр: очередь игроков, балансировка команд, сохранение результатов и интеграция команд через Brigadier.


📌 Возможности

  • Глобальная очередь игроков (join/leave)
  • Балансировка игроков по командам
  • Загрузка игроков из файла
  • Хранение результатов игр в JSON
  • Готовые Brigadier-команды
  • Использование как отдельной библиотеки в любом Paper-плагине

📦 Установка

Добавьте JAR в зависимости вашего плагина
или подключите как библиотеку через Maven/Gradle.


🚀 Использование

1. Очередь игроков

Добавление игрока:

val domainPlayer = GameQueue.getOrCreatePlayer(bukkitPlayer)
GameQueue.addPlayer(domainPlayer)

Удаление игрока:

val domainPlayer = GameQueue.getOrCreatePlayer(bukkitPlayer)
GameQueue.removePlayer(domainPlayer)

Методы автоматически обрабатывают случаи, когда игрок уже есть или отсутствует в очереди.

2. Балансировка команд

Балансировка из списка:

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)

3. Хранение результатов игр (JSON)

Файлы сохраняются в директорию:

/game_results/

Сохранение результата:

GameResultStorage.save(result)

Загрузка по UUID:

val result = GameResultStorage.load(uuid)

Загрузка всех результатов:

val all = GameResultStorage.loadAll()

Удаление:

GameResultStorage.delete(uuid)

Очистка:

GameResultStorage.clearAll()

Команды

/ready

Добавляет игрока в очередь. Использовать могут только игроки.

/unready

Удаляет игрока из очереди. Только игроки.

/mg

Корневая команда без логики. Используется как контейнер для подкоманд.

/start

Команда с аргументом string. Пример расширения:

val startCommand = StartCommand.getBuilder()

About

Плагин для управления мини-играми и проведения спартакиад на сервере ITMOcraft-miniGAMES

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages