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.6 (Forge 1.20.1)

  • R
  • Apr 16, 2026
  • 160.91 KB
  • 176
  • 1.20.1
  • Forge

File Name

rpg_lore-2.0.6.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

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

Learn more about Curse Maven

[2.0.6] - 2026-04-16

New Features

  • Lore Codex storable in Chiseled Bookshelves -- the Codex can now be placed alongside regular lore books via the minecraft:bookshelf_books item tag.
  • Lore Codex placeable on Lecterns -- right-click an empty lectern while holding the Codex to place it. Right-clicking a Codex-holding lectern opens the Codex GUI instead of vanilla's empty-book reader (the Codex has no pages NBT). The GUI shows the interacting player's own synced collection, consistent with in-hand LoreCodexItem#use.

Improvements

  • Data-generation scaffolding -- ModItemTagsProvider now also emits rpg_lore:lore_codex into minecraft:bookshelf_books. Hand-written JSON remains authoritative (datagen still blocked by the pre-existing Curios mixin/mappings clash).

[2.0.5] - 2026-04-13

New Features

  • Chiseled Bookshelf storage -- lore books can now be placed in vanilla Chiseled Bookshelves and displayed alongside regular written books. Implemented via the minecraft:bookshelf_books item tag; comparator output and book rendering work naturally.
  • Lectern placement -- lore books can now be placed on vanilla Lecterns. Right-click an empty lectern while holding a lore book to place it; right-click the filled lectern to open the reader UI. Reading, dropping, and comparator output all work unchanged. Implemented via a PlayerInteractEvent.RightClickBlock handler that replicates LecternBlock.placeBook, since vanilla LecternBlock#isBook is hardcoded to Items.WRITTEN_BOOK/Items.WRITABLE_BOOK with no tag or extension point.

Bug Fixes

  • Stricter lore_id validation on pickup -- CodexEventHandler.onItemPickup now rejects NBT where lore_id is missing, wrong type, or empty, preventing ghost entries from malformed /gived books.
  • Blank lore books no longer glint -- LoreBookItem#isFoil now returns false when NBT is absent, so /give rpg_lore:lore_book without an nbt argument produces a plain template book instead of a shimmering blank.

Improvements

  • Translation keys for all /rpglore command output -- 18 new keys in en_us.json cover reload, give, list, collection, and all codex admin subcommands; all Component.literal(...) call sites in RpgLoreCommands replaced with Component.translatable(...). Admin feedback is now consistent with the 60-language localization pass shipped in 2.0.1.
  • CodexService threading contract documented -- instance is now volatile, and Javadoc spells out the main-thread-only rule and the ctx.enqueueWork(...) requirement for packet handlers. No behavioral change in 1.20.1 (all handlers already comply), but the contract is now explicit.
  • Data-generation scaffolding -- added DataGenerators, ModBlockTagsProvider, and ModItemTagsProvider under com.rpglore.data. The item-tags provider emits minecraft:bookshelf_books containing rpg_lore:lore_book when ./gradlew runData is run. (Note: runData currently errors in this environment due to a pre-existing Curios mixin/mappings clash; the hand-written tag JSON remains authoritative until that is resolved.)