Skip to content

Commit 067ab5c

Browse files
committed
feat: replace quickjs engine with quickjs-ng
feat: update lua engine to 5.4.7 feat: add some test scripts fix: fix a bug in command overload
1 parent 2e4d108 commit 067ab5c

File tree

8 files changed

+78
-43
lines changed

8 files changed

+78
-43
lines changed

docs/apis/ScriptAPI/ScriptHelp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ This is an upgraded version of the above function; it supports color output.
3434

3535
#### Show results:
3636

37-
![ColorLogExample](../../../img/ColorLog.png)
37+
![ColorLogExample](/img/ColorLog.png)
3838

3939
### Asynchronous Output
4040

docs/apis/ScriptAPI/ScriptHelp.zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
#### 效果展示:
3535

36-
![ColorLogExample](../../../img/ColorLog.png)
36+
![ColorLogExample](/img/ColorLog.png)
3737

3838
### 异步输出
3939

src/legacy/api/CommandAPI.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ Local<Value> CommandClass::newParameter(const Arguments& args) {
410410
option = (CommandParameterOption)args[index++].asNumber().toInt32();
411411
if (index != args.size()) throw std::runtime_error("Error Argument in newParameter");
412412

413-
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, optional, enumName}
413+
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, optional, enumName, option}
414414
); // Stores the parameter name for onExecute use
415415

416416
return Boolean::newBoolean(true);
@@ -436,7 +436,7 @@ Local<Value> CommandClass::mandatory(const Arguments& args) {
436436
option = (CommandParameterOption)args[index++].asNumber().toInt32();
437437
if (index != args.size()) throw std::runtime_error("Error Argument in newParameter");
438438

439-
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, false, enumName}
439+
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, false, enumName, option}
440440
); // Stores the parameter name for onExecute use
441441

442442
return Boolean::newBoolean(true);
@@ -462,7 +462,7 @@ Local<Value> CommandClass::optional(const Arguments& args) {
462462
option = (CommandParameterOption)args[index++].asNumber().toInt32();
463463
if (index != args.size()) throw std::runtime_error("Error Argument in newParameter");
464464

465-
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, true, enumName}
465+
getEngineOwnData()->plugin->registeredCommands[commandName].push_back({name, type, true, enumName, option}
466466
); // Stores the parameter name for onExecute use
467467

468468
return Boolean::newBoolean(true);
@@ -495,16 +495,16 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
495495
}
496496
}
497497
};
498-
auto delayRegFunc = [this, &overloadFunc](std::vector<std::string>& enumValues) {
499-
EventBus::getInstance().emplaceListener<ServerStartedEvent>([enumValues,
498+
auto delayRegFunc = [this, &overloadFunc](std::vector<std::string>& paramNames) {
499+
EventBus::getInstance().emplaceListener<ServerStartedEvent>([paramNames,
500500
commandName(commandName),
501501
overloadFunc,
502502
e(EngineScope::currentEngine()
503503
)](ServerStartedEvent&) {
504504
auto cmd = ll::command::CommandRegistrar::getInstance()
505505
.getOrCreateCommand(commandName)
506506
.runtimeOverload(getEngineData(e)->plugin);
507-
for (auto& paramName : enumValues) {
507+
for (auto& paramName : paramNames) {
508508
overloadFunc(cmd, commandName, paramName);
509509
}
510510
cmd.execute(onExecute);
@@ -513,12 +513,12 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
513513

514514
if (args[0].isNumber()) {
515515
if (ll::getGamingStatus() == ll::GamingStatus::Starting) {
516-
std::vector<std::string> enumValues;
516+
std::vector<std::string> paramNames;
517517
for (int i = 0; i < args.size(); ++i) {
518518
CHECK_ARG_TYPE(args[i], ValueKind::kNumber);
519-
enumValues.push_back(std::to_string(args[i].asNumber().toInt32()));
519+
paramNames.push_back(std::to_string(args[i].asNumber().toInt32()));
520520
}
521-
delayRegFunc(enumValues);
521+
delayRegFunc(paramNames);
522522
} else {
523523
auto cmd = get().runtimeOverload(getEngineOwnData()->plugin);
524524
for (int i = 0; i < args.size(); ++i) {
@@ -531,17 +531,17 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
531531
return Boolean::newBoolean(true);
532532
} else if (args[0].isString()) {
533533
if (ll::getGamingStatus() == ll::GamingStatus::Starting) {
534-
std::vector<std::string> enumValues;
534+
std::vector<std::string> paramNames;
535535
for (int i = 0; i < args.size(); ++i) {
536536
CHECK_ARG_TYPE(args[i], ValueKind::kString);
537-
enumValues.push_back(args[0].asString().toString());
537+
paramNames.push_back(args[i].asString().toString());
538538
}
539-
delayRegFunc(enumValues);
539+
delayRegFunc(paramNames);
540540
} else {
541541
auto cmd = get().runtimeOverload(getEngineOwnData()->plugin);
542542
for (int i = 0; i < args.size(); ++i) {
543543
CHECK_ARG_TYPE(args[i], ValueKind::kString);
544-
std::string paramName = args[0].asString().toString();
544+
std::string paramName = args[i].asString().toString();
545545
overloadFunc(cmd, commandName, paramName);
546546
}
547547
cmd.execute(onExecute);
@@ -569,12 +569,12 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
569569
}
570570
if (arr.get(0).isNumber()) {
571571
if (ll::getGamingStatus() == ll::GamingStatus::Starting) {
572-
std::vector<std::string> enumValues;
572+
std::vector<std::string> paramNames;
573573
for (int i = 0; i < arr.size(); ++i) {
574574
CHECK_ARG_TYPE(arr.get(i), ValueKind::kNumber);
575-
enumValues.push_back(std::to_string(arr.get(i).asNumber().toInt32()));
575+
paramNames.push_back(std::to_string(arr.get(i).asNumber().toInt32()));
576576
}
577-
delayRegFunc(enumValues);
577+
delayRegFunc(paramNames);
578578
} else {
579579
auto cmd = get().runtimeOverload(getEngineOwnData()->plugin);
580580
for (int i = 0; i < arr.size(); ++i) {
@@ -587,12 +587,12 @@ Local<Value> CommandClass::addOverload(const Arguments& args) {
587587
return Boolean::newBoolean(true);
588588
} else if (arr.get(0).isString()) {
589589
if (ll::getGamingStatus() == ll::GamingStatus::Starting) {
590-
std::vector<std::string> enumValues;
590+
std::vector<std::string> paramNames;
591591
for (int i = 0; i < arr.size(); ++i) {
592592
CHECK_ARG_TYPE(arr.get(i), ValueKind::kString);
593-
enumValues.push_back(arr.get(i).asString().toString());
593+
paramNames.push_back(arr.get(i).asString().toString());
594594
}
595-
delayRegFunc(enumValues);
595+
delayRegFunc(paramNames);
596596
} else {
597597
auto cmd = get().runtimeOverload(getEngineOwnData()->plugin);
598598
for (int i = 0; i < arr.size(); ++i) {

src/legacy/api/CommandAPI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ enum class OldCommandPermissionLevel : schar {
1717
Internal = 0x5,
1818
};
1919

20-
enum class OldParameterType {
20+
enum class OldParameterType : size_t {
2121
Int,
2222
Bool,
2323
Float,
Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const events = [
1+
export const events = [
22
"onPreJoin",
33
"onJoin",
44
"onLeft",
@@ -78,23 +78,17 @@ const events = [
7878
"onMobSpawned"
7979
];
8080

81-
const triggeredEvents = new Set();
81+
export const triggeredEvents = new Set();
8282

83-
events.forEach(event => {
84-
mc.listen(event, () => {
85-
if (triggeredEvents.has(event)) {
86-
return;
87-
}
88-
logger.info(`Event ${event} triggered`);
89-
triggeredEvents.add(event);
90-
logger.info(`${triggeredEvents.size}/${events.length} events called`);
83+
export function RegisterEvents() {
84+
events.forEach(event => {
85+
mc.listen(event, () => {
86+
if (triggeredEvents.has(event)) {
87+
return;
88+
}
89+
logger.info(`Event ${event} triggered`);
90+
triggeredEvents.add(event);
91+
logger.info(`${triggeredEvents.size}/${events.length} events called`);
92+
});
9193
});
92-
});
93-
94-
// Output which events have not been triggered
95-
let cmd = mc.newCommand('lsetests', "LegacyScriptEngine tests", PermType.Console)
96-
cmd.overload([])
97-
cmd.setCallback((cmd, origin, output, results) => {
98-
const notTriggeredEvents = events.filter(event => !triggeredEvents.has(event));
99-
logger.info(`Events not triggered: ${notTriggeredEvents.join(', ')}`);
100-
})
94+
}

src/tests/LSETests/ScriptTests.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export function loggerTest(player) {
2+
if (player) {
3+
logger.setPlayer(player)
4+
}
5+
logger.setFile("logs/LegacyScriptEngine/ScriptTests.log");
6+
logger.log("This is a log message");
7+
logger.warn("This is a warning message");
8+
logger.error("This is an error message");
9+
logger.debug("This is a debug message");
10+
logger.info("This is an info message");
11+
logger.fatal("This is a fetal message");
12+
}

src/tests/LSETests/main.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {RegisterEvents, events, triggeredEvents} from './plugins/LSETests/EventTests.js';
2+
import {loggerTest} from './plugins/LSETests/ScriptTests.js';
3+
4+
RegisterEvents();
5+
6+
mc.listen('onServerStarted', () => {
7+
let cmd = mc.newCommand('lsetests', "LegacyScriptEngine tests", PermType.Console);
8+
cmd.setEnum('testOption', ['logger', 'events']);
9+
cmd.mandatory('testOption', ParamType.Enum, 'testOption');
10+
cmd.optional('player', ParamType.Player);
11+
cmd.overload('testOption', 'player');
12+
cmd.setCallback((cmd, origin, output, results) => {
13+
switch (results.testOption) {
14+
case 'logger':
15+
loggerTest(results.player);
16+
break;
17+
case 'events':
18+
const
19+
notTriggeredEvents = events.filter(event => !triggeredEvents.has(event));
20+
logger.info(`Events not triggered: ${notTriggeredEvents.join(', ')}`);
21+
break;
22+
default:
23+
logger.error(`Invalid test option ${results.testOption}`);
24+
break;
25+
}
26+
});
27+
})
28+
29+
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"entry": "EventTests.js",
3-
"name": "EventTests",
2+
"entry": "main.js",
3+
"name": "LSETests",
44
"type": "lse-quickjs",
55
"author": "LiteLDev",
66
"version": "1.0.0",

0 commit comments

Comments
 (0)