From 0872c064bb42e5ef7b91eafe2a475a32a410aead 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: Fri, 31 May 2024 18:41:49 +0800 Subject: [PATCH] feat: add playerWillDestroy,attack,pullInEntity --- lib/GMLIB_API-JS.js | 17 ++++++++++++++++- src/CompatibilityApi.cpp | 10 ++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/GMLIB_API-JS.js b/lib/GMLIB_API-JS.js index b42d52d..c086eb2 100644 --- a/lib/GMLIB_API-JS.js +++ b/lib/GMLIB_API-JS.js @@ -123,7 +123,10 @@ const GMLIB_API = { itemCanDestroyInCreative: ll.import("GMLIB_API", "itemCanDestroyInCreative"), itemCanDestroySpecial: ll.import("GMLIB_API", "itemCanDestroySpecial"), blockCanDropWithAnyTool: ll.import("GMLIB_API", "blockCanDropWithAnyTool"), - blockIsAlwaysDestroyable: ll.import("GMLIB_API", "blockIsAlwaysDestroyable") + blockIsAlwaysDestroyable: ll.import("GMLIB_API", "blockIsAlwaysDestroyable"), + blockPlayerWillDestroy: ll.import("GMLIB_API", "blockPlayerWillDestroy"), + playerAttack: ll.import("GMLIB_API", "playerAttack"), + playerPullInEntity: ll.import("GMLIB_API", "playerPullInEntity") } const FloatingTextList = []; @@ -1003,6 +1006,18 @@ LLSE_Block.prototype.isAlwaysDestroyable = function () { return GMLIB_API.blockIsAlwaysDestroyable(this); } +LLSE_Block.prototype.playerWillDestroy = function (player) { + return GMLIB_API.blockPlayerWillDestroy(this, player, this.pos); +} + +LLSE_Player.prototype.attack = function (entity) { + return GMLIB_API.playerAttack(this, entity); +} + +LLSE_Player.prototype.pullInEntity = function (entity) { + return GMLIB_API.playerPullInEntity(this, entity); +} + module.exports = { StaticFloatingText, DynamicFloatingText, diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index 3e1da76..94dd3aa 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -658,4 +658,14 @@ void Export_Compatibility_API() { RemoteCall::exportAs("GMLIB_API", "blockIsAlwaysDestroyable", [](Block const* block) -> bool { return block->getMaterial().isAlwaysDestroyable(); }); + RemoteCall::exportAs( + "GMLIB_API", + "blockPlayerWillDestroy", + [](Block const* block, Player* player, std::pair pos) -> bool { + return block->playerWillDestroy(*player, pos.first); + } + ); + RemoteCall::exportAs("GMLIB_API", "playerAttack", [](Player* player, Actor* entity) -> bool { + return player->attack(*entity, ActorDamageCause::EntityAttack); + }); } \ No newline at end of file