Skip to content

Pumpkin-MC/pumpkin-api-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pumpkin API for TypeScript

This package provides the TypeScript bindings for building Pumpkin plugins using WebAssembly (Wasm) components.

Features

  • 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 .wasm file.
  • Wasm Components: Built on the WebAssembly Component Model for high performance and portability.

Installation

npm install @pumpkinmc/pumpkin-api-ts

Creating a Plugin

  1. Create a new TypeScript file (e.g., my-plugin.ts).
  2. Extend the Plugin class and implement the metadata() method.
  3. Register your plugin using registerPlugin().
  4. 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";

Building Your Plugin

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.wasm

For 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

About

Pumpkin Plugin API for TypeScript

Resources

Stars

10 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors