diff --git a/lib/GMLIB_API-JS.d.ts b/lib/GMLIB_API-JS.d.ts index 502a065..75e7da1 100644 --- a/lib/GMLIB_API-JS.d.ts +++ b/lib/GMLIB_API-JS.d.ts @@ -359,7 +359,7 @@ export class Minecraft { ): string; /** 通过附魔ID获取附魔命名空间ID */ - static getMaxPlayers( + static getEnchantTypeNameFromId( /** 附魔ID */ id: number ): string | null; @@ -367,6 +367,14 @@ export class Minecraft { /** 获取最大玩家数 */ static getMaxPlayers(): number; + /** 设置最大玩家数 */ + static setMaxPlayers( + /** 最大玩家数 */ + count: number, + /** 是否忽略原版限制 */ + ignoreVanillaLimit?: boolean + ): void; + /** 玩家是否拥有NBT */ static hasPlayerNbt( /** 玩家的uuid */ diff --git a/lib/GMLIB_API-JS.js b/lib/GMLIB_API-JS.js index 1a4147a..6a89682 100644 --- a/lib/GMLIB_API-JS.js +++ b/lib/GMLIB_API-JS.js @@ -280,6 +280,8 @@ const GMLIB_API = { getEnchantTypeNameFromId: ll.imports("GMLIB_API", "getEnchantTypeNameFromId"), /** 获取最大玩家数 @type {function():number} */ getMaxPlayers: ll.imports("GMLib_ServerAPI", "getMaxPlayers"), + /** 获取最大玩家数 @type {function(number,boolean):void} */ + setMaxPlayers: ll.imports("GMLib_ServerAPI", "setMaxPlayers"), /** 丢出玩家背包内物品 @type {function(Player,Item,boolean):boolean} */ dropPlayerItem: ll.imports("GMLIB_API", "dropPlayerItem"), /** 获取玩家的RuntimeId @type {function(Player):number} */ @@ -1113,6 +1115,15 @@ class Minecraft { return GMLIB_API.getMaxPlayers(); } + /** + * 设置最大玩家数量 + * @param {number} count 最大玩家数量 + * @param {boolean} [ignoreVanillaLimit=false] 是否忽略原版限制 + */ + static setMaxPlayers(count, ignoreVanillaLimit = false) { + return GMLIB_API.setMaxPlayers(count, ignoreVanillaLimit); + } + /** * 玩家是否拥有NBT * @param {string} uuid 玩家的uuid diff --git a/src/LegacyServerApi.cpp b/src/LegacyServerApi.cpp index f1b8e7c..c76bbc8 100644 --- a/src/LegacyServerApi.cpp +++ b/src/LegacyServerApi.cpp @@ -79,4 +79,9 @@ void Export_Legacy_GMLib_ServerAPI() { [](GMLevel& level) -> int { return level.getMaxPlayerCount(); } ).value_or(0); }); + RemoteCall::exportAs("GMLib_ServerAPI", "setMaxPlayers", [&](int count, bool ignoreVanillaLimit) { + if (auto level = GMLevel::getInstance(); level) { + level->setMaxPlayerCount(count, ignoreVanillaLimit); + } + }); }