* Adds maxMembers to the Island object for persistent storage
https://github.com/BentoBoxWorld/BentoBox/issues/1690
* Expanded approach to include coop and trusted ranks.
* Checks for max members/coops/trusts on accept based on island setting.
* Write island max member/coop/trusted if owner joins server
This updates the island's settings based on the owner's permissions.
Panel API did not have this context so commands had to force players to
be in the world that the command used. These changes add the world
context to the PanelBuilder and changes the settings panels to use it.
Players and admins can now run settings commands in any world.
https://github.com/BentoBoxWorld/BentoBox/issues/1673
* Decouple island location from island center.
This enables the protection area to move anywhere within the island
boundaries
* Paste island at island location.
* Move visitors to the island location
* Added island location placeholders
* Use island location instead of island center
* Fix tests
* Allow radius 1 islands.
* Correct admin range set limit
* Debug in progress
* Fix island deletion.
The speed option was doing nothing except causing repeated actions on
the same chunks.
* Soft depend for WorldGeneratorApi for Boxed game mode
* Changed to "protectionCenter".
Added logic to expand the deletion area based on moving the island
protection location and range instead of just deleting everything. This
will keep deletion time to a minimum for BSkyBlock, etc.
* Fix tests.
* Add WorldSettings methods for portals
* Vanilla portals option added.
Currently defaulted on for testing. Ultimately, the game mode config can
decide if the vanilla portal is used or not.
Note that the end platform is just a set of obsidian blocks.
* Reduces search radius when close to island edge
* Adds and fixes tests
* Use EntityPortalEnterEvent instead of PlayerMoveEvent
* Removed duplication between nether and end portalling
* Code clean up
* Single event handler for nether and end.
* Created new PlayerEntityPortalEvent class to enable entity teleports
Unfortunately, PlayerPortalEvent and EntityPortalEvent are not fraternal
classes so there's no way to apply code to both except via this
abstraction class.
Tests fail.
* Places end portal always in the same place.
* Teleport entites to nether or end
Identify the teleport cause manually because there is no method.
Teleports to the End happen but seem to be slightly different locations.
Some entities will disappear, others will stick around. I don't know
why.
* Put defaults back to false.
* Create end spawn point to default point when not making end islands
* Fixed PortalTeleportationListener tests.
* Updated since tag
* Improves the meta data API for Island
* Unified API into MetaDataAble Interface
All classes now use the same interface and Optionals. Reduces code
duplication and makes the API the same across the board.
* Version 1.15.6
Fixed since JavaDocs
This is modeled after the Bukkit metadata API with the difference that
it is persistent, i.e., metadata is stored to the database. Metadata can
be placed on Islands or Users.
This API should be useful for addons that do not want or need to create
their own database tables and instead just want to tag the user with
some data, or tag the island with some data. It is intended for small
amounts of data, like boolean tags or other values.
* Break out events and add individual handlers
https://github.com/BentoBoxWorld/BentoBox/issues/1613
* Corrected AddonEvents to have proper static handlers
* Made constructors protected.
Abstract classes should not have public constructors. Constructors of
abstract classes can only be called in constructors of their subclasses.
So there is no point in making them public. The protected modifier
should be enough.