- java.lang.Integer could not be cast to java.lang.Long and it was so confusing for so long
- Int::class.java is int.class instead of Integer.class like I thought
- Fixed test config loading (it loaded it twice, probably would've on a regular server too)
- Fixed missing permission plugin when testing
- Fixed command node casting errors
- Fixed event handler lists not being JVM static
- Added a class and an interface to make using list config data easier
- Made everything config-related reusable and reloadable because delegated properties don't update automatically when reassigned
- This also means that the original ConfigData instance should also properly update now when reloading, although now we return the delegate
- Changed the return value of all getData() methods to allow using the result for property delegation
- This allows using the config properties like any other property in Kotlin
- Also delegating the underlying ConfigData object to the delegate (heh) so that the result can still be used from Java normally
- It does require one notable change though: using the IConfigData interface *everywhere*
- One problematic part for this is ListConfigData, as a much more elaborate IConfigData<ListConfigData<T>.List> needs to be used for list configs
- Also using the display name for MC users heh
- This allows properly implementing Minecraft chat for Discord users instead of creating fake CommandSenders
- Channel access needs to be implemented on all platforms - this could allow automatically managing who has access to a Discord channel for example
- In the future custom commands could be supported without having to connect accounts
- Also any information can be retrieved about the user when they chat, not just their name
- Don't use Command2Sender for getting Chroma users
- The CommandSender interface is a Minecraft-specific concept and using Command2Sender just adds unnecessary complexity
- Added convenience methods for getting TBMC players and the console
- Use Command2Sender for getting Chroma users
- Throw exception if a proper converter doesn't exist
- Make ConfigData non-nullable altogether, but allow for nullable type + documentation
- Converter stuff is older, config stuff is from earlier today
- Command2 stuff isn't really worked out yet
- The MainPlugin.instance field wasn't initialized when the MainPlugin was being initialized (config), so delayed the config saving until it's actually running
- Also added library to support Kotlin coroutines in Bukkit but not using it yet
- The read-only configs are no longer using a separate class, it seems
unnecessary
- The list configs got refactored so that the entire list doesn't get
recreated each time it changes
- Also added support for getters/setters for the list config, just to be
consistent
- Bumped Spigot version to 1.18.1, so we get config comment support natively
- Made getters perform a basic casting by default, this was done by the
ConfigData code before
Basically done with converting Command2
Also moved the Minecraft part of the param converter to Command2MC, although the user object getter should be made more generic
- Tab completion still needs to be fixed
- Fixed usage check existence check
- Fixed parameter number limits
- Added commands to get and remove registered commands