From a660a1af43fadd04723dc472e787f283a746ba6c Mon Sep 17 00:00:00 2001 From: Lucas Whitman <131623801+LucasWhitmanWasTaken@users.noreply.github.com> Date: Sat, 25 Oct 2025 11:47:45 -0500 Subject: [PATCH] Ignore VS files --- .gitignore | 4 ++ README.md | 149 ++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 124 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index d5f737e..7c479d6 100644 --- a/.gitignore +++ b/.gitignore @@ -117,3 +117,7 @@ runs/ # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar + +# Dont upload .vs Folder +.vs +.VS \ No newline at end of file diff --git a/README.md b/README.md index 238866d..dbc0a51 100644 --- a/README.md +++ b/README.md @@ -2,36 +2,127 @@ A simple queue mod for Minecraft Java Edition. Lightweight, works on essentially any server types, (Spigot/Bukkit/Fabric/Paper), Tiered Priority Queue, and simple at its core. **Table of Contents** -- Commands -- [Install - Requirements and Configuration](https://github.com/ProjectPersistence/queue?tab=readme-ov-file#how-it-works--what-you-need) +- [Features](#features) +- [Commands](#commands) +- [Requirements](#requirements) +- [Configuration](#configuration) -## How it works & What you need. -**Requirements**: -- A Velocity Proxy Server - - Permission System (_Optional but required for things like priority queue and admin account bypasses_ **LuckPerms Velocity Reccomended**). +## Features + +### Core Queue System +- **Automatic Queue Management** - Players are automatically sent to a queue server when the main server is full +- **Point-Based Queue System** - Players accumulate points over time; the player with the most points gets the next available slot +- **Tiered Priority Queue System** - Support for multiple VIP/donor tiers with configurable point accumulation rates +- **Configurable Point Tiers** - Define custom permission nodes with different point accumulation rates (e.g., VIP tiers get points faster) +- **Fair Tiebreaker** - If two players have the same points, the one with the better tier (lower seconds-per-point) goes first +- **Queue Persistence** - Players reconnecting to the queue server are automatically re-added to their queue position +- **Real-Time Position Updates** - Action bar displays current queue position and points + +### Admin Access System +- **Admin Bypass** (`queue.admin`) - Always bypass the queue, can join even when server is over max capacity +- **Force Pull Players** - Admins can force pull any player from the queue directly to the main server, bypassing max capacity + +### Server Management +- **Automatic Pause on Server Down** - Queue processing pauses when main server goes offline +- **Server Status Monitoring** - Checks main server status every 5 seconds +- **Manual Queue Control** - Admins can pause/resume queue processing at any time +- **Player Notifications** - All queue players are notified when server status changes or queue is paused/resumed + +### Additional Features +- **Hot Reload** - Use `/queue reload` to reload all configurations without restart +- **Tab Completion** - All commands have tab completion support +- **Thread-Safe** - Uses concurrent collections to prevent crashes from simultaneous access +- **Graceful Disconnects** - Players are properly removed from queue when they disconnect + +## Commands + +### Player Commands +- `/queue info` - View your current queue position, points, and point accumulation rate +- `/queue status` - View overall queue system status (players in queue, paused state, server online status, player count) +- `/queue credits` - View plugin credits with clickable GitHub link + +### Admin Commands (Require `queue.admin` permission) +- `/queue pull ` - Force pull a specific player from queue to main server (bypasses max capacity) +- `/queue pause` - Pause the queue from processing new players +- `/queue resume` - Resume queue processing +- `/queue list` - List all players in queue with their position, points, and priority tier +- `/queue reload` - Reload all configuration files without restarting + +## Requirements + +### What You Need: +- **A Velocity Proxy Server** + - Permission System (_Optional but required for tiered queue and admin account bypasses_ **LuckPerms Velocity Recommended**). - The Queue plugin installed on the velocity server. -- Your Main Server: +- **Your Main Server:** - This can be any type of Minecraft Server, **as long as it connects to the velocity proxy it will work**. - - Fabric Proxy Lite is reccomended for **fabric servers.** -- The Queue Server + - Fabric Proxy Lite is recommended for **fabric servers.** +- **The Queue Server** - This can be any type of Minecraft Server, **as long as it connects to the velocity proxy it will work**. - - If you don't want to deploy yet another heavy load Minecraft Server it is reccomended to use [https://github.com/Quozul/PicoLimbo](url) or [https://github.com/Nan1t/NanoLimbo](url). - -**Configuration:** -- `server-config.yml`: - ``` - {main-server: main, queue-server: queue, main-server-max-players: 160} - ``` - - The `main-server` is the server that players not in queue will play on, the name of it is the name defined in you velocity proxy. - - The `queue-server` is the server that players in queue will wait in, the name of it is the name defined in you velocity proxy. - - The `main-server-max-players` is the maximum amount of players can be on the server before players are sent to wait in the queue. -> [!WARNING] -> On your actual main server `server.properities` file it is recomended that you have 5-10 more slots that your max players defined in the configuration file above to ensure that admins can bypass the queue even when the main server is full. -- `queue-points.yml`: - ``` - tiers: {queue.vip.diamond: 10, queue.vip.gold: 20, queue.vip.silver: 30, queue.vip: 45} - default-seconds: 60 - ``` - - The `tiers` allows you to define the amount of seconds per point each rank gets, if a player contains one of these permission nodes the tier config will be applied to them. (You can add more permission nodes too) - - The `default-seconds` is for players without a priority tier, this is the default for players without a setup rank. - + - If you don't want to deploy yet another heavy load Minecraft Server it is recommended to use [PicoLimbo](https://github.com/Quozul/PicoLimbo) or [NanoLimbo](https://github.com/Nan1t/NanoLimbo). + +## Configuration + +The plugin uses two YAML configuration files, all located in the `plugins/queue/` directory. These files are automatically generated with default values on first run. + +### server-config.yml + +Defines the main server, queue server, and player capacity settings. +```yaml +# The name of the main server in your Velocity configuration +main-server: main + +# The name of the queue/lobby server in your Velocity configuration +queue-server: queue + +# Maximum players allowed on the main server (admins can bypass this) +main-server-max-players: 100 +``` + +**Configuration Options:** +- **main-server**: The name of your main/survival server as defined in Velocity's `velocity.toml` +- **queue-server**: The name of your queue/lobby server as defined in Velocity's `velocity.toml` +- **main-server-max-players**: Maximum player capacity before queue activates (admins with `queue.admin` can bypass this limit) + +### queue-points.yml + +Configures the point-based queue system with priority tiers. +```yaml +tiers: + queue.vip.diamond: 10 # 1 point every 10 seconds + queue.vip.gold: 20 # 1 point every 20 seconds + queue.vip.silver: 30 # 1 point every 30 seconds + queue.vip: 45 # 1 point every 45 seconds + +default-seconds: 60 # Default for players without permissions +``` + +**How It Works:** +- Players earn points while waiting in queue +- Lower seconds = faster points = higher priority +- Player with most points gets the next slot +- First matching permission in the list is used + +**Example:** A VIP Diamond player earns 6 points per minute, while a default player earns 1 point per minute. + +### Permission Nodes + +**Player Permissions:** +- Custom tier permissions defined in `queue-points.yml` (e.g., `queue.vip.diamond`, `queue.vip.gold`, etc.) + +**Admin Permissions:** +- `queue.admin` - Full admin access: + - Bypass queue entirely + - Join even when server is over max capacity + - Access to all admin commands + - If server is down, placed at front of queue with maximum priority + +### Reloading Configuration + +Use `/queue reload` in-game or console to reload all configuration files without restarting the proxy. + +Changes will take effect immediately for: +- Server names and max players +- Point tier configuration + +**Note**: Players already in the queue will keep their current point accumulation rate until they reconnect.