Yeow
Write Paper/Folia plugins in TypeScript.
Yeow is a plugin runtime and framework that turns a Paper server into a multi-language plugin host. Plugins you write in TypeScript / JavaScript run inside their own isolated QuickJS threads, load live as .yeow.zip packages, and get a fully-typed API for everything a Paper plugin can touch.
Why Yeow
| Java plugin | Yeow plugin | |
|---|---|---|
| Language | Java | TypeScript / JavaScript |
| Restart to add a plugin | usually | No — load via /yeow load |
| Hot reload while developing | partial | WebSocket hot reload |
| Type safety | javac | tsc type-checked, full typings |
| Crash isolation | plugin may freeze ticks | isolated thread per plugin |
| Platform | Paper | Paper + Folia |
Yeow is designed for developer productivity: TypeScript-first with complete type inference, async APIs that don't block the server thread, source-map error location (including full async call chains), and a safe-by-default permission model.
Quick Start
npm create yeow@latest -- -y --ts
cd my-plugin && npm install
npm run dev # Paper test server + hot reload
npm run build # dist/<name>.yeow.zip + standard JAR
Install the runtime on the server: put yeow-runtime-paper-0.5.0.jar (or yeow-runtime-folia-0.5.0.jar on Folia) into plugins/. Drop your plugin's .yeow.zip into plugins/Yeow/ (auto-scanned at startup) or load it live with /yeow load.
A plugin in TypeScript
import { Player, eventOn, registerCommand } from 'yeow-api';
eventOn('playerJoin', (e) => {
e.player.sendMessage({ text: '<green>欢迎回来,' + e.player.name + '!</green>' });
});
registerCommand({
name: 'heal',
description: '恢复生命值',
execute: (sender) => {
if (sender instanceof Player) {
sender.health = sender.maxHealth;
sender.sendActionBar({ text: '<green>已恢复!</green>' });
}
},
});
Everything is typed — event payloads, command senders, entity/player members — so your editor catches mistakes before the server does.
What's included
Game API — players, worlds, entities, items, inventories (including custom GUI), bossbars, scoreboards, advancements, recipes, PDC, sounds, particles, potions, events, commands.
Runtime services — file system (fs), HTTP client + yeow-server HTTP server, gzip/UTF-8 utilities, logging, environment info, worker threads ("virtual plugins" with their own isolated context), and a cross-plugin service registry.
Developer tools — npm create yeow scaffolding, dev server with hot reload and source-map error display (async call chains included), sync/async API pairs, PDC JSON serialization.
Safety — sensitive capabilities (server files, HTTP, resources, processes) are default-deny: each must be declared in yeow.config.json. Native services (spawned subprocesses) require SHA-256 approval before first load.
Folia support
Yeow ships a yeow-runtime-folia build with region-resident scheduling, hot-spot migration, budget control and global-thread routing — the same plugin runs unchanged on Paper or Folia.
Documentation
- Quick Start
- API Reference — every module, typed
- Platform Specifications — protocol/adapters for other runtimes
- Advanced — architecture, scheduler, events, lifecycle
- Runtime Operations —
/yeowadmin commands & config - Offline docs (.zip) — full documentation as Markdown
- Changelog
License & source
MIT licensed. Source: github.com/iYeXin/Yeow
Pages
Resources
Members
1Owner