UNPKG

@magikcraft/mct1

Version:

Minecraft for Type 1 Diabetes

78 lines (68 loc) 2.08 kB
import * as environment from '@magikcraft/mct1/utils/environment' import { Logger } from '@magikcraft/mct1/log' import { IBossBar } from './bossbar' const log = Logger('NukkitBossBar') type NukkitPlayer = any let PokkitPlayer let barID = environment.ENGINE_ID try { PokkitPlayer = Java.type('nl.rutgerkok.pokkit.player.PokkitPlayer') } catch (e) { console.log('No Pokkit Bar') // tslint:disable-line } const toNukkitPlayer = player => PokkitPlayer.toNukkit(player) export const bar = (msg = '', player: BukkitPlayer) => new NukkitBossBar(msg, player) export class NukkitBossBar implements IBossBar { private static BossBar = Java.type(environment.NUKKIT_BOSSBAR_TYPE) private bar private id: number private player: NukkitPlayer constructor(msg: string, player: BukkitPlayer) { this.id = barID barID++ this.bar = new NukkitBossBar.BossBar( player.getName() + this.id, msg, 0, 100 ) this.player = toNukkitPlayer(player) return this } public render() { // For the Nukkit bar we render on any property update // this.bar.sendTo(this.player) return this } public color(color) { // Nukkit has no bar color - it's always purple // We have a method for it, and it may work in a future update of the client this.bar.setColor(this.player, this.id, color) this.bar.sendTo(this.player) return this } public style() { // Nukkit has no bar style this.bar.sendTo(this.player) return this } public text(title: string) { this.bar.setTitle(title) this.bar.sendTo(this.player) return this } public progress(percentage: number) { this.bar.setHealth(percentage) this.bar.sendTo(this.player) return this } public remove() { this.bar.removeFrom(this.player) log(`Removing bar ${this.id}`) return this } public removeAllBars() { // @TODO } }