项目作者: TheSeems

项目描述 :
A simple queue system in minecraft
高级语言: Java
项目地址: git://github.com/TheSeems/TQueue.git
创建时间: 2020-02-16T17:48:52Z
项目社区:https://github.com/TheSeems/TQueue

开源协议:GNU General Public License v3.0

下载


TQueue

A simple queue system in minecraft
Codacy Badge
Build Status

What is it for

This plugin provides partly async queue system.
For example, if you have the server which is shut down, players can join a queue associated with a server and the will be joined when server stands up.
Queue also supports many servers for one queue.

Quick Demo

Alt Text

Commands

/queue list - list of all registered queues
/queue add <player> <queue> - add a player to a queue
/queue info <queue> - info about specific queue
/queue join <queue> - join a specific queue
/queue leave - leave all queues. // TODO: Make command to leave specific queue

/queue create <queue> <[server, priotity]> - add new queue with servers.
Example: /queue add hubs hub1,0 hub2,1 hub3,0 hub4,0
Players will join hub2 until it’s full if there is no special destination container on a queue

/queue remove <queue> - remove a queue
/queue clear <queue> - clears a queue (removes all players from it)
/queue kick <player> <queue> - kick a player from a queue
/queue addh <handler> - add handler to a queue
/queue removeh <handler> - remove handler from a queue

Installation

From here: https://github.com/TheSeems/TQueue/releases/tag/0.1D
Download TQueueBungee-…jar and put it in the bungeecord plugins folder
Download TQueueSpigot-…jar and put it in the spigot/bukkit plugins folder

Configure your redis server and fill in configs for both bungee and spigot.

Sample configs

For spigot (plugins/TQueue/config.json):
https://gist.github.com/TheSeems/ed180d964112f2e78f95a460d7d81c65

For bungee (plugins/TQueue/config.json):
https://gist.github.com/TheSeems/44d2bd4344002277aa2169a61e8fd86d

API

Creating a queue (with registration)

  1. Queue queue = QueueAPI.getQueueManager().make("<name>", 100);
  2. QueueAPI.getQueueManager().register(queue);

Getting a queue

  1. QueueAPI.getQueueManager().getQueue("<name>").ifPresent(queue -> {
  2. // Do something incredible with a queue
  3. });

Adding a single handler

  1. queue.getHandlers().add(new QueueHandler() {
  2. @Override
  3. public String getName() {
  4. return "<handler name>";
  5. }
  6. @Override
  7. public boolean onApply(UUID player, Destination destination, Verdict verdict) {}
  8. @Override
  9. public void onJoin(UUID player) {}
  10. @Override
  11. public void onLeave(UUID player) {}
  12. });

Or you can produce some handler from a factory

  1. Queue queue;
  2. QueueAPI.getHandlerManager()
  3. .requestFor("<handler name>", queue)
  4. .ifPresent(queueHandler -> queue.getHandlers().add(queueHandler));

Registering a handler factory

  1. QueueAPI.getHandlerManager().register(new QueueHandlerFactory() {
  2. @Override
  3. public QueueHandler produce(Queue queue) {
  4. // Produce handler for specific queue
  5. }
  6. @Override
  7. public String getName() {
  8. return "<handler name>";
  9. }
  10. });