mbler 0.1.1
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.
- package/bin/build.js +0 -0
- package/bin/mbler.js +14 -0
- package/bin/minify.js +155 -0
- package/lib/build/base.js +1 -0
- package/lib/build/build-g-config.json +12 -0
- package/lib/build/getModule.js +1 -0
- package/lib/build/index.js +1 -0
- package/lib/build/manifest.build.js +1 -0
- package/lib/build/mcVersion.js +1 -0
- package/lib/build/utils.js +1 -0
- package/lib/code-processor/c-handler-export.js +1 -0
- package/lib/code-processor/index.js +1 -0
- package/lib/code-processor/mtreehandler.js +1 -0
- package/lib/commander/index.js +1 -0
- package/lib/data/includes.json +13 -0
- package/lib/data/version.json +89 -0
- package/lib/git/clone.js +1 -0
- package/lib/git/index.js +1 -0
- package/lib/git/pull.js +1 -0
- package/lib/lang/__translate.js +1 -0
- package/lib/lang/en.js +1 -0
- package/lib/lang/index.js +1 -0
- package/lib/lang/zh.js +1 -0
- package/lib/loger/colors.js +1 -0
- package/lib/loger/index.js +1 -0
- package/lib/mcx/ast/index.js +1 -0
- package/lib/mcx/ast/prop.js +1 -0
- package/lib/mcx/ast/tag.js +1 -0
- package/lib/mcx/compile-component/lib.js +1 -0
- package/lib/mcx/compile-component/types.js +1 -0
- package/lib/mcx/compile-component/utils.js +1 -0
- package/lib/mcx/compile-mcx/_compile.js +602 -0
- package/lib/mcx/compile-mcx/compile.js +1 -0
- package/lib/mcx/compile-mcx/context.js +1 -0
- package/lib/mcx/compile-mcx/index.js +1 -0
- package/lib/mcx/compile-mcx/mcx/index.js +1 -0
- package/lib/mcx/compile-mcx/mcx/types.js +1 -0
- package/lib/mcx/compile-mcx/template/module.js +1 -0
- package/lib/mcx/compile-mcx/types.js +1 -0
- package/lib/mcx/compile-mcx/utils.node.js +1 -0
- package/lib/mcx/index.js +1 -0
- package/lib/mcx/test/index.js +1 -0
- package/lib/mcx/test.js +1 -0
- package/lib/mcx/types.js +1 -0
- package/lib/mcx/utils.js +1 -0
- package/lib/module-handler/index.js +1 -0
- package/lib/modules/contents.json +1 -0
- package/lib/modules/create-game/mbler.config.json +14 -0
- package/lib/modules/create-game/src/Runner/RunnerManager.js +1 -0
- package/lib/modules/create-game/src/Runner/scriptRunner.js +1 -0
- package/lib/modules/create-game/src/config.js +1 -0
- package/lib/modules/create-game/src/constants.js +1 -0
- package/lib/modules/create-game/src/createGameModule.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/autoStop.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +1 -0
- package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +1 -0
- package/lib/modules/create-game/src/gameComponent/gameComponent.js +1 -0
- package/lib/modules/create-game/src/gameComponent/index.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/respawn.js +1 -0
- package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +1 -0
- package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +1 -0
- package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +1 -0
- package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +1 -0
- package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +1 -0
- package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +1 -0
- package/lib/modules/create-game/src/gameContext.js +1 -0
- package/lib/modules/create-game/src/gameEngine.js +1 -0
- package/lib/modules/create-game/src/gameEvent/eventManager.js +1 -0
- package/lib/modules/create-game/src/gameEvent/eventSignal.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/inSlot.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/interval.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/itemUse.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/onBlock.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +1 -0
- package/lib/modules/create-game/src/gameEvent/events/signClick.js +1 -0
- package/lib/modules/create-game/src/gameEvent/gameEvent.js +1 -0
- package/lib/modules/create-game/src/gameEvent/index.js +1 -0
- package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +1 -0
- package/lib/modules/create-game/src/gameEvent/subscription.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/groupSet.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/index.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/playerGroup.js +1 -0
- package/lib/modules/create-game/src/gamePlayer/playerManager.js +1 -0
- package/lib/modules/create-game/src/gameRegion/gameRegion.js +1 -0
- package/lib/modules/create-game/src/gameRegion/index.js +1 -0
- package/lib/modules/create-game/src/gameRegion/regionHelper.js +1 -0
- package/lib/modules/create-game/src/gameState/common/autoStop.js +1 -0
- package/lib/modules/create-game/src/gameState/gameState.js +1 -0
- package/lib/modules/create-game/src/gameState/index.js +1 -0
- package/lib/modules/create-game/src/gameState/types.js +1 -0
- package/lib/modules/create-game/src/gameStructure/gameStructure.js +1 -0
- package/lib/modules/create-game/src/main.js +1 -0
- package/lib/modules/create-game/src/system/gameCommand.js +1 -0
- package/lib/modules/create-game/src/system/gameManager.js +1 -0
- package/lib/modules/create-game/src/system/globalPlayerManager.js +1 -0
- package/lib/modules/create-game/src/utils/GameError.js +1 -0
- package/lib/modules/create-game/src/utils/algorithm.js +1 -0
- package/lib/modules/create-game/src/utils/chunk.js +1 -0
- package/lib/modules/create-game/src/utils/deferredObject.js +1 -0
- package/lib/modules/create-game/src/utils/duration.js +1 -0
- package/lib/modules/create-game/src/utils/func.js +1 -0
- package/lib/modules/create-game/src/utils/index.js +1 -0
- package/lib/modules/create-game/src/utils/interfaces.js +1 -0
- package/lib/modules/create-game/src/utils/logger.js +1 -0
- package/lib/modules/create-game/src/utils/random.js +1 -0
- package/lib/modules/create-game/src/utils/vanila-data.js +1 -0
- package/lib/modules/create-game/src/utils/vector.js +1 -0
- package/lib/modules/gameLib/mbler.config.json +16 -0
- package/lib/modules/gameLib/src/config.js +1 -0
- package/lib/modules/gameLib/src/data.js +1 -0
- package/lib/modules/gameLib/src/entity.js +1 -0
- package/lib/modules/gameLib/src/event.js +1 -0
- package/lib/modules/gameLib/src/index.js +1 -0
- package/lib/modules/gameLib/src/loger.js +1 -0
- package/lib/modules/gameLib/src/ui.js +1 -0
- package/lib/modules/gameLib/src/utils.js +1 -0
- package/lib/modules/gutils/mbler.config.json +12 -0
- package/lib/modules/gutils/src/index.js +1 -0
- package/lib/modules/innerDef.json +5 -0
- package/lib/runTemp/File.js +1 -0
- package/lib/runTemp/config.json +4 -0
- package/lib/runTemp/index.js +1 -0
- package/lib/runTemp/securityFile.js +1 -0
- package/lib/start/addPack.js +1 -0
- package/lib/start/clean.js +1 -0
- package/lib/start/create.js +1 -0
- package/lib/start/dev.js +1 -0
- package/lib/start/getResConfig.js +1 -0
- package/lib/start/incg.js +1 -0
- package/lib/start/index.js +1 -0
- package/lib/start/init.js +1 -0
- package/lib/start/rechce.js +1 -0
- package/lib/start/unaddPack.js +1 -0
- package/lib/start/unincg.js +1 -0
- package/lib/start/version.js +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/uuid/index.js +1 -0
- package/package.json +1 -0
- package/test/2x sword/.cache__mbler__/config-hash.txt +1 -0
- package/test/2x sword/.cache__mbler__/package-hash.txt +1 -0
- package/test/2x sword/behavior/scripts/index.js +25 -0
- package/test/2x sword/mbler.config.json +12 -0
- package/test/2x sword/package.json +14 -0
- package/test/README.md +8 -0
- package/test/des/index.js +20 -0
- package/test/des/mbler.config.json +5 -0
- package/test/des/package.json +7 -0
- package/test/initializer/index.js +6 -0
- package/test/initializer/mbler.config.json +5 -0
- package/test/initializer/package.json +7 -0
- package/test/initializer/test.js +1 -0
- package/test/mbler-int/behavior/res/items/mang_one_int.json +22 -0
- package/test/mbler-int/behavior/res/pack_icon.png +0 -0
- package/test/mbler-int/behavior/res/recipes/mang_one_int.json +31 -0
- package/test/mbler-int/behavior/scripts/index.js +8 -0
- package/test/mbler-int/behavior/scripts/lib/event/index.js +20 -0
- package/test/mbler-int/behavior/scripts/lib/ui/Lore.js +19 -0
- package/test/mbler-int/behavior/scripts/lib/ui/baseUi.js +6 -0
- package/test/mbler-int/behavior/scripts/lib/ui/index.js +207 -0
- package/test/mbler-int/behavior/scripts/lib/utils/index.js +52 -0
- package/test/mbler-int/mbler.config.json +19 -0
- package/test/mbler-int/package.json +13 -0
- package/test/script-mbler/.cache__mbler__/config-hash.txt +1 -0
- package/test/script-mbler/.cache__mbler__/package-hash.txt +1 -0
- package/test/script-mbler/behavior/res/pack_icon.png +0 -0
- package/test/script-mbler/behavior/scripts/index.js +5 -0
- package/test/script-mbler/behavior/scripts/index.ts +6 -0
- package/test/script-mbler/mbler.config.json +15 -0
- package/test/script-mbler/package.json +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.utils=exports.Vector3=void 0;const server_1=require("@minecraft/server"),data_js_1=require("./data.js"),gutils_1=require("gutils");Object.defineProperty(exports,"Vector3",{enumerable:!0,get:function(){return gutils_1.Vector3}});const utils=new class{DataToplayer({dimension:e,id:t,name:r,all:i}={}){let n,o=[];if(!0===i)return server_1.world.getAllPlayers();"string"==typeof r&&(o[0]=r),"number"==typeof t&&(o[1]=t),n=this.dimensionList.includes(e)?server_1.world.getDimension(e).getPlayers():server_1.world.getPlayers();for(let e of n){let t=!0;if(o[0]&&o[0]===e.name&&(t=!1),o[1]&&o[1]===e.id&&(t=!1),t)return e}return n[0]}DateToblock({dimension:e,Location:t}={}){return server_1.world.getDimension(this.dimensionList.includes(e)?e:this.dimensionList[0]).getBlock(t)}playerToData(e){if(!this.isEntityObject(e))throw new TypeError("ERR_NOT_A_Player");return{id:e.id,all:!1}}isEntityObject(e){return!(!typeVerify({id:e.id,name:e.name,dimension:e.dimension,location:e.location},{id:"number",name:"string",dimension:"object",location:"object"})||!e.isValid)}constructor(){this.dimensionList=["overworld","nether","the_end"]}typeVerify(e,t){const r=[];for(let[i,n]of e.entries(e)){const e=t[i];if("string"!=typeof e)throw new TypeError("ERR_INPUT");if(typeof n!==e)r.push(!1);else{if("object"==typeof n&&this.isObject(n)){r.push(!0);continue}r.push(!0)}}return!r.includes(!1)}isObject(e){return"object"==typeof e&&!Array.isArray(e)}isIterator(e){return"function"==typeof e[Symbol.iterator]}getEffect(e){let t=null;const r=Object.keys(data_js_1.EffectList);if("number"==typeof e&&r[e]&&(t=r[e]),"string"==typeof e&&r.includes(e)&&(t=e),null===t)throw new TypeError("ERR no match the EffectName");return t}in(e,t,r){return e>=t&&e<=r}};exports.utils=utils;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Vector3=void 0;class Vector3{constructor(e,o,r,t){const c=e||0,s=o||0,d=r||0;return{dis:"object"==typeof t?t.id||"overworld":["overworld","nether","the_end"].includes(t)?t:null,x:c,y:s,z:d}}}exports.Vector3=Vector3;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const promises_1=__importDefault(require("node:fs/promises")),node_path_1=__importDefault(require("node:path"));class FileMethod{dir="";#e(e){return node_path_1.default.join(this.dir,e)}async mkdir(e){try{return await promises_1.default.mkdir(this.#e(e),{recursive:!0}),!0}catch{return!1}}async rm(e){try{return await promises_1.default.rm(this.#e(e),{recursive:!0,force:!0}),!0}catch(e){return!1}}async writeFile(e,r){try{return await promises_1.default.writeFile(this.#e(e),r),!0}catch(e){return!1}}readFile(e){return promises_1.default.readFile(this.#e(e))}async readdir(e){return await promises_1.default.readdir(this.#e(e))}}exports.default=FileMethod;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=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,r,a)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=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 r=e(t),a=0;a<r.length;a++)"default"!==r[a]&&__createBinding(i,t,r[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 promises_1=__importDefault(require("node:fs/promises")),path_1=__importDefault(require("path")),utils=__importStar(require("./../utils/index.js")),index_js_1=__importDefault(require("./../loger/index.js")),index_js_2=__importDefault(require("./../uuid/index.js")),File_js_1=__importDefault(require("./File.js")),{MAX:MAX,CACHE_DESC:CACHE_DESC}=require("./config.json");class Temp extends File_js_1.default{static type="singleton class";dir="";cacheDesc="";timdir;tempId=null;constructor(e){super(),this.timdir=e}async#e(e){await utils.FileExsit(e)||promises_1.default.mkdir(e)}async init(){await this.#e(this.timdir),this.cacheDesc=path_1.default.join(this.timdir,CACHE_DESC),this.tempId=index_js_2.default.uuid(),await utils.FileExsit(this.cacheDesc)||await promises_1.default.writeFile(this.cacheDesc,JSON.stringify({LNnum:1}),"utf-8");const e=this.wait();let t=await e.next();for(;!t.done&&!1===t.value;)index_js_1.default.i("temp","等待中..."),await utils.sleep(1e3),t=await e.next();const i=t.value;if("boolean"==typeof i)throw new TypeError("[read generator]");const r=path_1.default.join(this.timdir,this.tempId);await promises_1.default.writeFile(this.cacheDesc,JSON.stringify({LNnum:("number"==typeof i.LNnum?i.LNnum:1)+1}),"utf-8"),await promises_1.default.mkdir(r,{recursive:!0}),this.dir=r,Object.defineProperty(this,"cacheDesc",{enumerable:!1,writable:!1})}async*wait(){for(;;){const e=JSON.parse((await promises_1.default.readFile(this.cacheDesc)).toString());if("number"!=typeof e.LNnum)throw new Error("[temp error]: cannot load config");if((e?.LNnum??1)<=MAX)return e;index_js_1.default.i("TEMP","INFO: CONCURRENCY >= MAX_CONCURRENCY",{MAX_CONCURRENCY:MAX}),yield!1,await utils.sleep(1e3)}}async remove(){if(null===this.tempId||""===this.dir)throw new Error("Please call init() first before calling remove().");try{await promises_1.default.rm(this.dir,{recursive:!0,force:!0});const e=JSON.parse(await promises_1.default.readFile(this.cacheDesc,"utf-8")),t=Math.max((e?.LNnum||1)-1,0);await promises_1.default.writeFile(this.cacheDesc,JSON.stringify({LNnum:t}),"utf-8")}catch(e){index_js_1.default.e("TEMP","Error during temp dir removal:",e)}finally{this.dir="",this.tempId=null}}}exports.default=Temp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);n&&!("get"in n?!e.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,n)}:function(t,e,r,i){void 0===i&&(i=r),t[i]=e[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[e.length]=r);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var i=t(e),n=0;n<i.length;n++)"default"!==i[n]&&__createBinding(r,e,i[n]);return __setModuleDefault(r,e),r}}(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const promises_1=__importDefault(require("fs/promises")),utils=__importStar(require("../utils/index.js"));class SecurityFile{#t=null;constructor(t){this.#t=t}#e(t){const e=utils.join(this.#t,t);if(!e.startsWith(this.#t))throw new Error("[Mbler security] Don't into Parent Directory");return e}async mkdir(t){try{return await promises_1.default.mkdir(this.#e(t),{recursive:!0}),!0}catch{return!1}}async rm(t){try{return await promises_1.default.rm(this.#e(t),{recursive:!0,force:!0}),!0}catch(t){return!1}}async writeFile(t,e){try{return await promises_1.default.writeFile(this.#e(t),e,{encoding:"utf-8"}),!0}catch(t){return!1}}async readFile(t,e){return await utils.readFile(this.#e(t),e)}async readdir(t){return await promises_1.default.readdir(this.#e(t))}}exports.default=SecurityFile;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const index_js_1=require("./../module-handler/index.js");module.exports=index_js_1.addPack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,i,r){void 0===r&&(r=i);var u=Object.getOwnPropertyDescriptor(e,i);u&&!("get"in u?!e.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,r,u)}:function(t,e,i,r){void 0===r&&(r=i),t[r]=e[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[e.length]=i);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var r=t(e),u=0;u<r.length;u++)"default"!==r[u]&&__createBinding(i,e,r[u]);return __setModuleDefault(i,e),i}}(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const promises_1=__importDefault(require("fs/promises")),utils=__importStar(require("./../utils/index.js")),index_js_1=__importDefault(require("./../loger/index.js")),path_1=__importDefault(require("path")),index_js_2=__importDefault(require("./../lang/index.js"));class Clean{p;dirname;outdir=[];constructor(t,e){this.p=t,this.dirname=e}run=()=>this.start().catch(t=>{index_js_1.default.e(t)});async start(){await utils.FileExsit(this.p)||utils.Exit("项目不存在");try{const t=await utils.GetData(this.p);this.outdir=[this.getOutDir(t.outdir?.resources),this.getOutDir(t.outdir?.behavior)],await Promise.all(this.outdir.map(t=>promises_1.default.rm(t,{recursive:!0,force:!0}).catch(()=>{})))}catch(t){index_js_1.default.e("clean",t)}index_js_1.default.i("clean",index_js_2.default.cleanFinally)}getOutDir(t){const e=t;return e?utils.join(this.p,e):path_1.default.join(this.p,"dist")}}exports.default=Clean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=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 r=e(t),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(i,t,r[n]);return __setModuleDefault(i,t),i}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const index_js_1=__importDefault(require("./../uuid/index.js")),promises_1=__importDefault(require("fs/promises")),utils=__importStar(require("./../utils/index.js")),path_1=__importDefault(require("path")),index_js_2=__importDefault(require("./../git/index.js")),child_process_1=require("child_process"),index_js_3=__importDefault(require("./../runTemp/index.js")),securityFile_js_1=__importDefault(require("./../runTemp/securityFile.js")),regex=/(https?:\/\/[^\s\/]+\/[^\s\/]+\/[^\s]+(?:\.git)?|(?:git@|[\w.-]+@)[\w.-]+:[^\s]+(?:\.git)?)/,npmStart="npm:";let dirname="";async function Load(e,t){const i=JSON.parse(await promises_1.default.readFile(path_1.default.join(e,"package.json"),{encoding:"utf-8"})).main,r=JSON.parse(await promises_1.default.readFile(path_1.default.join(e,"mbler.config.json"),{encoding:"utf-8"})),n={name:r.name,description:r.description,version:r.version,setWorkDir:new securityFile_js_1.default(t)};let a=require(path_1.default.join(e,i));a=a.main(n),a instanceof Promise&&(a=await a)}function runNpm(e,t){return new Promise((i,r)=>{const n=(0,child_process_1.spawn)("npm",e,{cwd:t,stdio:"ignore"});n.on("close",i),n.on("error",e=>{r(e)})})}async function NpmInstall(e,t){const i=new index_js_3.default(path_1.default.join(require("os").tmpdir(),"mbler"));await i.init();const{dir:r}=i;await promises_1.default.writeFile(path_1.default.join(r,"package.json"),JSON.stringify({name:"",description:"",version:"0.0.1",type:"commjs"}));if(0!==await runNpm(["install",e],r))throw new Error("npm package install falled");const n=path_1.default.join(r,"node_modules");await copy(n,t),await i.remove()}function copy(e,t){return new Promise((i,r)=>promises_1.default.readdir(e).then(r=>Promise.all(r.map(i=>utils.copy(path_1.default.join(e,i),path_1.default.join(t,i)))).then(()=>i())).catch(r))}module.exports=async function(e,t,i=""){i=i.trim(),dirname=t;try{if(!e)throw new Error("Wrok Dir is undefined");if(await utils.isMblerProject(e))throw new Error("WorkDir is init You shouldn't use 'create' command");const t=index_js_1.default.fromString(`ul-to-${i}`),r=path_1.default.join(process.cwd(),"lib/initializer-cache",t);if(await utils.FileExsit(r))await Load(r,e);else{const t=utils.join(dirname,i);if(regex.test(i))await index_js_2.default.clone(i,r);else if(i.startsWith("npm:")){const e=i.slice(4);await NpmInstall(e,r)}else{if(!await utils.FileExsit(t))throw new Error("Package source not match");await copy(i,r)}await Load(r,e)}}catch(e){console.error(`加载模板初始化失败 错误信息\n${e.stack}`)}};
|
package/lib/start/dev.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=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 r=e(t),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(i,t,r[n]);return __setModuleDefault(i,t),i}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const chokidar=__importStar(require("chokidar")),index_js_1=__importDefault(require("./../build/index.js")),index_js_2=__importDefault(require("./../loger/index.js")),utils=__importStar(require("./../utils/index.js")),index_js_3=__importDefault(require("./../lang/index.js"));class Dev{cwd;baseDir;build;isBuilding=!1;pending=!1;constructor(e,t){this.cwd=e,this.baseDir=t,this.build=new index_js_1.default(e,t)}async start(){index_js_2.default.i("Dev",index_js_3.default.dev?.start||"开始即时监听构建"),await this.build.build(),this.startWatcher()}startWatcher(){const e=this.cwd;chokidar.watch(e,{ignoreInitial:!0,ignored:["**/dist/**","**/.git/**","**/node_modules/**","**/lib/data/cache/**","dist/**"],persistent:!0,usePolling:!0,interval:150}).on("all",async(e,t)=>{index_js_2.default.i("Dev",`${index_js_3.default.dev?.tip||"监听到变化"} ${e} ${t}`),this.isBuilding?this.pending=!0:await this.rebuild()})}async rebuild(){this.isBuilding=!0;try{index_js_2.default.i("Dev",index_js_3.default.dev?.start_d||"开始增量构建"),await this.build.build()}catch(e){index_js_2.default.e("Dev",(index_js_3.default.err_bulid||"构建错误")+utils.toString(e))}this.isBuilding=!1,this.pending&&(this.pending=!1,await this.rebuild())}}module.exports=async(e,t)=>new Dev(e,t).start();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const index_js_1=require("./../module-handler/index.js");module.exports=index_js_1.getResConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const index_js_1=require("./../module-handler/index.js");module.exports=index_js_1.installModules;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,i,s){void 0===s&&(s=i);var r=Object.getOwnPropertyDescriptor(e,i);r&&!("get"in r?!e.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,s,r)}:function(t,e,i,s){void 0===s&&(s=i),t[s]=e[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[e.length]=i);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s=t(e),r=0;r<s.length;r++)"default"!==s[r]&&__createBinding(i,e,s[r]);return __setModuleDefault(i,e),i}}(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const promises_1=__importDefault(require("node:fs/promises")),index_js_1=__importDefault(require("./../lang/index.js")),node_path_1=__importDefault(require("node:path")),utils=__importStar(require("./../utils/index.js")),db=".cache/mbler/.path.db";require("./../commander/index.js");const node_process_1=__importDefault(require("node:process")),node_os_1=__importDefault(require("node:os"));class start{command;two;param;dirname;DataPath;constructor(t){this.dirname=t,this.param="",this.DataPath=node_path_1.default.join(node_os_1.default.homedir(),db),this.command=node_process_1.default.argv[2]||"",this.two=(node_process_1.default.argv[3]||"").trim(),this.start()}v=()=>{const{version:t}=require("./../../package.json");console.log(`MBLER : ${t}`)};build=async()=>{const t=new(0,require("./../build").default)(this.param,this.dirname);await t.build()};help=()=>{const t=index_js_1.default.commands;if(t.list.includes(this.two)&&"string"==typeof t[this.two]){let e=t[this.two];return e.startsWith("$")&&(e=t[e.slice(1)]),console.log(`-- '${this.two}' command -- : \n`),void console.log(`Usage : ${e}`)}this.echoHelp()};checkout=async()=>{this.two&&(this.two=utils.join(node_process_1.default.cwd(),this.two||"./")),await utils.FileExsit(this.two)&&this.two&&this.param!==this.two?(await promises_1.default.writeFile(this.DataPath,this.two),console.log(index_js_1.default.s0,`PATH => ${this.two}`)):console.log(this.param)};init=()=>new(require("./init.js"))(this.param,this.dirname).start();async start(){await this.getWorkDir();const t=this.command.toLowerCase().trim(),e={build:this.build,dev:()=>require("./dev")(this.param,this.dirname),create:()=>require("./create")(this.param,this.dirname,this.two),"":()=>this.echoHelp(),recache:()=>require("./rechce")(this.dirname,this.param),lang:()=>{this.two&&index_js_1.default.__internal.set(this.two),console.log(index_js_1.default.__internal.class.currenyLang)},"-h":this.help,"-help":this.help,help:this.help,version:()=>{new(require("./version.js"))(this.param,this.dirname)},v:this.v,"-v":this.v,checkout:this.checkout,"-c":this.checkout,init:this.init,"-i":this.init,web_edit:()=>{new(require("./../web"))({PORT:1025,PATH:this.param})},install:async()=>require("./incg.js")(this.dirname,this.param),uninstall:()=>require("./unincg.js")(this.two,this.dirname),add:()=>require("./addPack.js")(this.two,this.dirname,this.param),remive:()=>require("./unaddPack.js")(this.two,this.dirname,this.param),clean:async()=>{const t=require("./clean.js");await new t(this.param,this.dirname).run()}}[t];try{if("function"==typeof e){const t=e();t instanceof Promise&&await t}else this.defaultCommand(t);node_process_1.default.exit(0)}catch(t){console.error(t)}}defaultCommand(t){console.log(`[31m${index_js_1.default.uncommand}: ${this.command.toLowerCase().trim()}[0m`);const e=index_js_1.default.commands.list.map(e=>this.getMatchChance(t,e)).reduce((t,e,i)=>{try{if(e>t.max)return{max:e,index:i};if(e===t.max)return t.indices.push(i),t}catch{}return t},{max:-1/0,index:-1,indices:[]}),i=index_js_1.default.commands.list[e.index];i&&console.log(`${index_js_1.default.noCommandTip} ${i}`)}async getWorkDir(){try{this.param=(await promises_1.default.readFile(this.DataPath,"utf-8")).toString()||"./test"}catch(t){}}echoHelp(){console.log(index_js_1.default.help)}getMatchChance(t,e){let i=0;for(let s=0;s<e.length;s++)t[s]==e[s]&&i++;return i/e.length}}module.exports=start;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(i,e,t,r){void 0===r&&(r=t);var n=Object.getOwnPropertyDescriptor(e,t);n&&!("get"in n?!e.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(i,r,n)}:function(i,e,t,r){void 0===r&&(r=t),i[r]=e[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(i,e){Object.defineProperty(i,"default",{enumerable:!0,value:e})}:function(i,e){i.default=e}),__importStar=this&&this.__importStar||function(){var i=function(e){return i=Object.getOwnPropertyNames||function(i){var e=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[e.length]=t);return e},i(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=i(e),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(t,e,r[n]);return __setModuleDefault(t,e),t}}(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};const fs=__importStar(require("fs/promises")),utils=__importStar(require("../utils/index.js")),index_js_1=__importDefault(require("./../loger/index.js")),path=__importStar(require("path")),build_g_config_json_1=__importDefault(require("./../build/build-g-config.json")),index_js_2=require("./../commander/index.js"),mcVersion_js_1=require("./../build/mcVersion.js");let dirname="";class Init{dir;dirName;constructor(i,e){dirname=e,this.dir=i,this.dirName=e}async start(){if(!await utils.FileExsit(this.dir))return void index_js_1.default.w("init","无效的配置");if(await utils.isMblerProject(this.dir))return void index_js_1.default.i("init","已经初始化过了");const i=await this.input("项目名称: "),e=await this.input("项目描述: "),t=await this.input("支持的minecraft版本: "),r={name:i,description:e,version:"0.0.1",engines:{node:">=20.0.0"},scripts:{dev:"mbler dev",build:"MBLER_BUILD_MODULE=dist mbler build","dev-build":"MBLER_BUILD_MODULE=dev mbler build"},dependencies:Object.create(null)},n={name:i,description:e,mcVersion:t,version:"0.0.1",minify:!1};if("y"===(await this.input("使用Script Api吗?(Y/N) ")).toLowerCase()){n.script={},n.script.main=await this.input("主脚本路径(如 ./index.js): ")||"index",n.script.ui="y"===(await this.input("使用 UI 吗?(Y/N) ")).toLowerCase(),n.script.ui&&(r.dependencies["@minecraft/server-ui"]=mcVersion_js_1.mcVersionGeter.ToServerUi(t)),await Promise.all([fs.mkdir(path.join(this.dir,"behavior","script"),{recursive:!0}),fs.mkdir(path.join(this.dir,"resources"),{recursive:!0})]);const i=await index_js_2.Input.select("选择语言",["ts","js","mcx"]);n.script.lang=i,"ts"===i&&(r.dependencies["@minecraft/server"]=mcVersion_js_1.mcVersionGeter.ToServer(t))}n.outdir={resources:"./dist/res",behavior:"./dist/dep",dist:"./dist.mcaddon"},await fs.writeFile(path.join(this.dir,"package.json"),JSON.stringify(r,null,2)),await fs.writeFile(path.join(this.dir,build_g_config_json_1.default.PackageFile),JSON.stringify(n,null,2))}async getVersion(i){let e,t=!1;for(;e=await utils.input(t?"格式错误,重新输入: "+i:i),!utils.isVerison(e);)t=!0;return e}async input(i,e=!1){return await utils.input((e?"不符合规范,重试: ":"")+i)||this.input(i,!0)}}module.exports=Init;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,a)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),a=0;a<i.length;a++)"default"!==i[a]&&__createBinding(r,t,i[a]);return __setModuleDefault(r,t),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const fs=__importStar(require("fs/promises")),index_js_1=__importDefault(require("./../lang/index.js")),path_1=__importDefault(require("path"));module.exports=async function(e,t){await Promise.all([fs.rm(path_1.default.join(e,"lib/data/path.db"),{recursive:!0,force:!0}).catch(()=>{}),fs.rm(path_1.default.join(e,"lib/initializer-cache/"),{recursive:!0,force:!0}).catch(()=>{}),fs.rm(path_1.default.join(e,"lib/data/cache"),{recursive:!0,force:!0}).catch(()=>{})]),console.log(index_js_1.default.s0)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const index_js_1=require("./../module-handler/index.js");module.exports=index_js_1.unaddPack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),__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 r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var i=e(t),n=0;n<i.length;n++)"default"!==i[n]&&__createBinding(r,t,i[n]);return __setModuleDefault(r,t),r}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const index_js_1=__importDefault(require("./../loger/index.js")),path_1=__importDefault(require("path")),fs=__importStar(require("fs/promises"));let dirname="",cache=null;module.exports=async function(e,t){dirname=t;try{const t=(await require("./getResConfig.js")()).get("Mod");let r=!1;for(let[i,n]of t.entries())if(n.name===e&&"inner"!==n.git){t.splice(i,1),r=!0,await fs.rm(path_1.default.join(dirname,"lib/modules",n.name),{recursive:!0,force:!0});break}if(!r)throw new Error("未安装此包")}catch(e){index_js_1.default.e("uninstall",e.message)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(e,i);n&&!("get"in n?!e.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,r,n)}:function(t,e,i,r){void 0===r&&(r=i),t[r]=e[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(t){var e=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[e.length]=i);return e},t(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var r=t(e),n=0;n<r.length;n++)"default"!==r[n]&&__createBinding(i,e,r[n]);return __setModuleDefault(i,e),i}}(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};const path=__importStar(require("path")),fs=__importStar(require("fs/promises")),utils=__importStar(require("./../utils/index.js")),build_g_config_json_1=__importDefault(require("./../build/build-g-config.json")),index_js_1=__importDefault(require("./../lang/index.js"));let dirname="";class Version{dir;baseDir;two;constructor(t,e){dirname=e,this.dir=t,this.two=process.argv[3]||""}async start(){const t=utils.join(dirname,this.dir),e=await utils.GetData(t),i=JSON.parse(await fs.readFile(path.join(t,"package.json"),{encoding:"utf-8"}).catch(()=>"{}"));"string"==typeof this.two&&utils.isVerison(this.two)&&(i.version=this.two,e.version=this.two),console.log(`${index_js_1.default.workPackV||"当前工作目录包版本:"} ${e.version||"0.0.1"}`),await Promise.all([this.write(path.join(t,build_g_config_json_1.default.PackageFile),e),this.write(path.join(t,"package.json"),i)])}write(t,e){return fs.writeFile(t,JSON.stringify(e,null,2))}}module.exports=Version;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.config=exports.isVerison=exports.JSONparse=exports.readFile=exports.sleep=exports.waitGC=exports.input=void 0,exports.hasKeys=hasKeys,exports.zip=zip,exports.toString=toString,exports.ToArray=ToArray,exports.readFileWithRetry=readFileWithRetry,exports.join=join,exports.Exit=Exit,exports.FileExsit=FileExsit,exports.GetData=GetData,exports.isMblerProject=isMblerProject,exports.handlerPackage=handlerPackage,exports.copy=copy;const node_path_1=__importDefault(require("node:path")),adm_zip_1=__importDefault(require("adm-zip")),index_js_1=__importDefault(require("./../loger/index.js")),commander_1=require("./../commander"),config=require("./../build/build-g-config.json"),promises_1=__importDefault(require("node:fs/promises"));function hasKeys(e,t,r){if("object"!=typeof e||Array.isArray(e))return!1;if(!Array.isArray(t))return!1;let i=0;for(const o of t)if(e.hasOwnProperty(o)&&(i++,i>=r))return!0;return!1}async function zip(e,t){const r=new adm_zip_1.default;for(let t of e)"string"==typeof t&&r.addLocalFolder(t);await r.writeZipPromise(t)}exports.input=function(){let e,t="",r="",i=!0;function o(){const e=`[2K\r${r}${i?t:""}`;process.stdout.write(e)}return commander_1.Input.use(function(r,i,n,s){if("function"==typeof e&&!i&&!n){if(r){if("return"===r||"enter"===r)return e(t),e=null,t="",void console.log("");if("backspace"===r)return t=t.slice(0,-1),void o()}s&&"string"==typeof s&&(t+=s[0],o())}}),async function(t="",n=!0){return new Promise(s=>{i=n,r=t,o(),e=s})}}();const waitGC=()=>new Promise(e=>setImmediate(e));function toString(e){return"string"==typeof e?e:e instanceof Error?"string"==typeof e.stack?e.stack:e.message:Array.isArray(e)?e.map(e=>toString(e)).join("\n"):"function"==typeof e?.toString?e.toString():void 0===e?"[Objeect utils]":JSON.stringify(e,null,2)}function ToArray(e){return e.split(".").map(Number)}exports.waitGC=waitGC;const sleep=(e=100)=>new Promise(t=>setTimeout(t,e));async function readFileWithRetry(e,t){const r={maxRetries:5,delay:200,want:"string",...t};let i;for(let t=0;t<r.maxRetries;t++)try{let t="";const i=(await promises_1.default.readFile(e)).toString();if("string"===r.want&&(t=i.toString()),"object"===r.want)try{t=JSON.parse(i)}catch{t={}}return t}catch(e){i=e,t<r.maxRetries-1&&await(0,exports.sleep)(r.delay)}return{}}exports.sleep=sleep,exports.readFile=readFileWithRetry;const JSONparse=function(e){return JSON.parse(e)};function join(e,t){return node_path_1.default.isAbsolute(t)?t:node_path_1.default.join(e,t)}exports.JSONparse=JSONparse;const isVerison=function(e){return/\d+\.\d+\.\d+/.test(e)};function Exit(e){index_js_1.default.e("ERROR",e),process.exit(1)}async function FileExsit(e){try{return await promises_1.default.access(e),!0}catch(e){return!1}}async function GetData(e){const t=node_path_1.default.join(e,config.PackageFile),r=await promises_1.default.readFile(t,"utf-8"),i=(0,exports.JSONparse)(r);if("string"==typeof i.version&&"string"==typeof i.name&&"string"==typeof i.description)return i;throw new Error("[mbler find config]: "+e+": not found config")}async function isMblerProject(e){return(await Promise.all([node_path_1.default.join(e,"package.json"),node_path_1.default.join(e,config.PackageFile)].map(FileExsit)).catch(e=>(console.log(e.stack),[!1,!1]))).every(Boolean)}function isValidVersion(e){return"string"==typeof e&&(0,exports.isVerison)(e)}async function handlerPackage(e,t={des:[]}){let r;try{r=await GetData(e)}catch(t){throw new Error(`无法读取模块配置文件: ${node_path_1.default.join(e,config.PackageFile)}`)}if("string"!=typeof r.name||"string"!=typeof r.description||!isValidVersion(r.version))throw new Error(`ERR-\n${node_path_1.default.join(e,config.PackageFile)} 缺少必要字段。\n必需字段: name, description, version`);const i={des:{},ui:!1,main:"./index.js",name:r.name,version:r.version,description:r.description};return t.des&&r?.script?.dependencies&&(i.des=ForOfMod(r.script.dependencies,t.des)),i.ui=Boolean(Boolean(r?.script?.ui)),r?.script&&(i.main=r.script.main),i}function ForOfMod(e,t){let r={};try{for(const[i,o]of Object.entries(e))t?.includes&&"function"==typeof t.includes&&t.includes(i)||(r[i]=o)}catch(e){console.error("ForOfMod 发生错误:",e)}return r}async function copy(e,t){try{await promises_1.default.cp(e,t,{force:!0,recursive:!0})}catch(e){}}exports.isVerison=isVerison;const iconfig=require("./../build/build-g-config.json");exports.config=iconfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromString=void 0;const node_crypto_1=__importDefault(require("node:crypto")),fromString=(t,r="")=>{const e=r+t,o=node_crypto_1.default.createHash("sha256").update(e).digest("hex").slice(0,32),s="89ab",i=t=>s[(e.length+t)%4];return`${o.substring(0,8)}-${o.substring(8,12)}-4${o.substring(12,15)}-8${i(1)}${i(2)}${i(3)}-${o.substring(18,30)}`};exports.fromString=fromString,exports.default={fromString:exports.fromString,uuid:node_crypto_1.default.randomUUID};
|
package/package.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"mbler","version":"0.1.1","description":"一个针对Minecraft JavaScript API 的lib库,让你的附加包版本管理更简单","repository":{"type":"git","url":"git+https://github.com/RuanhoR/mbler.git"},"keywords":["Minecraft","build"],"engines":{"node":">=16.0.0"},"license":"MIT","type":"commonjs","main":"./lib/start/index.js","scripts":{"cli":"node bin/mbler.js","build":"node bin/minify.js"},"dependencies":{"@babel/generator":"7.28.5","@babel/parser":"7.28.5","@babel/traverse":"7.28.5","@babel/types":"^7.28.6","adm-zip":"^0.5.16","chokidar":"^4.0.3","dayjs":"1.11.18","mime-types":"3.0.1","terser":"5.44.0","typescript":"^5.9.3"},"files":["lib","test","bin"],"publishConfig":{"registry":"https://registry.npmjs.org"},"bin":{"mbler":"bin/mbler.js"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ba9e19e27533c85678ae256b688d8daeb7672d47
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
656d6fae1681c5cda2ad25f63d34b39f48a334ce
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const config = {
|
|
2
|
+
itemId: "§r§6§lmbler_test_2xsword:as§r§l §8 二倍剑",
|
|
3
|
+
ForRanger: 2
|
|
4
|
+
}
|
|
5
|
+
import {
|
|
6
|
+
EntityComponentTypes,
|
|
7
|
+
EquipmentSlot,
|
|
8
|
+
world,
|
|
9
|
+
system
|
|
10
|
+
} from "@minecraft/server"
|
|
11
|
+
world.afterEvents.entityDie.subscribe(({
|
|
12
|
+
deadEntity: entity,
|
|
13
|
+
damageSource: source
|
|
14
|
+
}) => {
|
|
15
|
+
system.run(()=>{ try { // 排除非正常人
|
|
16
|
+
if (!source.typeId.includes("player") || !getMainHand(source).nameTag.includes(config.itemId)) return;
|
|
17
|
+
} catch {}
|
|
18
|
+
for (let i = 0; i < config.ForRanger; i++) {
|
|
19
|
+
try {
|
|
20
|
+
entity.dimension.spawnEntity(entity.typeId)
|
|
21
|
+
} catch (err){
|
|
22
|
+
console.error(err)
|
|
23
|
+
}
|
|
24
|
+
}})
|
|
25
|
+
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "双倍剑",
|
|
3
|
+
"description": "打生物会再生成一个的奇葩剑",
|
|
4
|
+
"mcVersion": "1.21.80",
|
|
5
|
+
"version": "0.0.2",
|
|
6
|
+
"script": {
|
|
7
|
+
"main": "index",
|
|
8
|
+
"ui": true
|
|
9
|
+
},
|
|
10
|
+
"minify": false,
|
|
11
|
+
"outdir": "/storage/emulated/0/Android/data/com.mojang.minecraftpe/files/games/com.mojang/development_behavior_packs/test/"
|
|
12
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "双倍剑",
|
|
3
|
+
"description": "打生物会再生成一个的奇葩剑",
|
|
4
|
+
"version": "0.0.2",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": ">=20.0.0"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"dev": "mbler dev",
|
|
10
|
+
"build": "MBLER_BUILD_MODULE=dist mbler build",
|
|
11
|
+
"dev-build": "MBLER_BUILD_MODULE=dev mbler build"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {}
|
|
14
|
+
}
|
package/test/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
exports.main = async function main(content) {
|
|
2
|
+
const name = await MblerApi.input("名称")
|
|
3
|
+
const desc = await MblerApi.input(`描述 `)
|
|
4
|
+
const main = await MblerApi.input(`主脚本 `)
|
|
5
|
+
content.setWorkDir
|
|
6
|
+
.writeFile("./mbler.config.json", JSON.stringify({
|
|
7
|
+
name,
|
|
8
|
+
description: desc,
|
|
9
|
+
script: {
|
|
10
|
+
main: "src/index.js",
|
|
11
|
+
dependencies: {}
|
|
12
|
+
},
|
|
13
|
+
type: "scriptsDes",
|
|
14
|
+
version: "0.0.1",
|
|
15
|
+
mcVersion: [
|
|
16
|
+
"1.21.00",
|
|
17
|
+
"1.21.100"
|
|
18
|
+
]
|
|
19
|
+
}, null, 2))
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log("Test Load")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format_version": "1.20.100",
|
|
3
|
+
"minecraft:item": {
|
|
4
|
+
"description": {
|
|
5
|
+
"identifier": "mbler_int:mang_one_int"
|
|
6
|
+
},
|
|
7
|
+
"components": {
|
|
8
|
+
"minecraft:hand_equipped": false,
|
|
9
|
+
"minecraft:foil": true,
|
|
10
|
+
"minecraft:glint": true,
|
|
11
|
+
"allow_off_hand": {
|
|
12
|
+
"value": true
|
|
13
|
+
},
|
|
14
|
+
"minecraft:max_stack_size": 1,
|
|
15
|
+
"minecraft:stacked_by_data": true,
|
|
16
|
+
"minecraft:icon": "iconMangOneIntMbler",
|
|
17
|
+
"minecraft:display_name": {
|
|
18
|
+
"value": "无尽袋子 \n能存入无限的单种物品 右键打开"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format_version": "1.21",
|
|
3
|
+
"minecraft:recipe_shaped": {
|
|
4
|
+
"description": {
|
|
5
|
+
"identifier": "mbler_int:recipes_mang_one_int"
|
|
6
|
+
},
|
|
7
|
+
"tags": [
|
|
8
|
+
"crafting_table"
|
|
9
|
+
],
|
|
10
|
+
"unlock": [
|
|
11
|
+
{
|
|
12
|
+
"item": "minecraft:leather"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"pattern": [
|
|
16
|
+
"A ",
|
|
17
|
+
"AB "
|
|
18
|
+
],
|
|
19
|
+
"key": {
|
|
20
|
+
"A": {
|
|
21
|
+
"item": "minecraft:leather"
|
|
22
|
+
},
|
|
23
|
+
"B": {
|
|
24
|
+
"item": "minecraft:stick"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"result": {
|
|
28
|
+
"item": "mbler_int:mang_one_int"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import ui from "./../ui/index"
|
|
2
|
+
import {
|
|
3
|
+
world
|
|
4
|
+
} from "@minecraft/server"
|
|
5
|
+
let scriptUi;
|
|
6
|
+
const useItem = ({
|
|
7
|
+
source: player,
|
|
8
|
+
itemStack: item
|
|
9
|
+
}) => {
|
|
10
|
+
if (!player.typeId.includes('player')) return;
|
|
11
|
+
if (item.typeId === "mbler_int:mang_one_int")
|
|
12
|
+
scriptUi.openHomeForm(player, item)
|
|
13
|
+
}
|
|
14
|
+
const regEvent = (game) => {
|
|
15
|
+
world.afterEvents.itemUse.subscribe(useItem);
|
|
16
|
+
scriptUi = new ui(game)
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
regEvent
|
|
20
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class Lore {
|
|
2
|
+
name;
|
|
3
|
+
count;
|
|
4
|
+
constructor(item) {
|
|
5
|
+
const LoreArr = item.getLore();
|
|
6
|
+
let count = parseInt(`0x${LoreArr[1]}`) // 加上16进制表明式
|
|
7
|
+
if (!/^[a-z0-9_]+(\:)?[a-z0-9_]+$/.test(LoreArr[0] + ''))
|
|
8
|
+
LoreArr[0] = undefined;
|
|
9
|
+
if (isNaN(count)) count = 0;
|
|
10
|
+
this.count = count;
|
|
11
|
+
this.name = LoreArr[0];
|
|
12
|
+
}
|
|
13
|
+
parseArr() {
|
|
14
|
+
return [
|
|
15
|
+
this.name,
|
|
16
|
+
this.count.toString(16)
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import {
|
|
2
|
+
baseUi
|
|
3
|
+
} from "./baseUi";
|
|
4
|
+
import {
|
|
5
|
+
utils
|
|
6
|
+
} from "./../utils/index";
|
|
7
|
+
import {
|
|
8
|
+
Lore
|
|
9
|
+
} from "./Lore";
|
|
10
|
+
class ItemBagUI extends baseUi {
|
|
11
|
+
initLayout() {
|
|
12
|
+
this.layouts = this.game.regLayout({
|
|
13
|
+
regIds: ["Home", "NumSelect", "showInNoFound"],
|
|
14
|
+
Home: {
|
|
15
|
+
title: "菜单",
|
|
16
|
+
layout: [{
|
|
17
|
+
type: "button",
|
|
18
|
+
param: ["存入物品"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
type: "button",
|
|
22
|
+
param: ["取出物品"]
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
NumSelect: {
|
|
27
|
+
title: "选择数量",
|
|
28
|
+
layout: []
|
|
29
|
+
},
|
|
30
|
+
showInNoFound: {
|
|
31
|
+
title: "请选择要存入的物品",
|
|
32
|
+
layout: [{
|
|
33
|
+
type: "label",
|
|
34
|
+
param: ["点击你想要存放的物品"]
|
|
35
|
+
}]
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 打开主菜单:存入物品 / 取出物品
|
|
41
|
+
*/
|
|
42
|
+
openHomeForm(player, itemOnHand) {
|
|
43
|
+
if (!this.layouts) this.initLayout();
|
|
44
|
+
const lore = new Lore(itemOnHand);
|
|
45
|
+
const form = this.game.createForm("Action", this.layouts[0]);
|
|
46
|
+
form.addLayout({
|
|
47
|
+
type: "label",
|
|
48
|
+
param: [`无尽袋子 - 菜单\n物品 : ${lore.name} , 数量 : ${lore.count}`]
|
|
49
|
+
})
|
|
50
|
+
form.show(player, true).onCommit(({
|
|
51
|
+
selection
|
|
52
|
+
}) => {
|
|
53
|
+
switch (selection) {
|
|
54
|
+
case 0:
|
|
55
|
+
this.openAddItemForm(player, itemOnHand);
|
|
56
|
+
break;
|
|
57
|
+
case 1:
|
|
58
|
+
this.hanlerTakeOutItems(player, itemOnHand);
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
player.sendMessage("请选择存入或取出");
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
hanlerTakeOutItems(player, itemOnHand) {
|
|
66
|
+
const lore = new Lore(itemOnHand)
|
|
67
|
+
if (!lore.name) return player.sendMessage('没有存入任何东西');
|
|
68
|
+
this.selectionNum({
|
|
69
|
+
min: 1,
|
|
70
|
+
max: lore.count,
|
|
71
|
+
tit: lore.name,
|
|
72
|
+
callback: ({
|
|
73
|
+
formValues
|
|
74
|
+
}) => {
|
|
75
|
+
const TakeOutCount = formValues[0];
|
|
76
|
+
player.runCommand(`give @s ${lore.name} ${TakeOutCount}`)
|
|
77
|
+
lore.count = lore.count - TakeOutCount;
|
|
78
|
+
itemOnHand.setLore(lore.parseArr())
|
|
79
|
+
utils.setMainHand(player, itemOnHand);
|
|
80
|
+
},
|
|
81
|
+
lastUi: () => this.openHomeForm(player, itemOnHand)
|
|
82
|
+
}, player)
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 打开“存入物品”表单(自动识别物品类型)
|
|
86
|
+
*/
|
|
87
|
+
openAddItemForm(player, itemOnHand) {
|
|
88
|
+
const currencyLore = new Lore(itemOnHand);
|
|
89
|
+
// 如果 Lore 无法识别此物品(比如没有 name 字段),则进入手动选择模式
|
|
90
|
+
if (currencyLore.name === undefined) {
|
|
91
|
+
return this.showInNoData(player, currencyLore, itemOnHand);
|
|
92
|
+
}
|
|
93
|
+
const inventoryData = utils.getAllPlayerInt(player);
|
|
94
|
+
let totalItemAmount = 0;
|
|
95
|
+
// 统计当前玩家拥有该物品的总数量
|
|
96
|
+
for (const [itemId, itemData] of inventoryData) {
|
|
97
|
+
const [itemName, itemCount] = itemData;
|
|
98
|
+
if (itemName === currencyLore.name) {
|
|
99
|
+
totalItemAmount += itemCount;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// 如果该物品数量为 0,则提示无法存入
|
|
103
|
+
if (totalItemAmount <= 0) {
|
|
104
|
+
return player.sendMessage("你没有该物品,无法存入!");
|
|
105
|
+
}
|
|
106
|
+
// 弹出滑条,让用户选择存入多少个
|
|
107
|
+
this.selectionNum({
|
|
108
|
+
min: 0,
|
|
109
|
+
max: totalItemAmount,
|
|
110
|
+
tit: currencyLore.name,
|
|
111
|
+
callback: ({
|
|
112
|
+
formValues
|
|
113
|
+
}) => {
|
|
114
|
+
const countToStore = formValues[0];
|
|
115
|
+
currencyLore.count = countToStore + totalItemAmount;
|
|
116
|
+
this.handlerAdd(currencyLore, player, itemOnHand, countToStore);
|
|
117
|
+
},
|
|
118
|
+
lastUi: () => this.openHomeForm(player, itemOnHand),
|
|
119
|
+
},
|
|
120
|
+
player
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 当物品无法自动识别时,让用户从列表中手动选择要存入的物品
|
|
125
|
+
*/
|
|
126
|
+
showInNoData(player, placeholderLore, itemOnHand) {
|
|
127
|
+
const form = this.game.createForm("Action", this.layouts[2]);
|
|
128
|
+
const inventoryData = utils.getAllPlayerInt(player);
|
|
129
|
+
const itemButtons = [];
|
|
130
|
+
const itemKeys = [];
|
|
131
|
+
let buttonIndex = 0;
|
|
132
|
+
for (const [itemId, itemData] of inventoryData) {
|
|
133
|
+
if (!Array.isArray(itemData)) continue;
|
|
134
|
+
const [itemName, itemCount] = itemData;
|
|
135
|
+
form.addLayout({
|
|
136
|
+
type: "button",
|
|
137
|
+
param: [`${itemName} x${itemCount}`],
|
|
138
|
+
});
|
|
139
|
+
itemKeys[buttonIndex] = itemId;
|
|
140
|
+
buttonIndex++;
|
|
141
|
+
}
|
|
142
|
+
form.show(player).then(({
|
|
143
|
+
selection,
|
|
144
|
+
canceled
|
|
145
|
+
}) => {
|
|
146
|
+
if (canceled) {
|
|
147
|
+
return this.openHomeForm(player, itemOnHand);
|
|
148
|
+
}
|
|
149
|
+
if (selection === undefined || selection >= itemKeys.length) {
|
|
150
|
+
return player.sendMessage("你选择的物品无效");
|
|
151
|
+
}
|
|
152
|
+
const selectedItemId = itemKeys[selection];
|
|
153
|
+
const selectedItemData = inventoryData.get(selectedItemId);
|
|
154
|
+
if (!selectedItemData || !Array.isArray(selectedItemData)) {
|
|
155
|
+
return player.sendMessage("该物品数据异常");
|
|
156
|
+
}
|
|
157
|
+
const [selectedItemName, selectedItemCount] = selectedItemData;
|
|
158
|
+
this.selectionNum({
|
|
159
|
+
tit: `存入 ${selectedItemName}`,
|
|
160
|
+
min: 0,
|
|
161
|
+
max: selectedItemCount,
|
|
162
|
+
callback: ({
|
|
163
|
+
formValues
|
|
164
|
+
}) => {
|
|
165
|
+
const countToStore = formValues[0];
|
|
166
|
+
const manualLore = new Lore(itemOnHand);
|
|
167
|
+
manualLore.name = selectedItemName;
|
|
168
|
+
manualLore.count = countToStore + selectedItemCount;
|
|
169
|
+
this.handlerAdd(manualLore, player, itemOnHand, countToStore);
|
|
170
|
+
},
|
|
171
|
+
lastUi: () => this.openHomeForm(player, itemOnHand),
|
|
172
|
+
},
|
|
173
|
+
player
|
|
174
|
+
);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
handlerAdd(lore, player, originalItem, countToStore) {
|
|
178
|
+
utils.removeItems(player, {
|
|
179
|
+
name: lore.name,
|
|
180
|
+
count: countToStore,
|
|
181
|
+
});
|
|
182
|
+
originalItem.setLore(lore.parseArr())
|
|
183
|
+
utils.setMainHand(player, originalItem);
|
|
184
|
+
player.sendMessage(`成功存入 ${countToStore} 个「${lore.name}」`);
|
|
185
|
+
}
|
|
186
|
+
selectionNum({
|
|
187
|
+
min = 0,
|
|
188
|
+
max = 1,
|
|
189
|
+
tit = "",
|
|
190
|
+
callback = () => {},
|
|
191
|
+
lastUi = () => {},
|
|
192
|
+
} = {},
|
|
193
|
+
player
|
|
194
|
+
) {
|
|
195
|
+
const form = this.game
|
|
196
|
+
.createForm("Modal", this.layouts[1])
|
|
197
|
+
form.addLayout({
|
|
198
|
+
type: "slider",
|
|
199
|
+
param: [tit, min, max]
|
|
200
|
+
})
|
|
201
|
+
const show = form.show(player, true)
|
|
202
|
+
show.onCancel(lastUi)
|
|
203
|
+
show.onCommit(callback);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export default ItemBagUI;
|