JoinBook
Make your Minecraft server's first 60 seconds unforgettable.
JoinBook is a lightweight, beautiful, highly configurable player-onboarding plugin for Paper servers. When a player joins for the first time, JoinBook replaces the usual wall of chat text with a short welcome, an optional title/sound, and a polished interactive menu covering rules, getting-started tips, Discord, and live server info.
No database, no external web service, no PlaceholderAPI dependency — it works immediately after installation with sensible defaults.
Features
- First-join detection with a configurable welcome message, sound, and title
- A clean, configurable 27-slot (or larger) GUI with gradient MiniMessage styling
- Modular pages: Welcome, Rules, Getting Started, Discord, Server Info
- Fully configurable buttons — material, slot, name, lore, sound, enabled state
- Live server info (online/max players, uptime, world, version) computed on demand, no repeating tasks
- Optional "returning player" welcome-back message
- UUID-based onboarding persistence (
data.yml) that degrades gracefully if corrupted /joinbook reloadfor safe, zero-downtime config reloads/joinbook reset <player>for admins/testers- Internal placeholder system (
%player%,%server%,%online%,%max_players%,%version%,%uptime%) — no PlaceholderAPI required - Every player-facing string lives in
messages.yml
Requirements
- Paper (or a Paper fork) for Minecraft 1.21.x
- Java 21
Installation
- Download
JoinBook-1.0.0.jar - Drop it into your server's
plugins/folder. - Restart the server.
config.yml,messages.yml, anddata.ymlare generated automatically inplugins/JoinBook/.
No further setup is required — the plugin works out of the box.
Configuration
Edit plugins/JoinBook/config.yml (formatting via MiniMessage):
first-join:
enabled: true
open-gui: true
delay-ticks: 20
gui:
title: "<gradient:#ff8acb:#b98cff><bold>JoinBook</bold></gradient>"
rows: 3
buttons:
rules:
enabled: true
slot: 10
material: BOOK
name: "<yellow><bold>Rules"
lore:
- "<gray>Read the server rules."
- ""
- "<green>Click to open"
After editing, run /joinbook reload — no restart needed. All player-facing
text lives separately in messages.yml.
Commands
| Command | Aliases | Description |
|---|---|---|
/joinbook |
/jb |
Opens your JoinBook (same as /joinbook open) |
/joinbook open |
Opens the JoinBook menu | |
/joinbook reload |
Reloads config.yml and messages.yml |
|
/joinbook help |
Shows command help | |
/joinbook version |
Shows plugin/server version info | |
/joinbook reset <player> |
Resets a player's onboarding state |
Permissions
| Permission | Default | Description |
|---|---|---|
joinbook.use |
true |
Open and use the JoinBook menu |
joinbook.admin |
op |
Grants all administrative permissions below |
joinbook.reload |
op |
Reload configuration |
joinbook.reset |
op |
Reset a player's onboarding state |