Configuration
- Added
- Updated
| File | Setting | Purpose |
|---|---|---|
config/sh_config.lua | items | Item names of the blank book and the book |
config/sh_config.lua | book | Page count, title length, and what a new book starts with |
config/sh_config.lua | fonts / stickers / papers / palette | What players can place (see Adding content) |
config/sh_config.lua | share | Showing a book to players nearby |
config/sh_config.lua | ui | Autosave, undo steps, snapping, motion and sound |
config/sh_config.lua | anim / prop / camera | The reading pose, the book in hand and the camera |
config/sv_config.lua | limits | How much fits on a page and in a book |
config/sv_config.lua | images | Which hosts pictures may come from |
config/sv_config.lua | rateLimits | Calls per player and action |
config/sv_config.lua | editing / retentionDays | Edit lock timeout and removal of books nobody opens |
config/sv_config.lua | moderation | Who may moderate, and the Discord webhook for the log |
config.surface once a book exists. It is the size every layer is placed against, so a new value moves or cuts what players already placed.External images
Players can only place https URLs on a host in config.images.hosts.
The default list has i.imgur.com alone, for png / jpg / jpeg / gif / webp files without a query string.
Every reader's game loads the picture straight from that host, so only list services you trust.
| Field | Default | Meaning |
|---|---|---|
host | i.imgur.com | Host name |
subdomains | false | Also accept <anything>.host |
extensions | png jpg jpeg gif webp | The path must end with one of these. nil accepts any |
allowQuery | false | Keep ?query. false refuses URLs that carry one |
config.images.enabled = false turns pictures off, and maxUrlLength (512) caps the URL length.
Discord CDN is left out on purpose. Its links carry ex / is / hm and stop working after a while, so the picture would disappear from the page.
/bookpurgeimages removes them.
Turning enabled off works the same way.Limits
The server refuses anything above these. The screen gets a copy to warn the player first.
| Setting | Default | What it counts |
|---|---|---|
layersPerSurface | 60 | Layers on one surface |
textMaxChars | 1000 | Characters in one text layer |
textCharsPerSurface | 4000 | Characters on one surface |
strokesPerDrawing | 150 | Strokes in one drawing layer |
pointsPerStroke | 600 | Points in one stroke |
pointsPerSurface | 3000 | Points on one surface |
imagesPerSurface | 6 | Pictures on one surface |
imagesPerBook | 40 | Pictures in one book |
surfaceBytes | 32 * 1024 | Stored size of one surface |
bookBytes | 768 * 1024 | Stored size of one book |
booksPerCitizen | 0 | Books one character can own. 0 is unlimited |
Page counts are in config.book: initialLeaves (8), minLeaves (1) and maxLeaves (24). One leaf is two pages. titleMaxLength is 40.
Motion and sound
config.ui.motion picks how the book opens and turns its pages. config.ui.sound picks the page sound.
motion | Page flip / turn (s) | Page bend |
|---|---|---|
normal (default) | 0.5 / 0.35 | 5° |
journey | 0.7 / 0.5 | 12° |
old | 1.1 / 0.85 | 20° |
default | 0.9 / 0.55 | 12° |
default is the motion of the stylesheet itself.
sound | Pitch | Volume |
|---|---|---|
normal (default) | 1.3 | 0.45 |
journey | 1.0 | 0.6 |
old | 0.7 | 0.7 |
audioVolume multiplies the volume of the preset. 0 mutes it.
Other settings
| Setting | Default | Meaning |
|---|---|---|
share.radius | 3.0 | Metres around the holder |
share.maxTargets | 4 | Players who get the offer, closest first |
share.ticketSeconds | 300 | How long the offer can be accepted |
ui.autosaveDelay | 1500 | ms after the last change before a surface is saved |
ui.autosaveMaxWait | 8000 | ms at most between two saves while the player keeps editing |
ui.historyLimit | 200 | Undo steps |
ui.snapThreshold | 6 | Snap distance in screen pixels |
editing.leaseIdleMinutes | 15 | Minutes without a request before the edit lock is released |
retentionDays | 0 | Books nobody opened for this many days are deleted on start and once a day. 0 keeps them forever. The items stay and say the book is missing |
moderation.ace | group.admin | Who may use the moderation commands |
moderation.webhook | "" | Discord webhook for the moderation log. Empty turns it off |
Browser moderation
Open http://<host>:30120/REC_Books/ to list books and open their moderation view. Configure config/sv_config.lua → web.http.enabled, allowed addresses and a token.
books:read permits listing/reading; books:write permits hiding, clearing, unsealing and deleting books. See REC_Library shared settings for shared tokens.
In-game /bookmod continues to use moderation.ace.
