SinceEnchantments - Changelog v1.2.4 (Official Release)
Full compilation of critical updates, including a clean refactor of the random book system with natural space-separated filtering, Brigadier command staging, and smart rate calculations.
Complete Random Book Command Overhaul (v1.2.4 Upgrades)
Natural Space-Separated Filters & Brigadier Staging
- Natural Argument Refactor: Completely removed the old strict, colon-restricted formatting (-filter:value) for random book generation. The /se giverandombook command now natively uses clean, space-separated arguments for a smoother user experience.
- Brigadier Command Staging: Replaced the legacy greedy options argument array in SinceCommand with staged Brigadier filter/value completion. Tab completion now updates dynamically and contextually step-by-step as filters are written.
- Order Independent Logic: Allows multiple filters to be applied in absolutely any sequence, and the -s (silent) modifier can now be appended anywhere inside the string.
- Localization Updates: All internal reference guides, syntax outputs, and error handling loops have been thoroughly updated inside messages.yml.
Smart Auto-Calculation of Success & Failure Rates
- Dynamic Rate Interpolation: Upgraded the book generation engine to automatically calculate and balance rates when partially defined:
- Success Only Provided: The failure rate is automatically calculated as 100 - success.
- Failure Only Provided: The success rate is automatically calculated as 100 - failure.
- Neither Provided: Generates a completely randomized success rate between 0 and 100, then safely fixes the failure boundary at 100 - success.
- Both Provided: Explicitly honors your custom defined constraints and ranges as configured.
New Syntax & Example Usages
Code:/se giverandombook Steve /se giverandombook Steve -level 1 -target WEAPON -type ae /se giverandombook Steve -rarity LEGENDARY -type ee -success 40to90 -failure 10to30 -amount 1to2 -s /se givebook Steve "minecraft:sharpness" 5 60 40 -s
SinceEnchantments - Changelog v1.2.3 (Official Release)
Full compilation of critical bug fixes, cross-plugin integrations, native multi-threading support, and a complete overhaul of the random book system.[/ALIGN]
Critical Bug Fixes & Core Enhancements
1.21 Data Components & Cache Alignment
- Texture Overwrite Bug Fix: Resolved a critical cache collision bug in ItemPacketListener caused by Minecraft 1.21 Data Components (item_model and custom_model_data) failing to be uniquely identified by raw NBT hashing. The packet listener now perfectly identifies and renders independent custom item textures.
- Packet Lore Cache Tuning: Added configurable packet lore cache settings directly in settings.yml and enforced cache clearing during plugin shutdown to prevent stale memory references and memory leaks.
- Enchantment Slots Lore Fix: Fixed an issue where the enchantment slots lore text would still erroneously display even if the remaining enchantment slot count was less than or equal to 0.
Hardcode Extraction & Configuration Flexibility
- Configurable Command Aliases: Moved List.of("se", "sinceenchant") out of core hardcoding. You can now cleanly define your own command aliases in settings.yml.
- Dynamic Enchantable Material System: Moved isEnchantableGear material criteria entirely into settings.yml under settings.enchantable-gear-suffixes and settings.enchantable-gear-exact, unlocking complete sandbox customization for custom server gear.
- Code Hardening: Shifted all inline Fully Qualified Class Names (FQCN) to standard top-file imports and documented previously obscured logic with clean, explanatory English Javadoc blocks.
Native Folia & Performance Support
- Thread-Safe Scheduler Routing: Added full Folia support by safely routing player-bound delayed tasks through region-aware schedulers rather than the global server thread.
- Metadata Alignment: Added folia-supported: true flags to the Paper plugin boot metadata.
- Task Guard Hardening: Eliminated stuck-state and infinite-loop edge-case risks within the Excavator and Thunder enchantment safety guards.
- Constant Consolidation: Relocated distributed PersistentDataContainer namespace keys into a centralized, static constants layout for fast indexing.
Ecosystem Extensions & Cross-Plugin Hooks
Third-Party Custom Enchantments Compatibility
- AdvancedEnchantments & CrazyEnchantments Fixes: Resolved an issue where external custom enchantments from other active plugins failed to load, register, or apply correctly onto items.
- Unified Registry Ingestion: Remapped the backend loader to ensure third-party enchantments register correctly into the local engine, making them accessible to standard commands and packet listeners.
Native ExcellentEnchants API Integration
- API Hooking: Implemented a non-reflective, native API hook for ExcellentEnchants. Added explicit compile-time Gradle dependencies for su.nightexpress.excellentenchants:Core:5.4.3 and su.nightexpress.nightcore:main:2.16.2.
- Metadata Auto-Registration: Reads registered entries via EnchantRegistry.getRegistered() to auto-inject excellentenchants:<id> metadata for runtime book creation, lore mapping, tab completion, and random filtering.
- Best-Effort Profile Parsing: Dynamically reads configuration files directly from plugins/ExcellentEnchants/enchants, falling back safely to the native Bukkit enchantment registry for fallback max levels and item applicability limits.
- Dynamic Description Overrides: Introduced a customizable description array for dynamic ExcellentEnchants listings inside settings.yml.
Complete Random Book System Overhaul
Advanced Filtered Generation Command
- New Command Structure: Introduced a dedicated random enchantment book generator command packed with combinable logic filters: /se giverandombook <player> [options]
- Engine Arguments & Filters:
- -level:<number> - Forces the book to a specific level, ignoring enchantments whose maximum design level falls below this value.
- -rarity:<rarity> - Limits selections strictly to enchantments matching specific rarity metadata tags.
- -target:<target> - Filters items matching target types (e.g., WEAPON).
- -type:<type> - Filters based on origin hooks. Supported source type aliases include: vanilla, since, ae, ce, ee.
- -success:<number|range> - Assigns static or randomized success percentages (e.g., -success:40to90).
- -failure:<number|range> - Assigns static or randomized failure/destroy percentages (e.g., -failure:10to30).
- -amount:<number|range> - Dictates the given book bundle size (e.g., -amount:1to2).
Refactored Workflow Changes
- /se givebook Realignment: Kept strictly focused on target-specific, uniform distribution and is fully backward-compatible. It no longer accepts the random argument; use /se giverandombook instead.
- Unified Accessor Pools Trim: Random book selections now use shared metadata accessors, meaning vanilla Bukkit, SinceEnchantments, AdvancedEnchantments, CrazyEnchantments, and ExcellentEnchants all participate natively inside filtered pools.
- Proactive Constraint Checking: Book generation now cross-references and validates requested enchantment levels against native max-level capacities before generating items, avoiding corrupted index items.
- Enhanced Tab Completion: Added predictive tab completion for random filters, sub-values, range parameters, and silent mode flags.
- Silent Mode execution: Added an -s silent modifier flag across both commands to completely suppress executor console feedback, streamlining automated crate and vote rewards.
Example Usages
Code:/se giverandombook Steve /se giverandombook Steve -level:1 -target:WEAPON -type:ae /se giverandombook Steve -rarity:LEGENDARY -type:ee -success:40to90 -failure:10to30 -amount:1to2 -s /se givebook Steve "minecraft:sharpness" 5 60 40 -s
Wiki & Open-Source Docs Migration
- GitHub Pages Transition: Abandoned old GitLab infrastructure and fully migrated the documentation network over to a high-speed, modern open-source hub.
- New Wiki URL: https://sincerpg.github.io/SinceEnchantments/
Release Notes - Version 1.2.2
Performance & Optimization
- Massive Lag Reduction: Fixed severe server lag and TPS drops caused by spam-clicking or rapidly pressing the swap-hand ('F') key inside chests and menus.
- Zero-Lag Visuals: Introduced a highly optimized, smart caching system for visual enchantments. The plugin is now virtually lag-proof, even on heavy servers with constant inventory updates.
- Extractor GUI Anti-Spam: Added strict anti-spam protection to the Extractor menu to prevent server bottlenecking and potential item duplication exploits.
Bug Fixes
- Placeholder Display Fix: Fixed a critical issue where the {enchants} placeholder would occasionally disappear or fail to display the custom enchantments on items.
- Creative Mode Fix: Fixed a bug where taking custom items out of the Creative menu would incorrectly strip their hidden item flags and expose vanilla enchantments.
- Placeholder Consistency: Fixed a visual glitch where removed enchantments would incorrectly leave behind #enchants# instead of your custom configured placeholder.
Configuration Updates
- 100% Hardcode Removal: Every single piece of text, including console warnings and startup logs, has been moved to messages.yml and is now fully customizable/translatable.
- Smart File Auto-Updates: Added new configuration toggles allowing you to selectively auto-update specific files (like settings.yml and messages.yml) without overwriting your other configs.
SinceEnchantments - 1.2.1
- Override max level, rarity, enchant target vanilla
- Improve override max level, rarity, enchant target vanilla
- Compatibility with AdvancedEnchantments
- Readded mmoitems item limit config to split it
- Config mythicmobs to make it work with items
- Add "enchant-targets" settings to settings file to make it changeable for enchant apply check
- Implement EnchantManager to handle custom enchantment configurations and item limitations
SinceEnchantments v1.1 - The Foundation Update
This update introduces a massive refactor of core systems, improved compatibility, and critical exploit fixes.
KEY HIGHLIGHTS
- New Items: Added Randomizer Stone, Protection Gem, and Stat Tracker. []Modular Config: Config split into enchants.yml, gui.yml, settings.yml, and limits.yml.
- Vanilla+ Support: Freshly crafted gear now displays slots/whitelists immediately.
🛠 FULL CHANGE LOG
New Features & Refactors
- Moved from a single file to a modular system for better management. []Full support for Vanilla wildcards (e.g., _PICKAXE) and MMOItems (Type:ID). []Dynamic Protection: Toggle whether Protection Gems are permanent or consumed on death.
Exploit & Security Fixes
- Anvil Hardening: Books must now be applied via drag-and-drop to prevent bypassing RNG rates. []Fixed bypasses for Max Slots and incompatible enchantments during Anvil merging. []Combat Balance: Lifesteal no longer works on Armor Stands or dead corpses. []Grief Prevention: Excavator now respects WorldGuard/Towny protection.
Bug Fixes & UX
- Fixed {enchants} placeholder lingering on clean items. []Fixed Stat Tracker instant rendering (starts at 0) upon application. []Resolved the "Ghost Item" cursor bug when using the last Extractor. []Fixed a critical NoClassDefFoundError in the AddonLoader.
IMPORTANT: Please backup and delete your old config.yml before updating!
