diff --git a/lib/dts/api/permissions/Permissible.d.ts b/lib/dts/api/permissions/Permissible.d.ts index cd26bfe3..7db61c60 100644 --- a/lib/dts/api/permissions/Permissible.d.ts +++ b/lib/dts/api/permissions/Permissible.d.ts @@ -27,5 +27,5 @@ declare class Permissible { //getEffectivePermissions(): PermissionAttachmentInfo[] // TODO: PermissionAttachmentInfo - asCommandSender(): CommandSender; + asCommandSender(): CommandSender | undefined; } diff --git a/src/api/command/CommandSenderAPI.cc b/src/api/command/CommandSenderAPI.cc index 83ee420b..e9473cee 100644 --- a/src/api/command/CommandSenderAPI.cc +++ b/src/api/command/CommandSenderAPI.cc @@ -32,14 +32,16 @@ ClassDefine CommandSenderAPI::builder = .instanceFunction("removeAttachment", &PermissibleAPI::removeAttachment) .instanceFunction("recalculatePermissions", &PermissibleAPI::recalculatePermissions) .instanceFunction("getEffectivePermissions", &PermissibleAPI::getEffectivePermissions) - // .instanceFunction("asCommandSender", &PermissibleAPI::getEffectivePermissions) + .instanceFunction("asCommandSender", &PermissibleAPI::asCommandSender) .build(); Local CommandSenderAPI::toString(Arguments const& /* args */) { return ConvertToScriptX(""); } -// Local CommandSenderAPI::asCommandSender(Arguments const& /* args */) {} +Local CommandSenderAPI::asCommandSender(Arguments const& /* args */) { + return CommandSenderAPI::newCommandSenderAPI(get()); +} Local CommandSenderAPI::asConsole(Arguments const& /* args */) { return Local(); } diff --git a/src/api/command/CommandSenderAPI.h b/src/api/command/CommandSenderAPI.h index b9c77f50..8fcfc60f 100644 --- a/src/api/command/CommandSenderAPI.h +++ b/src/api/command/CommandSenderAPI.h @@ -26,7 +26,7 @@ class CommandSenderAPI : public PermissibleAPI { endstone::CommandSender* get() { return mSender; } METHODS(toString); - // METHODS(asCommandSender); + METHODS(asCommandSender); METHODS(asConsole); METHODS(asActor); METHODS(asPlayer); diff --git a/src/api/permissions/PermissibleAPI.cc b/src/api/permissions/PermissibleAPI.cc index 5190e9d2..de8a2892 100644 --- a/src/api/permissions/PermissibleAPI.cc +++ b/src/api/permissions/PermissibleAPI.cc @@ -26,7 +26,7 @@ ClassDefine PermissibleAPI::builder = .instanceFunction("removeAttachment", &PermissibleAPI::removeAttachment) .instanceFunction("recalculatePermissions", &PermissibleAPI::recalculatePermissions) .instanceFunction("getEffectivePermissions", &PermissibleAPI::getEffectivePermissions) - .instanceFunction("asCommandSender", &PermissibleAPI::getEffectivePermissions) + .instanceFunction("asCommandSender", &PermissibleAPI::asCommandSender) .build(); @@ -137,8 +137,11 @@ Local PermissibleAPI::getEffectivePermissions(Arguments const& /* args */ Local PermissibleAPI::asCommandSender(Arguments const& /* args */) { try { - // TODO: CommandSender - return Local(); + auto sender = this->mPermissible->asCommandSender(); + if (!sender) { + return Local(); + } + return CommandSenderAPI::newCommandSenderAPI(sender); } Catch; }