A minecraft cloud system using docker & netty supporting multiroot & multiproxy for learning purpose
This project is only intended as a learning experience. You should not use this cloud system for production, as no support will be given and the project may be very inactive and lack features.
I would recommend you to use one of the following cloud systems:
- master (base):
Manager of the cloud, commander of nodes
Maybe known as manager or base from other cloud systems - node (base, remote):
Responsible for starting & stopping of services (minecraft servers, bungee proxies), connects to the master.
Probably known as wrapper or slave from other cloud system - wrapper (remote):
Runs a service, connects to the master.
Probably known as runner or bridge from other cloud systems
- cloud.join.maintenance: Player with this permission will be able to join during maintenance (Cloud-Bridge)
- cloud.join.full: Player with this permission will be able to join although the server is full (Cloud-Bridge)
- cloud.auto.op: Player with this permission will automatically be set as operators on bukkit servers (Cloud-Perms)
- cloud.notify: Player with this permission will receive messages when services are started/stopped (Cloud-Notify)
- cloud.chat.color: Player with this permission will be able to send colored message using
&(Cloud-ChatTab) - cloud.command.use: Player with this permission will be able to use
/cloudcommands (Cloud.Bridge)
- Bridge: Allows the use of player management possible
- Perms: Allows the use of an integrated permission system
- Cloudflare: Allows the use of a multiproxy setup using round-robin dns load balancing
- Notify: Allows the sending of service update messages to players
- Proxy: Allows the use of proxy systems & configs
- Tablist Replacements:
{ping}The ping of the player provided by the proxy{name}The name of the player{server}The name of the server the player is currently on{proxy}The name of the proxy the player is connected to{node}The name of the proxy's node the player is connected to{group.name}The name of the player's highest group{group.color}The color of the player's highest group{group.display}The display name of the player's highest group{players.online}The count of online players on the network{players.max}The max count of player on the network defined in global.json as maxPlayers
- Motd Replacements:
{proxy}The name of the proxy the player is pinging{node}The name of the proxy's node the player is pinging{players.online}The count of online players on the network{players.max}The max count of player on the network defined in global.json as maxPlayers
- Tablist Replacements:
- ChatTab: Runtime module to enable the use of chat formatting & name tags
- Message Replacements:
{message}The message sent by the player{player.uuid}The uuid of the player{player.name}The name of the player{player.display}The display name of the player{group.name}The name of the player's highest group{group.color}The color of the player's highest group{group.display}The display name of the player's highest group
- Message Replacements:
| 📁 | Name / Label / Description |
|---|---|
| ✔️ | Logging |
| ✔️ | Basic Networking with Netty |
| ✔️ | Advanced Networking: Chunked Packets & Queries |
| ✔️ | Node Management + Authentication |
| ✔️ | Request API with Packets |
| ✔️ | Event System |
| ✔️ | Master TemplateStorage -> Download |
| ✔️ | Docker: Wrapper Setup |
| ✔️ | Service Start / Stop |
| ✔️ | Wrapper Authentication |
| ❌ | Proper Docker Connection (Not Legacy) |
| 🚧 | Node Information Cycle & Timeout |
| ❌ | Node Load Balancing |
| ❌ | Auto Client Reconnect |
| ❌ | Encryption for sockets |
| ❌ | Pre launch setup |
| 🚧 | REST API |
| 🚧 | Websocket API for Dashboard |
| ❌ | SSL Encryption for http server |
| ✔️ | ServiceInfo publish |
| ✔️ | Basic Service Events |
| 🧪 | Service auto start (minCount & maxCount) |
| 🧪 | Shutdown mechanism |
| ❌ | Template Cache |
| ✔️ | Proxy Bridge |
| 🚧 | Support for Velocity |
| 🚧 | Support for MineStorm |
| 🚧 | Support for SpongePowered |
| ✔️ | Dynamic Proxy Server Registry |
| 🧪 | MultiProxy Cord |
| ✔️ | Lobby Balancing |
| ✔️ | Remote Database API |
| 🧪 | Service Timeout (Crash detection) -> Delete -> Start new |
| ❌ | Messenger System for Modules |
| ✔️ | Bukkit Bridge |
| 🚧 | Implement all driver functions for wrapper & node (remote) |
| ❌ | Wrapper & Node to Master Logging |
| ✔️ | Player Executor |
| ✔️ | Global Player Management |
| ✔️ | Permission System |
| 🧪 | Permission Chat & Tab Extension |
| ✔️ | Module System (Master, Node?, Wrapper?) |
| ✔️ | Module Copy |
| ✔️ | Notify Module |
| ✔️ | Synced Proxy Module |
| ❌ | Service Screens |
| ✔️ | Message Translations |
| ✔️ | Advanced Translations (link to other messages & chatevents eg run command) |
| ✔️ | Proxy Commands (+ Cloud Command API?) |
| 🚧 | Cloud Commands |
| ❌ | Migrate to Gradle |
| ❌ | Relocate google depends & netty to prevent issues from server software using older versions |
| Service Deployments | |
| Static Services | |
| NPC Module | |
| Signs Module | |
| CloudAPI Implementation |
✔️ Finished
🧪 Experimental
🚧 In Progress
❌ Planned
⚠️ Planned (Unimportant)