Quill is a Minecraft plugin that modernizes a very old-school server workflow: players write something in a signed book, submit it, and the staff team reviews it later through an in-game interface.
I created this plugin because, when I was younger, the first Minecraft server I truly spent time on had a long-term progression system based on applications written in books. Players would write their application in-game, drop the signed book into a hopper, and admins would read it afterwards.
Even if its main use case is player applications, the system can also be used for many other book-based submissions: whitelist forms, staff applications, roleplay backstories, reports, event registrations, lore entries, or any other workflow where players need to submit structured written content.
Quill keeps the original charm of Minecraft book submissions while removing the awkward parts of the old process.
- Submit signed books directly with
/quill apply - Save book title, content, author UUID, date, and status in MySQL
- Read submitted books back in-game through the written book interface
- Browse all submissions in a paginated GUI
- Browse a specific player's submissions with
/quill look <player> - Let players review their own submissions with
/quill self - Change submission status from a dedicated management GUI
- Filter the global list by status using GUI toggle buttons
- Full permission management
- Async database access for submission loading and browsing
- Reload configuration without restarting the server
- Staff notification on join when pending submissions exist
- Fully customizable messages, GUI titles, item names, and status labels
- Optional webhook notification for new submissions
- Includes author name, title, and page count
- Safe fallback if webhook sending fails
- Spigot/Paper Minecraft server 1.20.6 or higher
- Java 21 or higher
- MySQL database access
- Download the latest plugin JAR
- Place the JAR file in the plugins folder
- Start or restart the server once to generate
plugins/Quill/config.yml - Configure the MySQL connection settings
- Optionally set a Discord webhook URL
- Restart the server
plugins/Quill/config.yml— General configuration for messages, GUI text, statuses, database connection, and Discord webhook
| Command | Permission | Description |
|---|---|---|
/quill |
quill.look |
Opens the global applications GUI |
/quill apply |
quill.apply |
Submits the signed book in the player's main hand |
/quill look <player> |
quill.look |
Opens the applications of a specific player |
/quill self |
quill.self |
Displays the player's own submitted books |
/quill reload |
quill.reload |
Reloads the configuration |
| Permission | Description | Default |
|---|---|---|
quill.* |
Grants all plugin permissions | OP |
quill.apply |
Allows submitting a signed book | OP |
quill.look |
Allows browsing submissions | OP |
quill.notify |
Allows receiving pending/new submission notifications | OP |
quill.reload |
Allows reloading the plugin configuration | OP |
quill.status |
Allows changing the status of a submission | OP |
quill.self |
Allows viewing your own submissions | OP |
- Customizable messages under
messages - Customizable GUI labels under
menus - Customizable status names under
settings.status - Custom status colors in the application management menu
Quill currently supports four submission states:
PendingAcceptedRefusedArchived
messages:
configuration-reload: '&7Configuration has been reloaded.'
apply-done: '&7Application &d%title%&7 has been submitted.'
settings:
status:
waiting: 'Pending'
accepted: 'Accepted'
refused: 'Refused'
archived: 'Archived'
database:
username: 'your_username'
password: 'your_password'
name: 'your_database'
url: 'localhost:3306'
discord:
webhook-url: ''- Create a webhook in your Discord channel settings
- Paste its URL into
discord.webhook-url - Restart the server or run
/quill reload - Submit a signed book with
/quill apply
When enabled, Quill sends a message containing:
- the author name
- the book title
- the page count
src/main/java/fr/loot1/quill/
├── Quill.java # Main plugin class
├── commands/
│ └── QuillCommand.java # /quill command handler
├── guis/
│ ├── GuiApplicationManager.java # Status management GUI
│ ├── GuiApplications.java # Global applications GUI
│ ├── GuiHolder.java # Shared GUI utilities
│ ├── GuiPaginatedApplications.java # Paginated GUI base class
│ └── GuiPlayerApplications.java # Player-specific applications GUI
├── listeners/
│ ├── GuiListener.java # GUI event listener
│ └── PlayerJoinListener.java # Pending applications notification on join
├── managers/
│ ├── ConfigManager.java # Config file manager
│ ├── DatabaseManager.java # MySQL access and persistence
│ └── PlayerCacheManager.java # Cached player names for tab completion
├── objects/
│ ├── Application.java # Submission data model
│ └── ApplicationList.java # Paginated result wrapper
└── utils/
├── DiscordWebhook.java # Discord webhook HTTP client
└── GlowHelper.java # GUI glow helper
| Dependency | Type | Notes |
|---|---|---|
| HikariCP | Library | Database connection pooling |
| Gson | Library | Book content serialization |
| MySQL | External service | Required for storage |
| Spigot/Paper 1.20.6+ | Server | — |
| Java 21+ | Runtime | — |
| Role | Author |
|---|---|
| Plugin design, development, and implementation | Loot1 |




