* Multi world WIP - stashing
* Initial work on supporting multiple islands per player
The default allowed number is 5 for now, but will be set to 1 by
default.
Lots more work to do on this!
* More work on multi island. Fixed tests so clean compile.
* Remove unused imports
* Updated island go and homes command to multi island
Updated tests.
* Do not reload addons anymore.
* Add island name when entering or leaving own island
* Remove unused import
* Adds island names to /island go command.
* Enables more homes to be set if player has more than one island
* Switch to using a set for islands and explicit primary boolean in Island
* WIP
* Fix bugs with the go command.
* Be able to delete multiple islands, e.g. when joining a team
This is not fully tested.
* Do not remove all islands when a player does reset.
Players can reset just the island they are on.
* More fixes for go command
* Fix tests
* Fix @NonNull annotation
* Fix home syntax listing reference for IslandDeleteHome
* Fixed deletehome for multiple islands.
* Fix /island command teleport to current island default home.
* Remove deprecated code.
* Fix tag for concurrent island setting in config.yml
* Improve error when trying to make additional islands over limit
* Update config.yml
* Correctly assign invites for islands.
* Switch to canExecute API in prep for multi-island handling
* Prevent players from obtaining more concurrent islands by owner transfer
* Handle leaving and disbanding of teams
* Fix tests
* Fix minor bugs or code smells.
* Restore the quarantine code from deprecation.
This code can stay. It checks if islands can load, and if not puts them
in a trash. It does no harm.
* Remove unneeded eq()'s
* Fix tests
* Mark all home-related methods in PlayersManager as deprecated.
* Fix bug where maxHomes was shown as null
* Version 1.18.0
API changes may break compatibility with Addons.
* Remove usage of deprecated methods except for migration code.
* Prevent NPE. Check isPlayer instead of getWorld() == null
* Fix nullability issue and added to @Deprecated annotations
* Added deprecation notices to home methods in Players
* Make variables final if they can be.
* Do not use final so that test can pass.
For testing, we use a trick to set this variable, but it won't work if
it is final. Right now, I'd like to keep the test.
Previously only UUID was checked, but joining with a name and different
UUID is possible. This clears out the cache so commands that look up
names like ban do not use the old UUID.
https://github.com/BentoBoxWorld/BentoBox/issues/1468
* Implements Basic/Advanced/Expert settings panels
Better alternative to https://github.com/BentoBoxWorld/BentoBox/pull/887
* Remove StatusIcon class - not used.
* Fixes glow of active tab.
* Moved FlagMode to Flag.Mode
* Display the LOCK flag no matter what the tab is
* Made the "mode" being saved for the player instead of per-tab
This means that a player will have its "mode" saved when he comes back later in the Settings Panel while also making the navigation more fluent - he won't need to set PROTECTION and SETTING to the same mode everytime.
Also renamed Flag.Mode#getNextFlag() to #getNext()
Added PlayersManager#setFlagsDisplayMode(UUID, Flag.Mode), #getFlagsDisplayMode(UUID)
* Play a sound when click on the mode button
* Added a description to the "mode" item
* Modified the mode for some flags
https://github.com/BentoBoxWorld/BentoBox/issues/535
due to race conditions with task timers and incorrectly shared field
variables, islands would not paste completely if pasted every tick.
Now pasting is handled in its own class with a new instance created with
each paste.
Island deletion is done a few chunks at a time per tick. Current speed
is 5 chunks per tick per world (e.g., 15 chunks per tick if nether and
end islands are used).
Chunks are deleted based on the all-time maximum protection range of the
island. This is because the protection range can grow bigger or smaller
over the island's lifetime. To ensure all possible chunks are erased,
the largest every protection range is remembered and used.
Very large protection ranges will take a long time to fully delete.
Info on islands that are being deleted is stored in the database. If the
server shuts down mid-deletion, deletion will restart when the server
restarts.
While an island is being deleted, new islands cannot occupy that spot
and the spot cannot be reserved by the admin.
In addition, async approaches to island saving and player saving were
removed. Async will be implemented another way.
Now, instead of saving the full island or player database, individual
database entries are saved instead to be more efficient.
Hopefully, this is the last API breaker. I renamed the classes that
started with BSB to be just BB (bentobox). I now have to fix all the
add-ons I just broke...
This API enables any command to have a cool down and to have that cool
down called by another command. For example, the Kick command sets the
cool down on the Invite command. It is possible for commands to set cool
downs on themselves too.
Currently, cool downs are not stored persistently in the database so
they disappear if the server is reloaded. This should be okay for now.