11#include " api/CommandOutputAPI.h"
22
3+ #include " ll/api/service/Bedrock.h"
34#include " mc/server/commands/CommandOutputMessageType.h"
5+ #include " mc/server/commands/CommandPropertyBag.h"
6+ #include " mc/server/commands/MinecraftCommands.h"
7+ #include " mc/world/Minecraft.h"
48
59// ////////////////// Class Definition ////////////////////
610
@@ -20,14 +24,11 @@ ClassDefine<CommandOutputClass> CommandOutputClassBuilder =
2024
2125// ////////////////// APIs ////////////////////
2226
23- CommandOutputClass::CommandOutputClass (CommandOutput* p )
27+ CommandOutputClass::CommandOutputClass (std::shared_ptr< CommandOutput> out, std::shared_ptr<CommandOrigin> ori )
2428: ScriptClass(ScriptClass::ConstructFromCpp<CommandOutputClass>{}),
25- ptr(p) {};
26-
27- Local<Object> CommandOutputClass::newCommandOutput (CommandOutput* p) {
28- auto newp = new CommandOutputClass (p);
29- return newp->getScriptObject ();
30- }
29+ output(std::move(out)),
30+ origin(std::move(ori)),
31+ isAsync(false ) {};
3132
3233Local<Value> CommandOutputClass::empty () {
3334 try {
@@ -68,9 +69,11 @@ Local<Value> CommandOutputClass::success(const Arguments& args) {
6869 param.push_back (CommandOutputParameter (paramArr.get (i).asString ().toString ().c_str ()));
6970 }
7071 get ()->success (msg, param);
72+ send ();
7173 return Boolean::newBoolean (true );
7274 }
7375 get ()->success (msg);
76+ send ();
7477 return Boolean::newBoolean (true );
7578 }
7679 CATCH (" Fail in success!" );
@@ -90,12 +93,15 @@ Local<Value> CommandOutputClass::addMessage(const Arguments& args) {
9093 if (args.size () >= 3 ) {
9194 CHECK_ARG_TYPE (args[2 ], ValueKind::kNumber );
9295 get ()->addMessage (msg, param, (CommandOutputMessageType)args[2 ].asNumber ().toInt32 ());
96+ send ();
9397 return Boolean::newBoolean (true );
9498 }
9599 get ()->addMessage (msg, param, (CommandOutputMessageType)0 );
100+ send ();
96101 return Boolean::newBoolean (true );
97102 }
98103 get ()->addMessage (msg, {}, CommandOutputMessageType::Success);
104+ send ();
99105 return Boolean::newBoolean (true );
100106 }
101107 CATCH (" Fail in addMessage!" );
@@ -114,14 +120,26 @@ Local<Value> CommandOutputClass::error(const Arguments& args) {
114120 param.push_back (CommandOutputParameter (paramArr.get (i).asString ().toString ().c_str ()));
115121 }
116122 get ()->error (msg, param);
123+ send ();
117124 return Boolean::newBoolean (true );
118125 }
119126 get ()->error (msg);
127+ send ();
120128 return Boolean::newBoolean (true );
121129 }
122130 CATCH (" Fail in error!" );
123131};
124132
133+ void CommandOutputClass::send () {
134+ try {
135+ if (!isAsync) return ;
136+ ll::service::getMinecraft ()->mCommands ->handleOutput (*origin, *output);
137+ output->mSuccessCount = 0 ;
138+ output->mMessages .clear ();
139+ }
140+ CATCH_WITHOUT_RETURN (" Fail in sendCommandOutput!" );
141+ }
142+
125143Local<Value> CommandOutputClass::toString (const Arguments&) {
126144 try {
127145 return String::newString (" <CommandOutput>" );
0 commit comments