Previously, when all Addons were Addons and men were men, the
DataObjects could be tracked using the BentoBox custom ClassLoader.
However, as Addons now can be and usually are loaded using the Bukkit
Classloader, this is no longer possible. However, we can track them when
a Database class is instantiated and use that. This relies on Addons
declaring their database objects. If they have not when the migration
command is run, then obviously they cannot be transfered.
* WIP to having admin setting world based on the command
and not the location of the user.
* Make world settings depend on the world of the command
Previous code based world on the location of the user when they ran the
command.
* Remove unused import
* Fix JavaDoc
* Remove unused import.
* WIP - add GUI for teams.
* WIP teams GUI
* Moe WIP on team GUI
* Modified file to avoid an NPE.
* Minor refactor to prevent int to Integer warning.
* Use latest dependencies for tests to pass.
* Move to singleton pattern for RanksManager,
* Team GUI WIP
* Added support for kick, setowner, and leave.
* Added support for accepting and rejecting an invite.
* Fixed bugs with text and operations.
* WIP for team invites.
* Adds inviting to the GUI.
* Fix tests
* Fixed minor bugs reported by SonarCloud
* Up Minecraft version and paper to 1.20.4 in POM
* Added features based on Discord feedback.
1. added some lore to the invite button to explain the players shown are
from the game world
2. removed the team state in chat
3. added a search to the invite panel
* Added back button.
Refactored some code and templates.
* Fixed bugs with teams and uncoop untrust etc of Ops.
* Return to name search GUI if name not found.
* Added return to GUI for player search
* Use Path.of
Enable Tab object to reference parent TabbedPanel in the builder. It is
late assigned after building. This enables tabs to get the parent, and
therefore get the Island object.
default methods were used to support backward compatibility.
Spigot JavaPlugin#saveResources either replaces or complains that replacement is disabled. So it is necessary to check if file does not exists before saving it.
Fixes#2259
* Fixes ItemParser.
Implements new Potion and Skull parsing.
Fixes custom model data parsing.
Implements ItemFactory#createItemStack parsing that parses item using `/give` syntax.
Solves some issues mentioned in #2198
* Fixes failing BentoBoxLocaleTest
In runTime ItemFactory#createItemStack from invalid text would throw IllegalArgumentException.
JAR files does not store files inside it with filesystem separator. Only spot where it makes sense to transform "/" into file separator is in output file saving.
* Customizable Island Creation Panel
This implements customizable Island Creation Panel. By default, panel is generated in `/plugins/bentobox/panels` folder, however, if GameModeAddon has a specific panel defined in their folder, then that panel is taken.
* Create UnitTests for new panels
* Add island creation panel saving on loading
* Remove old IslandCreationPanel and move to the new one.
* Fixes some issues with locale and panel
---------
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
* Customizable Language Selection Panel
This implements customizable Language Selection Panel. By default, panel is generated in `/plugins/bentobox/panels` folder, however, if GameModeAddon has a specific panel defined in their folder, then that panel is taken.
* Migrate LanguagePanelTest to customizable panel.
* Remove original LanguagePanel
* Save language_panel.yml on server starting.
* Fixes some bugs in LanguagePanel.
* Adds an ItemAdder hook to delete any blocks when island is deleted.
Also includes a flag for explosions.
* Make the error reporting method non-abstract.
This is not a mandatory method for many hooks.
* Delete this class as it is not used any more and just duplicate.
* Added test class.
* Minor issues resolved.
The obsidian platform was not generating constantly in the same spot. It was moving depending on the entrance point (from the sides).
This code changes it, as it will move through relative blocks.
Also, this change will sync portal and platform center points, which was not done previously.
Fixes#2239
The addition of a null check in the Enchantment Bukkit code causes a lot
of test failures. While we work out how to mock that particular area,
this code avoids running Enchantment code when under test.
There was a bug in the code that prevented to finding of a portal location if the player entered from the side.
It can happen only if the portal frame is removed, but as in vanilla it is possible, then it needs to be addressed.
The fix itself is simple: instead of checking just up from the starting location, the code will check all blocks in 10x10x10 square from the starting location and find the "closest" portal location.
This will fix#2237
There was a bug that used old code (environment switching) for teleportation out of dimension.
The issue should be fixed with calling just calling teleportation with portal environment.
* Fixes bug with island team joining and deletion. Include debug.
* Remove ambiguous API with mutli-island.
* Add back deprecated methods so developers can be wartned not to use them
* Added back in deprecated methods.
* Fix bugs and NPEs.
* Fix some code smells
* Remove debug logging.
* Put ranks in the database. Prework for #1798
* Prevent coop and trust commands from being registered
if those ranks don't exist.
* Add /bbox rank command for ranks management
* Rename RanksObject to Ranks
* Strip / on commands if it exists. Fixes#2221
* Fix test failure
There was incorrect teleportation type detection, as target world were set to NORMAL. This prevented to detect that portal in opposite side exists, and should be linked to the correct position.
* Fixes a bug that removed old owner from island
These changes fix a bug that was introduced by clearing the island cache from the old owner for 2.0 verison.
This will set the previous owner as sub-owner on the island.
* Fixes rank on event fired.
Changes from Visitor to Sub owner rank
* Update IslandsManager.java
Removes line that removes player from cache.
They should remain in the cache.
---------
Co-authored-by: tastybento <tastybento@users.noreply.github.com>
Potions are no longer extended or upgraded using the deprecated
PotionData. They have explict names, like "long_night_vision" or
similar. So these tests don't work any more.
The world was not being used for the getOwner return so if a player had
an island in any world then it was returned. This caused an NPE if the
island was then requested by getIsland because it would not be there.
* 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