This package provides the TypeScript bindings for building Pumpkin plugins using WebAssembly (Wasm) components.
- Type-safe API: Full TypeScript definitions for all Pumpkin plugin interfaces.
- Easy Build Process: Includes a build script to bundle your TypeScript code and componentize it into a
.wasmfile. - Wasm Components: Built on the WebAssembly Component Model for high performance and portability.
npm install @pumpkinmc/pumpkin-api-ts- Create a new TypeScript file (e.g.,
my-plugin.ts). - Extend the
Pluginclass and implement themetadata()method. - Register your plugin using
registerPlugin(). - Add
export * from "@pumpkinmc/pumpkin-api-ts";at the end.
Example:
import { Plugin, registerPlugin } from "@pumpkinmc/pumpkin-api-ts";
import { PluginMetadata } from "pumpkin:plugin/metadata@0.1.0";
import { Context } from "pumpkin:plugin/context@0.1.0";
import { TextComponent } from "pumpkin:plugin/text@0.1.0";
import * as logging from "pumpkin:plugin/logging@0.1.0";
import { PlayerJoinEventData } from "pumpkin:plugin/event@0.1.0";
class MyPlugin extends Plugin {
metadata(): PluginMetadata {
return {
name: "My TypeScript Plugin",
version: "0.1.0",
authors: ["alex"],
description: "A sample plugin written in TypeScript",
dependencies: [],
permissions: []
};
}
onLoad(ctx: Context): void {
super.onLoad(ctx);
logging.log("info", "Hello from TypeScript plugin!");
this.registerEvent(
ctx,
"player-join-event",
(_srv, evt: PlayerJoinEventData) => {
logging.log("info", `Player ${evt.player.getName()} joined!`);
evt.player
.getWorld()
.broadcastSystemMessage(
TextComponent.text(
`Welcome ${evt.player.getName()} to the server!`,
),
false,
);
},
);
}
}
registerPlugin(new MyPlugin());
export * from "@pumpkinmc/pumpkin-api-ts";To build your plugin into a .wasm component, use the provided build script:
./node_modules/.bin/pumpkin-plugin-build <entry-file.ts> <output-file.wasm>Example:
./node_modules/.bin/pumpkin-plugin-build my-plugin.ts build/my-plugin.wasmFor convience, it's recommended to add a scripts section to your package.json
{
"scripts": {
"build": "pumpkin-plugin-build my-plugin.ts build/my-plugin.wasm"
},
"dependencies": {
...
}
}Execute with npm run build