Skip to content

快速开始

本指南将帮助你开始使用 D 语言编写 Pumpkin 服务器插件。

针对 Pumpkin 的 D 语言插件通过官方提供的 pumpkin-api-d 绑定编译为 WebAssembly(Wasm)组件。


前置要求

在构建 D 语言插件之前,请确保已安装以下工具:

  • LDC:1.43 或更高版本(基于 LLVM 的 D 语言编译器)。
  • addon-wasi:LDC 的 WASI 目标支持包。
  • DUB:D 语言的包管理器与构建工具(通常随 LDC 一起提供)。

1. 初始化项目

为你的插件项目创建一个新目录,并添加 dub.json 配置文件:

bash
mkdir my-d-plugin
cd my-d-plugin

在项目根目录下创建 dub.json

json
{
    "name": "my-d-plugin",
    "description": "基于 D 语言构建的极简 Pumpkin 插件。",
    "license": "proprietary",
    "authors": ["你的名字"],
    "copyright": "Copyright © 2026, 你的名字",

    "dependencies": {
        "pumpkin-api-d": "~>0.1.0"
    },

    "targetType": "executable",
    "dflags": ["-Xcc=-mexec-model=reactor"],
    "buildTypes": {
        "debug": {
            "buildOptions": ["debugMode", "debugInfo"]
        },
        "release": {
            "buildOptions": ["optimize", "inline"],
            "dflags": ["-L-S"]
        }
    }
}

NOTE

WebAssembly 链接器需要 -Xcc=-mexec-model=reactor 标志,以便将该插件作为响应器(暴露入口点的组件)处理,而不是作为具有退出点的命令行程序。


2. 编写插件代码

创建 source 目录并在 source/app.d 中添加代码:

d
module plugin;

import wit.pumpkin.plugin.plugin;
import wit.common;
import pumpkin.register;

struct MyPlugin {
    @GetMetadata PluginMetadata getMetadata()
    {
        immutable(WitString)[$] authors = [
            "你的名字".witList
        ];

        return (immutable PluginMetadata(
                name: "my-d-plugin".witList,
                version_: "0.1.0".witList,
                authors: authors.witList,
                description: "D 语言编写的示例插件。".witList,
                dependencies: WitList!WitString(),
                permissions: WitList!WitString()
        )).witClone;
    }

    @OnLoad
    Result!(void, WitString) onLoad(Context ctx)
    {
        scope (exit)
            ctx.witDrop; // 传入的资源在使用后必须释放

        log(Level.info, "来自 D 语言插件的问候!".witList);
        return ok!WitString;
    }
}

mixin RegisterPlugin!MyPlugin;

3. 构建插件

将插件编译为面向 wasm32-wasip2 的 WebAssembly 组件:

bash
dub build -b release -a wasm32-wasip2

编译完成后,会在项目根目录生成 my-d-plugin.wasm 文件。


4. 运行插件

  1. 将生成的 .wasm 文件复制到 Pumpkin 服务器的 plugins/ 目录中:
    bash
    cp my-d-plugin.wasm /path/to/pumpkin/plugins/
  2. 启动或重启 Pumpkin 服务器:
    bash
    ./pumpkin
  3. 查看控制台日志确认插件已成功加载:
    text
    [INFO] 来自 D 语言插件的问候!

基于 MIT 许可发布。