mbler 0.1.1 → 0.1.3-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/lib/build/base.js +297 -1
  4. package/lib/build/build-g-config.json +11 -11
  5. package/lib/build/getModule.js +182 -1
  6. package/lib/build/index.js +370 -1
  7. package/lib/build/manifest.build.js +103 -1
  8. package/lib/build/mcVersion.js +86 -1
  9. package/lib/build/utils.js +6 -1
  10. package/lib/code-processor/c-handler-export.js +12 -1
  11. package/lib/code-processor/index.js +141 -1
  12. package/lib/code-processor/mtreehandler.js +164 -1
  13. package/lib/commander/index.js +154 -1
  14. package/lib/data/includes.json +12 -12
  15. package/lib/git/clone.js +28 -1
  16. package/lib/git/index.js +12 -1
  17. package/lib/git/pull.js +100 -1
  18. package/lib/lang/__translate.js +93 -1
  19. package/lib/lang/en.js +128 -1
  20. package/lib/lang/index.js +78 -1
  21. package/lib/lang/zh.js +146 -1
  22. package/lib/loger/colors.js +13 -1
  23. package/lib/loger/index.js +136 -1
  24. package/lib/mcx/ast/index.js +11 -1
  25. package/lib/mcx/ast/prop.js +78 -1
  26. package/lib/mcx/ast/tag.js +246 -1
  27. package/lib/mcx/compile-component/lib.js +106 -1
  28. package/lib/mcx/compile-component/types.js +2 -1
  29. package/lib/mcx/compile-component/utils.js +26 -1
  30. package/lib/mcx/compile-mcx/_compile.js +1 -1
  31. package/lib/mcx/compile-mcx/compile.js +34 -1
  32. package/lib/mcx/compile-mcx/context.js +19 -1
  33. package/lib/mcx/compile-mcx/index.js +10 -1
  34. package/lib/mcx/compile-mcx/mcx/index.js +2 -1
  35. package/lib/mcx/compile-mcx/mcx/types.js +2 -1
  36. package/lib/mcx/compile-mcx/template/module.js +42 -1
  37. package/lib/mcx/compile-mcx/types.js +2 -1
  38. package/lib/mcx/compile-mcx/utils.node.js +207 -1
  39. package/lib/mcx/index.js +13 -1
  40. package/lib/mcx/test/index.js +7 -1
  41. package/lib/mcx/test.js +21 -1
  42. package/lib/mcx/types.js +2 -1
  43. package/lib/mcx/utils.js +86 -1
  44. package/lib/module-handler/index.js +482 -1
  45. package/lib/modules/create-game/src/Runner/RunnerManager.js +113 -1
  46. package/lib/modules/create-game/src/Runner/scriptRunner.js +70 -1
  47. package/lib/modules/create-game/src/config.js +27 -1
  48. package/lib/modules/create-game/src/constants.js +19 -1
  49. package/lib/modules/create-game/src/createGameModule.js +24 -1
  50. package/lib/modules/create-game/src/gameComponent/common/autoStop.js +38 -1
  51. package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +76 -1
  52. package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +36 -1
  53. package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +90 -1
  54. package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +29 -1
  55. package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +36 -1
  56. package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +29 -1
  57. package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +87 -1
  58. package/lib/modules/create-game/src/gameComponent/gameComponent.js +53 -1
  59. package/lib/modules/create-game/src/gameComponent/index.js +31 -1
  60. package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +40 -1
  61. package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +48 -1
  62. package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +48 -1
  63. package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +22 -1
  64. package/lib/modules/create-game/src/gameComponent/player/respawn.js +59 -1
  65. package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +69 -1
  66. package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +53 -1
  67. package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +71 -1
  68. package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +20 -1
  69. package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +77 -1
  70. package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +83 -1
  71. package/lib/modules/create-game/src/gameContext.js +6 -1
  72. package/lib/modules/create-game/src/gameEngine.js +139 -1
  73. package/lib/modules/create-game/src/gameEvent/eventManager.js +108 -1
  74. package/lib/modules/create-game/src/gameEvent/eventSignal.js +28 -1
  75. package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +41 -1
  76. package/lib/modules/create-game/src/gameEvent/events/inSlot.js +77 -1
  77. package/lib/modules/create-game/src/gameEvent/events/interval.js +51 -1
  78. package/lib/modules/create-game/src/gameEvent/events/itemUse.js +36 -1
  79. package/lib/modules/create-game/src/gameEvent/events/onBlock.js +106 -1
  80. package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +105 -1
  81. package/lib/modules/create-game/src/gameEvent/events/signClick.js +45 -1
  82. package/lib/modules/create-game/src/gameEvent/gameEvent.js +54 -1
  83. package/lib/modules/create-game/src/gameEvent/index.js +20 -1
  84. package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +101 -1
  85. package/lib/modules/create-game/src/gameEvent/subscription.js +17 -1
  86. package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +102 -1
  87. package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +38 -1
  88. package/lib/modules/create-game/src/gamePlayer/groupSet.js +96 -1
  89. package/lib/modules/create-game/src/gamePlayer/index.js +25 -1
  90. package/lib/modules/create-game/src/gamePlayer/playerGroup.js +145 -1
  91. package/lib/modules/create-game/src/gamePlayer/playerManager.js +57 -1
  92. package/lib/modules/create-game/src/gameRegion/gameRegion.js +229 -1
  93. package/lib/modules/create-game/src/gameRegion/index.js +43 -1
  94. package/lib/modules/create-game/src/gameRegion/regionHelper.js +79 -1
  95. package/lib/modules/create-game/src/gameState/common/autoStop.js +39 -1
  96. package/lib/modules/create-game/src/gameState/gameState.js +169 -1
  97. package/lib/modules/create-game/src/gameState/index.js +7 -1
  98. package/lib/modules/create-game/src/gameState/types.js +35 -1
  99. package/lib/modules/create-game/src/gameStructure/gameStructure.js +36 -1
  100. package/lib/modules/create-game/src/main.js +86 -1
  101. package/lib/modules/create-game/src/system/gameCommand.js +107 -1
  102. package/lib/modules/create-game/src/system/gameManager.js +124 -1
  103. package/lib/modules/create-game/src/system/globalPlayerManager.js +119 -1
  104. package/lib/modules/create-game/src/utils/GameError.js +31 -1
  105. package/lib/modules/create-game/src/utils/algorithm.js +95 -1
  106. package/lib/modules/create-game/src/utils/chunk.js +63 -1
  107. package/lib/modules/create-game/src/utils/deferredObject.js +27 -1
  108. package/lib/modules/create-game/src/utils/duration.js +25 -1
  109. package/lib/modules/create-game/src/utils/func.js +20 -1
  110. package/lib/modules/create-game/src/utils/index.js +52 -1
  111. package/lib/modules/create-game/src/utils/interfaces.js +2 -1
  112. package/lib/modules/create-game/src/utils/logger.js +47 -1
  113. package/lib/modules/create-game/src/utils/random.js +76 -1
  114. package/lib/modules/create-game/src/utils/vanila-data.js +123 -1
  115. package/lib/modules/create-game/src/utils/vector.js +96 -1
  116. package/lib/modules/gameLib/src/config.js +134 -1
  117. package/lib/modules/gameLib/src/data.js +77 -1
  118. package/lib/modules/gameLib/src/entity.js +256 -1
  119. package/lib/modules/gameLib/src/event.js +285 -1
  120. package/lib/modules/gameLib/src/index.js +20 -1
  121. package/lib/modules/gameLib/src/loger.js +21 -1
  122. package/lib/modules/gameLib/src/ui.js +209 -1
  123. package/lib/modules/gameLib/src/utils.js +122 -1
  124. package/lib/modules/gutils/src/index.js +22 -1
  125. package/lib/runTemp/File.js +54 -1
  126. package/lib/runTemp/index.js +137 -1
  127. package/lib/runTemp/securityFile.js +93 -1
  128. package/lib/start/addPack.js +3 -1
  129. package/lib/start/clean.js +84 -1
  130. package/lib/start/create.js +146 -1
  131. package/lib/start/dev.js +99 -1
  132. package/lib/start/getResConfig.js +3 -1
  133. package/lib/start/incg.js +3 -1
  134. package/lib/start/index.js +207 -1
  135. package/lib/start/init.js +125 -1
  136. package/lib/start/rechce.js +57 -1
  137. package/lib/start/unaddPack.js +3 -1
  138. package/lib/start/unincg.js +67 -1
  139. package/lib/start/version.js +73 -1
  140. package/lib/utils/index.js +298 -1
  141. package/lib/uuid/index.js +27 -1
  142. package/package.json +1 -1
  143. package/test/script-mbler/behavior/scripts/index.js +0 -5
@@ -1 +1,370 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i);var a=Object.getOwnPropertyDescriptor(t,i);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,s,a)}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[t.length]=i);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var i={};if(null!=t)for(var s=e(t),a=0;a<s.length;a++)"default"!==s[a]&&__createBinding(i,t,s[a]);return __setModuleDefault(i,t),i}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const fs=__importStar(require("fs/promises")),path=__importStar(require("path")),ts=__importStar(require("typescript")),index_js_1=__importDefault(require("./../lang/index.js")),index_js_2=require("./../uuid/index.js"),index_js_3=__importDefault(require("./../code-processor/index.js")),utils=__importStar(require("./../utils/index.js")),getModule_js_1=__importDefault(require("./getModule.js")),includes_json_1=__importDefault(require("./../data/includes.json")),clean_js_1=__importDefault(require("./../start/clean.js")),index_js_4=__importDefault(require("./../runTemp/index.js")),base_js_1=require("./base.js"),manifest_build_js_1=require("./manifest.build.js"),index_js_5=__importDefault(require("./../mcx/index.js")),node_os_1=__importDefault(require("node:os")),utils_1=__importDefault(require("./utils"));class Build extends base_js_1.BaseBuild{baseDir;baseModDir;gamelibModule;constructor(e,t){super(),e||utils.Exit(index_js_1.default.build.config_invalid),this.baseDir=t,this.baseCwd=path.isAbsolute(e)?e:path.join(t,e),this.cwd=path.join(this.baseCwd,"behavior"),this.ResOutDir=null,this.ResCwd=path.join(this.baseCwd,"resources"),this.dependencies={},this.gamelibModule=null,this.baseModDir=path.join(this.baseDir,"lib/modules"),this.#e(["baseModDir","baseDir"]),this.#t(["outdir","dependencies","gamelibModule","cwd","ResCwd","baseModDir","baseCwd"]),this.cacheDir=path.join(this.baseCwd,".cache__mbler__")}#e(e){if(Array.isArray(e))for(let t of e)Object.defineProperty(this,t,{enumerable:!1,writable:!1})}#t(e){if(Array.isArray(e))for(let t of e)Object.defineProperty(this,t,{enumerable:!1})}async#i(){try{await fs.mkdir(this.cacheDir,{recursive:!0})}catch(e){if("EEXIST"!==e.code)throw e}}build(){return this.start().catch(e=>{const t=utils.toString(e);(0,utils_1.default)(index_js_1.default.build.error_message_log+t)})}async start(){const e=Date.now();await this.#i();const{configChanged:t,packageChanged:i}=await this.chackConfigHash(),s=new clean_js_1.default(this.baseCwd,this.baseDir);await s.run(),await utils.waitGC();const a=await this.loadPackageData();this.d_data=a,this.outdir=this.getOutputDir(a.outdir?.behavior,path.join(this.baseCwd,"dist/dep")),this.ResOutDir=this.getOutputDir(a.outdir?.resources,path.join(this.baseCwd,"dist/res"));const r=["name","description","version","mcVersion"];if(!utils.hasKeys(a,r,r.length))throw new Error(`${index_js_1.default.build.package_file} 字段缺失:必需字段 ${JSON.stringify(r)}`);switch(this.gamelibModule=await(0,getModule_js_1.default)(this.baseDir),console.log(index_js_1.default.build.build_info_header),console.table({[index_js_1.default.build.project_path]:this.baseCwd,[index_js_1.default.build.output_dir]:JSON.stringify(a.outdir),[index_js_1.default.build.minify_enabled]:Boolean(a.minify),[index_js_1.default.build.build_time]:Build.times,[index_js_1.default.build.tip_dist]:process.env.MBLER_BUILD_MODULE||"dev"}),await Promise.all([this.writeManifest(a),this.handleScripts(a),this.handleIncludes(),this.processSubpacks(a)]),a.script?.lang||""){case"ts":await this.compileTypeScriptUnified();break;case"mcx":await index_js_5.default.load({ProjectDir:path.join(this.cwd,"scripts"),config:{useTS:!0},output:path.join(this.outdir,"scripts"),moduleList:this.Modules,main:path.join(this.cwd,a.script?.main||"index.js"),cacheDir:this.cacheDir,moduleDir:path.join(this.outdir,"scripts/node_modules"),isCache:!0})}await Promise.all([this.processMinification(a),this.processResources()]),await this.processDist(),console.log(`${index_js_1.default.build.build_success} ${(Date.now()-e)/1e3}`)}async writeManifest(e){const t=await this.buildManifest(e);await this.writeFile(path.join(this.outdir,"manifest.json"),t)}async buildManifest(e){const t=new manifest_build_js_1.ManiFest(e,"data").data,i=e.subpack||{};return"object"==typeof e.ResDes&&this.processResourceDependencies(e,t),"object"==typeof e.subpack&&Object.keys(e.subpack).length>0&&(t.subpack=Object.keys(e.subpack).map(e=>({folder_name:e,name:i[e]||"",memory_tier:1}))),t}processResourceDependencies(e,t){const{name:i="unknown",version:s}=e.ResDes||{};s&&utils.isVerison(s)&&t.dependencies.push({name:(0,index_js_2.fromString)(i),version:utils.ToArray(s)})}async handleScripts(e){if(!e.script||"object"!=typeof e.script)return;const t=path.join(this.cwd,"scripts"),i=path.join(this.outdir,"scripts");await utils.FileExsit(t)&&(await utils.copy(t,i),this.dependencies=e.script.dependencies||{},await this.initNpmDes(),Object.keys(this.dependencies).length>0&&(this.Modules=await this.handlerMod(this.dependencies,new Set)))}async processSubpacks(e){if("object"!=typeof e.subpack)return;const t=this.outdir,i=new Build(this.cwd,this.baseDir);for(let[s,a]of Object.entries(e.subpack))try{const e=path.join(this.cwd,"subpacks",s),a=path.join(t,"subpacks",s);if(await fs.mkdir(a,{recursive:!0}),!await utils.FileExsit(e)){(0,utils_1.default)(index_js_1.default.build.subpack_folder_not_found.replace("{id}",s));continue}const r=path.join(e,"scripts"),n=path.join(a,"scripts");await utils.FileExsit(r)&&await utils.copy(r,n),i.cwd=e,i.outdir=a,await i.handleIncludes()}catch(e){(0,utils_1.default)(index_js_1.default.build.error_processing_subpack.replace("{id}",s).replace("{error}",e.stack))}}async compileTypeScriptUnified(){const e=new index_js_4.default(path.join(node_os_1.default.tmpdir(),"mbler"));await e.init();const t=e.dir;try{const e=await this.getAllTsFiles(this.outdir);if(!e||0===e.length)return void(0,utils_1.default)(index_js_1.default.build.ts_no_files);let i={compilerOptions:{target:"esnext",module:"esnext",moduleResolution:"NodeNext",esModuleInterop:!0,verbatimModuleSyntax:!1,allowSyntheticDefaultImports:!0,outDir:t,rootDir:this.outdir,strict:!0,allowJs:!0,sourceMap:!1,incremental:!0,tsBuildInfoFile:path.join(this.cacheDir,"tsbuildinfo")},include:["**/*.ts"]};await utils.FileExsit(path.join(this.baseCwd,"tsconfig.json"))&&(i=JSON.parse(await fs.readFile(path.join(this.baseCwd,"tsconfig.json"),"utf-8")));const s=ts.parseJsonConfigFileContent(i,ts.sys,this.outdir,void 0,"tsconfig.json"),a=ts.createProgram({rootNames:e,options:s.options}),r=a.emit();ts.getPreEmitDiagnostics(a).concat(r.diagnostics).forEach(e=>{const t=ts.flattenDiagnosticMessageText(e.messageText,"\n");if(e.file){const{line:i,character:s}=e.file.getLineAndCharacterOfPosition(e.start);(0,utils_1.default)(index_js_1.default.build.ts_diagnostics.replace("{file}",e.file.fileName).replace("{line}",(i+1).toString()).replace("{character}",(s+1).toString()).replace("{message}",t))}else(0,utils_1.default)(t)}),await this.removeJsFiles(path.join(this.outdir,"scripts")),await this.copyCompiledOnly(t,this.outdir),(0,utils_1.default)(index_js_1.default.build.ts_compilation_error+" 完成")}catch(e){throw(0,utils_1.default)(index_js_1.default.build.ts_compilation_error+e.stack),e}finally{await e.remove()}}async handlerMod(e,t=new Set){const i=this.gamelibModule.getAll(),s=path.join(this.outdir,"scripts/node_modules");let a={};for(const[r,n]of Object.entries(e)){if(!i.includes(r)||t.has(r))continue;const e=await this.gamelibModule.getDir(r,{gitUrl:n,v:this.d_data.mcVersion});if(!e||!await utils.FileExsit(e))continue;const o=await utils.handlerPackage(e,{des:Array.from(t)});o.des&&Object.assign(a,o.des),await utils.copy(e,path.join(s,r)),await utils.waitGC(),t.add(r)}return Object.keys(a).length>0&&await this.handlerMod(a,t),Array.from(t)}handleIncludes(){if(!Array.isArray(includes_json_1.default))return;const e=includes_json_1.default.filter(e=>"string"==typeof e).map(async e=>{const t=path.join(this.cwd,"res",e),i=path.join(this.outdir,e);await utils.FileExsit(t)&&await utils.copy(t,i)});return Promise.all(e)}async processMinification(e){try{if(!Array.isArray(includes_json_1.default))return void(0,utils_1.default)(index_js_1.default.build.includes_not_array);await(0,index_js_3.default)(this.outdir,{modules:this.Modules,sourceDir:path.join(this.outdir,"scripts"),baseDir:this.baseDir,minify:Boolean(e.minify)}),await utils.waitGC()}catch(e){(0,utils_1.default)(index_js_1.default.build.minification_error+e)}}}exports.default=Build;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const fs = __importStar(require("fs/promises"));
40
+ const path = __importStar(require("path"));
41
+ const ts = __importStar(require("typescript"));
42
+ const index_js_1 = __importDefault(require("./../lang/index.js"));
43
+ const index_js_2 = require("./../uuid/index.js");
44
+ const index_js_3 = __importDefault(require("./../code-processor/index.js"));
45
+ const utils = __importStar(require("./../utils/index.js"));
46
+ const getModule_js_1 = __importDefault(require("./getModule.js"));
47
+ const includes_json_1 = __importDefault(require("./../data/includes.json"));
48
+ const clean_js_1 = __importDefault(require("./../start/clean.js"));
49
+ const index_js_4 = __importDefault(require("./../runTemp/index.js"));
50
+ const base_js_1 = require("./base.js");
51
+ const manifest_build_js_1 = require("./manifest.build.js");
52
+ const index_js_5 = __importDefault(require("./../mcx/index.js"));
53
+ const node_os_1 = __importDefault(require("node:os"));
54
+ const utils_1 = __importDefault(require("./utils"));
55
+ // 构建主类
56
+ class Build extends base_js_1.BaseBuild {
57
+ baseDir;
58
+ baseModDir;
59
+ gamelibModule;
60
+ constructor(buildPath, baseDir) {
61
+ super();
62
+ if (!buildPath)
63
+ utils.Exit(index_js_1.default.build.config_invalid);
64
+ this.baseDir = baseDir;
65
+ this.baseCwd = path.isAbsolute(buildPath) ?
66
+ buildPath :
67
+ path.join(baseDir, buildPath);
68
+ this.cwd = path.join(this.baseCwd, "behavior");
69
+ this.ResOutDir = null;
70
+ this.ResCwd = path.join(this.baseCwd, "resources");
71
+ this.dependencies = {};
72
+ this.gamelibModule = null;
73
+ this.baseModDir = path.join(this.baseDir, 'lib/modules');
74
+ // 锁定属性
75
+ this.#ObjectPri(['baseModDir', 'baseDir']);
76
+ this.#ObjectPriEn(["outdir", "dependencies", "gamelibModule", "cwd", "ResCwd", "baseModDir", "baseCwd"]);
77
+ this.cacheDir = path.join(this.baseCwd, '.cache__mbler__');
78
+ }
79
+ #ObjectPri(list) {
80
+ if (!Array.isArray(list))
81
+ return;
82
+ for (let item of list) {
83
+ Object.defineProperty(this, item, {
84
+ enumerable: false,
85
+ writable: false
86
+ });
87
+ }
88
+ }
89
+ // 私有:设置不可枚举属性
90
+ #ObjectPriEn(list) {
91
+ if (!Array.isArray(list))
92
+ return;
93
+ for (let item of list) {
94
+ Object.defineProperty(this, item, {
95
+ enumerable: false
96
+ });
97
+ }
98
+ }
99
+ // 确保缓存目录存在
100
+ async #ensureCacheDir() {
101
+ try {
102
+ await fs.mkdir(this.cacheDir, {
103
+ recursive: true
104
+ });
105
+ }
106
+ catch (err) {
107
+ // 如果目录已存在,忽略错误
108
+ if (err.code !== 'EEXIST') {
109
+ throw err;
110
+ }
111
+ }
112
+ }
113
+ // 构建入口
114
+ build() {
115
+ return this.start().catch(err => {
116
+ const errorMsg = utils.toString(err);
117
+ (0, utils_1.default)(index_js_1.default.build.error_message_log + errorMsg);
118
+ });
119
+ }
120
+ async start() {
121
+ const startTime = Date.now();
122
+ await this.#ensureCacheDir();
123
+ const { configChanged, packageChanged } = await this.chackConfigHash();
124
+ const clean = new clean_js_1.default(this.baseCwd, this.baseDir);
125
+ await clean.run();
126
+ await utils.waitGC();
127
+ const data = await this.loadPackageData();
128
+ this.d_data = data;
129
+ this.outdir = this.getOutputDir(data.outdir?.behavior, path.join(this.baseCwd, "dist/dep"));
130
+ this.ResOutDir = this.getOutputDir(data.outdir?.resources, path.join(this.baseCwd, "dist/res"));
131
+ const requiredKeys = ['name', 'description', 'version', 'mcVersion'];
132
+ if (!utils.hasKeys(data, requiredKeys, requiredKeys.length))
133
+ throw new Error(`${index_js_1.default.build.package_file} 字段缺失:必需字段 ${JSON.stringify(requiredKeys)}`);
134
+ this.gamelibModule = await (0, getModule_js_1.default)(this.baseDir);
135
+ console.log(index_js_1.default.build.build_info_header);
136
+ console.table({
137
+ [index_js_1.default.build.project_path]: this.baseCwd,
138
+ [index_js_1.default.build.output_dir]: JSON.stringify(data.outdir),
139
+ [index_js_1.default.build.minify_enabled]: Boolean(data.minify),
140
+ [index_js_1.default.build.build_time]: Build.times,
141
+ [index_js_1.default.build.tip_dist]: process.env.MBLER_BUILD_MODULE || "dev"
142
+ });
143
+ // 并发处理资源、脚本、子包、includes
144
+ await Promise.all([
145
+ this.writeManifest(data),
146
+ this.handleScripts(data),
147
+ this.handleIncludes(),
148
+ this.processSubpacks(data)
149
+ ]);
150
+ switch (data.script?.lang || "") {
151
+ case "ts": // TypeScript 编译
152
+ await this.compileTypeScriptUnified();
153
+ break;
154
+ case "mcx":
155
+ await index_js_5.default.load({
156
+ ProjectDir: path.join(this.cwd, "scripts"),
157
+ config: {
158
+ useTS: true
159
+ },
160
+ output: path.join(this.outdir, "scripts"),
161
+ moduleList: this.Modules,
162
+ main: path.join(this.cwd, data.script?.main || "index.js"),
163
+ cacheDir: this.cacheDir,
164
+ moduleDir: path.join(this.outdir, "scripts/node_modules"),
165
+ isCache: true
166
+ });
167
+ break;
168
+ }
169
+ await Promise.all([this.processMinification(data),
170
+ // 资源包处理
171
+ this.processResources()
172
+ ]);
173
+ await this.processDist();
174
+ // 最终完成
175
+ console.log(`${index_js_1.default.build.build_success} ${(Date.now() - startTime) / 1000}`);
176
+ }
177
+ async writeManifest(data) {
178
+ const manifest = await this.buildManifest(data);
179
+ await this.writeFile(path.join(this.outdir, 'manifest.json'), manifest);
180
+ }
181
+ async buildManifest(data) {
182
+ const manifest = (new manifest_build_js_1.ManiFest(data, "data")).data;
183
+ const subpack = data.subpack || {};
184
+ if (typeof data.ResDes === 'object')
185
+ this.processResourceDependencies(data, manifest);
186
+ if (typeof data.subpack === 'object' && Object.keys(data.subpack).length > 0) {
187
+ manifest.subpack = Object.keys(data.subpack).map(id => ({
188
+ folder_name: id,
189
+ name: subpack[id] || "",
190
+ memory_tier: 1
191
+ }));
192
+ }
193
+ return manifest;
194
+ }
195
+ processResourceDependencies(data, manifest) {
196
+ const { name = 'unknown', version } = data.ResDes || {};
197
+ if (version && utils.isVerison(version)) {
198
+ manifest.dependencies.push({
199
+ name: (0, index_js_2.fromString)(name),
200
+ version: utils.ToArray(version)
201
+ });
202
+ }
203
+ }
204
+ async handleScripts(data) {
205
+ if (!data.script || typeof data.script !== 'object')
206
+ return;
207
+ const scriptsDir = path.join(this.cwd, 'scripts');
208
+ const outScripts = path.join(this.outdir, 'scripts');
209
+ if (!(await utils.FileExsit(scriptsDir)))
210
+ return;
211
+ // 复制主包脚本
212
+ await utils.copy(scriptsDir, outScripts);
213
+ this.dependencies = data.script.dependencies || {};
214
+ await this.initNpmDes();
215
+ if (Object.keys(this.dependencies).length > 0) {
216
+ this.Modules = await this.handlerMod(this.dependencies, new Set());
217
+ }
218
+ }
219
+ async processSubpacks(data) {
220
+ if (typeof data.subpack !== 'object')
221
+ return;
222
+ const outdir = this.outdir;
223
+ const content = new Build(this.cwd, this.baseDir);
224
+ for (let [id, title] of Object.entries(data.subpack)) {
225
+ try {
226
+ const subpackPath = path.join(this.cwd, 'subpacks', id);
227
+ const outSubpack = path.join(outdir, 'subpacks', id);
228
+ await fs.mkdir(outSubpack, {
229
+ recursive: true
230
+ });
231
+ if (!(await utils.FileExsit(subpackPath))) {
232
+ (0, utils_1.default)(index_js_1.default.build.subpack_folder_not_found.replace('{id}', id));
233
+ continue;
234
+ }
235
+ const subScriptDir = path.join(subpackPath, 'scripts');
236
+ const outSubScriptDir = path.join(outSubpack, 'scripts');
237
+ if (await utils.FileExsit(subScriptDir)) {
238
+ await utils.copy(subScriptDir, outSubScriptDir);
239
+ }
240
+ // 复制子包其他资源
241
+ content.cwd = subpackPath;
242
+ content.outdir = outSubpack;
243
+ await content.handleIncludes();
244
+ }
245
+ catch (err) {
246
+ (0, utils_1.default)(index_js_1.default.build.error_processing_subpack.replace('{id}', id).replace('{error}', err.stack));
247
+ }
248
+ }
249
+ }
250
+ async compileTypeScriptUnified() {
251
+ const tempMod = new index_js_4.default(path.join(node_os_1.default.tmpdir(), "mbler"));
252
+ await tempMod.init();
253
+ const tempDir = tempMod.dir;
254
+ try {
255
+ const rootFiles = await this.getAllTsFiles(this.outdir);
256
+ if (!rootFiles || rootFiles.length === 0) {
257
+ (0, utils_1.default)(index_js_1.default.build.ts_no_files);
258
+ return;
259
+ }
260
+ let tsConfigJson = {
261
+ compilerOptions: {
262
+ target: "esnext",
263
+ module: "esnext",
264
+ moduleResolution: "NodeNext",
265
+ esModuleInterop: true,
266
+ verbatimModuleSyntax: false,
267
+ allowSyntheticDefaultImports: true,
268
+ outDir: tempDir,
269
+ rootDir: this.outdir,
270
+ strict: true,
271
+ allowJs: true,
272
+ sourceMap: false,
273
+ incremental: true, // 启用增量编译
274
+ tsBuildInfoFile: path.join(this.cacheDir, 'tsbuildinfo') // 指定缓存文件
275
+ },
276
+ include: ["**/*.ts"]
277
+ };
278
+ if (await utils.FileExsit(path.join(this.baseCwd, "tsconfig.json")))
279
+ tsConfigJson = JSON.parse(await fs.readFile(path.join(this.baseCwd, "tsconfig.json"), "utf-8"));
280
+ const parsed = ts.parseJsonConfigFileContent(tsConfigJson, ts.sys, this.outdir, undefined, "tsconfig.json");
281
+ const program = ts.createProgram({
282
+ rootNames: rootFiles,
283
+ options: parsed.options
284
+ });
285
+ const emitResult = program.emit();
286
+ const allDiagnostics = ts
287
+ .getPreEmitDiagnostics(program)
288
+ .concat(emitResult.diagnostics);
289
+ allDiagnostics.forEach(d => {
290
+ const msg = ts.flattenDiagnosticMessageText(d.messageText, "\n");
291
+ if (d.file) {
292
+ const { line, character } = d.file.getLineAndCharacterOfPosition(d.start);
293
+ (0, utils_1.default)(index_js_1.default.build.ts_diagnostics.replace('{file}', d.file.fileName).replace('{line}', (line + 1).toString()).replace('{character}', (character + 1).toString()).replace('{message}', msg));
294
+ }
295
+ else {
296
+ (0, utils_1.default)(msg);
297
+ }
298
+ });
299
+ await this.removeJsFiles(path.join(this.outdir, 'scripts'));
300
+ await this.copyCompiledOnly(tempDir, this.outdir);
301
+ (0, utils_1.default)(index_js_1.default.build.ts_compilation_error + " 完成");
302
+ }
303
+ catch (err) {
304
+ (0, utils_1.default)(index_js_1.default.build.ts_compilation_error + err.stack);
305
+ throw err;
306
+ }
307
+ finally {
308
+ await tempMod.remove();
309
+ }
310
+ }
311
+ async handlerMod(modules, processed = new Set()) {
312
+ const allModules = this.gamelibModule.getAll();
313
+ const scriptOutDir = path.join(this.outdir, 'scripts/node_modules');
314
+ let nextDeps = {};
315
+ for (const [packageName, gitRepo] of Object.entries(modules)) {
316
+ if (!allModules.includes(packageName) || processed.has(packageName))
317
+ continue;
318
+ const srcDir = await this.gamelibModule.getDir(packageName, {
319
+ gitUrl: gitRepo,
320
+ v: this.d_data.mcVersion
321
+ });
322
+ if (!srcDir || !(await utils.FileExsit(srcDir)))
323
+ continue;
324
+ const pkg = await utils.handlerPackage(srcDir, {
325
+ des: Array.from(processed)
326
+ });
327
+ if (pkg.des)
328
+ Object.assign(nextDeps, pkg.des);
329
+ await utils.copy(srcDir, path.join(scriptOutDir, packageName));
330
+ await utils.waitGC();
331
+ processed.add(packageName);
332
+ }
333
+ if (Object.keys(nextDeps).length > 0)
334
+ await this.handlerMod(nextDeps, processed);
335
+ return Array.from(processed);
336
+ }
337
+ handleIncludes() {
338
+ if (!Array.isArray(includes_json_1.default))
339
+ return;
340
+ const copyOperations = includes_json_1.default
341
+ .filter(item => typeof item === 'string')
342
+ .map(async (item) => {
343
+ const src = path.join(this.cwd, 'res', item);
344
+ const dest = path.join(this.outdir, item);
345
+ if (await utils.FileExsit(src)) {
346
+ await utils.copy(src, dest);
347
+ }
348
+ });
349
+ return Promise.all(copyOperations);
350
+ }
351
+ async processMinification(data) {
352
+ try {
353
+ if (!Array.isArray(includes_json_1.default)) {
354
+ (0, utils_1.default)(index_js_1.default.build.includes_not_array);
355
+ return;
356
+ }
357
+ await (0, index_js_3.default)(this.outdir, {
358
+ modules: this.Modules,
359
+ sourceDir: path.join(this.outdir, 'scripts'),
360
+ baseDir: this.baseDir,
361
+ minify: Boolean(data.minify)
362
+ });
363
+ await utils.waitGC();
364
+ }
365
+ catch (err) {
366
+ (0, utils_1.default)(index_js_1.default.build.minification_error + err);
367
+ }
368
+ }
369
+ }
370
+ exports.default = Build;
@@ -1 +1,103 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,i,r,t){void 0===t&&(t=r);var n=Object.getOwnPropertyDescriptor(i,r);n&&!("get"in n?!i.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return i[r]}}),Object.defineProperty(e,t,n)}:function(e,i,r,t){void 0===t&&(t=r),e[t]=i[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}:function(e,i){e.default=i}),__importStar=this&&this.__importStar||function(){var e=function(i){return e=Object.getOwnPropertyNames||function(e){var i=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[i.length]=r);return i},e(i)};return function(i){if(i&&i.__esModule)return i;var r={};if(null!=i)for(var t=e(i),n=0;n<t.length;n++)"default"!==t[n]&&__createBinding(r,i,t[n]);return __setModuleDefault(r,i),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ManiFest=void 0;const build_g_config_json_1=__importDefault(require("./build-g-config.json")),utils=__importStar(require("./../utils/index.js")),mcVersion_js_1=require("./mcVersion.js"),index_js_1=require("./../uuid/index.js"),path=__importStar(require("path")),config=build_g_config_json_1.default,isNonEmptyString=e=>"string"==typeof e&&e.trim().length>0;class ManiFest{data;constructor(e,i){this.data={format_version:2,header:{name:e.name,description:e.description,uuid:(0,index_js_1.fromString)(e.name,config[i].header),version:utils.ToArray(e.version),min_engine_version:utils.ToArray(e.mcVersion.toString())},modules:[{type:i,uuid:(0,index_js_1.fromString)(e.name,config[i].module),description:"From Mbler",version:utils.ToArray(e.version)}]},"data"===i&&e.script&&this.processScriptConfig(e,this.data)}processScriptConfig(e,i){const{script:r}=e;if(!r)return;let t=r.main||"index.js";if(t?.endsWith(".mcx")&&"mcx"===r.lang&&(t="index.js"),!isNonEmptyString(t))throw new Error("Script main entry is missing or invalid");i.dependencies||(i.dependencies=[]),i.dependencies.push({module_name:"@minecraft/server",version:mcVersion_js_1.mcVersionGeter.ToServer(e.mcVersion.toString(),Boolean(r.UseBeta))}),i.modules.push({type:"script",language:"javascript",entry:path.join("scripts",t).replace("\\","/ "),uuid:(0,index_js_1.fromString)(e.name,config.ScriptId),version:utils.ToArray(e.version)}),!0===r.ui&&i.dependencies.push({module_name:"@minecraft/server-ui",version:mcVersion_js_1.mcVersionGeter.ToServerUi(e.mcVersion.toString(),Boolean(r.UseBeta))}),i.capabilities=["script_eval"]}}exports.ManiFest=ManiFest;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ManiFest = void 0;
40
+ const build_g_config_json_1 = __importDefault(require("./build-g-config.json"));
41
+ const utils = __importStar(require("./../utils/index.js"));
42
+ const mcVersion_js_1 = require("./mcVersion.js");
43
+ const index_js_1 = require("./../uuid/index.js");
44
+ const path = __importStar(require("path"));
45
+ const config = build_g_config_json_1.default;
46
+ const isNonEmptyString = (str) => typeof str === 'string' && str.trim().length > 0;
47
+ class ManiFest {
48
+ data;
49
+ constructor(MblerConfig, type) {
50
+ this.data = {
51
+ format_version: 2,
52
+ header: {
53
+ name: MblerConfig.name,
54
+ description: MblerConfig.description,
55
+ uuid: (0, index_js_1.fromString)(MblerConfig.name, config[type].header),
56
+ version: utils.ToArray(MblerConfig.version),
57
+ min_engine_version: utils.ToArray(MblerConfig.mcVersion.toString()),
58
+ },
59
+ modules: [{
60
+ type: type,
61
+ uuid: (0, index_js_1.fromString)(MblerConfig.name, config[type].module),
62
+ description: `From Mbler`,
63
+ version: utils.ToArray(MblerConfig.version),
64
+ }]
65
+ };
66
+ if (type === "data" && MblerConfig.script)
67
+ this.processScriptConfig(MblerConfig, this.data);
68
+ }
69
+ processScriptConfig(data, manifest) {
70
+ const { script } = data;
71
+ if (!script)
72
+ return;
73
+ let entry = script.main || "index.js";
74
+ // 如果是mcx,直接设为index.js,因为mcxLoad类会聚集mcx文件和其他文件将其编译输出到index.js
75
+ if (entry?.endsWith(".mcx") && script.lang === "mcx")
76
+ entry = "index.js";
77
+ if (!isNonEmptyString(entry))
78
+ throw new Error('Script main entry is missing or invalid');
79
+ if (!manifest.dependencies)
80
+ manifest.dependencies = [];
81
+ manifest.dependencies.push({
82
+ module_name: '@minecraft/server',
83
+ version: mcVersion_js_1.mcVersionGeter.ToServer(data.mcVersion.toString(), Boolean(script.UseBeta))
84
+ });
85
+ manifest.modules.push({
86
+ type: 'script',
87
+ language: 'javascript',
88
+ entry: path.join("scripts", entry).replace("\\", "/ "),
89
+ uuid: (0, index_js_1.fromString)(data.name, config.ScriptId),
90
+ version: utils.ToArray(data.version),
91
+ });
92
+ if (script.ui === true) {
93
+ manifest.dependencies.push({
94
+ module_name: '@minecraft/server-ui',
95
+ version: mcVersion_js_1.mcVersionGeter.ToServerUi(data.mcVersion.toString(), Boolean(script.UseBeta))
96
+ });
97
+ }
98
+ ;
99
+ manifest.capabilities = ['script_eval'];
100
+ }
101
+ ;
102
+ }
103
+ exports.ManiFest = ManiFest;
@@ -1 +1,86 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mcVersionGeter=void 0;const VERSION_TABLE=require("./../data/version.json").version,normalize=e=>String(e||"").trim(),parts=e=>normalize(e).split(".").slice(0,3).map(e=>parseInt(e,10)||0),compareVer=(e,r)=>{const t=parts(e),n=parts(r);for(let e=0;e<3;e++){const r=t[e],a=n[e];if(r&&a&&r!==a)return r>a?1:-1}return 0},findMatch=e=>{const r=normalize(e);for(const e of VERSION_TABLE){const[t,n]=e.range;if(compareVer(r,t)>=0&&compareVer(r,n)<=0)return{item:e,match:"exact",start:t,end:n}}const t=[...VERSION_TABLE].sort((e,r)=>compareVer(r.range[0],e.range[0]));for(const e of t)if(compareVer(r,e.range[0])>=0)return{item:e,match:"fallback",start:e.range[0],end:e.range[1]};const n=t[t.length-1];return{item:n,match:"oldest",start:n.range[0],end:n.range[1]}};exports.mcVersionGeter={ToServer(e,r=!1){const{item:t,match:n,start:a,end:o}=findMatch(e);return"exact"!==n&&console.warn(`⚠️ 使用兼容版本 ${a}-${o}(输入:${e})`),r?t.beta.server:t.format.server},ToServerUi(e,r=!1){const{item:t,match:n,start:a,end:o}=findMatch(e);return"exact"!==n&&console.warn(`⚠️ 使用兼容版本 ${a}-${o}(输入:${e})`),r?t.beta.server_ui:t.format.server_ui}};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mcVersionGeter = void 0;
4
+ // 版本资源表
5
+ const VERSION_TABLE = require('./../data/version.json').version;
6
+ // 转字符串
7
+ const normalize = (v) => {
8
+ return String(v || '')
9
+ .trim();
10
+ };
11
+ const parts = (v) => {
12
+ return normalize(v)
13
+ .split('.')
14
+ .slice(0, 3)
15
+ .map((n) => parseInt(n, 10) || 0);
16
+ };
17
+ const compareVer = (a, b) => {
18
+ const A = parts(a);
19
+ const B = parts(b);
20
+ for (let i = 0; i < 3; i++) {
21
+ const a = A[i];
22
+ const b = B[i];
23
+ if (!a || !b)
24
+ continue;
25
+ if (a !== b)
26
+ return a > b ? 1 : -1;
27
+ }
28
+ return 0;
29
+ };
30
+ const findMatch = (version) => {
31
+ const v = normalize(version);
32
+ for (const item of VERSION_TABLE) {
33
+ // 遍历查找
34
+ const [start, end] = item.range;
35
+ if (compareVer(v, start) >= 0 && compareVer(v, end) <= 0) {
36
+ return {
37
+ item,
38
+ match: 'exact',
39
+ start,
40
+ end
41
+ };
42
+ }
43
+ }
44
+ const sorted = [
45
+ ...VERSION_TABLE
46
+ ].sort((a, b) => compareVer(b.range[0], a.range[0]));
47
+ for (const item of sorted) {
48
+ if (compareVer(v, item.range[0]) >= 0) {
49
+ return {
50
+ item,
51
+ match: 'fallback',
52
+ start: item.range[0],
53
+ end: item.range[1]
54
+ };
55
+ }
56
+ }
57
+ const last = sorted[sorted.length - 1];
58
+ return {
59
+ item: last,
60
+ match: 'oldest',
61
+ start: last.range[0],
62
+ end: last.range[1]
63
+ };
64
+ };
65
+ exports.mcVersionGeter = {
66
+ /**
67
+ * @param version Minecraft版本号
68
+ * @param useBeta 是否返回Beta版本
69
+ */
70
+ ToServer(version, useBeta = false) {
71
+ const { item, match, start, end } = findMatch(version);
72
+ if (match !== 'exact')
73
+ console.warn(`⚠️ 使用兼容版本 ${start}-${end}(输入:${version})`);
74
+ return useBeta ? item.beta.server : item.format.server;
75
+ },
76
+ /**
77
+ * @param version Minecraft版本号
78
+ * @param useBeta 是否返回Beta版本
79
+ */
80
+ ToServerUi(version, useBeta = false) {
81
+ const { item, match, start, end } = findMatch(version);
82
+ if (match !== 'exact')
83
+ console.warn(`⚠️ 使用兼容版本 ${start}-${end}(输入:${version})`);
84
+ return useBeta ? item.beta.server_ui : item.format.server_ui;
85
+ }
86
+ };
@@ -1 +1,6 @@
1
- "use strict";function next(e){process.stdout.write(`\r[${new Date}] ${e}`)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=next;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = next;
4
+ function next(tip) {
5
+ process.stdout.write(`\r[${new Date}] ${tip}`);
6
+ }
@@ -1 +1,12 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=default_1;const mtreehandler_1=__importDefault(require("./mtreehandler"));function default_1(e){return"string"!=typeof e?new mtreehandler_1.default(null):new mtreehandler_1.default(e)}
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = default_1;
7
+ const mtreehandler_1 = __importDefault(require("./mtreehandler"));
8
+ function default_1(text) {
9
+ if (typeof text !== 'string')
10
+ return new mtreehandler_1.default(null);
11
+ return new mtreehandler_1.default(text);
12
+ }