* Fix hanging [uuid] in info.
* NPE checking
* Make getProtectionCenter nonNull
* More NPE fixes.
* Fix test
* Make getPlayer() and getOfflinePlayer() nonNull returns
This requires addons to not use null checks and instead us the isPlayer
or isOfflinePlayer methods.
* NPE blockers
* Deprecate CompositeCommand isPlayer method.
* Fix test
* Requires nonNull parameters for User.instanceOf
The only reason why User.instanceOf was returning a potential null was
if the parameter was null. Further absolutely no null checking was being
done, so the assumption was that User.instanceOf should never return a
null. This corrects the annotations and requires non-Null parameters.
* Remove null player test
Home teleporting is async so it's possible to issue the command multiple
times. This puts a flag in so that if a playeer is mid-teleport, then
issuing the go command will just repeat the text that the player is
teleporting home.
https://github.com/BentoBoxWorld/BentoBox/issues/1637
* StringBuffer (Java 5) may be declared as StringBuilder
* Replace map with flatMap
* Use instanceof naming
* No need to specify paramter types.
* Remove verbose code
* Fix JavaDoc issues
* Make internal class a record.
* Remove unused import.
* Make internal class a record.
* Made internal class a record.
* Removed unused import
* Fix typos
* Fix typo in test.
* 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.
This commit contains 2 changes:
- An option for Flag to use icon that is defined in locales after "icon" string.
- An option for ItemParser to parse icon or return given value, if parsing was not successful.
The flag option is not ideal, but it is simpler and easier to maintain then adding new config section where icons can be changed, as the locales file already contains a lot of info about each flag.
* Improve ItemParser code.
Add ability to parse text if Material is just a single string.
Add ability to parse player heads.
Add comments to the code.
* Fixes failing test.
* Java 16 preliminary branch.
This compiles, but junit tests fail all over because there is a lack of
Java 16 support right now.
* Use Java 16
* 1.17 WIP
* Require 1.17
* Fixes tests.
* WIP fixing tests
* Exclude maven from shading
* Try update snapshots to build action
* Try repo on command line
* Remove reference to shade plugin in dependencies
IslandsManager.getIslandLocation(world, uuid) is used to find the
starting point for the island home if a safe home for players cannot be
found. It returns the island center location but should return the
center of the island protection because that can now be in a different
location.
* Switch to island homes from player homes.
Stores home locations and max homes in the Island object. Adds commands
required to manage home names, specifically rename and delete. I did not
add list as there is tab complete on island go, but it may be required.
* 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.
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
* 1.16.1 changes
* Fixed failing tests in PhysicalInteractionListener
HOWEVER, the code somehow no longer protects the pressure plates... I'm investigating that.
* Implemented future-proof buttons, doors, fence gates, trapdoors protection
* Protected REDSTONE_WIREs under "REDSTONE" flag
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1421
* Fixed bug with pressure plates
* Fixed params order in assertEquals in PhysicalInteractionListenerTest
* Fixed EnderChestListenerTest errors
* Fixed most errors in BlockInteractionListenerTest
* Added 1.16.1 to ServerCompatibility
* Fixed BlockInteractionListenerTest
* Fixed backwards compatibility in BlockInteractionListener
Also made use of existing Tags (ANVIL, BEDS, SHULKER_BOXES)
* Fixed BlockInteractionListenerTest (again)
* Fixed backwards compatibility in PhysicalInteractionListener
Co-authored-by: Florian CUNY <poslovitch@bentobox.world>
The no permission error was being added, but thats wrong because it's
not lack of permission but lack of rank that is the issue. This adds a
new error and shows it in the various commands.
Only owners could invite players successfully. This now checks based on
rank.
Added a method to allow rank checking on UUID. Had to make tests be
specific to the User.class.
https://github.com/BentoBoxWorld/BentoBox/issues/1377
* Uses perform command instead of direct call.
Goal is to enable 3rd party alias plugins to catch the command.
* Fires PlayerCommandPreprocessEvent before performCommand
Adds a / to the front of the default player commands.
Fixes issue with MyCommand plugin.
* Fixes tests
Implements #1303.
Addons will no longer need to see their permissions updated each time there is a new gamemode. They can use [gamemode] in their permissions to automatically register the permissions on all available gamemodes.
It was increasingly causing issues, ranging from long start times, unreliability with some of our placeholders, to much more...
There's a way for MVdWPAPI users to get PAPI's placeholders, so they should definitely use that instead.
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1221
The original code could actually never work because the check for
whether a player had played before or not was occuring immediately after
addPlayer, which added the player to the server. Also, the code to run
was running in a thread and not on the main thread, so if it had run
could have caused errors.
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1202
Black is a default color so there can be a mismatch between the
inventory title and the expected title if colors are used. In general,
it is safer not to check colors for GUIs.
This event gets called prior to an island being cleared of players and
other data. This can happen before a reset or an admin delete. It is
there so addons can perform tasks on the players before the island is
cleared.
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1200
It wasn't catching breeding with some newer animals (Pandas, Foxes...), was a bit overprotective (it could prevent feeding some animals), or wasn't catching some breeding items (Golden Carrots, ...).
I rewrote it so that every animal is now protected with the foods that actually make them breed (based off the MC wiki page about Breeding).
Once we will move to 1.15 API, we will have to add BEES in that.
even if the offline redstone flag is active and no team members are
online. This enables staff to bypass the "Offline Redstone" feature,
which means if staff need to moderate players islands then redstone is
an issue.
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1102
Implemented https://github.com/BentoBoxWorld/BentoBox/issues/1072
Moved the various "invalid-value" messages to the admin range node in en-US.
Made AdminRangeSetCommand use the more generic 'must be positive number' message - causes issues with floats, which I will fix later on.