外观
核心 API 速查
常用 API 快速参考,复制粘贴即可使用。命名空间差异见 第一个插件 顶部的说明(源码构建用 Game.Server,发行构建用 Game.Server.EssentialCmd)。
命名空间
csharp
using Game.Server; // 服务端核心
using Game.Server.PlayerEvent; // 玩家事件
using Game.Server.EssentialCmd; // 命令处理(发行构建;源码构建改为 Game.Server)
using GameEntitySystem; // 实体系统
using Engine; // 引擎(向量等)
using Game.NetWork; // 网络
using Game.NetWork.Packages; // 网络包GameManager
csharp
// 检查游戏是否加载
if (GameManager.Project == null) return;
// 获取玩家子系统
var players = GameManager.Project.FindSubsystem<SubsystemPlayers>();
// 获取地形子系统
var terrain = GameManager.Project.FindSubsystem<SubsystemTerrain>();向量和坐标
csharp
// 创建坐标
Vector3 pos = new Vector3(100f, 50f, 200f); // 浮点坐标
Point3 block = new Point3(100, 50, 200); // 方块坐标(整数)
// 访问坐标
float x = pos.X;
float y = pos.Y;
float z = pos.Z;网络包
发送消息
csharp
var pkg = new MessagePackage(null, "消息内容", 0, null);
pkg.To = player.Client;
CommonLib.Net.QueuePackage(pkg);传送玩家
csharp
// 设置位置
player.ComponentBody.Position = new Vector3(x, y, z);
// 通知客户端(PlayerAction.12 = 传送)
CommonLib.Net.QueuePackage(new ComponentPlayerPackage(player, (PlayerAction)12));踢出玩家
csharp
CommonLib.Net.RemoveClient(player.Client, "踢出原因");组件转换
csharp
// PlayerData → ComponentPlayer
ComponentPlayer cp = playerData.ComponentPlayer;
// ComponentPlayer → 位置
Vector3 pos = cp.ComponentBody.Position;
// ComponentPlayer → 背包
var inventory = cp.Entity.FindComponent<ComponentInventory>();
// ComponentPlayer → 生命值
var health = cp.ComponentHealth;背包操作
csharp
var inventory = ((Component)player).Entity.FindComponent<ComponentInventory>();
// 获取格子数量
int slots = inventory.SlotsCount;
// 获取格子内容
int value = inventory.GetSlotValue(i); // 物品ID
int count = inventory.GetSlotCount(i); // 数量
// 添加物品
inventory.AddSlotItems(i, itemId, count);
// 清空格子
inventory.RemoveSlotItems(i, inventory.GetSlotCount(i));事件注册
csharp
// 玩家进入/离开
PlayerEnterGameEventManager.AddObject(this);
// 方块破坏/放置
PlayerBreakAndPlaceBlockEventManager.AddObject(this);
// 玩家移动
PlayerMoveEventManager.AddObject(this);
// 玩家交互
PlayerInteractEventManager.AddObject(this);常用判断
csharp
// 游戏是否加载
if (GameManager.Project == null) { /* 未加载 */ }
// 是否为控制台
if (m_isTerminal) { /* 是控制台 */ }
// 玩家是否在线
var player = FindPlayer(name);
if (player == null) { /* 不在线 */ }
// 是否在某个区域
bool inArea = x >= minX && x <= maxX && z >= minZ && z <= maxZ;时间相关
csharp
// 当前时间
DateTime now = DateTime.Now;
// 今天日期
DateTime today = DateTime.Today;
// 格式化时间
string time = now.ToString("yyyy-MM-dd HH:mm:ss");
// 计算时间差
TimeSpan diff = now - lastTime;
int seconds = (int)diff.TotalSeconds;文件操作
csharp
using System.IO;
// 创建目录
Directory.CreateDirectory("Plugins/MyPlugin");
// 写入文件
File.WriteAllText(path, content);
// 读取文件
string content = File.ReadAllText(path);
// 检查文件存在
if (File.Exists(path)) { /* 存在 */ }JSON 操作
csharp
using Newtonsoft.Json;
// 序列化
string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
// 反序列化
MyClass obj = JsonConvert.DeserializeObject<MyClass>(json);小贴士
- 复制粘贴:这些代码片段可以直接使用。
- 按需修改:根据实际情况调整参数。
- 异常处理:重要操作加 try-catch。
- 持久化路径:写入数据时优先用
Plugins/你的插件子目录,避免写入程序目录失败。
IyDmoLjlv4MgQVBJIOmAn+afpQoK5bi455SoIEFQSSDlv6vpgJ/lj4LogIPvvIzlpI3liLbnspjotLTljbPlj6/kvb/nlKjjgILlkb3lkI3nqbrpl7Tlt67lvILop4EgW+esrOS4gOS4quaPkuS7tl0oL2RldmVsb3Blci9zZXJ2ZXItcGx1Z2lucy9maXJzdC1wbHVnaW4pIOmhtumDqOeahOivtOaYju+8iOa6kOeggeaehOW7uueUqCBgR2FtZS5TZXJ2ZXJg77yM5Y+R6KGM5p6E5bu655SoIGBHYW1lLlNlcnZlci5Fc3NlbnRpYWxDbWRg77yJ44CCCgojIyDlkb3lkI3nqbrpl7QKCmBgYGNzaGFycAp1c2luZyBHYW1lLlNlcnZlcjsgICAgICAgICAgICAgIC8vIOacjeWKoeerr+aguOW/gwp1c2luZyBHYW1lLlNlcnZlci5QbGF5ZXJFdmVudDsgIC8vIOeOqeWutuS6i+S7tgp1c2luZyBHYW1lLlNlcnZlci5Fc3NlbnRpYWxDbWQ7IC8vIOWRveS7pOWkhOeQhu+8iOWPkeihjOaehOW7uu+8m+a6kOeggeaehOW7uuaUueS4uiBHYW1lLlNlcnZlcu+8iQp1c2luZyBHYW1lRW50aXR5U3lzdGVtOyAgICAgICAgIC8vIOWunuS9k+ezu+e7nwp1c2luZyBFbmdpbmU7ICAgICAgICAgICAgICAgICAgIC8vIOW8leaTju+8iOWQkemHj+etie+8iQp1c2luZyBHYW1lLk5ldFdvcms7ICAgICAgICAgICAgIC8vIOe9kee7nAp1c2luZyBHYW1lLk5ldFdvcmsuUGFja2FnZXM7ICAgIC8vIOe9kee7nOWMhQpgYGAKCiMjIEdhbWVNYW5hZ2VyCgpgYGBjc2hhcnAKLy8g5qOA5p+l5ri45oiP5piv5ZCm5Yqg6L29CmlmIChHYW1lTWFuYWdlci5Qcm9qZWN0ID09IG51bGwpIHJldHVybjsKCi8vIOiOt+WPlueOqeWutuWtkOezu+e7nwp2YXIgcGxheWVycyA9IEdhbWVNYW5hZ2VyLlByb2plY3QuRmluZFN1YnN5c3RlbTxTdWJzeXN0ZW1QbGF5ZXJzPigpOwoKLy8g6I635Y+W5Zyw5b2i5a2Q57O757ufCnZhciB0ZXJyYWluID0gR2FtZU1hbmFnZXIuUHJvamVjdC5GaW5kU3Vic3lzdGVtPFN1YnN5c3RlbVRlcnJhaW4+KCk7CmBgYAoKIyMg5ZCR6YeP5ZKM5Z2Q5qCHCgpgYGBjc2hhcnAKLy8g5Yib5bu65Z2Q5qCHClZlY3RvcjMgcG9zID0gbmV3IFZlY3RvcjMoMTAwZiwgNTBmLCAyMDBmKTsgIC8vIOa1rueCueWdkOaghwpQb2ludDMgYmxvY2sgPSBuZXcgUG9pbnQzKDEwMCwgNTAsIDIwMCk7ICAgICAvLyDmlrnlnZflnZDmoIfvvIjmlbTmlbDvvIkKCi8vIOiuv+mXruWdkOaghwpmbG9hdCB4ID0gcG9zLlg7CmZsb2F0IHkgPSBwb3MuWTsKZmxvYXQgeiA9IHBvcy5aOwpgYGAKCiMjIOe9kee7nOWMhQoKIyMjIOWPkemAgea2iOaBrwoKYGBgY3NoYXJwCnZhciBwa2cgPSBuZXcgTWVzc2FnZVBhY2thZ2UobnVsbCwgIua2iOaBr+WGheWuuSIsIDAsIG51bGwpOwpwa2cuVG8gPSBwbGF5ZXIuQ2xpZW50OwpDb21tb25MaWIuTmV0LlF1ZXVlUGFja2FnZShwa2cpOwpgYGAKCiMjIyDkvKDpgIHnjqnlrrYKCmBgYGNzaGFycAovLyDorr7nva7kvY3nva4KcGxheWVyLkNvbXBvbmVudEJvZHkuUG9zaXRpb24gPSBuZXcgVmVjdG9yMyh4LCB5LCB6KTsKCi8vIOmAmuefpeWuouaIt+err++8iFBsYXllckFjdGlvbi4xMiA9IOS8oOmAge+8iQpDb21tb25MaWIuTmV0LlF1ZXVlUGFja2FnZShuZXcgQ29tcG9uZW50UGxheWVyUGFja2FnZShwbGF5ZXIsIChQbGF5ZXJBY3Rpb24pMTIpKTsKYGBgCgojIyMg6Lii5Ye6546p5a62CgpgYGBjc2hhcnAKQ29tbW9uTGliLk5ldC5SZW1vdmVDbGllbnQocGxheWVyLkNsaWVudCwgIui4ouWHuuWOn+WboCIpOwpgYGAKCiMjIOe7hOS7tui9rOaNogoKYGBgY3NoYXJwCi8vIFBsYXllckRhdGEg4oaSIENvbXBvbmVudFBsYXllcgpDb21wb25lbnRQbGF5ZXIgY3AgPSBwbGF5ZXJEYXRhLkNvbXBvbmVudFBsYXllcjsKCi8vIENvbXBvbmVudFBsYXllciDihpIg5L2N572uClZlY3RvcjMgcG9zID0gY3AuQ29tcG9uZW50Qm9keS5Qb3NpdGlvbjsKCi8vIENvbXBvbmVudFBsYXllciDihpIg6IOM5YyFCnZhciBpbnZlbnRvcnkgPSBjcC5FbnRpdHkuRmluZENvbXBvbmVudDxDb21wb25lbnRJbnZlbnRvcnk+KCk7CgovLyBDb21wb25lbnRQbGF5ZXIg4oaSIOeUn+WRveWAvAp2YXIgaGVhbHRoID0gY3AuQ29tcG9uZW50SGVhbHRoOwpgYGAKCiMjIOiDjOWMheaTjeS9nAoKYGBgY3NoYXJwCnZhciBpbnZlbnRvcnkgPSAoKENvbXBvbmVudClwbGF5ZXIpLkVudGl0eS5GaW5kQ29tcG9uZW50PENvbXBvbmVudEludmVudG9yeT4oKTsKCi8vIOiOt+WPluagvOWtkOaVsOmHjwppbnQgc2xvdHMgPSBpbnZlbnRvcnkuU2xvdHNDb3VudDsKCi8vIOiOt+WPluagvOWtkOWGheWuuQppbnQgdmFsdWUgPSBpbnZlbnRvcnkuR2V0U2xvdFZhbHVlKGkpOyAgIC8vIOeJqeWTgUlECmludCBjb3VudCA9IGludmVudG9yeS5HZXRTbG90Q291bnQoaSk7ICAgLy8g5pWw6YePCgovLyDmt7vliqDnianlk4EKaW52ZW50b3J5LkFkZFNsb3RJdGVtcyhpLCBpdGVtSWQsIGNvdW50KTsKCi8vIOa4heepuuagvOWtkAppbnZlbnRvcnkuUmVtb3ZlU2xvdEl0ZW1zKGksIGludmVudG9yeS5HZXRTbG90Q291bnQoaSkpOwpgYGAKCiMjIOS6i+S7tuazqOWGjAoKYGBgY3NoYXJwCi8vIOeOqeWutui/m+WFpS/nprvlvIAKUGxheWVyRW50ZXJHYW1lRXZlbnRNYW5hZ2VyLkFkZE9iamVjdCh0aGlzKTsKCi8vIOaWueWdl+egtOWdjy/mlL7nva4KUGxheWVyQnJlYWtBbmRQbGFjZUJsb2NrRXZlbnRNYW5hZ2VyLkFkZE9iamVjdCh0aGlzKTsKCi8vIOeOqeWutuenu+WKqApQbGF5ZXJNb3ZlRXZlbnRNYW5hZ2VyLkFkZE9iamVjdCh0aGlzKTsKCi8vIOeOqeWutuS6pOS6kgpQbGF5ZXJJbnRlcmFjdEV2ZW50TWFuYWdlci5BZGRPYmplY3QodGhpcyk7CmBgYAoKIyMg5bi455So5Yik5patCgpgYGBjc2hhcnAKLy8g5ri45oiP5piv5ZCm5Yqg6L29CmlmIChHYW1lTWFuYWdlci5Qcm9qZWN0ID09IG51bGwpIHsgLyog5pyq5Yqg6L29ICovIH0KCi8vIOaYr+WQpuS4uuaOp+WItuWPsAppZiAobV9pc1Rlcm1pbmFsKSB7IC8qIOaYr+aOp+WItuWPsCAqLyB9CgovLyDnjqnlrrbmmK/lkKblnKjnur8KdmFyIHBsYXllciA9IEZpbmRQbGF5ZXIobmFtZSk7CmlmIChwbGF5ZXIgPT0gbnVsbCkgeyAvKiDkuI3lnKjnur8gKi8gfQoKLy8g5piv5ZCm5Zyo5p+Q5Liq5Yy65Z+fCmJvb2wgaW5BcmVhID0geCA+PSBtaW5YICYmIHggPD0gbWF4WCAmJiB6ID49IG1pblogJiYgeiA8PSBtYXhaOwpgYGAKCiMjIOaXtumXtOebuOWFswoKYGBgY3NoYXJwCi8vIOW9k+WJjeaXtumXtApEYXRlVGltZSBub3cgPSBEYXRlVGltZS5Ob3c7CgovLyDku4rlpKnml6XmnJ8KRGF0ZVRpbWUgdG9kYXkgPSBEYXRlVGltZS5Ub2RheTsKCi8vIOagvOW8j+WMluaXtumXtApzdHJpbmcgdGltZSA9IG5vdy5Ub1N0cmluZygieXl5eS1NTS1kZCBISDptbTpzcyIpOwoKLy8g6K6h566X5pe26Ze05beuClRpbWVTcGFuIGRpZmYgPSBub3cgLSBsYXN0VGltZTsKaW50IHNlY29uZHMgPSAoaW50KWRpZmYuVG90YWxTZWNvbmRzOwpgYGAKCiMjIOaWh+S7tuaTjeS9nAoKYGBgY3NoYXJwCnVzaW5nIFN5c3RlbS5JTzsKCi8vIOWIm+W7uuebruW9lQpEaXJlY3RvcnkuQ3JlYXRlRGlyZWN0b3J5KCJQbHVnaW5zL015UGx1Z2luIik7CgovLyDlhpnlhaXmlofku7YKRmlsZS5Xcml0ZUFsbFRleHQocGF0aCwgY29udGVudCk7CgovLyDor7vlj5bmlofku7YKc3RyaW5nIGNvbnRlbnQgPSBGaWxlLlJlYWRBbGxUZXh0KHBhdGgpOwoKLy8g5qOA5p+l5paH5Lu25a2Y5ZyoCmlmIChGaWxlLkV4aXN0cyhwYXRoKSkgeyAvKiDlrZjlnKggKi8gfQpgYGAKCiMjIEpTT04g5pON5L2cCgpgYGBjc2hhcnAKdXNpbmcgTmV3dG9uc29mdC5Kc29uOwoKLy8g5bqP5YiX5YyWCnN0cmluZyBqc29uID0gSnNvbkNvbnZlcnQuU2VyaWFsaXplT2JqZWN0KG9iaiwgRm9ybWF0dGluZy5JbmRlbnRlZCk7CgovLyDlj43luo/liJfljJYKTXlDbGFzcyBvYmogPSBKc29uQ29udmVydC5EZXNlcmlhbGl6ZU9iamVjdDxNeUNsYXNzPihqc29uKTsKYGBgCgojIyDlsI/otLTlo6sKCjEuICoq5aSN5Yi257KY6LS0KirvvJrov5nkupvku6PnoIHniYfmrrXlj6/ku6Xnm7TmjqXkvb/nlKjjgIIKMi4gKirmjInpnIDkv67mlLkqKu+8muagueaNruWunumZheaDheWGteiwg+aVtOWPguaVsOOAggozLiAqKuW8guW4uOWkhOeQhioq77ya6YeN6KaB5pON5L2c5YqgIHRyeS1jYXRjaOOAggo0LiAqKuaMgeS5heWMlui3r+W+hCoq77ya5YaZ5YWl5pWw5o2u5pe25LyY5YWI55SoIGBQbHVnaW5zL+S9oOeahOaPkuS7tuWtkOebruW9lWDvvIzpgb/lhY3lhpnlhaXnqIvluo/nm67lvZXlpLHotKXjgIIK
