Renamed the event handler for clarity and added logic to handle trial spawner interactions with cooldown feedback for players. Introduced functional interfaces for cleaner and reusable code when processing armor stand counts and trial spawner timers.
Implemented functionality to restrict the number of armor stands a player can place in a chunk based on permissions. Added configuration support for customizable limits and proper error handling for edge cases. Registered the LimitArmorStands event listener in the plugin manager.
Replaced all instances of sendMiniMessage with sendRichMessage for improved readability and consistency across the codebase. This change ensures better handling of message formatting and placeholders.
Ensure that all keys in KeyStorage are saved when the plugin is disabled. This prevents potential data loss by explicitly saving storage during the onDisable lifecycle event.
Added missing key mapping to prevent NullPointerException when no UUIDs are present in KeyStorage. Also adjusted tab completion logic in Key.java to handle cases with more than one argument.
Added missing key mapping to prevent NullPointerException when no UUIDs are present in KeyStorage. Also adjusted tab completion logic in Key.java to handle cases with more than one argument.
Introduces `KeyStorage` for handling keys and their persistence. Added `Key` subcommand to allow players to receive their keys. Updated configuration files and messages to support the new feature.
Introduced a logger to GoatHornEvent to record when a player uses a goat horn, both in and out of spawn. This helps with tracking player actions and debugging potential issues related to goat horn usage.
Implement GoatHornEvent to handle player interactions with goat horns. This feature sets a cooldown for goat horn items, if the player is near spawn or already has an active cooldown.
Implement GoatHornEvent to handle player interactions with goat horns. This feature sets a cooldown for goat horn items, if the player is near spawn or already has an active cooldown.
Removed the `printVersion` method from `PlayerUtils.java` and eliminated the `gradle-git-properties` plugin from `build.gradle.kts`. These changes simplify the project setup by removing unnecessary Git version logging dependencies.
Upgraded the project to use Java 21 instead of Java 17 in the toolchain configuration. Also updated the Galaxy-API dependency to version 1.21-R0.1-SNAPSHOT.
Introduce a Jenkinsfile to automate the build process using Gradle. The pipeline consists of three stages: building with Gradle, archiving artifacts, and sending build notifications to Discord. This integration enhances the CI/CD workflow by ensuring consistent builds and timely notifications.
The update primarily eradicates numerous debug logging lines in the RotateBlockEvent class. This cleanup improves the readability of the code and enhances performance by reducing unnecessary logging operations. The "toggleDripLeaf" and "toggleTrapDoor" methods have also been updated to verify block data.
Debug logs were added to the RotateBlockEvent class. These logs will help track the flow of various states and actions, such as the current material and action type, whether the block is a trap door or a drip leaf, among others. This enhancement will assist debugging by providing more visibility into the state of the application at runtime.
Updated block interaction behavior for IRON_TRAPDOOR and BIG_DRIPLEAF_PLACEABLE to allow their state to be toggled. Added the use of git properties to build.gradle.kts, allowing insightful git information such as commit id and time to be retrieved and printed.
In addition to checking if a player is on a vehicle, the update now also checks if the distance between the player's current location and the teleport destination is more than 5 blocks. If that's the case, the teleportation is cancelled.
The import statements were simplified to import all block data types at once. On block click, the event listener now checks if the block being clicked is a Big Dripleaf and toggles its tilt accordingly if it is. It also ensures player permissions to build before attempting the toggle action.
Method 'toggleTrapDoor' has been added to the RotateBlockEvent class. This function allows players to open and close trapdoors by left-clicking on them if the block is an instance of a TrapDoor. The original behavior of the block will be preserved when the player does not have build permissions.
The TeleportEvent has been updated to prevent players from teleporting while riding or seated in a vehicle. Instead of dismounting the player and adjusting the destination's coordinates, the request is now simply cancelled and a message is sent to the player, explaining why the teleportation was not completed. This change improves the clarity of the situation for the player and fixed the glitch that lets players teleport into places they shouldn't be.
The update introduces a new TeleportEvent which modifies teleport behavior for players who are mounted by dismounting them and changing their teleport location to be one higher. Also, the event registration process within the PlayerUtils class has been refactored for better readability and additional registration of the new TeleportEvent.