Skip to content

A minecraft cloud system using docker & netty supporting multiroot & multiproxy for learning purpose

License

Notifications You must be signed in to change notification settings

anweisen/DyCloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0bd95e2 Β· Jan 1, 2022
Nov 22, 2021
Aug 29, 2021
Jan 1, 2022
Dec 25, 2021
Jan 1, 2022
Jan 1, 2022
Jan 1, 2022
Dec 25, 2021
Dec 25, 2021
Oct 10, 2021
Jul 16, 2021
Jul 16, 2021
Jul 16, 2021
Dec 26, 2021
Oct 25, 2021
Oct 25, 2021
Dec 18, 2021

Repository files navigation

CI wakatime lines

DyCloud

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:

Structure

  • 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

Permissions

  • 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 /cloud commands (Cloud.Bridge)

Modules

  • 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
  • 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

Progress

πŸ“ 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)

About

A minecraft cloud system using docker & netty supporting multiroot & multiproxy for learning purpose

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages