ModsJava
Yeow
A runtime platform that lets you build Paper/Folia plugins in TypeScript / JavaScript.
⬇ Download on Hangar# 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
```bash
npm create yeow@latest -- -y --ts
cd my-plugin && npm install
npm run dev # Paper test server + hot reload
npm run build # dist/.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
```ts
import { Player, eventOn, registerCommand } from 'yeow-api';
eventOn('playerJoin', (e) => {
e.player.sendMessage({ text: '欢迎回来,' + e.player.name + '!' });
});
registerCommand({
name: 'heal',
description: '恢复生命值',
execute: (sender) => {
if (sender instanceof Player) {
sender.health = sender.maxHealth;
sender.sendActionBar({ text: '已恢复!' });
}
},
});
```
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](https://yexin.wiki/yeow/v1/getting-started)
- [API Reference](https://yexin.wiki/yeow/v1/api/) — every module, typed
- [Platform Specifications](https://yexin.wiki/yeow/v1/specifications/) — protocol/adapters for other runtimes
- [Advanced](https://yexin.wiki/yeow/v1/advanced) — architecture, scheduler, events, lifecycle
- [Runtime Operations](https://yexin.wiki/yeow/v1/operations) — `/yeow` admin commands & config
- [Offline docs (.zip)](https://yexin.wiki/yeow/v1/docs.zip) — full documentation as Markdown
- [Changelog](https://yexin.wiki/yeow/v1/changelog)
---
## License & source
MIT licensed. Source: [github.com/iYeXin/Yeow](https://github.com/iYeXin/Yeow)
Yeow is a free Minecraft Java mod. Compatible with Minecraft 1.18, 1.18.1, 1.18.2, 1.19 and newer. Downloaded 1 times (via Hangar). Download it and open it directly in the game.