Plugin API for NetherGate - A Minecraft server management platform. Provides interfaces and models for developing NetherGate plugins.
$ dotnet add package NetherGate.APINetherGate 让插件开发变得简单而强大:
| 核心能力 | 状态 | 说明 |
|---|---|---|
| SMP 协议 | ✅ 100% |
| 35 个方法 + 22 个通知处理 |
| RCON 命令 | ✅ 100% | 完整的游戏命令支持(60+ 命令) |
| 日志监听 | ✅ 100% | 服务器生命周期 + 玩家事件 |
| 网络事件 | ✅ 100% | 4 种监听模式(LogBased 立即可用) |
| NBT 数据 | ✅ 100% | 读取 + 写入(玩家/世界数据) |
| 数据组件 | ✅ 100% | 1.20.5+ 物品组件系统支持 |
| 文件操作 | ✅ 100% | 读写/监听/备份 |
| 性能监控 | ✅ 100% | CPU/内存/TPS |
详细报告: 功能覆盖率文档
NetherGate 支持所有开放 RCON + SMP 协议的 Minecraft 服务端,包括但不限于:
前置要求:
从 Releases 下载适合您系统的版本:
| 操作系统 | 架构 | 文件名 |
|---|---|---|
| Windows | x64 (推荐) | nethergate-nightly-win-x64.zip |
| Windows | x86 | nethergate-nightly-win-x86.zip |
| Windows | ARM64 | nethergate-nightly-win-arm64.zip |
| Linux | x64 (推荐) | nethergate-nightly-linux-x64.tar.gz |
| Linux | ARM | nethergate-nightly-linux-arm.tar.gz |
| Linux | ARM64 | nethergate-nightly-linux-arm64.tar.gz |
| macOS | Intel x64 | nethergate-nightly-osx-x64.tar.gz |
| macOS | Apple Silicon | nethergate-nightly-osx-arm64.tar.gz |
或自行编译:
git clone https://github.com/your-org/NetherGate.git
cd NetherGate
dotnet build -c Release首次运行会自动生成配置文件:
cd bin/Release
./NetherGate.Host或使用交互式配置向导:
./NetherGate.Host --wizard配置文件示例: nethergate-config.yaml
server_process:
launch_method: java # java | script | external
working_directory: ./
java:
jar_path: server.jar
min_memory: 2G
max_memory: 4G详细配置: 配置文件详解
./NetherGate.Host三种启动模式:
NetherGate.API 已发布到 NuGet.org,可以直接安装:
dotnet new classlib -n MyPlugin
cd MyPlugin
dotnet add package NetherGate.APIusing NetherGate.API.Plugins;
using NetherGate.API.Events;
namespace MyPlugin;
public class MyPlugin : IPlugin
{
private IPluginContext _context;
public void OnEnable(IPluginContext context)
{
_context = context;
_context.Logger.Info("MyPlugin 已启用!");
// 订阅玩家加入事件
_context.EventBus.Subscribe<PlayerJoinedEvent>(OnPlayerJoined);
}
private async void OnPlayerJoined(PlayerJoinedEvent e)
{
// 发送欢迎消息
await _context.GameDisplay.SendChatMessageAsync(
e.PlayerName,
$"§a欢迎 {e.PlayerName} 加入服务器!"
);
}
public void OnDisable()
{
_context.Logger.Info("MyPlugin 已禁用");
}
}dotnet build
# 将生成的 DLL 复制到 plugins/ 目录
# 使用 `plugin load MyPlugin` 命令加载,或重启 NetherGateNetherGate 提供了完整的 API,让你能实现任何想法:
// BossBar、Title、ActionBar、聊天消息
await context.GameDisplay.ShowBossBarAsync("my_boss", "欢迎!", 1.0f);
await context.GameDisplay.ShowTitleAsync("@a", "§6标题", "§e副标题");// NBT 数据(1.20.4-)、数据组件(1.20.5+)
var playerData = await context.PlayerDataReader.ReadPlayerDataAsync(uuid);
await context.NbtDataWriter.UpdatePlayerHealthAsync(uuid, 20.0f);
// 物品组件系统
var item = await context.ItemComponentReader.ReadInventorySlotAsync(player, slot);
await context.ItemComponentWriter.UpdateComponentAsync(player, slot, "custom_name", "神剑");// 完整的服务器管理
var players = await context.SmpApi.GetPlayersAsync();
await context.SmpApi.AddToAllowlistAsync("Player123");
await context.SmpApi.UpdateGameRuleAsync("doDaylightCycle", "false");// 执行任意 Minecraft 命令
var result = await context.RconClient.ExecuteCommandAsync("give @a diamond 64");// 跨插件消息传递(适用于模块化开发)
var response = await context.Messenger.SendMessageAsync(
"EconomyPlugin", "transfer",
new { from = "Player1", to = "Player2", amount = 100 }
);完整 API 文档: API 参考
完整文档索引: docs/README.md
NetherGate/
├── src/
│ ├── NetherGate.API/ # 插件 API 接口
│ ├── NetherGate.Core/ # 核心实现
│ └── NetherGate.Host/ # 主程序
├── docs/ # 完整文档
├── scripts/ # 构建脚本
└── bin/Release/ # 编译输出
├── NetherGate.Host.exe # 主程序
├── plugins/ # 插件目录
├── config/ # 配置目录
└── logs/ # 日志目录
欢迎贡献代码、文档或建议!
贡献指南: CONTRIBUTING.md
本项目采用 MIT License 开源协议。
感谢 MCDReforged 为 NetherGate 提供了优秀的设计思路和开发理念!MCDReforged 在 Python 生态中为 Minecraft 服务器管理树立了标杆,NetherGate 在继承这些优秀理念的基础上,结合 .NET 的高性能和现代化特性,为插件开发者带来更强大、更灵活的开发体验。
感谢以下优秀的开源项目: