Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for DaWr

The Ultimate, Highly-Optimized RPG Custom Enchantment System for PaperMC

Report SinceEnchantments?

Release
1.2.3

VoChiDanh released SinceEnchantments version 1.2.3 on Today 4:34 AM

πŸš€ 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.


⚑ 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:
    settings:
      ee-default-description:
        - "&7Special effect from"
        - "&7ExcellentEnchants."
    

πŸ“š 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, minecraft, mc

  • since, se, custom

  • ae, advancedenchantments

  • ce, crazyenchantments

  • ee, excellentenchants

  • -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: /se givebook <player> <enchant> <level> [success] [destroy]. It no longer accepts the random argument; use /se giverandombook instead.
  • Unified Accessor Pools: 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.
  • Tip: To trigger option tab-completion, type the option string, insert 1 space, then delete that space to activate the completion popup.
  • Silent Mode execution: Added an -s silent modifier flag across both /se givebook and /se giverandombook to completely suppress executor console feedback, streamlining automated crate and vote rewards.

πŸ’‘ Example Usages

/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

Information

Published onJune 11, 2026
Downloads0

Platforms

Paper Paper (1.21-26.1.2)

Dependencies

Paper Paper
Edit Plugin Dependencies: Paper