Bookshelves You Can Use
0
First released August 8, 2026 · Last updated October 13, 2026
Downloads from this site
27 total
9 latest (v0.2.0)
Turns bookshelves into usable storage: right-click one to open a small inventory.
Verified before release
Version 0.2.0 was started on real servers running Minecraft 1.19.4, 1.21.11, 26.2 and 26.3 before it was published. The jar you download is the exact one that passed. How releases work
Versions
All releases on GitHubAutomated build of main at 1f5b124d8079b710e1f23e4446353ed9042df04b.
This is not a release. It is unreleased, unreviewed code that has not been through any release check, and a broken build can stop a server from starting. Do not run it on a server you care about without a backup.
Install it with Dan's Plugin Manager:
/dpm get bookshelvesyoucanuse --experimentalReturn to published releases with /dpm get bookshelvesyoucanuse --stable.
0.2.0
For a server running v0.1.0, this is a drop-in upgrade. Bookshelves work the same way, and the release adds declared support for Minecraft 26.3. The change you can see is in usage reporting. When reporting is on, the plugin creates a random server ID once, stores it as a server-id line in plugins/trace/config.yml and sends it with each event. This lets plugin usage be counted per server rather than per event. The ID is a random UUID and identifies no person, account or IP address. If reporting is turned off (in this plugin's config.yml, in plugins/trace/config.yml, or with the DO_NOT_TRACK / TRACE_USAGE_REPORTING environment variables), no ID is created or written.
Changes
Compatibility
- Minecraft 26.3 is now supported, and the supported versions are declared as 1.19.4, 1.21.11, 26.2 and 26.3 (#39, #31).
Usage reporting
- Each usage event now carries a random per-server ID, stored as
server-idinplugins/trace/config.yml. If the plugin can't write it there, it uses a temporary ID for that run only. Delete the line to get a new ID (#37). - The startup message and the comments in
config.ymlnow mention the server ID (#38). - Each event, including command events, now carries the plugin version, not only the startup event (#33).
plugins/trace/config.ymlcan now hold atags:block that is added to every event from plugins on the server. For example,ci: "true"on a test server keeps its events out of real-installation figures. Invalid entries are skipped and never cause reports to be rejected (#32).- The
plugins/trace/config.ymlfile created on first start now includes a commented-out example of thetags:block (#32).
Version
v0.1.0 → 0.2.0 — MINOR. Mechanical floor from comparing the two jars: PATCH.
Judgment: The jar comparison only saw changes to the vendored TraceClient class. This release also writes new data and changes what gets sent: on first start, an enabled client appends a random server-id line to plugins/trace/config.yml, and every usage event now carries that ID as an install tag, plus the plugin version and any server-wide tags. Nothing that already works breaks: no command, permission or plugin config key changes meaning, and existing switch files are only appended to. New behaviour plus new data written on disk calls for minor, not major.
- no interface or storage difference observed between the jars
<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>
- dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient: removed/changed public static dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
- dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient: added public java.lang.String installId();
- dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient: added public static dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
- dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient: added public static final java.lang.String VERSION;
- dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient$Builder: added public dmccoystephenson.bookshelvesyoucanuse.trace.TraceClient$Builder installId(java.lang.String);
</details>
Verification
Verified on a real Spigot server before publication; this release carries the exact jar that was verified.
- boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
- boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
- boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
- boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
- save-compatibility gate run: data written by
v0.1.0was loaded by this release across two restarts with nothing lost (16 assertions passed).
Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.
drafted by Claude on behalf of Daniel Stephenson
0.1.0
Bookshelves You Can Use turns ordinary bookshelf blocks into storage: a player right-clicks a bookshelf and gets an inventory to keep items in. It is aimed at survival and roleplay servers on Spigot/Paper 1.13 or newer that want a light, no-setup way to make bookshelves useful without adding new blocks or items.
What it adds
/bookshelvesyoucanuseand its alias/bycu— with no arguments, prints the plugin's default output;/bycu helplists the available commands. Neither command declares a permission node inplugin.yml, so any player can run them.bycu.help— permission for the help subcommand; defaults totruefor everyone.- Right-click on a bookshelf opens its inventory (no command or permission involved). Interactions are rate-limited by a short cooldown.
usage-reporting.enabled(defaulttrue) — on startup and on each command use, the plugin sends its name, version and the command name to the author's trace server. Nothing about players or the server is sent; it runs off the main thread and is dropped silently if unreachable. Set tofalseto opt out for this plugin.usage-reporting.endpointandusage-reporting.key— where reports go and the (non-secret) key that attributes them to this plugin. An empty key disables reporting regardless of theenabledswitch.- Server-wide opt-out:
enabled: falseinplugins/trace/config.yml(created on first start), or the environment variablesTRACE_USAGE_REPORTING=off/DO_NOT_TRACK=1, turn reporting off for every plugin that uses trace. The plugin logs one line on every startup saying whether reporting is on, and why not if it is off. versionanddebugModeare added toconfig.ymlby the plugin itself on first start;debugModetoggles debug output.
What it writes
plugins/BookshelvesYouCanUse/config.yml— created from the bundled defaults on first start; on later starts, missing keys (including theusage-reportingblock) are filled in and the file is otherwise left alone.plugins/trace/config.yml— the server-wide usage-reporting switch, created if missing and never switched back on by the plugin.- Bookshelf contents are held in memory only (
TemporaryData/BookshelfInventory); the source shows no save file or database, so items stored in bookshelves do not survive a restart. Treat them as temporary storage.
Requirements
- Spigot/Paper with
api-version: 1.13or newer. - No plugin dependencies are declared in
plugin.yml; the Ponder framework the plugin is built on is not listed as a separate plugin. - Outbound HTTPS to
https://trace.danielstephenson.devif usage reporting is left enabled; not needed otherwise.
Since the last prerelease
- Bookshelves now open on right-click only, so left-clicking (breaking) a shelf no longer opens it; a wrong config path was also corrected (#13).
- Usage reporting added: a small event on startup and per command, sent off the main thread, with the
usage-reporting.enabledopt-out (#21). - Usage reporting is disclosed on every startup with a console notice, and can be turned off server-wide via
plugins/trace/config.ymlor theTRACE_USAGE_REPORTING/DO_NOT_TRACKenvironment variables (#23). /bycu helpnow lists/bycuitself in its output (#19).- Command output no longer shows leftover "ExamplePonderPlugin" template text (#4).
Verification
Verified on a real Spigot server before publication; this release carries the exact jar that was verified.
- boot gate run: booted twice on a fresh Spigot server (10 assertions passed).
Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.
drafted by Claude on behalf of Daniel Stephenson
Snapshot release marking Bookshelves-You-Can-Use's move to an AI-first development approach.
Day-to-day feature work, grooming, review and maintenance now run through AI agents working directly against this repository, with the maintainers setting direction and approving what lands. The version bump marks that change in how the project is built — it is not a compatibility break. Behaviour, configuration and stored data are unchanged, and existing installations can upgrade in place.
This is a dated snapshot, not a finished release. It follows the precedent set by Medieval
Factions' 6.0.0-SNAPSHOT-7-25-2026: the AI-first line has not yet been verified in live operation,
and the snapshot designation stays until it has.
Version changes
pom.xml:0.0.1→0.1.0-SNAPSHOT-8-8-2026
Opened as https://github.com/Dans-Plugins/Bookshelves-You-Can-Use/pull/11.
Drafted by Claude on behalf of Daniel Stephenson.
Related plugins
Something wrong, or something missing?
Bugs go to the plugin's issue tracker, where they can actually be fixed and tracked. Ideas for new behaviour go to the Dev Portal, where the community can upvote them.