yoni-mcscripts-lib
Version:
为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。
31 lines (30 loc) • 1.02 kB
JavaScript
export class FunctionParamsOverrides {
addOverrides(overrides, func) {
this.entries.push({ overrides, func });
}
entries = [];
match(params) {
EntryFilter: for (const entry of this.entries) {
let paramsCopy = params.slice(0);
const { overrides, func } = entry;
let requireArgc = overrides.reduce((argc, over) => argc + over.argc, 0);
if (params.length !== requireArgc)
continue;
for (const over of overrides) {
const { argc, condition } = over;
const condParams = paramsCopy.splice(0, argc);
if (!condition(argc, condParams)) {
continue EntryFilter; //not match, next entry
}
}
// matched, generate result
const result = func(params);
return {
hasResult: true,
result
};
}
// no reault
return undefined;
}
}