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.
- package/LICENSE +21 -21
- package/README.md +8 -4
- package/bin/mbler.js +12 -12
- package/bin/minify.js +58 -44
- package/lib/build/base.js +1 -297
- package/lib/build/build-g-config.json +12 -12
- package/lib/build/getModule.js +1 -182
- package/lib/build/index.js +1 -370
- package/lib/build/manifest.build.js +1 -103
- package/lib/build/mcVersion.js +1 -86
- package/lib/build/utils.js +1 -6
- package/lib/code-processor/c-handler-export.js +1 -12
- package/lib/code-processor/index.js +1 -141
- package/lib/code-processor/mtreehandler.js +1 -164
- package/lib/commander/index.js +1 -154
- package/lib/data/includes.json +13 -13
- package/lib/data/version.json +88 -88
- package/lib/git/clone.js +1 -28
- package/lib/git/index.js +1 -12
- package/lib/git/pull.js +1 -100
- package/lib/lang/__translate.js +1 -93
- package/lib/lang/en.js +1 -128
- package/lib/lang/index.js +1 -78
- package/lib/lang/zh.js +1 -146
- package/lib/loger/colors.js +1 -13
- package/lib/loger/index.js +1 -136
- package/lib/mcx/ast/index.js +1 -11
- package/lib/mcx/ast/prop.js +1 -78
- package/lib/mcx/ast/tag.js +1 -246
- package/lib/mcx/compile-component/lib.js +1 -106
- package/lib/mcx/compile-component/types.js +1 -2
- package/lib/mcx/compile-component/utils.js +1 -26
- package/lib/mcx/compile-mcx/compile.js +1 -34
- package/lib/mcx/compile-mcx/compiler/bundler.js +1 -0
- package/lib/mcx/compile-mcx/compiler/compileData.js +1 -0
- package/lib/mcx/compile-mcx/compiler/compileMain.js +1 -0
- package/lib/mcx/compile-mcx/compiler/index.js +1 -0
- package/lib/mcx/compile-mcx/compiler/utils.js +1 -0
- package/lib/mcx/compile-mcx/context.js +1 -19
- package/lib/mcx/compile-mcx/index.js +1 -10
- package/lib/mcx/compile-mcx/mcx/index.js +1 -2
- package/lib/mcx/compile-mcx/mcx/types.js +1 -2
- package/lib/mcx/compile-mcx/template/module.js +1 -42
- package/lib/mcx/compile-mcx/types.js +1 -2
- package/lib/mcx/compile-mcx/utils.node.js +1 -207
- package/lib/mcx/index.js +1 -13
- package/lib/mcx/test/index.js +1 -7
- package/lib/mcx/test.js +1 -21
- package/lib/mcx/types.js +1 -2
- package/lib/mcx/utils.js +1 -86
- package/lib/module-handler/index.js +1 -482
- package/lib/modules/create-game/mbler.config.json +13 -13
- package/lib/modules/create-game/src/Runner/RunnerManager.js +1 -113
- package/lib/modules/create-game/src/Runner/scriptRunner.js +1 -70
- package/lib/modules/create-game/src/config.js +1 -27
- package/lib/modules/create-game/src/constants.js +1 -19
- package/lib/modules/create-game/src/createGameModule.js +1 -24
- package/lib/modules/create-game/src/gameComponent/common/autoStop.js +1 -38
- package/lib/modules/create-game/src/gameComponent/common/lazyLoader.js +1 -76
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/onTimeEvent.js +1 -36
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/stopWatch.js +1 -90
- package/lib/modules/create-game/src/gameComponent/common/stopWatch/tickEvent.js +1 -29
- package/lib/modules/create-game/src/gameComponent/common/timer/onTimeEvent.js +1 -36
- package/lib/modules/create-game/src/gameComponent/common/timer/tickEvent.js +1 -29
- package/lib/modules/create-game/src/gameComponent/common/timer/timer.js +1 -87
- package/lib/modules/create-game/src/gameComponent/gameComponent.js +1 -53
- package/lib/modules/create-game/src/gameComponent/index.js +1 -31
- package/lib/modules/create-game/src/gameComponent/player/blockInteractionBlocker.js +1 -40
- package/lib/modules/create-game/src/gameComponent/player/entityInteractionBlocker.js +1 -48
- package/lib/modules/create-game/src/gameComponent/player/healthIndicator.js +1 -48
- package/lib/modules/create-game/src/gameComponent/player/regionMonitor.js +1 -22
- package/lib/modules/create-game/src/gameComponent/player/respawn.js +1 -59
- package/lib/modules/create-game/src/gameComponent/player/spawnProtector.js +1 -69
- package/lib/modules/create-game/src/gameComponent/region/regionProtecter.js +1 -53
- package/lib/modules/create-game/src/gameComponent/region/regionTeamChooser.js +1 -71
- package/lib/modules/create-game/src/gameComponent/region/regionTeamCleaner.js +1 -20
- package/lib/modules/create-game/src/gameComponent/view/infoScoreboard.js +1 -77
- package/lib/modules/create-game/src/gameComponent/view/teamScoreboard.js +1 -83
- package/lib/modules/create-game/src/gameContext.js +1 -6
- package/lib/modules/create-game/src/gameEngine.js +1 -139
- package/lib/modules/create-game/src/gameEvent/eventManager.js +1 -108
- package/lib/modules/create-game/src/gameEvent/eventSignal.js +1 -28
- package/lib/modules/create-game/src/gameEvent/events/buttonPush.js +1 -41
- package/lib/modules/create-game/src/gameEvent/events/inSlot.js +1 -77
- package/lib/modules/create-game/src/gameEvent/events/interval.js +1 -51
- package/lib/modules/create-game/src/gameEvent/events/itemUse.js +1 -36
- package/lib/modules/create-game/src/gameEvent/events/onBlock.js +1 -106
- package/lib/modules/create-game/src/gameEvent/events/regionEvents.js +1 -105
- package/lib/modules/create-game/src/gameEvent/events/signClick.js +1 -45
- package/lib/modules/create-game/src/gameEvent/gameEvent.js +1 -54
- package/lib/modules/create-game/src/gameEvent/index.js +1 -20
- package/lib/modules/create-game/src/gameEvent/mapEventSignal.js +1 -101
- package/lib/modules/create-game/src/gameEvent/subscription.js +1 -17
- package/lib/modules/create-game/src/gamePlayer/gamePlayer.js +1 -102
- package/lib/modules/create-game/src/gamePlayer/groupBuilder.js +1 -38
- package/lib/modules/create-game/src/gamePlayer/groupSet.js +1 -96
- package/lib/modules/create-game/src/gamePlayer/index.js +1 -25
- package/lib/modules/create-game/src/gamePlayer/playerGroup.js +1 -145
- package/lib/modules/create-game/src/gamePlayer/playerManager.js +1 -57
- package/lib/modules/create-game/src/gameRegion/gameRegion.js +1 -229
- package/lib/modules/create-game/src/gameRegion/index.js +1 -43
- package/lib/modules/create-game/src/gameRegion/regionHelper.js +1 -79
- package/lib/modules/create-game/src/gameState/common/autoStop.js +1 -39
- package/lib/modules/create-game/src/gameState/gameState.js +1 -169
- package/lib/modules/create-game/src/gameState/index.js +1 -7
- package/lib/modules/create-game/src/gameState/types.js +1 -35
- package/lib/modules/create-game/src/gameStructure/gameStructure.js +1 -36
- package/lib/modules/create-game/src/main.js +1 -86
- package/lib/modules/create-game/src/system/gameCommand.js +1 -107
- package/lib/modules/create-game/src/system/gameManager.js +1 -124
- package/lib/modules/create-game/src/system/globalPlayerManager.js +1 -119
- package/lib/modules/create-game/src/utils/GameError.js +1 -31
- package/lib/modules/create-game/src/utils/algorithm.js +1 -95
- package/lib/modules/create-game/src/utils/chunk.js +1 -63
- package/lib/modules/create-game/src/utils/deferredObject.js +1 -27
- package/lib/modules/create-game/src/utils/duration.js +1 -25
- package/lib/modules/create-game/src/utils/func.js +1 -20
- package/lib/modules/create-game/src/utils/index.js +1 -52
- package/lib/modules/create-game/src/utils/interfaces.js +1 -2
- package/lib/modules/create-game/src/utils/logger.js +1 -47
- package/lib/modules/create-game/src/utils/random.js +1 -76
- package/lib/modules/create-game/src/utils/vanila-data.js +1 -123
- package/lib/modules/create-game/src/utils/vector.js +1 -96
- package/lib/modules/gameLib/mbler.config.json +15 -15
- package/lib/modules/gameLib/src/config.js +1 -134
- package/lib/modules/gameLib/src/data.js +1 -77
- package/lib/modules/gameLib/src/entity.js +1 -256
- package/lib/modules/gameLib/src/event.js +1 -285
- package/lib/modules/gameLib/src/index.js +1 -20
- package/lib/modules/gameLib/src/loger.js +1 -21
- package/lib/modules/gameLib/src/ui.js +1 -209
- package/lib/modules/gameLib/src/utils.js +1 -122
- package/lib/modules/gutils/mbler.config.json +11 -11
- package/lib/modules/gutils/src/index.js +1 -22
- package/lib/modules/innerDef.json +4 -4
- package/lib/runTemp/File.js +1 -54
- package/lib/runTemp/config.json +3 -3
- package/lib/runTemp/index.js +1 -137
- package/lib/runTemp/securityFile.js +1 -93
- package/lib/start/addPack.js +1 -3
- package/lib/start/clean.js +1 -84
- package/lib/start/create.js +1 -146
- package/lib/start/dev.js +1 -99
- package/lib/start/getResConfig.js +1 -3
- package/lib/start/incg.js +1 -3
- package/lib/start/index.js +1 -207
- package/lib/start/init.js +1 -125
- package/lib/start/rechce.js +1 -57
- package/lib/start/unaddPack.js +1 -3
- package/lib/start/unincg.js +1 -67
- package/lib/start/version.js +1 -73
- package/lib/utils/index.js +1 -298
- package/lib/uuid/index.js +1 -27
- package/package.json +49 -1
- package/test/2x sword/behavior/scripts/index.js +24 -24
- package/test/2x sword/mbler.config.json +11 -11
- package/test/2x sword/package.json +13 -13
- package/test/README.md +7 -7
- package/test/des/index.js +19 -19
- package/test/des/mbler.config.json +4 -4
- package/test/des/package.json +6 -6
- package/test/initializer/index.js +5 -5
- package/test/initializer/mbler.config.json +4 -4
- package/test/initializer/package.json +6 -6
- package/test/mbler-int/behavior/res/items/mang_one_int.json +21 -21
- package/test/mbler-int/behavior/scripts/index.js +7 -7
- package/test/mbler-int/behavior/scripts/lib/event/index.js +19 -19
- package/test/mbler-int/behavior/scripts/lib/ui/Lore.js +18 -18
- package/test/mbler-int/behavior/scripts/lib/ui/baseUi.js +6 -6
- package/test/mbler-int/behavior/scripts/lib/ui/index.js +206 -206
- package/test/mbler-int/behavior/scripts/lib/utils/index.js +51 -51
- package/test/mbler-int/mbler.config.json +18 -18
- package/test/mbler-int/package.json +12 -12
- package/test/script-mbler/behavior/scripts/index.js +5 -0
- package/test/script-mbler/behavior/scripts/index.ts +5 -5
- package/test/script-mbler/mbler.config.json +14 -14
- package/test/script-mbler/package.json +15 -15
- package/lib/mcx/compile-mcx/_compile.js +0 -602
|
@@ -1,105 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlayerRegionEventSignal = exports.RegionEventType = void 0;
|
|
4
|
-
const server_1 = require("@minecraft/server");
|
|
5
|
-
const func_js_1 = require("../../utils/func.js");
|
|
6
|
-
const logger_js_1 = require("../../utils/logger.js");
|
|
7
|
-
const vanila_data_js_1 = require("../../utils/vanila-data.js");
|
|
8
|
-
(function (RegionEventType) {
|
|
9
|
-
RegionEventType["Enter"] = "enter";
|
|
10
|
-
RegionEventType["Leave"] = "leave";
|
|
11
|
-
})(exports.RegionEventType || (exports.RegionEventType = {}));
|
|
12
|
-
class PlayerRegionEventSignal {
|
|
13
|
-
tickEvent;
|
|
14
|
-
constructor(tickEvent) {
|
|
15
|
-
this.tickEvent = tickEvent;
|
|
16
|
-
}
|
|
17
|
-
logger = new logger_js_1.Logger(this.constructor.name);
|
|
18
|
-
subscription = null;
|
|
19
|
-
allSubscriptions = new Set();
|
|
20
|
-
// 每个 region 当前的玩家状态
|
|
21
|
-
regionStates = new Map();
|
|
22
|
-
subscribe(callback, region) {
|
|
23
|
-
const subscription = { callback, region };
|
|
24
|
-
this.allSubscriptions.add(subscription);
|
|
25
|
-
// 初始化状态
|
|
26
|
-
if (!this.regionStates.has(region)) {
|
|
27
|
-
this.regionStates.set(region, new Set());
|
|
28
|
-
}
|
|
29
|
-
if (this.subscription === null) {
|
|
30
|
-
this.startMonitoring();
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
unsubscribe: () => {
|
|
34
|
-
this.allSubscriptions.delete(subscription);
|
|
35
|
-
// 如果 region 没有订阅者了,清理它的状态
|
|
36
|
-
if (![...this.allSubscriptions].some((sub) => sub.region === region)) {
|
|
37
|
-
this.regionStates.delete(region);
|
|
38
|
-
}
|
|
39
|
-
if (this.allSubscriptions.size === 0) {
|
|
40
|
-
this.stopMonitoring();
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
startMonitoring() {
|
|
46
|
-
this.logger.debug("启动玩家区域观测");
|
|
47
|
-
this.subscription = this.tickEvent.subscribe(this.checkAllRegions.bind(this));
|
|
48
|
-
}
|
|
49
|
-
stopMonitoring() {
|
|
50
|
-
if (this.subscription !== null) {
|
|
51
|
-
this.logger.debug("停止玩家区域观测");
|
|
52
|
-
this.subscription.unsubscribe();
|
|
53
|
-
this.subscription = null;
|
|
54
|
-
this.regionStates.clear();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
checkAllRegions() {
|
|
58
|
-
// 1. 按维度收集所有玩家
|
|
59
|
-
const players = server_1.world.getAllPlayers().filter((p) => p != undefined);
|
|
60
|
-
const playersByDimension = {};
|
|
61
|
-
const dimensions = Object.values(vanila_data_js_1.DimensionIds);
|
|
62
|
-
for (const dim of dimensions) {
|
|
63
|
-
playersByDimension[dim] = players.filter((p) => p.dimension.id === dim);
|
|
64
|
-
}
|
|
65
|
-
// 2. 遍历所有订阅区域
|
|
66
|
-
for (const sub of this.allSubscriptions) {
|
|
67
|
-
const region = sub.region;
|
|
68
|
-
const prevPlayers = this.regionStates.get(region) ?? new Set();
|
|
69
|
-
const dimensionPlayers = playersByDimension[region.dimensionId] ?? [];
|
|
70
|
-
const currPlayers = new Set(dimensionPlayers
|
|
71
|
-
.filter((p) => region.isInside(p.location))
|
|
72
|
-
.map((p) => p.id));
|
|
73
|
-
// 进入事件
|
|
74
|
-
for (const playerId of (0, func_js_1.difference)(currPlayers, prevPlayers)) {
|
|
75
|
-
const player = dimensionPlayers.find((p) => p.id === playerId);
|
|
76
|
-
this.publish(player, exports.RegionEventType.Enter, sub);
|
|
77
|
-
}
|
|
78
|
-
//离开事件
|
|
79
|
-
for (const playerId of (0, func_js_1.difference)(prevPlayers, currPlayers)) {
|
|
80
|
-
const player = players.find((p) => p.id === playerId);
|
|
81
|
-
if (player)
|
|
82
|
-
this.publish(player, exports.RegionEventType.Leave, sub);
|
|
83
|
-
}
|
|
84
|
-
// 更新状态
|
|
85
|
-
this.regionStates.set(region, currPlayers);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
publish(player, type, subscription) {
|
|
89
|
-
try {
|
|
90
|
-
subscription.callback({
|
|
91
|
-
player,
|
|
92
|
-
type,
|
|
93
|
-
region: subscription.region,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
catch (e) {
|
|
97
|
-
this.logger.error("Region event callback error:", e);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
dispose() {
|
|
101
|
-
this.stopMonitoring();
|
|
102
|
-
this.allSubscriptions.clear();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
exports.PlayerRegionEventSignal = PlayerRegionEventSignal;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PlayerRegionEventSignal=exports.RegionEventType=void 0;const server_1=require("@minecraft/server"),func_js_1=require("../../utils/func.js"),logger_js_1=require("../../utils/logger.js"),vanila_data_js_1=require("../../utils/vanila-data.js");!function(e){e.Enter="enter",e.Leave="leave"}(exports.RegionEventType||(exports.RegionEventType={}));class PlayerRegionEventSignal{tickEvent;constructor(e){this.tickEvent=e}logger=new logger_js_1.Logger(this.constructor.name);subscription=null;allSubscriptions=new Set;regionStates=new Map;subscribe(e,i){const t={callback:e,region:i};return this.allSubscriptions.add(t),this.regionStates.has(i)||this.regionStates.set(i,new Set),null===this.subscription&&this.startMonitoring(),{unsubscribe:()=>{this.allSubscriptions.delete(t),[...this.allSubscriptions].some(e=>e.region===i)||this.regionStates.delete(i),0===this.allSubscriptions.size&&this.stopMonitoring()}}}startMonitoring(){this.logger.debug("启动玩家区域观测"),this.subscription=this.tickEvent.subscribe(this.checkAllRegions.bind(this))}stopMonitoring(){null!==this.subscription&&(this.logger.debug("停止玩家区域观测"),this.subscription.unsubscribe(),this.subscription=null,this.regionStates.clear())}checkAllRegions(){const e=server_1.world.getAllPlayers().filter(e=>null!=e),i={},t=Object.values(vanila_data_js_1.DimensionIds);for(const s of t)i[s]=e.filter(e=>e.dimension.id===s);for(const t of this.allSubscriptions){const s=t.region,n=this.regionStates.get(s)??new Set,r=i[s.dimensionId]??[],o=new Set(r.filter(e=>s.isInside(e.location)).map(e=>e.id));for(const e of(0,func_js_1.difference)(o,n)){const i=r.find(i=>i.id===e);this.publish(i,exports.RegionEventType.Enter,t)}for(const i of(0,func_js_1.difference)(n,o)){const s=e.find(e=>e.id===i);s&&this.publish(s,exports.RegionEventType.Leave,t)}this.regionStates.set(s,o)}}publish(e,i,t){try{t.callback({player:e,type:i,region:t.region})}catch(e){this.logger.error("Region event callback error:",e)}}dispose(){this.stopMonitoring(),this.allSubscriptions.clear()}}exports.PlayerRegionEventSignal=PlayerRegionEventSignal;
|
|
@@ -1,45 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignClickEventSignal = void 0;
|
|
4
|
-
const server_1 = require("@minecraft/server");
|
|
5
|
-
const mapEventSignal_js_1 = require("../mapEventSignal.js");
|
|
6
|
-
class SignClickEventSignal extends mapEventSignal_js_1.BaseMapEventSignal {
|
|
7
|
-
signId = "minecraft:wall_sign";
|
|
8
|
-
buildKey(options) {
|
|
9
|
-
const loc = options.loc;
|
|
10
|
-
return `${options.dimensionId}-${loc.x}-${loc.y}-${loc.z}`;
|
|
11
|
-
}
|
|
12
|
-
buildData(callback, options) {
|
|
13
|
-
return {
|
|
14
|
-
callback,
|
|
15
|
-
players: options.players,
|
|
16
|
-
lastClick: server_1.system.currentTick,
|
|
17
|
-
clickInterval: options.clickInterval ?? 1,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
extractKey(event) {
|
|
21
|
-
const loc = event.block.location;
|
|
22
|
-
return `${event.block.dimension.id}-${loc.x}-${loc.y}-${loc.z}`;
|
|
23
|
-
}
|
|
24
|
-
isTargetEvent(event) {
|
|
25
|
-
return event.block.typeId === this.signId;
|
|
26
|
-
}
|
|
27
|
-
filter(data, event) {
|
|
28
|
-
if (server_1.system.currentTick - data.lastClick < data.clickInterval) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
if (data.players && !data.players.getById(event.player.id)) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
data.lastClick = server_1.system.currentTick;
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
subscribeNative(cb) {
|
|
38
|
-
server_1.world.beforeEvents.playerInteractWithBlock.subscribe(cb);
|
|
39
|
-
return cb;
|
|
40
|
-
}
|
|
41
|
-
unsubscribeNative(cb) {
|
|
42
|
-
server_1.world.beforeEvents.playerInteractWithBlock.unsubscribe(cb);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.SignClickEventSignal = SignClickEventSignal;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SignClickEventSignal=void 0;const server_1=require("@minecraft/server"),mapEventSignal_js_1=require("../mapEventSignal.js");class SignClickEventSignal extends mapEventSignal_js_1.BaseMapEventSignal{signId="minecraft:wall_sign";buildKey(e){const r=e.loc;return`${e.dimensionId}-${r.x}-${r.y}-${r.z}`}buildData(e,r){return{callback:e,players:r.players,lastClick:server_1.system.currentTick,clickInterval:r.clickInterval??1}}extractKey(e){const r=e.block.location;return`${e.block.dimension.id}-${r.x}-${r.y}-${r.z}`}isTargetEvent(e){return e.block.typeId===this.signId}filter(e,r){return!(server_1.system.currentTick-e.lastClick<e.clickInterval)&&(!(e.players&&!e.players.getById(r.player.id))&&(e.lastClick=server_1.system.currentTick,!0))}subscribeNative(e){return server_1.world.beforeEvents.playerInteractWithBlock.subscribe(e),e}unsubscribeNative(e){server_1.world.beforeEvents.playerInteractWithBlock.unsubscribe(e)}}exports.SignClickEventSignal=SignClickEventSignal;
|
|
@@ -1,54 +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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.gameEvents = void 0;
|
|
18
|
-
const buttonPush_js_1 = require("./events/buttonPush.js");
|
|
19
|
-
const inSlot_js_1 = require("./events/inSlot.js");
|
|
20
|
-
const interval_js_1 = require("./events/interval.js");
|
|
21
|
-
const itemUse_js_1 = require("./events/itemUse.js");
|
|
22
|
-
const onBlock_js_1 = require("./events/onBlock.js");
|
|
23
|
-
const regionEvents_js_1 = require("./events/regionEvents.js");
|
|
24
|
-
const signClick_js_1 = require("./events/signClick.js");
|
|
25
|
-
class gameEvents {
|
|
26
|
-
/**间隔时间事件 */
|
|
27
|
-
interval;
|
|
28
|
-
/**按钮按下事件 */
|
|
29
|
-
buttonPush = new buttonPush_js_1.ButtonPushEventSignal();
|
|
30
|
-
/**木牌被点击事件 */
|
|
31
|
-
signClick = new signClick_js_1.SignClickEventSignal();
|
|
32
|
-
/**物品使用事件 */
|
|
33
|
-
itemUse = new itemUse_js_1.ItemUseEventSignal();
|
|
34
|
-
/**玩家区域事件 */
|
|
35
|
-
region;
|
|
36
|
-
/**玩家在方块上事件 */
|
|
37
|
-
onBlock;
|
|
38
|
-
/**玩家物品在指定槽位事件 */
|
|
39
|
-
inSlot;
|
|
40
|
-
constructor() {
|
|
41
|
-
this.interval = new interval_js_1.IntervalEventSignal();
|
|
42
|
-
this.region = new regionEvents_js_1.PlayerRegionEventSignal(this.interval);
|
|
43
|
-
this.onBlock = new onBlock_js_1.PlayerOnBlockEventSignal(this.interval);
|
|
44
|
-
this.inSlot = new inSlot_js_1.PlayerItemInSlotEventSignal(this.interval);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.gameEvents = gameEvents;
|
|
48
|
-
__exportStar(require("./events/buttonPush.js"), exports);
|
|
49
|
-
__exportStar(require("./events/inSlot.js"), exports);
|
|
50
|
-
__exportStar(require("./events/interval.js"), exports);
|
|
51
|
-
__exportStar(require("./events/itemUse.js"), exports);
|
|
52
|
-
__exportStar(require("./events/onBlock.js"), exports);
|
|
53
|
-
__exportStar(require("./events/regionEvents.js"), exports);
|
|
54
|
-
__exportStar(require("./events/signClick.js"), exports);
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var s=Object.getOwnPropertyDescriptor(t,n);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,s)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__exportStar=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||__createBinding(t,e,n)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.gameEvents=void 0;const buttonPush_js_1=require("./events/buttonPush.js"),inSlot_js_1=require("./events/inSlot.js"),interval_js_1=require("./events/interval.js"),itemUse_js_1=require("./events/itemUse.js"),onBlock_js_1=require("./events/onBlock.js"),regionEvents_js_1=require("./events/regionEvents.js"),signClick_js_1=require("./events/signClick.js");class gameEvents{interval;buttonPush=new buttonPush_js_1.ButtonPushEventSignal;signClick=new signClick_js_1.SignClickEventSignal;itemUse=new itemUse_js_1.ItemUseEventSignal;region;onBlock;inSlot;constructor(){this.interval=new interval_js_1.IntervalEventSignal,this.region=new regionEvents_js_1.PlayerRegionEventSignal(this.interval),this.onBlock=new onBlock_js_1.PlayerOnBlockEventSignal(this.interval),this.inSlot=new inSlot_js_1.PlayerItemInSlotEventSignal(this.interval)}}exports.gameEvents=gameEvents,__exportStar(require("./events/buttonPush.js"),exports),__exportStar(require("./events/inSlot.js"),exports),__exportStar(require("./events/interval.js"),exports),__exportStar(require("./events/itemUse.js"),exports),__exportStar(require("./events/onBlock.js"),exports),__exportStar(require("./events/regionEvents.js"),exports),__exportStar(require("./events/signClick.js"),exports);
|
|
@@ -1,20 +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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./eventManager.js"), exports);
|
|
18
|
-
__exportStar(require("./eventSignal.js"), exports);
|
|
19
|
-
__exportStar(require("./gameEvent.js"), exports);
|
|
20
|
-
__exportStar(require("./subscription.js"), exports);
|
|
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]}),__exportStar=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./eventManager.js"),exports),__exportStar(require("./eventSignal.js"),exports),__exportStar(require("./gameEvent.js"),exports),__exportStar(require("./subscription.js"),exports);
|
|
@@ -1,101 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseMapEventSignal = void 0;
|
|
4
|
-
const index_js_1 = require("../utils/index.js");
|
|
5
|
-
/** 通用事件信号基类 */
|
|
6
|
-
class BaseMapEventSignal {
|
|
7
|
-
logger = new index_js_1.Logger(this.constructor.name);
|
|
8
|
-
map = new Map();
|
|
9
|
-
totalCount = 0;
|
|
10
|
-
inited = false;
|
|
11
|
-
nativeUnsub;
|
|
12
|
-
subscribe(callback, options) {
|
|
13
|
-
const key = this.buildKey(options);
|
|
14
|
-
if (key == null) {
|
|
15
|
-
throw new Error("必须提供有效的订阅 key");
|
|
16
|
-
}
|
|
17
|
-
if (!this.inited) {
|
|
18
|
-
this.init();
|
|
19
|
-
}
|
|
20
|
-
let set = this.map.get(key);
|
|
21
|
-
if (!set) {
|
|
22
|
-
set = new Set();
|
|
23
|
-
this.map.set(key, set);
|
|
24
|
-
}
|
|
25
|
-
const data = this.buildData(callback, options);
|
|
26
|
-
set.add(data);
|
|
27
|
-
this.totalCount++;
|
|
28
|
-
return this.wrapUnsub(key, data);
|
|
29
|
-
}
|
|
30
|
-
wrapUnsub(key, data) {
|
|
31
|
-
let unsubscribed = false;
|
|
32
|
-
return {
|
|
33
|
-
unsubscribe: () => {
|
|
34
|
-
if (unsubscribed)
|
|
35
|
-
return;
|
|
36
|
-
unsubscribed = true;
|
|
37
|
-
const set = this.map.get(key);
|
|
38
|
-
if (!set)
|
|
39
|
-
return;
|
|
40
|
-
if (set.delete(data)) {
|
|
41
|
-
this.totalCount--;
|
|
42
|
-
if (set.size === 0)
|
|
43
|
-
this.map.delete(key);
|
|
44
|
-
}
|
|
45
|
-
if (this.totalCount === 0)
|
|
46
|
-
this.cleanup();
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
init() {
|
|
51
|
-
this.inited = true;
|
|
52
|
-
this.nativeUnsub = this.subscribeNative(this.publish.bind(this));
|
|
53
|
-
}
|
|
54
|
-
cleanup() {
|
|
55
|
-
if (this.nativeUnsub) {
|
|
56
|
-
try {
|
|
57
|
-
this.unsubscribeNative(this.nativeUnsub);
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
this.logger.warn("取消底层订阅失败:", e);
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
this.nativeUnsub = undefined;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
this.map.clear();
|
|
67
|
-
this.totalCount = 0;
|
|
68
|
-
this.inited = false;
|
|
69
|
-
}
|
|
70
|
-
publish(event) {
|
|
71
|
-
if (!this.isTargetEvent(event))
|
|
72
|
-
return;
|
|
73
|
-
const key = this.extractKey(event);
|
|
74
|
-
if (key == null)
|
|
75
|
-
return;
|
|
76
|
-
const callbacks = this.map.get(key);
|
|
77
|
-
if (!callbacks || callbacks.size === 0)
|
|
78
|
-
return;
|
|
79
|
-
//包装
|
|
80
|
-
const eventWrapped = this.eventWrapper(event);
|
|
81
|
-
for (const data of Array.from(callbacks)) {
|
|
82
|
-
if (!this.filter(data, event))
|
|
83
|
-
continue;
|
|
84
|
-
try {
|
|
85
|
-
data.callback(eventWrapped);
|
|
86
|
-
}
|
|
87
|
-
catch (e) {
|
|
88
|
-
this.logger.error("callback failed:", e);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/** 子类可重写:是否为需要的事件 */
|
|
93
|
-
isTargetEvent(event) {
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
/**自定义事件返回 */
|
|
97
|
-
eventWrapper(event) {
|
|
98
|
-
return event;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.BaseMapEventSignal = BaseMapEventSignal;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseMapEventSignal=void 0;const index_js_1=require("../utils/index.js");class BaseMapEventSignal{logger=new index_js_1.Logger(this.constructor.name);map=new Map;totalCount=0;inited=!1;nativeUnsub;subscribe(t,e){const i=this.buildKey(e);if(null==i)throw new Error("必须提供有效的订阅 key");this.inited||this.init();let s=this.map.get(i);s||(s=new Set,this.map.set(i,s));const n=this.buildData(t,e);return s.add(n),this.totalCount++,this.wrapUnsub(i,n)}wrapUnsub(t,e){let i=!1;return{unsubscribe:()=>{if(i)return;i=!0;const s=this.map.get(t);s&&(s.delete(e)&&(this.totalCount--,0===s.size&&this.map.delete(t)),0===this.totalCount&&this.cleanup())}}}init(){this.inited=!0,this.nativeUnsub=this.subscribeNative(this.publish.bind(this))}cleanup(){if(this.nativeUnsub)try{this.unsubscribeNative(this.nativeUnsub)}catch(t){this.logger.warn("取消底层订阅失败:",t)}finally{this.nativeUnsub=void 0}this.map.clear(),this.totalCount=0,this.inited=!1}publish(t){if(!this.isTargetEvent(t))return;const e=this.extractKey(t);if(null==e)return;const i=this.map.get(e);if(!i||0===i.size)return;const s=this.eventWrapper(t);for(const e of Array.from(i))if(this.filter(e,t))try{e.callback(s)}catch(t){this.logger.error("callback failed:",t)}}isTargetEvent(t){return!0}eventWrapper(t){return t}}exports.BaseMapEventSignal=BaseMapEventSignal;
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GameEventSubscription = void 0;
|
|
4
|
-
/**游戏订阅句柄*/
|
|
5
|
-
class GameEventSubscription {
|
|
6
|
-
event;
|
|
7
|
-
callback;
|
|
8
|
-
constructor(event, callback) {
|
|
9
|
-
this.event = event;
|
|
10
|
-
this.callback = callback;
|
|
11
|
-
}
|
|
12
|
-
/**取消订阅事件 */
|
|
13
|
-
unsubscribe() {
|
|
14
|
-
this.event.unsubscribe(this.callback);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.GameEventSubscription = GameEventSubscription;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GameEventSubscription=void 0;class GameEventSubscription{event;callback;constructor(e,t){this.event=e,this.callback=t}unsubscribe(){this.event.unsubscribe(this.callback)}}exports.GameEventSubscription=GameEventSubscription;
|
|
@@ -1,102 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TTLPlayer = exports.GamePlayer = void 0;
|
|
4
|
-
const server_1 = require("@minecraft/server");
|
|
5
|
-
/**游戏玩家基类 */
|
|
6
|
-
class GamePlayer {
|
|
7
|
-
_player;
|
|
8
|
-
id;
|
|
9
|
-
name;
|
|
10
|
-
/**是否仍然在当前游戏(调用/hub等会为false) */
|
|
11
|
-
isActive = true;
|
|
12
|
-
constructor(player) {
|
|
13
|
-
this._player = player;
|
|
14
|
-
this.id = player.id;
|
|
15
|
-
this.name = player.name;
|
|
16
|
-
}
|
|
17
|
-
get isValid() {
|
|
18
|
-
return this._player.isValid && this.isActive;
|
|
19
|
-
}
|
|
20
|
-
/**获取player
|
|
21
|
-
* 若玩家下线或失效返回undefined
|
|
22
|
-
*/
|
|
23
|
-
get player() {
|
|
24
|
-
if (this.isValid) {
|
|
25
|
-
return this._player;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**发送消息 */
|
|
29
|
-
sendMessage(mes) {
|
|
30
|
-
if (!this.isValid)
|
|
31
|
-
return;
|
|
32
|
-
this._player.sendMessage(mes);
|
|
33
|
-
}
|
|
34
|
-
/**运行命令 */
|
|
35
|
-
runCommand(cmd) {
|
|
36
|
-
if (!this.isValid)
|
|
37
|
-
return;
|
|
38
|
-
return this._player.runCommand(cmd);
|
|
39
|
-
}
|
|
40
|
-
/**给物品 */
|
|
41
|
-
giveItem(item) {
|
|
42
|
-
if (!this.isValid)
|
|
43
|
-
return;
|
|
44
|
-
const container = this._player.getComponent(server_1.EntityComponentTypes.Inventory)?.container;
|
|
45
|
-
if (!container)
|
|
46
|
-
return;
|
|
47
|
-
container.addItem(item);
|
|
48
|
-
}
|
|
49
|
-
/**清除(使用命令)*/
|
|
50
|
-
clear(itemId) {
|
|
51
|
-
this.runCommand("clear @s " + (itemId ?? ""));
|
|
52
|
-
}
|
|
53
|
-
/**展示title */
|
|
54
|
-
title(title, subtitle, options) {
|
|
55
|
-
if (!this.isValid)
|
|
56
|
-
return;
|
|
57
|
-
this._player.onScreenDisplay.setTitle(title, {
|
|
58
|
-
subtitle: subtitle,
|
|
59
|
-
fadeInDuration: 10,
|
|
60
|
-
stayDuration: 70,
|
|
61
|
-
fadeOutDuration: 20,
|
|
62
|
-
...options,
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**设置actionbar文字 */
|
|
66
|
-
actionbar(text) {
|
|
67
|
-
if (!this.isValid)
|
|
68
|
-
return;
|
|
69
|
-
this._player.onScreenDisplay.setActionBar(text);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* 为玩家添加效果
|
|
73
|
-
* @param showParticles 是否显示粒子,默认为false
|
|
74
|
-
*/
|
|
75
|
-
addEffect(effectType, duration, amplifier, showParticles) {
|
|
76
|
-
if (!this.isValid)
|
|
77
|
-
return;
|
|
78
|
-
this._player.addEffect(effectType, duration, {
|
|
79
|
-
amplifier: amplifier ?? 1,
|
|
80
|
-
showParticles: showParticles ?? false,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.GamePlayer = GamePlayer;
|
|
85
|
-
/**带寿命的player */
|
|
86
|
-
class TTLPlayer extends GamePlayer {
|
|
87
|
-
/**初始TTL,可override */
|
|
88
|
-
initialTTL = 30;
|
|
89
|
-
_ttl = this.initialTTL;
|
|
90
|
-
/**剩余寿命(自动处理isActive) */
|
|
91
|
-
set ttl(value) {
|
|
92
|
-
this._ttl = this.isActive ? value : 0; //如果isActive已经为false,则ttl直接归零
|
|
93
|
-
}
|
|
94
|
-
/**获取玩家剩余存活时间 */
|
|
95
|
-
get ttl() {
|
|
96
|
-
return this._ttl;
|
|
97
|
-
}
|
|
98
|
-
get isValid() {
|
|
99
|
-
return super.isValid && this.ttl > 0;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.TTLPlayer = TTLPlayer;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TTLPlayer=exports.GamePlayer=void 0;const server_1=require("@minecraft/server");class GamePlayer{_player;id;name;isActive=!0;constructor(e){this._player=e,this.id=e.id,this.name=e.name}get isValid(){return this._player.isValid&&this.isActive}get player(){if(this.isValid)return this._player}sendMessage(e){this.isValid&&this._player.sendMessage(e)}runCommand(e){if(this.isValid)return this._player.runCommand(e)}giveItem(e){if(!this.isValid)return;const t=this._player.getComponent(server_1.EntityComponentTypes.Inventory)?.container;t&&t.addItem(e)}clear(e){this.runCommand("clear @s "+(e??""))}title(e,t,i){this.isValid&&this._player.onScreenDisplay.setTitle(e,{subtitle:t,fadeInDuration:10,stayDuration:70,fadeOutDuration:20,...i})}actionbar(e){this.isValid&&this._player.onScreenDisplay.setActionBar(e)}addEffect(e,t,i,s){this.isValid&&this._player.addEffect(e,t,{amplifier:i??1,showParticles:s??!1})}}exports.GamePlayer=GamePlayer;class TTLPlayer extends GamePlayer{initialTTL=30;_ttl=this.initialTTL;set ttl(e){this._ttl=this.isActive?e:0}get ttl(){return this._ttl}get isValid(){return super.isValid&&this.ttl>0}}exports.TTLPlayer=TTLPlayer;
|
|
@@ -1,38 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlayerGroupBuilder = void 0;
|
|
4
|
-
const server_1 = require("@minecraft/server");
|
|
5
|
-
const playerGroup_js_1 = require("./playerGroup.js");
|
|
6
|
-
/**玩家组构建器 */
|
|
7
|
-
class PlayerGroupBuilder {
|
|
8
|
-
playerManager;
|
|
9
|
-
constructor(manager) {
|
|
10
|
-
this.playerManager = manager;
|
|
11
|
-
}
|
|
12
|
-
/**创建空的玩家组 */
|
|
13
|
-
emptyGroup(...rest) {
|
|
14
|
-
return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor, [], rest[0]);
|
|
15
|
-
}
|
|
16
|
-
/** 从原生 Player 创建 PlayerGroup 并映射到 playerManager */
|
|
17
|
-
fromPlayers(players, ...rest) {
|
|
18
|
-
return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor, players.map((p) => this.playerManager.get(p)), rest[0]);
|
|
19
|
-
}
|
|
20
|
-
/** 从已有 PlayerGroup 创建 engine PlayerGroup */
|
|
21
|
-
fromGroup(group, ...rest) {
|
|
22
|
-
return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor, group.getAllPlayers().map((p) => this.playerManager.get(p)), rest[0]);
|
|
23
|
-
}
|
|
24
|
-
/**从某个区域创建 */
|
|
25
|
-
fromRegion(dim, region, ...rest) {
|
|
26
|
-
const players = server_1.world
|
|
27
|
-
.getDimension(dim)
|
|
28
|
-
.getPlayers(region.getEntityQueryOption())
|
|
29
|
-
.filter((p) => p != undefined);
|
|
30
|
-
return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor, players.map((p) => this.playerManager.get(p)), rest[0]);
|
|
31
|
-
}
|
|
32
|
-
/**从所有玩家创建 */
|
|
33
|
-
fromAll(...rest) {
|
|
34
|
-
const players = server_1.world.getAllPlayers().filter((p) => p != undefined);
|
|
35
|
-
return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor, players.map((p) => this.playerManager.get(p)), rest[0]);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.PlayerGroupBuilder = PlayerGroupBuilder;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PlayerGroupBuilder=void 0;const server_1=require("@minecraft/server"),playerGroup_js_1=require("./playerGroup.js");class PlayerGroupBuilder{playerManager;constructor(r){this.playerManager=r}emptyGroup(...r){return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor,[],r[0])}fromPlayers(r,...e){return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor,r.map(r=>this.playerManager.get(r)),e[0])}fromGroup(r,...e){return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor,r.getAllPlayers().map(r=>this.playerManager.get(r)),e[0])}fromRegion(r,e,...a){const l=server_1.world.getDimension(r).getPlayers(e.getEntityQueryOption()).filter(r=>null!=r);return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor,l.map(r=>this.playerManager.get(r)),a[0])}fromAll(...r){const e=server_1.world.getAllPlayers().filter(r=>null!=r);return new playerGroup_js_1.PlayerGroup(this.playerManager.playerConstructor,e.map(r=>this.playerManager.get(r)),r[0])}}exports.PlayerGroupBuilder=PlayerGroupBuilder;
|
|
@@ -1,96 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PlayerGroupSet = void 0;
|
|
4
|
-
const playerGroup_js_1 = require("./playerGroup.js");
|
|
5
|
-
/**玩家组集合 */
|
|
6
|
-
class PlayerGroupSet {
|
|
7
|
-
groups = [];
|
|
8
|
-
constructor(groups) {
|
|
9
|
-
if (groups)
|
|
10
|
-
this.groups = groups.slice();
|
|
11
|
-
}
|
|
12
|
-
addGroup(group) {
|
|
13
|
-
if (!(group instanceof playerGroup_js_1.PlayerGroup))
|
|
14
|
-
throw new Error("只能添加 PlayerGroup 实例");
|
|
15
|
-
this.groups.push(group);
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
removeGroup(group) {
|
|
19
|
-
const index = this.groups.indexOf(group);
|
|
20
|
-
if (index !== -1)
|
|
21
|
-
this.groups.splice(index, 1);
|
|
22
|
-
return this;
|
|
23
|
-
}
|
|
24
|
-
getGroups() {
|
|
25
|
-
return this.groups.slice();
|
|
26
|
-
}
|
|
27
|
-
/**获取所有玩家,包括invalid的 */
|
|
28
|
-
getAllPlayers() {
|
|
29
|
-
const all = new Set();
|
|
30
|
-
this.groups.forEach((g) => g.getAll().forEach((p) => all.add(p)));
|
|
31
|
-
return [...all.values()];
|
|
32
|
-
}
|
|
33
|
-
/**获取所有有效玩家 */
|
|
34
|
-
getAllValidPlayers() {
|
|
35
|
-
return this.getAllPlayers().filter((p) => p.isValid);
|
|
36
|
-
}
|
|
37
|
-
/**对所有有效玩家执行操作*/
|
|
38
|
-
forEach(func) {
|
|
39
|
-
this.getGroups().forEach((g) => g.forEach(func));
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
forEachGroup(func) {
|
|
43
|
-
this.groups.forEach(func);
|
|
44
|
-
}
|
|
45
|
-
/**让所有玩家执行命令 */
|
|
46
|
-
runCommand(command) {
|
|
47
|
-
this.forEach((p) => p.runCommand(command));
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
runCommands(commands) {
|
|
51
|
-
commands.forEach((c) => this.runCommand(c));
|
|
52
|
-
}
|
|
53
|
-
/**向所有玩家发送消息 */
|
|
54
|
-
sendMessage(mes) {
|
|
55
|
-
this.forEach((p) => p.sendMessage(mes));
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
/**对所有玩家显示标题 */
|
|
59
|
-
title(title, subtitle, options) {
|
|
60
|
-
this.forEach((p) => p.title(title, subtitle, options));
|
|
61
|
-
return this;
|
|
62
|
-
}
|
|
63
|
-
filter(predicate) {
|
|
64
|
-
return this.groups.map((g) => g.filter(predicate)).flat();
|
|
65
|
-
}
|
|
66
|
-
clear() {
|
|
67
|
-
this.groups = [];
|
|
68
|
-
return this;
|
|
69
|
-
}
|
|
70
|
-
clearInvalid() {
|
|
71
|
-
this.groups.forEach((g) => g.clearInvalid());
|
|
72
|
-
}
|
|
73
|
-
clone() {
|
|
74
|
-
return new PlayerGroupSet(this.groups.map((g) => g.clone()));
|
|
75
|
-
}
|
|
76
|
-
get size() {
|
|
77
|
-
return this.getAllPlayers().length;
|
|
78
|
-
}
|
|
79
|
-
get validSize() {
|
|
80
|
-
return this.getAllPlayers().filter((p) => p.isValid).length;
|
|
81
|
-
}
|
|
82
|
-
/** 根据玩家 ID 查找玩家及其所在组 */
|
|
83
|
-
findById(id) {
|
|
84
|
-
for (const group of this.groups) {
|
|
85
|
-
const player = group.getById(id);
|
|
86
|
-
if (player)
|
|
87
|
-
return { player, group };
|
|
88
|
-
}
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
/**判断玩家是否在内 */
|
|
92
|
-
has(id) {
|
|
93
|
-
return this.findById(id) != undefined;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.PlayerGroupSet = PlayerGroupSet;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PlayerGroupSet=void 0;const playerGroup_js_1=require("./playerGroup.js");class PlayerGroupSet{groups=[];constructor(r){r&&(this.groups=r.slice())}addGroup(r){if(!(r instanceof playerGroup_js_1.PlayerGroup))throw new Error("只能添加 PlayerGroup 实例");return this.groups.push(r),this}removeGroup(r){const e=this.groups.indexOf(r);return-1!==e&&this.groups.splice(e,1),this}getGroups(){return this.groups.slice()}getAllPlayers(){const r=new Set;return this.groups.forEach(e=>e.getAll().forEach(e=>r.add(e))),[...r.values()]}getAllValidPlayers(){return this.getAllPlayers().filter(r=>r.isValid)}forEach(r){return this.getGroups().forEach(e=>e.forEach(r)),this}forEachGroup(r){this.groups.forEach(r)}runCommand(r){return this.forEach(e=>e.runCommand(r)),this}runCommands(r){r.forEach(r=>this.runCommand(r))}sendMessage(r){return this.forEach(e=>e.sendMessage(r)),this}title(r,e,t){return this.forEach(s=>s.title(r,e,t)),this}filter(r){return this.groups.map(e=>e.filter(r)).flat()}clear(){return this.groups=[],this}clearInvalid(){this.groups.forEach(r=>r.clearInvalid())}clone(){return new PlayerGroupSet(this.groups.map(r=>r.clone()))}get size(){return this.getAllPlayers().length}get validSize(){return this.getAllPlayers().filter(r=>r.isValid).length}findById(r){for(const e of this.groups){const t=e.getById(r);if(t)return{player:t,group:e}}}has(r){return null!=this.findById(r)}}exports.PlayerGroupSet=PlayerGroupSet;
|
|
@@ -1,25 +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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.GamePlayerManager = exports.PlayerGroup = exports.PlayerGroupSet = void 0;
|
|
18
|
-
__exportStar(require("./gamePlayer.js"), exports);
|
|
19
|
-
__exportStar(require("./groupBuilder.js"), exports);
|
|
20
|
-
var groupSet_js_1 = require("./groupSet.js");
|
|
21
|
-
Object.defineProperty(exports, "PlayerGroupSet", { enumerable: true, get: function () { return groupSet_js_1.PlayerGroupSet; } });
|
|
22
|
-
var playerGroup_js_1 = require("./playerGroup.js");
|
|
23
|
-
Object.defineProperty(exports, "PlayerGroup", { enumerable: true, get: function () { return playerGroup_js_1.PlayerGroup; } });
|
|
24
|
-
var playerManager_js_1 = require("./playerManager.js");
|
|
25
|
-
Object.defineProperty(exports, "GamePlayerManager", { enumerable: true, get: function () { return playerManager_js_1.GamePlayerManager; } });
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,a){void 0===a&&(a=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,a,o)}:function(e,r,t,a){void 0===a&&(a=t),e[a]=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.GamePlayerManager=exports.PlayerGroup=exports.PlayerGroupSet=void 0,__exportStar(require("./gamePlayer.js"),exports),__exportStar(require("./groupBuilder.js"),exports);var groupSet_js_1=require("./groupSet.js");Object.defineProperty(exports,"PlayerGroupSet",{enumerable:!0,get:function(){return groupSet_js_1.PlayerGroupSet}});var playerGroup_js_1=require("./playerGroup.js");Object.defineProperty(exports,"PlayerGroup",{enumerable:!0,get:function(){return playerGroup_js_1.PlayerGroup}});var playerManager_js_1=require("./playerManager.js");Object.defineProperty(exports,"GamePlayerManager",{enumerable:!0,get:function(){return playerManager_js_1.GamePlayerManager}});
|