Added — POOL Mode (Weighted Random Modifier Pools)
- Modifiers can now roll random stats from configured min/max ranges per tier
- Each tier has a weight for weighted random selection (higher = more common)
- New files: ModifierMode.java, StatRange.java
- New config fields: mode: POOL, stats: { min, max } per tier
Added — Item-Level Gating
- Each tier can have required-level that gates access based on target item level
- Uses MMOITEMS_REQUIRED_LEVEL or MMOITEMS_ITEM_LEVEL from NBT
Added — Custom Lore Name Per Tier
- Each tier can define lore-name overriding the rune's display name
- Example: "Adds Physical Damage (T5)" instead of the rune item name
Added — POOL_GROUP Mode (Currency Items)
- Currency-type modifiers that randomly select which modifier to apply from a weighted pool
- Supports random-type: true for 50/50 PREFIX/SUFFIX assignment
- Like PoE2's Transmutation/Augmentation Orbs
Added — PoE2 Rarity Display
Changed
- Optional system changing item name color based on modifier count
- Normal (white) → Magic (blue) → Rare (yellow)
- Disabled by default. Enable in config.yml under rarity.enabled
New Message Keys
- ModifierTier.java — Added requiredLevel, loreName, statRanges
- Modifier.java — Added rollTier(), rollStats(), rollPoolModifier()
- ApplyEngine.java — Refactored into 3 mode-specific methods with ApplyContext
- StatsEngine.java — Added getItemLevel() for level gating
- NameEngine.java — Rarity-based name coloring
- DragDropListener.java — Uses ApplyContext, handles NO_ELIGIBLE_TIER
- ConfigManager.java — Rarity system config loading
- no-eligible-tier — Displayed when no tiers available for item's level
