UNPKG

yoni-mcscripts-lib

Version:

为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。

49 lines (45 loc) 1.48 kB
import { LegacyEventTypes as EventTypes, LegacyEventTriggerBuilder as EventTriggerBuilder, LegacyEventSignal as EventSignal, LegacyEvent as Event } from "../../../legacy_event.js"; import { EntityUtils as EntityBase } from "../../../EntityUtils.js"; class RaidEventTriggerEvent extends Event { #source; get source(){ return this.#source; } get id(){ return "minecraft:raid_trigger"; } constructor(source){ super(); this.#source = source; } } class RaidEventTriggerEventSignal extends EventSignal { } let eventId = null; function start(){ let options; try { //兼容1.19.30 options = new Minecraft.EntityDataDrivenTriggerEventOptions(); } catch { options = {}; } options.entityTypes = ["minecraft:player"]; options.eventTypes = ["minecraft:trigger_raid"]; EventTypes.get("minecraft:dataDrivenEntityTriggerEvent") .subscribe(onEntityEvent, options); } function stop(){ EventTypes.get("minecraft:dataDrivenEntityTriggerEvent") .unsubscribe(onEntityEvent); } let trigger = new EventTriggerBuilder("yoni:raidEventTrigger") .eventSignalClass(RaidEventTriggerEventSignal) .eventClass(RaidEventTriggerEvent) .whenFirstSubscribe(start) .whenLastUnsubscribe(stop) .build() .registerEvent(); function onEntityEvent(event){ if (event.entity.typeId === "minecraft:player") trigger.fireEvent(EntityBase.from(event.entity)); }