* 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
It used to work, but now doesn't. I've tried updating various plugins
and trying different things, but it seems that the mocking is not
working correctly. I don't know why.
* Fixes incorrect element displays in pages 1+.
The issue was introduced by #585f720f6f4a7e9480af5065469c92e23e5a987e which reduced complexity too much.
Fixes#2177
* Reformat and reduce complexity properly.
* Rework logic for getting number of same button types in the panel
* Add more comments.
* Add proper deprecated annotation.
The SimpleWorldRegenerator generated world new chunks that were not generated before.
It is not necessary, as regeneration should happen only on used chunks.
* Implements NMS for pasting and supports older versions of server
* Remove trial code that shouldn't have been committed.
* Remove trial code that shouldn't have been committed.
* Remove 1.19.3 support.
* Use 1.19.4 in POM
This solves the issue in customizable GUI's where variables are defined directly into the panel button name and description instead of providing the link to the locale.
Not all users want to specify all text into a locale, and they would not get parsed variables just because of that.
This change fixes it and it does not give any bad situations even if the reference is just missing text in the locale, as there will be nothing for parsing.
* Remove 1.18.2 from supported version list.
1.18.2 support was removed with changes in commit 056cff4b6f
Also, mark 1.19, 1.19.1 and 1.19.2 as incompatible. It happens because of GSon library changes that prevents bentobox compiled with Spigot 1.19.3 to run on older versions.
* Fixes GSON crashes introduced by migrating to 1.19.3 api.
Mostly replacing instanceof check and cast with e.g. 'instanceof Player
player'
Replaced some "switch" statements by "if" statements to increase
readability.
Used the primitive boolean check to avoid potential NPEs.
Reordered field modifiers to comply with the Java Language
Specification. Mainly @NonNull position.
* Code clean up from Sonar Cloud analysis
* Fix tests
* Remove code smell
* Rename "island" which hides the field declared at line 25.
* Removed code smells.
* Rename variable record to rec
Renamed "record" variable to not match a restricted identifier.
Restricted Identifiers should not be used as identifiers. "record" is
using in Java 16.
* Added private constructor to prevent instantiation of static class
Changed variable name to rec instead of restricted "record".
* Remove Blueprint code smells.
* Use a record for database settings constructor
Code smell: Methods should not have too many parameters. I'm not sure
what methods are using this class though.
* Update MyWorlds version
The POM for MyWorlds is invalid and causes a warning, but this still
persists with this version.
* Extracted nested try block into a separate method.
Makes it clear when reading the code what might be caught
* Extracted nested try block into a separate method.
* Fixed JavaDoc /** instead of just /*
* Extracted nested try block into a separate method.
* Refactored to not assign loop counter from within the loop body.
* Better delete option. With results.
That said, this is legacy code to handle an issue that occurred a long
time ago and this whole set of code can probably be removed.
* Catch Exceptions not Throwable
* Log error with BentoBox logError
* Use computeIfAbsent
Using these instead leads to cleaner and more readable code.
* User can no longer be null
* Added the missing @Deprecated annotation and @since ref
* Added @since reference
* Merge if statements
* Use BentoBox error logging.
* Added JavaDoc @since
* Remove deprecated class and move used class
* Remove deprecated WoodType and use Type.
* Remove unused import
* Extracted nested try block into a separate method.
* Comment empty default statement
* Clean up logic; avoid switch
* Use Java instead of Guava
* private constructor to hide the implicit public one.
* Private constructor to hide the implicit public one.
Merged if statement.
* Add comment
* if merge
* Make variable constant
* Remove unused imports
* Remove deprecated and unused method
* Remove unused import
* Typo
* Remove instanceof and cast
* Remove superfluous null check
* Put constant at bottom of file because @BONNe likes it there.
* Simplify particle validation code
* Fixes#2046. Handles null players for placeholders.
* Remove unused import
* Fixes#2049 for adjacent island spaces
This also deletes blocks in the event rather than setting them to AIR as
was done previously.
Addresses #2058
We already have a option to protect against hostile mobs when logging in
or teleporting, but not respawn. This adds protection to that. Admin can
turn off the option if they want it more hard core.
In theory, this should not be required, but it seems that a player's
world might be null in some edge cases. Alternatively, the Util.getWorld
function can return a null if the player was in a nether or end but that
does not have a corresponding overworld.
Addresses #2057
Superflat was not working properly. It was always clearing just 1 (first) chunk because it referenced the chunk from the first event that created the clearing task.
The issue should be fixed.
In 1.19 worlds it was fixed that super-flat worlds are generated at min-height, instead at 0.
This change keeps the previous super-flat chunk generation until 1.18 is dropped.
The end portals and gateways teleports players to a different dimension upon player touches it. So teleportation should consider these positions as unsafe, otherwise player will be teleported to the different dimension instantly.
Fixes#2040
This change switches from plain JDBC driver implementation to a HikariCP Pool implementation.
Pool Implementation is complete for PostgreSQL and SQLite, while MariaDB and MySQL implementation still uses JDBC drivers, however with HikariCP pools.
Also, I added extra properties for SQL databases, where users could specify their own datasource properties.
Teleportation via portals for entities was in a mixed state. It was not fully implemented and not fully prevented. Especially when portal linking was enabled.
Now I implemented world settings flag: ENTITY_PORTAL_TELEPORT.
Enabling this flag will allow entities to use portals to switch dimensions.
Fixes#2023 and #966
When players will exit the end-gate, they will be teleported to proper island, instead of world spawn point.
The only way how players can be teleported to the spawn is if they do not have islands.