This release mostly brings AMP up to feature parity with MCMA2 now that role based permissions are usable. There may still be some cases where users are shown things they shouldn't be able to do (and get a permission denied error when they try and use it) but broadly it works correctly.

This is a fairly big release with lots of under the hood changes and brings AMP a big step closer towards TITAN.

Let me know how you get on in the comments below.


  • The users and roles features are now implemented. You can now create roles with as few or as many permissions as you like and assign users to those roles.
  • Users management page has been overhauled and now resembles the Roles page in design. These two pages don't yet have mobile friendly versions but this will come.
  • Fixed users not being able to change their password if 'Force password change' was enabled.
  • Fixed not being able to add tasks to triggers in the schedule.
  • Fixed password changes always showing a failure even if it actually worked.
  • Fixed the node name for protected settings not being shown in the log when changed.
  • Fixed permissions evaluation. Specific methods are implicitly allowed unless explicitly denied, but role based permissions must be explicitly allowed.
  • Fixed a bug that could cause the existance of 2 'admin' users with the same name in different cAsEs.
  • Added Async versions of all the methods in the web interface (returns promises) - replaces getCompleter.
  • Added security check - in addition to not running as root (existing limit) AMP also won't run on Linux if sudo su allows root login without a password from the current user.
  • Added session-level caching for permission evaluations, reduces CPU usage.
  • Added additional information to the 'permission denied' error showing exactly which permission is missing.
  • Changed all the setting categories, WebSetting attribute no longer has a 'category' parameter - this is now defined by the SettingSectionStore they belong to.
  • Changed "Help and Support" to now just be "Support" to deal with linewrap issue (hack instead of preventing the wrap in the first place)
  • Changed the behaviour of the frontend plugin to outright not load plugin tabs you don't have permission to use rather than just hiding them.

ARK Module

  • Fixed a bad cast preventing AMP from starting the server.
  • Issues a "SaveWorld" before running "DoExit"

Minecraft Module

  • Fixed a bug where an exception was thrown (knocking out AMP) if Java wasn't installed (was added deliberately for debugging, should have been removed)
  • Better fault tollerance when starting the server (missing files, etc)

File Manager

  • List of permitted extensions is now an actual list rather than CSV to make it easier to show in the web interface later on.
  • Upload/download/edit now works for VDS directories. Now allows you to upload/download backups!
  • ExtractArchive API call now accepts a destination directory to extract somewhere other than where the archive is (not implemented in UI yet)
  • Added a 'create directory' menu option.

Email Sender

  • No longer throws an error when you click the "Test Settings" button!

Backup Plugin

  • VDS is enabled by default, allows access to backups via the file manager.
  • Restore is now implemented.

ADS Module

  • Creates a data directory by default for information unrelated to the instances. It's the default directory used for storage if you archive an entire instance.
  • Now correctly honors the 'default settings' setting to be applied to new instances.
  • Fixed instances not being removed from the UI until ADS is restarted.
  • Added VDS notifications for instance creation/removal.
  • Added the web methods that were formally part of the IM plugin (and have now been removed from the IM plugin)

Instance Manager (CLI)

  • Fixed it not running because there's no 'session' for logging purposes.
  • Now shows the correct help when you're missing arguments rather than spewing out an exception.


  • Updated to match current API spec.
  • Name of the output file is based on what modules/plugins it was generated for.