Quill is a sandboxed scripting language for Minecraft event automation.
Quill - Player-Powered Events Without Admin Babysitting
Tired of players bugging admins for every custom event? Quill lets your community run their own mini-games, arenas, and automated events - safely sandboxed, fully controlled, zero admin intervention needed.
The Problem Quill Solves
Your players want to run a PvP tournament. A parkour race. A custom boss fight. Maybe a city-wide scavenger hunt.
Traditional approach:
- Player asks admin for command blocks ❌
- Admin sets everything up manually ❌
- Admin has to supervise so nothing breaks ❌
- Event ends, cleanup is a nightmare ❌
With Quill:
- Admin creates a scope, hands it to the player ✅
- Player writes their event script in minutes ✅
- Script runs safely in its boundaries ✅
- Auto-cleanup, state persists, nothing breaks ✅
---
✨ Key Features
Sandboxed Execution
Scripts run in physical boundaries. A player's arena script can't accidentally fill your spawn with TNT or teleport everyone to the void. What happens in the scope, stays in the scope.
Event-Driven Programming
React to player actions, block interactions, mob deaths, chat messages, and more. No command blocks, no redstone contraptions - just clean, readable code.
️ Granular Permissions
Whitelist or blacklist functions per scope. Arena scripts get teleport and give but not set_block. Build zones get set_block but not kill. You control exactly what each scope can do.
✍️ Web-Based Editor
No port forwarding. No server file access. Players get a session ID, open the web editor, write their script, and it's instantly on the server.
Persistent State
Script variables survive server restarts.
Player-Friendly Syntax
Designed for non-programmers.
---
Quick Example
// A simple PvP arena that starts on command
let arena = new Scope(-50, 60, -50, 50, 100, 50);
arena.game_active = false;
OnEvent(PlayerChat) {
if chat.message == "!start" && in_region(player, arena) {
arena.game_active = true;
broadcast("Arena starting in 3... 2... 1...");
for p in arena.players {
set_gamemode(p, "survival");
give(p, "diamond_sword", 1);
heal(p);
}
}
}
OnEvent(PlayerDeath) {
if arena.game_active && in_region(player, arena) {
broadcast("{player.name} was eliminated!");
set_gamemode(player, "spectator");
}
}
---
Perfect For
* Community Servers
* Creative/Build Servers
* Minigame Networks
* RPG Servers
* Prison/Skyblock
---
How It Works
For Admins:
1. Install Quill
2. Create scopes
3. Set permissions
4. Done
For Players:
1. /quill edit
2. Write script
3. Save
4. Play
---
️ Security Model
Quill is built on zero-trust principles:
* Scripts can only affect their physical boundaries
* Whitelist/blacklist permissions
* No filesystem/system access
* Infinite loop protection
* Isolated execution contexts
---
Requirements
* Bukkit/Spigot/Paper
* Java 21+
---
Installation
1. Download JAR
2. Drop in plugins/
3. Restart
4. Configure (optional)
5. Create first scope
---
Resources
* Documentation: [https://quill.kmathers.co.uk/docs](https://quill.kmathers.co.uk/docs)
* Support: [https://discord.gg/FZuVXszuuM](https://discord.gg/FZuVXszuuM)
* GitHub: [https://github.com/kohanmathers/quill](https://github.com/kohanmathers/quill)
---
Why Quill Instead of Skript?
Feature comparison:
Skript → global
Quill → sandboxed per-scope
Web editor, permissions, persistence—it’s built for players, not just admins.
---
License
MIT
❤️ Credits
Created by Kohan Mathers
If Quill helps your server, star the repo!
Questions? Discord or GitHub Issues.