StoneLib 2.1.0
StoneLib 2.1.0 substantially expands the shared toolkit available to Anchorlight plugins, with new systems for events, regions, shops, displays, networking, world interactions and cross-server communication.
New
- Event clocks and scheduling. New event utilities provide start/end windows, live progress, remaining time, event-day calculations and temporary simulation controls for testing timed events.
- Population-based scaling. Shared objectives can now scale against player population while preserving progress already made. A rolling population window prevents targets unexpectedly shrinking when players log off.
- Region toolkit. New cuboid regions, chunk-indexed lookups, player enter/exit tracking and two-point selection tools make spatial systems significantly easier to build.
- Safe block operations. Plugins can fill and clear regions without blindly overwriting existing builds, including checks before world changes are made.
- Reusable shop framework. Config-driven categories, items, menus, pagination and limited stock can now be shared between plugins, while individual plugins remain responsible for their own currencies, conditions and rewards.
- Progress and display tools. Added text progress bars, global and proximity-based boss bars, configurable ARGB colours and translucent display panels.
- Item sprites in messages. Minecraft item and block icons can now be embedded directly into MiniMessage-powered chat, titles, action bars, boss bars and menus.
- HTTP and API utilities. Added asynchronous JSON requests, connection-health tracking, bounded retry queues and a request API compatible with projects migrating away from ModularEnigma Requests.
- Request/reply messaging. Cross-server transports can now correlate requests with responses using automatically expiring request IDs and timeouts.
- World and terrain helpers. Plugins can find safe terrain surfaces, valid standing positions, random locations inside the world border and evenly distributed points around an area.
- Configurable sound helpers. Play sound cues globally, for individual players, at locations or within a radius using keys loaded from configuration.
- Lightweight YAML state storage.
YamlStoreprovides schema-version checks, dirty tracking and safe persistence for plugins that do not need a full database. - Plugin file hashing.
JarHasherprovides cached SHA-256 and SHA-512 hashes for identifying installed builds and detecting changed plugin files. - Event aggregation and rate limiting. New utilities can combine high-frequency activity into reporting windows and protect operations with per-key rate limits.
- Vanish detection. Shared helpers now support vanish checks on both Paper and Velocity environments.
Improved
- ItemBuilder is much more capable. Items can now use stack amounts, list-based lore, persistent-data tags, enchantments, glint effects, unbreakable state and item flags.
- Custom items are safer to identify. Plugins can use persistent tags instead of relying on player-visible names that can be renamed or translated.
- Permission-aware commands. Players now only see tab completions for subcommands they actually have permission to use.
- Richer message placeholders. Pre-built Adventure components can be safely inserted into named placeholders, enabling structured content such as item sprites.
- More precise countdown formatting.
Durations.full()adds continuously updating formats such as2h 5m 30s. - Better menu layouts. New slot-layout utilities support pinned entries while automatically centring remaining menu items.
Compatibility
- StoneLib now runs on Java 21+. It still builds against Paper 26.2 using JDK 25, but emitted StoneLib bytecode targets Java 21.
- This resolves compatibility problems where shaded StoneLib classes could previously force consuming plugins onto Java 25 and cause
UnsupportedClassVersionErroron Java 21 servers. - The release workflow now builds and tests releases automatically, produces checksums and generates a CycloneDX software bill of materials for published builds.
StoneLib 2.1.0 is primarily additive, giving consuming plugins a much larger set of reusable building blocks without another migration comparable to the 2.0.0 package changes.