Skip to content

Latest commit

 

History

History
73 lines (68 loc) · 3.54 KB

TODO.md

File metadata and controls

73 lines (68 loc) · 3.54 KB

Design Goals

  • Quick setup
  • Robust, stable, set-it-and-forget-it design
    • Wrapper should always be able to start without user input (e.g. with a physical server boot)
    • Updates to Wrapper should never intrude or require user input to fix problems
    • Resilient to corruption, should repair itself
  • No excess of functionality; only bare bone features will be implemented
  • As few dependencies needed to operate
  • Plugin API, to supplement any specific features or use cases not built into the wrapper
  • Python 2.x and 3.x compatible

Major To-Do

  • Wrapper shuts down on first start, to allow user to edit generated config file

    • Interactive first-time setup wizard
  • [PARTIAL] Implement backup system

    • Support various containers (zip, tar, 7z, etc.) and compression methods (gzip, etc.)
    • Don't backup if server has been in stopped state
    • Option to stop backup if no players have logged in
    • Automatic world rollback through dashboard
  • Implement shell script calls

  • Implement dashboard using Flask

    • Multi-user support with permissions
  • Implement plugin API

    • Server object
      • Minecraft object
      • World object
      • Player object
      • (if proxy mode is implemented) Entity object
  • Implement server.properties hijacking (temporarily replace server.properties with custom values before starting server, and putting original one back after server booted)

  • Implement Proxy mode

    • Utilize the Quarry project to implement Minecraft's protocol

Minor/Specific To-Do List

  • Server
    • MCServer object's life should only be during the server's life; once the server stops, the MCServer object should be destroyed. A new one should be created when the server is started again
    • Decouple console parsing from MCServer
    • Throttle server start attempts if failing to start (i.e. invalid CLI arguments, wrong server jar name, etc.)
    • Respect arguments
    • Respect auto-restart
    • Custom java executable
    • Auto-accept EULA
    • Automatically turn on gamerule to hide command runs from ops, to prevent chat spam
    • Pre-1.7 (or whatever version) server console parsing (e.g. [11:11:11] [INFO] ...)
  • Log Management
    • Rotate logs
    • Compress old logs using gzip
    • Respect debug-mode settings
  • Backups
    • Respect ingame-notification settings
    • Ability to mark a backup as "important", so it does not auto-delete during rotation
    • Backups page should be dynamically loaded, show progress bar if during a B/U
  • Dashboard
    • Localize MaterializeCSS dependencies (don't use CDN)
    • "400 Bad request" thru nginx proxy
    • Occasional deadlock condition shortly after starting
    • Get rid of SocketIO bull crap. Too unreliable and crappy. Bah! (No idea what I meant when I wrote this)
    • Server jar downloader only works for versions 1.2 and over
  • Plugins / API
    • Permissions handling for commands
  • Player object
    • Check if operator on vanilla server
    • Make peristent (accessible when offline)
      • Persistent storage
      • Delete persistent player objects if too many are used
  • Misc. stuff
    • Make {"text": ""} objects universally encoded [what? no idea what I meant here. Sometimes I drink while programming...]
    • Use curses to make console input a little nicer

Plugin Ideas

  • Essentials Clone
  • IRC bridge plugin