https://github.com/BentoBoxWorld/BentoBox/issues/731
Issue was that classes were not being fully removed from class loaders
and commands needed to be unregistered from Bukkit. For the latter,
reflection was required to obtain the knownCommand map and change it
because there is no Bukkit API to unregister commands.
Adds cooldown to island leave command.
Tries to mitigate cooldown bypassing by players who change island owner
or use subowner or members to issue invites instead of owner. Now the
cooldown is based on the island ID itself.
Original API's are kept for compatibility with addons that use
cooldowns.
Relates to https://github.com/BentoBoxWorld/BentoBox/issues/727
Related to https://github.com/BentoBoxWorld/BentoBox/issues/680
Redoes commit
095237cd5db3b7169df1275759c885b42d9d8d45#diff-fee448dd4d94f3c5faaab7655c47682c
Unknown flags in the database are now handled correctly. Added a test to
confirm correct operation.
* A prototype for Blueprint bundles and blueprints
This stores blueprints inside bundles. Each bundle can have up to 3
blueprints defines by the World.Environment.
This is not a finished manager. It just handles all the saving and
loading side of things. I thought this would help you so you can then
concentrate on the UI.
* WIP: Copy blocks to Blueprint done.
* WIP Pasting done.
* WIP: Added BlueprintsManager to ultimately replace SchemsManager.
* Moved blueprint suffix and changed to .blu
* Fixed unit test.
* Now tested and working.
Integrated with new island and resetting island.
If there are no blueprint bundles or blueprints then a default bedrock
set will be made and put in the game mode addon's blueprints folder.
Still to do: enable schems to be loaded and pasted for legacy support.
Add blueprints and a bundle to GameModeAddons like BSkyBlock.
* Renamed most of the classes
* Cleaned up clipboard and paster.
* Further cleanup on blueprint clipboard and paster.
* Merged blueprint classes into one package.
* Put Blueprint data objects in their own package.
Isolated schems classes for later removal.
* Renamed admin command classes and changed locale files.
* More clean up to remove schems
* Schem to blueprints converter done.
Converts schems to blueprint bundles and sets up a default set. Tested
the happy-path. Need to do more testing on edge cases.
* Added basic UI for development. Fixed bug with schem conversion.
* Adds permissions into the blueprints.
Fixes tests, cleans up some naming
* Added IslandCreationPanel and created BlueprintManagementPanel
* Fixed JSONDatabaseHandler's constructor being public
* Made the Blueprints button in ManagementPanel open the Blueprint management panel
* Fixed tests and ignored one (NPE)
Addons need to declare themseves when they register a flag so that the
flag listener can be reset. Note that this is not mandatory unless the
flag declares a listener
- JSON is now the default database type
- JSON database files are now pretty-printed
- It is now possible to migrate from a database type to another through the use of a command and specific transition database types
- It is recommended to move from YAML to JSON.
= Commits breakdown =
* Proposal to make JSON the default database and retire YAML.
* Make JSON file format easier to read.
* Fix tests.
* Adds a hybrid Yaml2Json database type.
This database always tries to use JSON if it is available. If a YAML
file is found, it will be loaded and replaced with a JSON file.
* Move to generic database transition code
* Better comments
* Adds transitional database options so admins can choose.
Adds Yaml2MySQL option and changes config.yml to add instructions.
* Enables full database migration between databases.
Adds /bbox migrate command.
Adds a number of transition databases. DB starts transition when the
server boots up and will migrate organically. The admin can force an
immediate update using the bbox migrate command.
This operation requires an API breaking change: Addons that use the
Config API must now implement ConfigObject in their config class instead
of DataObject. This is to differentiate YAML config classes from YAML
database classes. If a class is already implements WorldSettings
(GameModeAddons), then no change is required because WorldSettings
implements ConfigObject now. If an old addon is used that does not
implement ConfigObject, BentoBox will not load.
* Added null check to YAML deletion
* Removed the 2YAML transition dbs because YAML is deprecated.
YAML does not support some data structures so conversion could corrupt
data.
* Fixed some javadoc and added missing DatabaseType#JSON2MARIADB
* Renamed package database/transitiondb to database/transition
* Refactor of clipboard to separate out file saving/loading
There's now a clipboard manager to handle file system loading and saving
so that the clipboard works purely in blocks (YAML).
* Fixes a few bugs
* Renamed getClipBoard to getClipboard
* Version up 1.4.1-SNAPSHOT
* Sets pos1 and pos2 after pasting a loaded schem
Corrects version name in POM.
* Shifted schem name validation into SchemsManager
* Saves world settings to config.yml when they are changed mid-game.
* Fixes and adds to tests
* WIP: Added visibility settings for flags.
Tests still need to be fixed and requires saving to config.yml.
* Fixes tests
* Completed changes.
* Renames method to be hidden flags instead of visible settings
GameModeAddons will need to adjust WorldSettings API based classes.