@occultus/entity-api
Version:
Star Tenon entity api and utils
61 lines (58 loc) • 1.43 kB
text/typescript
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;
}