@magikcraft/mct1
Version:
Minecraft for Type 1 Diabetes
78 lines (68 loc) • 2.08 kB
text/typescript
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
}
}