mbler 0.1.3-alpha → 0.1.3-alpna-r1

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 (178) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +8 -4
  3. package/bin/mbler.js +12 -12
  4. package/bin/minify.js +58 -44
  5. package/lib/build/base.js +1 -297
  6. package/lib/build/build-g-config.json +12 -12
  7. package/lib/build/getModule.js +1 -182
  8. package/lib/build/index.js +1 -370
  9. package/lib/build/manifest.build.js +1 -103
  10. package/lib/build/mcVersion.js +1 -86
  11. package/lib/build/utils.js +1 -6
  12. package/lib/code-processor/c-handler-export.js +1 -12
  13. package/lib/code-processor/index.js +1 -141
  14. package/lib/code-processor/mtreehandler.js +1 -164
  15. package/lib/commander/index.js +1 -154
  16. package/lib/data/includes.json +13 -13
  17. package/lib/data/version.json +88 -88
  18. package/lib/git/clone.js +1 -28
  19. package/lib/git/index.js +1 -12
  20. package/lib/git/pull.js +1 -100
  21. package/lib/lang/__translate.js +1 -93
  22. package/lib/lang/en.js +1 -128
  23. package/lib/lang/index.js +1 -78
  24. package/lib/lang/zh.js +1 -146
  25. package/lib/loger/colors.js +1 -13
  26. package/lib/loger/index.js +1 -136
  27. package/lib/mcx/ast/index.js +1 -11
  28. package/lib/mcx/ast/prop.js +1 -78
  29. package/lib/mcx/ast/tag.js +1 -246
  30. package/lib/mcx/compile-component/lib.js +1 -106
  31. package/lib/mcx/compile-component/types.js +1 -2
  32. package/lib/mcx/compile-component/utils.js +1 -26
  33. package/lib/mcx/compile-mcx/compile.js +1 -34
  34. package/lib/mcx/compile-mcx/compiler/bundler.js +1 -0
  35. package/lib/mcx/compile-mcx/compiler/compileData.js +1 -0
  36. package/lib/mcx/compile-mcx/compiler/compileMain.js +1 -0
  37. package/lib/mcx/compile-mcx/compiler/index.js +1 -0
  38. package/lib/mcx/compile-mcx/compiler/utils.js +1 -0
  39. package/lib/mcx/compile-mcx/context.js +1 -19
  40. package/lib/mcx/compile-mcx/index.js +1 -10
  41. package/lib/mcx/compile-mcx/mcx/index.js +1 -2
  42. package/lib/mcx/compile-mcx/mcx/types.js +1 -2
  43. package/lib/mcx/compile-mcx/template/module.js +1 -42
  44. package/lib/mcx/compile-mcx/types.js +1 -2
  45. package/lib/mcx/compile-mcx/utils.node.js +1 -207
  46. package/lib/mcx/index.js +1 -13
  47. package/lib/mcx/test/index.js +1 -7
  48. package/lib/mcx/test.js +1 -21
  49. package/lib/mcx/types.js +1 -2
  50. package/lib/mcx/utils.js +1 -86
  51. package/lib/module-handler/index.js +1 -482
  52. package/lib/modules/create-game/mbler.config.json +13 -13
  53. package/lib/modules/create-game/src/Runner/RunnerManager.js +1 -113
  54. package/lib/modules/create-game/src/Runner/scriptRunner.js +1 -70
  55. package/lib/modules/create-game/src/config.js +1 -27
  56. package/lib/modules/create-game/src/constants.js +1 -19
  57. package/lib/modules/create-game/src/createGameModule.js +1 -24
  58. package/lib/modules/create-game/src/gameComponent/common/autoStop.js +1 -38
  59. package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +1 -76
  60. package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +1 -36
  61. package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +1 -90
  62. package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +1 -29
  63. package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +1 -36
  64. package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +1 -29
  65. package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +1 -87
  66. package/lib/modules/create-game/src/gameComponent/gameComponent.js +1 -53
  67. package/lib/modules/create-game/src/gameComponent/index.js +1 -31
  68. package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +1 -40
  69. package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +1 -48
  70. package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +1 -48
  71. package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +1 -22
  72. package/lib/modules/create-game/src/gameComponent/player/respawn.js +1 -59
  73. package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +1 -69
  74. package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +1 -53
  75. package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +1 -71
  76. package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +1 -20
  77. package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +1 -77
  78. package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +1 -83
  79. package/lib/modules/create-game/src/gameContext.js +1 -6
  80. package/lib/modules/create-game/src/gameEngine.js +1 -139
  81. package/lib/modules/create-game/src/gameEvent/eventManager.js +1 -108
  82. package/lib/modules/create-game/src/gameEvent/eventSignal.js +1 -28
  83. package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +1 -41
  84. package/lib/modules/create-game/src/gameEvent/events/inSlot.js +1 -77
  85. package/lib/modules/create-game/src/gameEvent/events/interval.js +1 -51
  86. package/lib/modules/create-game/src/gameEvent/events/itemUse.js +1 -36
  87. package/lib/modules/create-game/src/gameEvent/events/onBlock.js +1 -106
  88. package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +1 -105
  89. package/lib/modules/create-game/src/gameEvent/events/signClick.js +1 -45
  90. package/lib/modules/create-game/src/gameEvent/gameEvent.js +1 -54
  91. package/lib/modules/create-game/src/gameEvent/index.js +1 -20
  92. package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +1 -101
  93. package/lib/modules/create-game/src/gameEvent/subscription.js +1 -17
  94. package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +1 -102
  95. package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +1 -38
  96. package/lib/modules/create-game/src/gamePlayer/groupSet.js +1 -96
  97. package/lib/modules/create-game/src/gamePlayer/index.js +1 -25
  98. package/lib/modules/create-game/src/gamePlayer/playerGroup.js +1 -145
  99. package/lib/modules/create-game/src/gamePlayer/playerManager.js +1 -57
  100. package/lib/modules/create-game/src/gameRegion/gameRegion.js +1 -229
  101. package/lib/modules/create-game/src/gameRegion/index.js +1 -43
  102. package/lib/modules/create-game/src/gameRegion/regionHelper.js +1 -79
  103. package/lib/modules/create-game/src/gameState/common/autoStop.js +1 -39
  104. package/lib/modules/create-game/src/gameState/gameState.js +1 -169
  105. package/lib/modules/create-game/src/gameState/index.js +1 -7
  106. package/lib/modules/create-game/src/gameState/types.js +1 -35
  107. package/lib/modules/create-game/src/gameStructure/gameStructure.js +1 -36
  108. package/lib/modules/create-game/src/main.js +1 -86
  109. package/lib/modules/create-game/src/system/gameCommand.js +1 -107
  110. package/lib/modules/create-game/src/system/gameManager.js +1 -124
  111. package/lib/modules/create-game/src/system/globalPlayerManager.js +1 -119
  112. package/lib/modules/create-game/src/utils/GameError.js +1 -31
  113. package/lib/modules/create-game/src/utils/algorithm.js +1 -95
  114. package/lib/modules/create-game/src/utils/chunk.js +1 -63
  115. package/lib/modules/create-game/src/utils/deferredObject.js +1 -27
  116. package/lib/modules/create-game/src/utils/duration.js +1 -25
  117. package/lib/modules/create-game/src/utils/func.js +1 -20
  118. package/lib/modules/create-game/src/utils/index.js +1 -52
  119. package/lib/modules/create-game/src/utils/interfaces.js +1 -2
  120. package/lib/modules/create-game/src/utils/logger.js +1 -47
  121. package/lib/modules/create-game/src/utils/random.js +1 -76
  122. package/lib/modules/create-game/src/utils/vanila-data.js +1 -123
  123. package/lib/modules/create-game/src/utils/vector.js +1 -96
  124. package/lib/modules/gameLib/mbler.config.json +15 -15
  125. package/lib/modules/gameLib/src/config.js +1 -134
  126. package/lib/modules/gameLib/src/data.js +1 -77
  127. package/lib/modules/gameLib/src/entity.js +1 -256
  128. package/lib/modules/gameLib/src/event.js +1 -285
  129. package/lib/modules/gameLib/src/index.js +1 -20
  130. package/lib/modules/gameLib/src/loger.js +1 -21
  131. package/lib/modules/gameLib/src/ui.js +1 -209
  132. package/lib/modules/gameLib/src/utils.js +1 -122
  133. package/lib/modules/gutils/mbler.config.json +11 -11
  134. package/lib/modules/gutils/src/index.js +1 -22
  135. package/lib/modules/innerDef.json +4 -4
  136. package/lib/runTemp/File.js +1 -54
  137. package/lib/runTemp/config.json +3 -3
  138. package/lib/runTemp/index.js +1 -137
  139. package/lib/runTemp/securityFile.js +1 -93
  140. package/lib/start/addPack.js +1 -3
  141. package/lib/start/clean.js +1 -84
  142. package/lib/start/create.js +1 -146
  143. package/lib/start/dev.js +1 -99
  144. package/lib/start/getResConfig.js +1 -3
  145. package/lib/start/incg.js +1 -3
  146. package/lib/start/index.js +1 -207
  147. package/lib/start/init.js +1 -125
  148. package/lib/start/rechce.js +1 -57
  149. package/lib/start/unaddPack.js +1 -3
  150. package/lib/start/unincg.js +1 -67
  151. package/lib/start/version.js +1 -73
  152. package/lib/utils/index.js +1 -298
  153. package/lib/uuid/index.js +1 -27
  154. package/package.json +49 -1
  155. package/test/2x sword/behavior/scripts/index.js +24 -24
  156. package/test/2x sword/mbler.config.json +11 -11
  157. package/test/2x sword/package.json +13 -13
  158. package/test/README.md +7 -7
  159. package/test/des/index.js +19 -19
  160. package/test/des/mbler.config.json +4 -4
  161. package/test/des/package.json +6 -6
  162. package/test/initializer/index.js +5 -5
  163. package/test/initializer/mbler.config.json +4 -4
  164. package/test/initializer/package.json +6 -6
  165. package/test/mbler-int/behavior/res/items/mang_one_int.json +21 -21
  166. package/test/mbler-int/behavior/scripts/index.js +7 -7
  167. package/test/mbler-int/behavior/scripts/lib/event/index.js +19 -19
  168. package/test/mbler-int/behavior/scripts/lib/ui/Lore.js +18 -18
  169. package/test/mbler-int/behavior/scripts/lib/ui/baseUi.js +6 -6
  170. package/test/mbler-int/behavior/scripts/lib/ui/index.js +206 -206
  171. package/test/mbler-int/behavior/scripts/lib/utils/index.js +51 -51
  172. package/test/mbler-int/mbler.config.json +18 -18
  173. package/test/mbler-int/package.json +12 -12
  174. package/test/script-mbler/behavior/scripts/index.js +5 -0
  175. package/test/script-mbler/behavior/scripts/index.ts +5 -5
  176. package/test/script-mbler/mbler.config.json +14 -14
  177. package/test/script-mbler/package.json +15 -15
  178. package/lib/mcx/compile-mcx/_compile.js +0 -602
@@ -1,119 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.globalPlayerManager = void 0;
4
- const server_1 = require("@minecraft/server");
5
- const main_js_1 = require("../main.js");
6
- const index_js_1 = require("../utils/index.js");
7
- class globalPlayer {
8
- player;
9
- get isValid() {
10
- return this.player.isValid;
11
- }
12
- /**当前分配游戏的key */
13
- curGame;
14
- constructor(player) {
15
- this.player = player;
16
- }
17
- }
18
- class globalPlayerManager {
19
- players = new Map();
20
- logger = new index_js_1.Logger(this.constructor.name);
21
- constructor() {
22
- server_1.world.afterEvents.worldLoad.subscribe(() => {
23
- server_1.system.runInterval(this.tick.bind(this));
24
- });
25
- }
26
- /** 玩家是否已被分配(不修改状态) */
27
- isPlayerAllocated(playerId) {
28
- const player = this.players.get(playerId);
29
- return !!(player?.curGame && main_js_1.Game.manager.getGameByKey(player.curGame));
30
- }
31
- /**请求分配玩家
32
- * 系统调用
33
- * @returns boolean 是否成功分配
34
- */
35
- allocatePlayerToGame(playerId, gameKey) {
36
- this.logger.debug(`allocate player ${playerId} for ${gameKey}`);
37
- const player = this.players.get(playerId);
38
- this.logger.debug(`allocate player ${player?.player.name ?? playerId} for ${gameKey}`);
39
- if (player?.isValid && !this.isPlayerAllocated(player.player.id)) {
40
- player.curGame = gameKey;
41
- return true;
42
- }
43
- return false;
44
- }
45
- /**将玩家从指定游戏释放
46
- * 系统调用
47
- */
48
- releaseAllPlayerFromGame(gameKey) {
49
- this.players.forEach((p) => {
50
- if (p.curGame == gameKey)
51
- p.curGame == undefined;
52
- });
53
- }
54
- /**将玩家从指定游戏释放 */
55
- releasePlayerFromGame(playerId, gameKey) {
56
- const player = this.players.get(playerId);
57
- if (player && player.curGame == gameKey) {
58
- player.curGame = undefined;
59
- }
60
- }
61
- /**强制释放玩家 */
62
- forceReleaseFromGame(playerId) {
63
- const player = this.players.get(playerId);
64
- if (player && player.curGame) {
65
- const game = main_js_1.Game.manager.getGameByKey(player.curGame);
66
- game?.playerManager.deactivate(player.player);
67
- player.curGame = undefined;
68
- }
69
- }
70
- /**获取所有在线且没有分配游戏的玩家 */
71
- getFreePlayers() {
72
- return [...this.players.values()]
73
- .filter((p) => p.curGame == undefined && p.isValid)
74
- .map((p) => p.player);
75
- }
76
- tick() {
77
- const players = server_1.world.getAllPlayers();
78
- const onlineIds = new Set();
79
- // 添加新玩家
80
- for (const p of players) {
81
- if (p == undefined)
82
- continue;
83
- onlineIds.add(p.id);
84
- if (!this.players.has(p.id)) {
85
- main_js_1.Game.config.config.onJoin(p); //之前没有,说明是新加入的
86
- this.players.set(p.id, new globalPlayer(p));
87
- }
88
- }
89
- for (const [id, gp] of this.players) {
90
- // 下线且无游戏 → 清理
91
- if (!onlineIds.has(id) && gp.curGame === undefined) {
92
- this.players.delete(id);
93
- }
94
- // 同时清理无效分配
95
- else if (gp.curGame && !main_js_1.Game.manager.getGameByKey(gp.curGame)) {
96
- gp.curGame = undefined;
97
- }
98
- }
99
- }
100
- status() {
101
- const total = this.players.size;
102
- let inGame = 0;
103
- let free = 0;
104
- let offline = 0;
105
- for (const gp of this.players.values()) {
106
- if (!gp.isValid) {
107
- offline++;
108
- }
109
- else if (gp.curGame) {
110
- inGame++;
111
- }
112
- else {
113
- free++;
114
- }
115
- }
116
- return `已追踪: ${total}, 游戏中: ${inGame}, 空闲: ${free}, 离线: ${offline}`;
117
- }
118
- }
119
- exports.globalPlayerManager = globalPlayerManager;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.globalPlayerManager=void 0;const server_1=require("@minecraft/server"),main_js_1=require("../main.js"),index_js_1=require("../utils/index.js");class globalPlayer{player;get isValid(){return this.player.isValid}curGame;constructor(e){this.player=e}}class globalPlayerManager{players=new Map;logger=new index_js_1.Logger(this.constructor.name);constructor(){server_1.world.afterEvents.worldLoad.subscribe(()=>{server_1.system.runInterval(this.tick.bind(this))})}isPlayerAllocated(e){const a=this.players.get(e);return!(!a?.curGame||!main_js_1.Game.manager.getGameByKey(a.curGame))}allocatePlayerToGame(e,a){this.logger.debug(`allocate player ${e} for ${a}`);const r=this.players.get(e);return this.logger.debug(`allocate player ${r?.player.name??e} for ${a}`),!(!r?.isValid||this.isPlayerAllocated(r.player.id))&&(r.curGame=a,!0)}releaseAllPlayerFromGame(e){this.players.forEach(a=>{a.curGame==e&&a.curGame})}releasePlayerFromGame(e,a){const r=this.players.get(e);r&&r.curGame==a&&(r.curGame=void 0)}forceReleaseFromGame(e){const a=this.players.get(e);if(a&&a.curGame){const e=main_js_1.Game.manager.getGameByKey(a.curGame);e?.playerManager.deactivate(a.player),a.curGame=void 0}}getFreePlayers(){return[...this.players.values()].filter(e=>null==e.curGame&&e.isValid).map(e=>e.player)}tick(){const e=server_1.world.getAllPlayers(),a=new Set;for(const r of e)null!=r&&(a.add(r.id),this.players.has(r.id)||(main_js_1.Game.config.config.onJoin(r),this.players.set(r.id,new globalPlayer(r))));for(const[e,r]of this.players)a.has(e)||void 0!==r.curGame?r.curGame&&!main_js_1.Game.manager.getGameByKey(r.curGame)&&(r.curGame=void 0):this.players.delete(e)}status(){const e=this.players.size;let a=0,r=0,s=0;for(const e of this.players.values())e.isValid?e.curGame?a++:r++:s++;return`已追踪: ${e}, 游戏中: ${a}, 空闲: ${r}, 离线: ${s}`}}exports.globalPlayerManager=globalPlayerManager;
@@ -1,31 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GameStateError = exports.GameEngineError = exports.GameManagerError = exports.GameError = void 0;
4
- class GameError extends Error {
5
- constructor(mes, options) {
6
- super(mes, options);
7
- this.name = "GameError";
8
- }
9
- }
10
- exports.GameError = GameError;
11
- class GameManagerError extends GameError {
12
- constructor(mes, options) {
13
- super(mes, options);
14
- this.name = this.constructor.name;
15
- }
16
- }
17
- exports.GameManagerError = GameManagerError;
18
- class GameEngineError extends GameError {
19
- constructor(mes, options) {
20
- super(mes, options);
21
- this.name = this.constructor.name;
22
- }
23
- }
24
- exports.GameEngineError = GameEngineError;
25
- class GameStateError extends GameError {
26
- constructor(mes, options) {
27
- super(mes, options);
28
- this.name = this.constructor.name;
29
- }
30
- }
31
- exports.GameStateError = GameStateError;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GameStateError=exports.GameEngineError=exports.GameManagerError=exports.GameError=void 0;class GameError extends Error{constructor(r,e){super(r,e),this.name="GameError"}}exports.GameError=GameError;class GameManagerError extends GameError{constructor(r,e){super(r,e),this.name=this.constructor.name}}exports.GameManagerError=GameManagerError;class GameEngineError extends GameError{constructor(r,e){super(r,e),this.name=this.constructor.name}}exports.GameEngineError=GameEngineError;class GameStateError extends GameError{constructor(r,e){super(r,e),this.name=this.constructor.name}}exports.GameStateError=GameStateError;
@@ -1,95 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bfsBlocks = bfsBlocks;
4
- exports.linspace = linspace;
5
- const vector_js_1 = require("./vector.js");
6
- /**
7
- * BFS 遍历方块
8
- * @param startBlock 起始方块
9
- * @param condition 判断方块是否满足条件
10
- * @param maxDistance 可选,最大遍历距离
11
- */
12
- function bfsBlocks(startBlock, condition, maxDistance = 20, maxBlocks = 64) {
13
- const visited = new Set();
14
- const queue = [
15
- { block: startBlock, distance: 0 },
16
- ];
17
- const result = [];
18
- while (queue.length > 0) {
19
- const { block, distance } = queue.shift();
20
- const locStr = vector_js_1.Vector3Utils.toString(block.location);
21
- if (visited.has(locStr))
22
- continue;
23
- visited.add(locStr);
24
- // 仅当方块满足条件时才加入结果并继续扩展邻居
25
- if (condition(block, distance)) {
26
- result.push(block);
27
- // 达到最大方块数则直接返回
28
- if (result.length >= maxBlocks)
29
- break;
30
- if (distance < maxDistance) {
31
- for (const neighbor of getNeighborBlocks(block)) {
32
- if (result.length >= maxBlocks)
33
- break; // 避免继续加入
34
- const neighborLocStr = vector_js_1.Vector3Utils.toString(neighbor.location);
35
- if (!visited.has(neighborLocStr)) {
36
- queue.push({ block: neighbor, distance: distance + 1 });
37
- }
38
- }
39
- }
40
- }
41
- }
42
- return result;
43
- }
44
- /**获取相邻方块 */
45
- function getNeighborBlocks(block, corner = false) {
46
- const neighbors = [];
47
- // 正交方向
48
- const directions = [
49
- { x: 0, y: 1, z: 0 },
50
- { x: 0, y: -1, z: 0 },
51
- { x: 1, y: 0, z: 0 },
52
- { x: -1, y: 0, z: 0 },
53
- { x: 0, y: 0, z: 1 },
54
- { x: 0, y: 0, z: -1 },
55
- ];
56
- for (const dir of directions) {
57
- const nb = block.offset(dir);
58
- if (nb)
59
- neighbors.push(nb);
60
- }
61
- // 对角方向
62
- if (corner) {
63
- for (let dx of [-1, 0, 1]) {
64
- for (let dy of [-1, 0, 1]) {
65
- for (let dz of [-1, 0, 1]) {
66
- if (dx === 0 && dy === 0 && dz === 0)
67
- continue; // 自己
68
- if (Math.abs(dx) + Math.abs(dy) + Math.abs(dz) === 1)
69
- continue;
70
- const nb = block.offset({ x: dx, y: dy, z: dz });
71
- if (nb)
72
- neighbors.push(nb);
73
- }
74
- }
75
- }
76
- }
77
- return neighbors;
78
- }
79
- /** 线性插值 */
80
- function linspace(start, end, num) {
81
- if (num <= 0)
82
- return [];
83
- if (num === 1)
84
- return [start];
85
- const step = {
86
- x: (end.x - start.x) / (num - 1),
87
- y: (end.y - start.y) / (num - 1),
88
- z: (end.z - start.z) / (num - 1),
89
- };
90
- return Array.from({ length: num }, (_, i) => ({
91
- x: start.x + i * step.x,
92
- y: start.y + i * step.y,
93
- z: start.z + i * step.z,
94
- }));
95
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.bfsBlocks=bfsBlocks,exports.linspace=linspace;const vector_js_1=require("./vector.js");function bfsBlocks(t,o,e=20,s=64){const n=new Set,c=[{block:t,distance:0}],r=[];for(;c.length>0;){const{block:t,distance:f}=c.shift(),i=vector_js_1.Vector3Utils.toString(t.location);if(!n.has(i)&&(n.add(i),o(t,f))){if(r.push(t),r.length>=s)break;if(f<e)for(const o of getNeighborBlocks(t)){if(r.length>=s)break;const t=vector_js_1.Vector3Utils.toString(o.location);n.has(t)||c.push({block:o,distance:f+1})}}}return r}function getNeighborBlocks(t,o=!1){const e=[],s=[{x:0,y:1,z:0},{x:0,y:-1,z:0},{x:1,y:0,z:0},{x:-1,y:0,z:0},{x:0,y:0,z:1},{x:0,y:0,z:-1}];for(const o of s){const s=t.offset(o);s&&e.push(s)}if(o)for(let o of[-1,0,1])for(let s of[-1,0,1])for(let n of[-1,0,1]){if(0===o&&0===s&&0===n)continue;if(Math.abs(o)+Math.abs(s)+Math.abs(n)===1)continue;const c=t.offset({x:o,y:s,z:n});c&&e.push(c)}return e}function linspace(t,o,e){if(e<=0)return[];if(1===e)return[t];const s=(o.x-t.x)/(e-1),n=(o.y-t.y)/(e-1),c=(o.z-t.z)/(e-1);return Array.from({length:e},(o,e)=>({x:t.x+e*s,y:t.y+e*n,z:t.z+e*c}))}
@@ -1,63 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChunkUtils = void 0;
4
- const server_1 = require("@minecraft/server");
5
- /**有关区块的工具 */
6
- class ChunkUtils {
7
- /**
8
- * 通过方块坐标获得该方块所在区块坐标
9
- * @param pos 方块的坐标
10
- * @returns 该方块所在区块的坐标
11
- */
12
- static getChunkPosFromBlockPos(pos) {
13
- return {
14
- x: pos.x >> 4,
15
- z: pos.z >> 4,
16
- };
17
- }
18
- /**
19
- * 获取指定位置的区块中,全部的实体和玩家的ID列表
20
- * @param dimensionId 维度Id
21
- * @param pos 指定位置的坐标
22
- * @returns 实体和玩家的ID的列表,当指定位置的区块不存在或尚未加载时,返回空数组
23
- **/
24
- static getChunkEntities(dimensionId, pos) {
25
- const chunkPos = this.getChunkPosFromBlockPos(pos);
26
- const min = this.getChunkMinPos(chunkPos);
27
- const dim = server_1.world.getDimension(dimensionId);
28
- if (!dim.isChunkLoaded(pos))
29
- return [];
30
- return dim.getEntities({
31
- location: min,
32
- volume: {
33
- x: 16,
34
- y: 384,
35
- z: 16,
36
- },
37
- });
38
- }
39
- /**
40
- * 获取某区块最大点的坐标
41
- * @param chunkPos 指定区块的坐标
42
- * @returns 该区块最大点的坐标
43
- */
44
- static getChunkMaxPos(chunkPos) {
45
- return {
46
- x: chunkPos.x * 16 + 15,
47
- y: 319,
48
- z: chunkPos.z * 16 + 15,
49
- };
50
- }
51
- /** 获取某区块最小点的坐标
52
- * @param chunkPos 指定区块的坐标
53
- * @returns 该区块最小点的坐标
54
- */
55
- static getChunkMinPos(chunkPos) {
56
- return {
57
- x: chunkPos.x * 16,
58
- y: -64,
59
- z: chunkPos.z * 16,
60
- };
61
- }
62
- }
63
- exports.ChunkUtils = ChunkUtils;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ChunkUtils=void 0;const server_1=require("@minecraft/server");class ChunkUtils{static getChunkPosFromBlockPos(t){return{x:t.x>>4,z:t.z>>4}}static getChunkEntities(t,e){const s=this.getChunkPosFromBlockPos(e),n=this.getChunkMinPos(s),r=server_1.world.getDimension(t);return r.isChunkLoaded(e)?r.getEntities({location:n,volume:{x:16,y:384,z:16}}):[]}static getChunkMaxPos(t){return{x:16*t.x+15,y:319,z:16*t.z+15}}static getChunkMinPos(t){return{x:16*t.x,y:-64,z:16*t.z}}}exports.ChunkUtils=ChunkUtils;
@@ -1,27 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDeferredObject = createDeferredObject;
4
- const GameError_js_1 = require("./GameError.js");
5
- function createDeferredObject() {
6
- let target = null;
7
- const proxy = new Proxy({}, {
8
- get(_, prop) {
9
- if (!target) {
10
- throw new DeferredObjectError("对象未初始化,不能访问属性: " + String(prop));
11
- }
12
- return target[prop];
13
- },
14
- });
15
- return {
16
- setTarget(obj) {
17
- target = obj;
18
- },
19
- proxy,
20
- };
21
- }
22
- class DeferredObjectError extends GameError_js_1.GameError {
23
- constructor(mes, options) {
24
- super(mes, options);
25
- this.name = "DeferredObjectError";
26
- }
27
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.createDeferredObject=createDeferredObject;const GameError_js_1=require("./GameError.js");function createDeferredObject(){let e=null;const r=new Proxy({},{get(r,t){if(!e)throw new DeferredObjectError("对象未初始化,不能访问属性: "+String(t));return e[t]}});return{setTarget(r){e=r},proxy:r}}class DeferredObjectError extends GameError_js_1.GameError{constructor(e,r){super(e,r),this.name="DeferredObjectError"}}
@@ -1,25 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Duration = void 0;
4
- class Duration {
5
- _ticks;
6
- static ticksPerSecond = 20;
7
- static ticksPerMinute = 60 * Duration.ticksPerSecond;
8
- constructor(ticks) {
9
- this._ticks = ticks;
10
- }
11
- /** 获取持续时间的刻数 */
12
- get ticks() {
13
- return this._ticks;
14
- }
15
- toSeconds() {
16
- return this.ticks / Duration.ticksPerSecond;
17
- }
18
- static fromSeconds(seconds) {
19
- return new Duration(Math.floor(this.ticksPerSecond * seconds));
20
- }
21
- static fromMinutes(minutes) {
22
- return new Duration(Math.floor(this.ticksPerMinute * minutes));
23
- }
24
- }
25
- exports.Duration = Duration;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Duration=void 0;class Duration{_ticks;static ticksPerSecond=20;static ticksPerMinute=60*Duration.ticksPerSecond;constructor(t){this._ticks=t}get ticks(){return this._ticks}toSeconds(){return this.ticks/Duration.ticksPerSecond}static fromSeconds(t){return new Duration(Math.floor(this.ticksPerSecond*t))}static fromMinutes(t){return new Duration(Math.floor(this.ticksPerMinute*t))}}exports.Duration=Duration;
@@ -1,20 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.difference = difference;
4
- exports.mapObject = mapObject;
5
- /**获取两个setA-setB */
6
- function difference(a, b) {
7
- const result = new Set();
8
- for (const item of a) {
9
- if (!b.has(item))
10
- result.add(item);
11
- }
12
- return result;
13
- }
14
- /**对对象执行map方法 */
15
- function mapObject(obj, fn) {
16
- return Object.fromEntries(Object.entries(obj).map(([k, v]) => [
17
- k,
18
- fn(v, k),
19
- ]));
20
- }
1
+ "use strict";function difference(e,t){const r=new Set;for(const n of e)t.has(n)||r.add(n);return r}function mapObject(e,t){return Object.fromEntries(Object.entries(e).map(([e,r])=>[e,t(r,e)]))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.difference=difference,exports.mapObject=mapObject;
@@ -1,52 +1 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
36
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.ChunkUtils = exports.Algorithm = exports.func = exports.RandomUtils = exports.Vector3Utils = exports.vanilaData = exports.GameErrors = exports.Duration = void 0;
40
- var duration_js_1 = require("./duration.js");
41
- Object.defineProperty(exports, "Duration", { enumerable: true, get: function () { return duration_js_1.Duration; } });
42
- exports.GameErrors = __importStar(require("./GameError.js"));
43
- __exportStar(require("./logger.js"), exports);
44
- exports.vanilaData = __importStar(require("./vanila-data.js"));
45
- var vector_js_1 = require("./vector.js");
46
- Object.defineProperty(exports, "Vector3Utils", { enumerable: true, get: function () { return vector_js_1.Vector3Utils; } });
47
- var random_js_1 = require("./random.js");
48
- Object.defineProperty(exports, "RandomUtils", { enumerable: true, get: function () { return random_js_1.RandomUtils; } });
49
- exports.func = __importStar(require("./func.js"));
50
- exports.Algorithm = __importStar(require("./algorithm.js"));
51
- var chunk_js_1 = require("./chunk.js");
52
- Object.defineProperty(exports, "ChunkUtils", { enumerable: true, get: function () { return chunk_js_1.ChunkUtils; } });
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var n=Object.getOwnPropertyDescriptor(r,t);n&&!("get"in n?!r.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,n)}:function(e,r,t,o){void 0===o&&(o=t),e[o]=r[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(e){var r=[];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[r.length]=t);return r},e(r)};return function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var o=e(r),n=0;n<o.length;n++)"default"!==o[n]&&__createBinding(t,r,o[n]);return __setModuleDefault(t,r),t}}(),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ChunkUtils=exports.Algorithm=exports.func=exports.RandomUtils=exports.Vector3Utils=exports.vanilaData=exports.GameErrors=exports.Duration=void 0;var duration_js_1=require("./duration.js");Object.defineProperty(exports,"Duration",{enumerable:!0,get:function(){return duration_js_1.Duration}}),exports.GameErrors=__importStar(require("./GameError.js")),__exportStar(require("./logger.js"),exports),exports.vanilaData=__importStar(require("./vanila-data.js"));var vector_js_1=require("./vector.js");Object.defineProperty(exports,"Vector3Utils",{enumerable:!0,get:function(){return vector_js_1.Vector3Utils}});var random_js_1=require("./random.js");Object.defineProperty(exports,"RandomUtils",{enumerable:!0,get:function(){return random_js_1.RandomUtils}}),exports.func=__importStar(require("./func.js")),exports.Algorithm=__importStar(require("./algorithm.js"));var chunk_js_1=require("./chunk.js");Object.defineProperty(exports,"ChunkUtils",{enumerable:!0,get:function(){return chunk_js_1.ChunkUtils}});
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1,47 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Logger = exports.logLevel = void 0;
4
- const config_js_1 = require("../config.js");
5
- (function (logLevel) {
6
- logLevel[logLevel["debug"] = 0] = "debug";
7
- logLevel[logLevel["log"] = 1] = "log";
8
- logLevel[logLevel["warn"] = 2] = "warn";
9
- logLevel[logLevel["error"] = 3] = "error";
10
- })(exports.logLevel || (exports.logLevel = {}));
11
- class Logger {
12
- name;
13
- constructor(name) {
14
- this.name = name;
15
- }
16
- get logLevel() {
17
- return config_js_1.SAPIGameConfig.config.logLevel;
18
- }
19
- debug(message, ...optionalParams) {
20
- if (this.logLevel <= exports.logLevel.debug)
21
- console.log(`<Game-debug>[${this.name}] ${message}`, ...optionalParams);
22
- }
23
- log(message, ...optionalParams) {
24
- if (this.logLevel <= exports.logLevel.log)
25
- console.log(`<Game-log>[${this.name}] ${message}`, ...optionalParams);
26
- }
27
- warn(message, ...optionalParams) {
28
- if (this.logLevel <= exports.logLevel.warn)
29
- console.warn(`<Game-warn>[${this.name}] ${message}`, ...optionalParams);
30
- }
31
- /**
32
- * 打印错误信息
33
- * @param message 消息
34
- * @param e 错误
35
- */
36
- error(message, e) {
37
- if (this.logLevel > exports.logLevel.error)
38
- return;
39
- if (e instanceof Error) {
40
- console.error(`<Game-error>[${this.name}] ${message}`, e, e.stack);
41
- }
42
- else {
43
- console.error(`<Game-error>[${this.name}] ${message}`, e);
44
- }
45
- }
46
- }
47
- exports.Logger = Logger;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Logger=exports.logLevel=void 0;const config_js_1=require("../config.js");!function(e){e[e.debug=0]="debug",e[e.log=1]="log",e[e.warn=2]="warn",e[e.error=3]="error"}(exports.logLevel||(exports.logLevel={}));class Logger{name;constructor(e){this.name=e}get logLevel(){return config_js_1.SAPIGameConfig.config.logLevel}debug(e,...o){this.logLevel<=exports.logLevel.debug&&console.log(`<Game-debug>[${this.name}] ${e}`,...o)}log(e,...o){this.logLevel<=exports.logLevel.log&&console.log(`<Game-log>[${this.name}] ${e}`,...o)}warn(e,...o){this.logLevel<=exports.logLevel.warn&&console.warn(`<Game-warn>[${this.name}] ${e}`,...o)}error(e,o){this.logLevel>exports.logLevel.error||(o instanceof Error?console.error(`<Game-error>[${this.name}] ${e}`,o,o.stack):console.error(`<Game-error>[${this.name}] ${e}`,o))}}exports.Logger=Logger;
@@ -1,76 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RandomUtils = void 0;
4
- class RandomUtils {
5
- /** 返回 [0, max) 的随机整数 */
6
- static int(max) {
7
- return Math.floor(Math.random() * max);
8
- }
9
- /** 返回 [min, max) 的随机整数 */
10
- static intRange(min, max) {
11
- return min + Math.floor(Math.random() * (max - min));
12
- }
13
- /** 从数组中随机取一个元素 */
14
- static choice(arr) {
15
- if (arr.length === 0)
16
- return undefined;
17
- return arr[this.int(arr.length)];
18
- }
19
- /** 从数组中随机取多个不重复元素(洗牌算法) */
20
- static choices(arr, count) {
21
- const n = arr.length;
22
- if (count >= n)
23
- return [...arr];
24
- const copy = [...arr];
25
- for (let i = 0; i < count; i++) {
26
- const j = i + Math.floor(Math.random() * (n - i)); // 随机选择 [i, n)
27
- [copy[i], copy[j]] = [copy[j], copy[i]]; // 交换
28
- }
29
- return copy.slice(0, count);
30
- }
31
- /** 纯洗牌算法,返回一个新数组(Fisher–Yates Shuffle) */
32
- static shuffle(arr) {
33
- const copy = [...arr];
34
- for (let i = copy.length - 1; i > 0; i--) {
35
- const j = Math.floor(Math.random() * (i + 1)); // [0, i]
36
- [copy[i], copy[j]] = [copy[j], copy[i]];
37
- }
38
- return copy;
39
- }
40
- /** 就地洗牌(直接修改原数组) */
41
- static shuffleInPlace(arr) {
42
- for (let i = arr.length - 1; i > 0; i--) {
43
- const j = Math.floor(Math.random() * (i + 1));
44
- [arr[i], arr[j]] = [arr[j], arr[i]];
45
- }
46
- }
47
- /** 随机布尔值(true/false) */
48
- static bool() {
49
- return Math.random() < 0.5;
50
- }
51
- /** 按权重随机选择一个元素 */
52
- static weightedChoice(arr, weights) {
53
- if (arr.length === 0 || arr.length !== weights.length)
54
- return undefined;
55
- const total = weights.reduce((a, b) => a + b, 0);
56
- let r = Math.random() * total;
57
- for (let i = 0; i < arr.length; i++) {
58
- if (r < weights[i])
59
- return arr[i];
60
- r -= weights[i];
61
- }
62
- return arr[arr.length - 1]; // 理论上不会走到这里
63
- }
64
- /**在圆形区域内随机选点 */
65
- static randomPointInCircle(x, y, rMax) {
66
- // 随机半径,均匀分布在圆内需要用 sqrt
67
- const r = Math.sqrt(Math.random()) * rMax;
68
- // 随机角度
69
- const theta = Math.random() * 2 * Math.PI;
70
- // 计算坐标
71
- const xRand = x + r * Math.cos(theta);
72
- const yRand = y + r * Math.sin(theta);
73
- return [xRand, yRand];
74
- }
75
- }
76
- exports.RandomUtils = RandomUtils;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RandomUtils=void 0;class RandomUtils{static int(t){return Math.floor(Math.random()*t)}static intRange(t,n){return t+Math.floor(Math.random()*(n-t))}static choice(t){if(0!==t.length)return t[this.int(t.length)]}static choices(t,n){const e=t.length;if(n>=e)return[...t];const r=[...t];for(let t=0;t<n;t++){const n=t+Math.floor(Math.random()*(e-t));[r[t],r[n]]=[r[n],r[t]]}return r.slice(0,n)}static shuffle(t){const n=[...t];for(let t=n.length-1;t>0;t--){const e=Math.floor(Math.random()*(t+1));[n[t],n[e]]=[n[e],n[t]]}return n}static shuffleInPlace(t){for(let n=t.length-1;n>0;n--){const e=Math.floor(Math.random()*(n+1));[t[n],t[e]]=[t[e],t[n]]}}static bool(){return Math.random()<.5}static weightedChoice(t,n){if(0===t.length||t.length!==n.length)return;const e=n.reduce((t,n)=>t+n,0);let r=Math.random()*e;for(let e=0;e<t.length;e++){if(r<n[e])return t[e];r-=n[e]}return t[t.length-1]}static randomPointInCircle(t,n,e){const r=Math.sqrt(Math.random())*e,o=2*Math.random()*Math.PI;return[t+r*Math.cos(o),n+r*Math.sin(o)]}}exports.RandomUtils=RandomUtils;