• Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

In this version Mask has been modularised. This may contain some breaking changes.

The `Mask` module shades all submodules.

Modules:
- MagicLogic
- Commander (requires MagicLogic)
- Mask

Additions:
- MagicMap, a linked map implementation for better index manipulation
- MagicList, a better list implementation with sorting, randoms and other useful features

Changes in Commander v2:
- Uses `CommandImpl` instead of `Main`
- Consumers have been replaced with `CommandAction`s
- Now supports argument descriptions
- Now supports command/argument aliases
- Overloading arguments is safer and more accurate
- Now uses a safer, faster and more accurate multi-match system
- Prioritises perfect matches
- More accurate argument matching/parsing
- Better argument recursion
- Designed to be faster and pre-parsed
- Easier to get useful elements of the command
- Less volatile (though command executions should still be synchronised for input preservation!)
- Better treatment of static/literal arguments
- Argument tree now allows dynamic arguments at level zero
- Argument tree now allows static arguments between/after dynamic arguments
- Pattern getters now merge overloaded arguments
- No longer requires unchecked generics
- Better type safety
- Fallback arguments

Practical changes:

`Main` -> `CommandImpl`

`Consumer<Sender>` in `getDefault()` is replaced by `CommandSingleAction<Sender>`
Fixed both of the command systems to work on 1.16.1. These are now done entirely via reflection, so they ought to work across all versions.

Also removed paper as a transitive dependency, to prevent any paper-only content sneaking in... :emoji_frowning:
This is the official Mask v2 release. It may contain breaking changes for your plugins, though stubs have been left in place for the time being to try and maintain legacy projects.

Mask wiki can be found here.

In this version the following changes have been made:

Removed
  • Unused, old and broken libraries

Moved
  • com.moderocky.mask.template.Plugin -> com.moderocky.mask.template.BukkitPlugin

Fixed
  • Major improvements to a lot of background libraries
  • Improvements to config loading system and other parts

Added
  • Mirror reflection API
  • Functional interface fast listeners
  • Beginnings of a string-parser system
  • Platform independency - preparing for Mask to run on proxy servers as well as backend
  • Commander (com.moderocky.mask.command.Commander)
    Commander is a new command system
    It is platform independent, and can run on anything that has a command sender object and accepts a string input
    The commander system is designed to simplify the process of managing static and dynamic arguments
    Please refer to the example class (com.moderocky.example.command.ExampleCommander) for information

The new Maven version to use is `2.0.8`.
In this version the following changes have been made:

Fixed
* Erroneous file creation if using the addon template

Added
  • Basic extendable web server creation system
  • Web action callback events (for GET/POST etc.)
  • Basic system for simple creation of online jSon APIs
  • Better documentation of maps and other classes
  • ItemFactory system for easy creation/editing of items (replaces ItemStacker)
  • Menu GUI system for simple menu creation via callback buttons

Proper javadocs have also been created [here](https://moderocky.gitlab.io/Mask/) for you to use.

The new Maven version to use is `1.2.0`.
This update adds a few libraries that I've been working on in the background, as well as some supportive changes to try and quash any potential clerical errors.

Key changes:
  • Removed several deprecated classes (these are due to be redone soon)
  • Added the PositionalMap
    - a map that uses an X/Y-based key in order to categorise entries
    - brilliant for ordering stuff in a grid basis
    - trust me this thing is a g when it comes to grid work
    - easy acquisition of rows and columns
  • Added the TriPositionalMap
    - like a PositionalMap, but works on the X, Y and Z axes
    - since Minecraft is a 3D game this is great
    - if you thought the PositionalMap was decent then this bad boy will kick it out of the park
    - easy acquisition of columns and planes
  • Added the Cache
    - functions like a map
    - you specify a method for adding to the cache on creation
    - if your value isn't in the cache it'll use your backup method and add it
    - easy to clear
A new thing of beauty has been added to Mask: the WrappedCommand interface.

WrappedCommands are able to be handled entirely from the class itself - no entry in the plugin.yml or setting executors (though, I suppose, you could still bother with that if you want?)

If you are using the Plugin class template, you can use register(WrappedCommand... commands) to register multiple within your startup() method, or wherever you'd like.

Equally, if you aren't using the Plugin template, you can use WrappedCommand#register(JavaPlugin plugin) instead.
A small suggestion from @Blue - the `@Overwrite` annotation on the config's class will clear the contents of the file pre-saving, removing anything already inside.
Added some built-in Yaml and Map converters, to easily convert configuration/storage files to navigable treemaps.

This will soon be extended to jSon as well.