UNPKG

@occultus/entity-api

Version:

Star Tenon entity api and utils

61 lines (58 loc) 1.43 kB
import { Entity, EntityDieAfterEvent, Player, world } from "@minecraft/server"; import { BossSkill } from "./BossSkill"; /** * 表示一个 Boss 的类 */ export class Boss { public dieEvent?: (arg: EntityDieAfterEvent) => void = () => {}; /** * @param typeId Boss 的类型 ID * @param skills Boss 拥有的技能 * @param music Boss 战斗音乐相关配置 */ constructor( public typeId: string, public skills: BossSkill[], public music?: BossMusicOptions, ) {} /** * 向玩家播放 Boss 音乐 * @param player */ playMusic(player: Player | Player[]): void { if (Array.isArray(player)) { for (const pl of player) { if (this.music) { pl.playMusic(this.music.trackId, { loop: true }); } } } else if (this.music) { player.playMusic(this.music.trackId, { loop: true }); } } /** * 执行 Boss 所有技能 * @param boss */ unleashSkill(boss: Entity): void { for (const skill of this.skills) { skill.execute(boss); } } onDie(callback: (arg: EntityDieAfterEvent) => void): void { this.dieEvent = callback; } } /** * Boss 战斗音乐相关配置 */ export interface BossMusicOptions { /** * 要播放的音轨的 ID */ trackId: string; /** * 玩家可以听到音乐的半径范围 */ radius: number; }