* Fix typo in island gui
* Add glow for challenges that are completed.
* Enhance ore generators to generate the ore when the block is broken.
* Fix worlds not unloading.
* Fix generating ore for obsidian.
During early game if there are less then 10 islands the IntStream.range fails. We add Math.min to either select the amount of islands available or a top of 10.
Implement a challenge system. This allows players to work towards them and add some goals to reach.
Demo challenges are included in file challenges.yml. This should provide details on how to create your own challenges.
---------
Co-authored-by: Teriuihi <teriuihi@alttd.com>
* Add island name checking and renaming functionality
Added a method in the IslandData class to check for duplicate island names and a new class IslandName to handle island name-related commands. These changes allow players to rename their islands while enforcing uniqueness and certain length restrictions on the names.
* Update island name in island data cache when renamed
Modified the 'islandName' method in the 'Island' class to make sure that any changes made to an island's name are also updated in the island data cache. This ensures that all references to the island's name are consistent and accurate throughout the application.
* Add IslandTop command with refresh cooldown
The "IslandTop" command has been added. This provides a sorted list of top-performing islands. A configuration for refresh cooldown was also added. The sorted island list is updated once the specified minutes in the configuration have passed to improve performance. The ranking display for the player's island is highlighted in green text.
* Update IslandTop command
On plugin startup the IslandData is now loaded in. IslandData was moved to its own file and gets updated when a new island is created or when one levels up. The IslandData gets deleted when the owner leaves the island, destroying it.
* Update island name formatting in IslandData
The method which formats island name in IslandData class has been updated. If the island name is null, it now defaults to "Unnamed Island". This adjustment makes the information clearer when the island name is not defined.
* Set default name for islands during creation
Ensured that the 'owner' method in the 'Island' class set's the island name when an owner is set/changed. This will only happen if the island name is either null or blank. This is done to ensure island's always have a name when created.
* Refactor island and island player classes to interfaces
Refactored the existing Island and IslandPlayer classes to interfaces and created the implementation classes, IslandImpl and IslandPlayerImpl.
* Add event handling for player island actions
Implemented new event classes for handling player activities related to islands. These include IslandPlayerJoinEvent, IslandPlayerLeaveEvent, IslandPlayerJoinIslandEvent, and IslandPlayerLeaveIslandEvent, facilitating better tracking and handling of player actions on islands for other plugins.
* Implement Island interfaces in IslandImpl and IslandPlayerImpl
Updated the IslandImpl and IslandPlayerImpl classes to implement the Island and IslandPlayer interfaces respectively.
* Refactor IslandPlayer Interface
Removed player() method and added islandOwner() method in the IslandPlayer interface. This change reflects way the IslandPlayerImpl currently works.
* Implement event triggers for island join/leave and server join/leave events
Added triggers for IslandPlayer events in the relevant island management methods. Also, modified IslandPlayerJoinEvent and IslandPlayerLeaveEvent to remove unnecessary references to Island-object.
* Reverting in events
* Replace interfaces with records in event parameters
The commit replaces the usage of interfaces Island and IslandPlayer with record classes in event parameters. It also adds methods to convert instances to respective records in Island and IslandPlayer classes. The interfaces are then removed as they are no longer needed.
* Replace interfaces with records in event parameters
The commit replaces the usage of interfaces Island and IslandPlayer with record classes in event parameters. It also adds methods to convert instances to respective records in Island and IslandPlayer classes. The interfaces are then removed as they are no longer needed.
Fixed the accept function in the 'VisitRequest' class by adding teleportation to the island of the target. Additionally, validation checks for this were added. Specifically, it now verifies the existence of both the player and the requested island before carrying out the teleportation command.
Updated the Player Experience Display in the UpgradesGUI to show both the current experience of the player and the experience required to level up. This provides a clearer oversight for players on their progress towards the next island level. This changes only affects the user interface.
* Add IslandTop command with refresh cooldown
The "IslandTop" command has been added. This provides a sorted list of top-performing islands. A configuration for refresh cooldown was also added. The sorted island list is updated once the specified minutes in the configuration have passed to improve performance. The ranking display for the player's island is highlighted in green text.
* Update IslandTop command
On plugin startup the IslandData is now loaded in. IslandData was moved to its own file and gets updated when a new island is created or when one levels up. The IslandData gets deleted when the owner leaves the island, destroying it.