New Features
- 1.21.2 & 1.21.3 Compatibility: Updated to support Minecraft versions 1.21.2 and 1.21.3.
- Sponge Platform Support: AntiHealthIndicator now runs seamlessly on Sponge-powered servers.
- PacketEvents 2.6.0 Compatibility: Compatibility with PacketEvents 2.6.0.
- BetterReload Integration: Added support for BetterReload.
Improvements
- Runtime Configuration Reload: Use
/ahi reload
to dynamically reload configurations without server restarts. - Rewritten Command Logic: Commands have been completely rewritten.
Fixes
- Scoreboard Packet Bypass: Resolved an issue where some clients could bypass protections through scoreboard packets (triggered by certain bad plugins).
Permissions
- New Permission Node: Added
AntiHealthIndicator.Reload
for managing reload access.
Full Changelog: v2.2.4...v2.3.0
- Fixed: Getting kicked upon entering a boat
- Chore: Cleaned up some old code
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v2.2.3...v2.2.4
Minecraft 1.21 Support
- Added Minecraft 1.21 Support
- Fixed an issue on Bungeecord where the wrong indexes were being applied.
- Fixed the Bungeecord version of AHI didn't require PacketEvents as a dependency
- Reworked the UpdateChecker and version class
- Removed unnecessary commands
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v2.2.2...v2.2.3
Bug Fix
Fixed: #10, when enabling players-only
, it ended up not spoofing anything.
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v2.2.0...v2.2.1
New Release: Proxy Support and Cache Rewrite
Proxy Support
We are happy to announce that our plugin now supports proxy servers, including Velocity and BungeeCord! To use the plugin on your proxy server, simply download the latest release and place it into the plugins directory of your proxy. Ensure that the PacketEvents plugin is also installed on your platform. Once set up, the plugin will automatically take care of all your backends. You won't need the plugin on your backend once installed upon the proxy.
Cache Rewrite
This update also introduces a significant overhaul of our cache management system. Previously, a single cache was maintained for the entire server, retaining entities until they were explicitly removed. This led to inefficiencies, especially when entities remained cached unnecessarily due to the potential for client-side demand.
To support proxy servers, we completely rewrote the cache manager. Now, each user has their own cache, addressing the challenge of server-specific entity IDs and user server-hopping. This user-centric caching relies entirely on packets, eliminating the need for platform-specific methods to track entity spawning and removal. Entities are promptly removed from the cache when your client receives a packet indicating they are out of render distance, etc, dramatically improving cache size and lookup speeds.
With this new approach, we no longer require the Caffeine Library, reducing the plugin size from 1.06MB (1006KB) to a mere 74KB. As the saying goes, "Size doesn't matter, but rather what you do with it." We have surely taken that seriously. 1 Jar, 3 Platforms (and forks), hundreds of different versions across all platforms. All of that is in a single jar of 74KB.
Acknowledgments
This release wouldn't have been possible without the invaluable contributions of the following individuals:
- @Tofaa2: Instrumental in supporting Velocity and redesigning the cache system.
- @Booky10: Provided essential tips and insights for developing the packet-based entity tracker.
- @Abhigya: Assisted in redesigning the Gradle Build Chain.
- @AlexDev: Offered numerous optimization suggestions and guided the configuration manager rewrite.
Thank you to everyone involved for your support in making this release possible!
Kind regards, Bram
Changes
- Added: Support for 1.20.5 & 1.20.6 (we now support 1.8.8-1.20.6)
- Added:
/AntiHealthIndicator
or/ahi
command, which displays the current plugin version. - Updated: PacketEvents from
2.2.1
->2.3.0
- Fixed: Possible temporary netty thread freeze upon entering or leaving a vehicle.
- Removed:
FoliaScheduler
, because it has been merged upstream into PacketEvents.
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v2.0.1...v2.1.0
- Fixed: #8, where when leashing a ridable entity your own health was being spoofed.
- Fixed: Relocation issue with PE
AntiHealthIndicator Plugin v2.0.0
Introduction
We're excited to announce the release of AntiHealthIndicator version 2.0.0! This major update brings significant improvements and enhancements to the plugin.
-
Modular Architecture: Instead of a single module, we've split the logic into a common module and platform-specific implementations. This approach makes maintenance easier and sets the stage for future support of additional platforms like Velocity.
-
Dependency Shading: Removed Adventure, Gson, and BStats from the dependencies and moved PacketEvents to provided. The reason I choose to no longer shade PacketEvents myself is because the library is greatly growing in popularity and if each plugin shades their version of PacketEvents the server performance will be heavily impacted because of that. The total plugin size has been reduced from 2.9MB to 1.07MB! 😄
-
Platform Independence: Our goal was to be as platform-independent as possible. To achieve this, we've moved away from Bukkit Events and now rely solely on raw packets. This change ensures better compatibility across different server software.
-
Performance Boost: We've achieved extreme performance improvements and fixed memory leak issues throughout the codebase. The new CacheManager is much more efficient and reliable.
-
Enhanced Vehicle Bypass: Now, all ridable entities (not just horses) are excluded from being spoofed when a player rides them.
-
Players Only Option: You can now choose to hide health and other metadata only from other players, greatly reducing the cache size.
PacketEvents
Make sure that because we no longer shade PacketEvents ourselves you install the latest version found here: https://ci.codemc.io/job/retrooper/job/packetevents/lastSuccessfulBuild/artifact/spigot/build/libs/packetevents-spigot-2.2.1.jar
Changelog
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v1.1.3...v2.0.0
Credits
Big thanks to @Tofaa2 for making this release possible. He helped me with all my stupid questions and has contributed a lot to this project!
Changelog
- Fixed: #3, IllegalStateException on Folia-based servers that occurred due to accessing the state of an entity from another region thread than the one who owns the entity.
- Improved: Build Steps in the README as discussed in #3. Gradle is no longer a prerequisite as it now makes use of the internal Gradle wrapper.
- General Small performance improvements
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v1.1.2...v1.1.3
- Removed: Custom scheduler, and switched to the one provided by PacketEvents.
- Fixed: In-game update notification being partly broken on newer versions. The plugin will from now on use the Chat Component provided by Adventure across all supported Minecraft versions.
Full Changelog: https://github.com/Bram1903/AntiHealthIndicator/compare/v1.1.0...v1.1.1
Changelog for Version 1.1.0 - Release Highlights:
Enhanced Iron Golem Support:
In prior versions, Iron Golem health underwent spoofing, similar to other entities. However, starting from version 1.15, Iron Golems now showcase a visual texture within a specific health range, aligning with their actual health and crucial for maintaining vanilla behavior.
Introducing two new options to address this:
-
Ignore Iron Golems: Enables users to exclude Iron Golems from health spoofing entirely, preserving their authentic in-game state.
-
Gradual Option: For those who wish to spoof health while closely adhering to vanilla behavior, this option ensures that the client displays the maximum health texture based on the golem's real health. For instance, if an Iron Golem has 75 HP, it visually appears as if it has 100 HP. When the health drops to 74 HP, the modification maintains the displayed health at 74 HP, preserving the accurate texture without revealing excessive detail. This approach nearly replicates vanilla behavior while allowing for health spoofing.
These enhancements provide users with greater control over Iron Golem health representation, striking a balance between customization and maintaining the integrity of the game's original design.
Bug Fixes:
-
Netherite Armor Durability Bug: Resolved an issue within the PacketEvents library that caused netherite armor to be excluded from the durability spoofer. Further details can be found here.
-
Death Animation Bug: Addressed a bug in the health spoofing mechanism that caused a glitch in the death animation of entities, making them appear alive until they disappear after half a second. Now, the modification exclusively spoofs the health of entities with more than 0 HP, preventing the visual bug.
Internal Plugin Structure Rewrite:
The entire foundation of the plugin underwent a comprehensive rewrite, significantly enhancing stability and performance. This overhaul aims to improve overall maintainability and project structure, ensuring a more robust and efficient foundation for future development.
For a detailed list of changes, please refer to the full changelog.