promotional bannermobile promotional banner

RPG Lore

A data-driven lore book mod for Minecraft Forge 1.20.1. Define custom books via simple JSON files and have them drop from mobs based on configurable conditions.

File Details

RPG Lore 2.0.4 (Forge 1.20.1)

  • R
  • Mar 27, 2026
  • 153.95 KB
  • 58
  • 1.20.1
  • Forge

File Name

rpg_lore-2.0.4.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:rpg-lore-1488132:7824920")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

[2.0.4] - 2026-03-27

Critical Bug Fixes

  • First-join Codex grant no longer lost when inventory is full -- the Codex is now dropped on the ground if inventory is full, and only marked as granted after successful delivery
  • maxBooksPerKill now enforced across all drop types -- books with base_chance are no longer exempt from the per-kill cap; the combined total from both override and global-pool books respects MAX_BOOKS_PER_KILL
  • Codex progress counts can no longer exceed total -- collected counts now use collected ∩ eligible instead of the raw saved ID set; books switched to codex_exclude=true are properly pruned from collections
  • Soulbound death handling no longer deletes extra Codices -- fixed early return that skipped Curios slot check, added add() result validation for Curios restoration, moved invalidateCaps() into a finally block

Bug Fixes

  • Copying from Codex with a full inventory -- now rejects the copy with an error message instead of dropping an unpickable book on the ground
  • CODEX_ENABLED now fully disables the Codex -- the item no longer appears in the creative tab, use() shows a disabled message, and commands are guarded when the config is off
  • Client notification/sound configs now work -- collection feedback is sent via a dedicated clientbound packet so the client can respect showCollectionNotification and playCollectionSound settings
  • /rpglore reload now prunes and resyncs -- stale entries are pruned and all online players' Codex items and UI caches are refreshed after a reload
  • Admin /rpglore codex add rejects excluded books -- books with codex_exclude=true can no longer be injected into Codex data via commands
  • Input validation strengthened -- base_chance clamped to [0.0, 1.0], min_y > max_y warned and swapped, invalid book IDs rejected with error

Improvements

  • Centralized Codex state management -- new CodexService handles all mutations atomically across SavedData, item NBT, and client sync, eliminating tooltip/UI drift after toggles, admin commands, or reloads
  • Looting enchantment reads from loot context -- uses LootContextParams.TOOL instead of always reading the main hand, fixing off-hand and projectile kill scenarios
  • Curios item tag added -- the Codex slot now has a proper item tag at data/curios/tags/items/codex.json for reliable slot assignment
  • Curios compatibility hardened -- findCodexInCurios wrapped with NoClassDefFoundError catch for defensive classloading safety
  • Sync packet slimmed -- removed unused author and category fields from network transmission
  • Item NBT slimmed -- removed full codex_collected ID list from item NBT; only lightweight tooltip fields are cached
  • Localization pass -- moved Codex tooltip text to translation keys; added rpg_lore.codex.tooltip.description, rpg_lore.codex.tooltip.hint, rpg_lore.codex.disabled, and rpg_lore.codex.copy.inventory_full
  • Mod metadata -- added updateJSONURL to mods.toml

Removed

  • Removed dead codex_owner NBT tag (was written but never enforced)
  • Removed copied Forge source files from repository root (net/ directory)
  • Replaced ConcurrentHashMap with HashMap in tracking data classes (all access is main-thread)

Network

  • Protocol version bumped from 1 to 2 (clients and servers must match)