Skip to Content
PluginsAquaBookConfiguration

Configuration

Everything lives in config.yml and applies with /aquabook reload, except storage and Redis which need a restart. The history menu is covered in History Menu.

config.yml
date-format: "dd/MM/yy"

date-format is the format of the date /aquabook create stamps on a new entry.

Storage

Likes, read marks and open counts live in a database. The entries themselves stay in news/.

config.yml
storage: type: SQLITE mysql: host: "127.0.0.1" port: 3306 database: "aquabook" username: "root" password: "" properties: "useSSL=false" sync-interval-seconds: 60
KeyDefaultWhat it does
typeSQLITESQLITE, MYSQL or H2. The driver is downloaded on startup
mysqlConnection, only read with MYSQL
mysql.propertiesuseSSL=falseExtra JDBC parameters, separated by &
sync-interval-seconds60How often likes and opens are pulled back from the database

Changing type needs a restart and does not migrate anything. A network of servers needs MYSQL, so every server reads the same likes and read marks.

Redis

Only makes likes and read marks show up instantly on the other servers. The database stays the source of truth, so without Redis everything still works.

config.yml
redis: enabled: false host: "127.0.0.1" port: 6379 password: "" server-id: ""
KeyDefaultWhat it does
enabledfalseTurns it on
host / port / passwordConnection
server-idemptyName of this server, like lobby or survival. Empty picks a random one

With Redis on, sync-interval-seconds can go up, the counters already arrive live. Creating, deleting or reloading news on one server reloads it on all of them.

Book

config.yml
book: default-color: BLACK reopen-delay: 1 after-action: CLOSE footer: enabled: true page: last like: allow-unlike: false marks-read: true menu: enabled: true only-when-read: true
KeyDefaultWhat it does
default-colorBLACKColour of text without one. The page is light, keep it dark
reopen-delay1Ticks before reacting to a button inside the book
after-actionCLOSEWhat happens after a like or a read mark
footer.enabledtrueThe like, read and history line at the bottom
footer.pagelastlast puts it on the last page, all on every page
footer.like.allow-unlikefalseOff means a like can never be taken back
footer.like.marks-readtrueA like also counts as reading the entry
footer.menu.enabledtrueThe shortcut back to the history
footer.menu.only-when-readtrueOnly shows that shortcut once the entry is read
after-actionDoes
CLOSECloses the book
MENUOpens the history
REOPENOpens the book again with the footer updated

A single entry can drop the footer with footer: false in its news file.

Join

config.yml
join: auto-open: enabled: true only-latest: true delay: 1 max: 1 gap: 40 notify: true delay: 1 only-if-unread: true click-command: "/aquabook menu" sound: ENTITY_EXPERIENCE_ORB_PICKUP
KeyDefaultWhat it does
auto-open.enabledtrueOpens what the player has not read yet, right on their screen
auto-open.only-latesttrueOnly the newest entry greets the player, older unread ones stay in the history
auto-open.delay1Ticks after joining. Raise it only if a slow client misses the book
auto-open.max1Pending entries opened at most, only with only-latest off
auto-open.gap40Ticks between one book and the next
notifytrueChat notice, sent at the same moment as the book
delay1Ticks before that notice
only-if-unreadtrueOnly sends it when something is still unread
click-command/aquabook menuRun when the notice is clicked
soundENTITY_EXPERIENCE_ORB_PICKUPPlayed with the notice

Keep only-latest on. Otherwise every new entry stacks one more book on every join.

Entries with auto-open: false never open on join, they only wait in the history. The notice text is join.message in messages.yml, with %unread%, %total% and %player%.

Config updates

config.yml and messages.yml carry a version at the bottom. When a release adds options they are added on startup, keeping your values. Leave version alone.

Last updated: October 17, 2026 bySenkexin7ef3dc6