From a01ba9655d7eaabaf8931b7bfc23a43adc99a83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=90=E6=B2=90=E5=91=80?= <163636894+zimuya4153@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:34:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0getItemMaxCount=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/GMLIB_API-JS.d.ts | 3 +++ lib/GMLIB_API-JS.js | 14 +++++++++++++- src/CompatibilityApi.cpp | 5 ++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/GMLIB_API-JS.d.ts b/lib/GMLIB_API-JS.d.ts index 0dc3447..bcd7168 100644 --- a/lib/GMLIB_API-JS.d.ts +++ b/lib/GMLIB_API-JS.d.ts @@ -1283,6 +1283,9 @@ interface Item { /** (GMLIB)物品是否为食物 */ isFood(): boolean; + + /** (GMLIB)获取物品最大堆叠数量 */ + getMaxCount(): number; } interface Container { diff --git a/lib/GMLIB_API-JS.js b/lib/GMLIB_API-JS.js index 26ee6a5..dff4155 100644 --- a/lib/GMLIB_API-JS.js +++ b/lib/GMLIB_API-JS.js @@ -337,7 +337,9 @@ const GMLIB_API = { /** 获取容器类型 @type {function(Container):string} */ getContainerType: ll.import("GMLIB_API", "getContainerType"), /** 玩家是否拥有NBT @type {function(string):boolean} */ - hasPlayerNbt: ll.import("GMLIB_API", "hasPlayerNbt") + hasPlayerNbt: ll.import("GMLIB_API", "hasPlayerNbt"), + /** 获取物品最大堆叠数量 @type {function(Item):number} */ + getItemMaxCount: ll.import("GMLIB_API", "getItemMaxCount") } /** 静态悬浮字类列表 @type {Map} */ @@ -2487,11 +2489,21 @@ LLSE_Player.prototype.sendInventorySlotPacket = LLSE_Container.prototype.getContainerType = /** * 获取容器类型 + * @returns {string} */ function () { return GMLIB_API.getContainerType(this); } +LLSE_Item.prototype.getMaxCount = + /** + * 获取物品最大堆叠数量 + * @returns {number} + */ + function () { + return GMLIB_API.getItemMaxCount(this); + } + module.exports = { StaticFloatingText, DynamicFloatingText, diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index 00e10a1..66d77fe 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -870,7 +870,7 @@ void Export_Compatibility_API() { RemoteCall::exportAs( "GMLIB_API", "sendInventorySlotPacket", - [](Player* player, int containerId, int slot, ItemStack* item) -> void { + [](Player* player, int containerId, int slot, ItemStack const* item) -> void { InventorySlotPacket((ContainerID)containerId, slot, *item).sendTo(*player); } ); @@ -881,4 +881,7 @@ void Export_Compatibility_API() { auto uid = mce::UUID::fromString(uuid); return GMLIB_Player::getPlayerNbt(uid) ? true : false; }); + RemoteCall::exportAs("GMLIB_API", "getItemMaxCount", [](ItemStack const* item) -> int { + return item->getMaxStackSize(); + }); } \ No newline at end of file