# AxBossBarApi - Api Script for bossbar management by xAxee #Imports import: org.bukkit.boss.BossBar org.bukkit.boss.BarColor org.bukkit.boss.BarStyle org.bukkit.boss.BarFlag org.bukkit.Bukkit org.bukkit.event.player.PlayerMoveEvent #Load data on load: set {AxBossBarApi::colors::*} to "BLUE", "GREEN", "PINK", "PURPLE","RED","WHITE","YELLOW" set {AxBossBarApi::styles::*} to "SOLID", "SEGMENTED_6", "SEGMENTED_10", "SEGMENTED_12", "SEGMENTED_20" set {AxBossBarApi::flags::*} to "CREATE_FOG", "DARKEN_SKY", "PLAY_BOSS_MUSIC" loop {AxBossBarApi::data::*}: loop-value.removeAll() clear {AxBossBarApi::data::*} #bossbar event custom event "onBossbarChange": pattern: boss[ ]bar (update|change) event-values: string #Script function function AxBossBarApi_callEvent(event: string, value: string): set {_et::string} to {_value} call event (custom event {_event} with {_et::*}) #bossbar progress expression boss[ ]bar %string% (value|progress): return type: number get: return {AxBossBarApi::data::%expr-1%}.getProgress()*100 set: {AxBossBarApi::data::%expr-1%}.setProgress(change value/100) add: {AxBossBarApi::data::%expr-1%}.setProgress({AxBossBarApi::data::%expr-1%}.getProgress() + (change value/100)) remove: {AxBossBarApi::data::%expr-1%}.setProgress({AxBossBarApi::data::%expr-1%}.getProgress() - (change value/100)) #bossbar players expression boss[ ]bar %string% (players|viewers): return type: players get: return ...{AxBossBarApi::data::%expr-1%}.getPlayers() add: loop change values: {AxBossBarApi::data::%expr-1%}.addPlayer(loop-value) if (bossbar expr-1 players doesn't contain loop-value) set: {AxBossBarApi::data::%expr-1%}.removeAll() loop change values: {AxBossBarApi::data::%expr-1%}.addPlayer(loop-value) if (bossbar expr-1 players doesn't contain loop-value) remove: {AxBossBarApi::data::%expr-1%}.removePlayer(change value) delete: {AxBossBarApi::data::%expr-1%}.removeAll() effect send boss[ ]bar %string% to %players%: trigger: add expr-2 to bossbar expr-1 players #bossbar visible expression boss[ ]bar %string% visible: return type: boolean get: return {AxBossBarApi::data::%expr-1%}.isVisible() set: {AxBossBarApi::data::%expr-1%}.setVisible(change value) effect (1¦show|2¦hide|3¦toggle) boss[ ]bar %string%: trigger: {AxBossBarApi::data::%expr-1%}.show() if parse mark is 1 {AxBossBarApi::data::%expr-1%}.hide() if parse mark is 2 {AxBossBarApi::data::%expr-1%}.setVisible(true if {AxBossBarApi::data::%expr-1%}.isVisible() is false else true) if parse mark is 3 #bossbar color expression boss[ ]bar %string% color: get: return {AxBossBarApi::data::%expr-1%}.getColor().toString() effect set boss[ ]bar %string% color to (1¦BLUE|2¦GREEN|3¦PINK|4¦PURPLE|5¦RED|6¦WHITE|7¦YELLOW): trigger: {AxBossBarApi::data::%expr-1%}.setColor(BarColor.valueOf({AxBossBarApi::colors::%parse mark%}) ? BarColor.RED) effect rainbow boss[ ]bar %string% (1¦on|2¦off): trigger: if parse mark is 1: set {AxBossBarApi::data::%expr-1%::rainbow} to true while {AxBossBarApi::data::%expr-1%::rainbow} is true: {AxBossBarApi::data::%expr-1%}.setColor(BarColor.valueOf({AxBossBarApi::colors::%random integer between 1 and 7%})) wait second set {AxBossBarApi::data::%expr-1%::rainbow} to false if parse mark is 2 #bossbar style expression boss[ ]bar %string% style: get: return {AxBossBarApi::data::%expr-1%}.getStyle().toString() effect set boss[ ]bar %string% style to (1¦SOLID|2¦SEGMENTED_6|3¦SEGMENTED_10|4¦SEGMENTED_12|5¦SEGMENTED_20): trigger: {AxBossBarApi::data::%expr-1%}.setStyle(BarStyle.valueOf({AxBossBarApi::styles::%parse mark%} ? "SOLID")) #bossbar flag effect (remove) flag (1¦CREATE_FOG|2¦DARKEN_SKY|3¦PLAY_BOSS_MUSIC) from boss[ ]bar %string%: trigger: {AxBossBarApi::data::%expr-1%}.removeFlag(BarFlag.valueOf({AxBossBarApi::flags::%parse mark%})) effect (add) flag (1¦CREATE_FOG|2¦DARKEN_SKY|3¦PLAY_BOSS_MUSIC) to boss[ ]bar %string%: trigger: {AxBossBarApi::data::%expr-1%}.addFlag(BarFlag.valueOf({AxBossBarApi::flags::%parse mark%})) condition boss[ ]bar %string% has flag (1¦CREATE_FOG|2¦DARKEN_SKY|3¦PLAY_BOSS_MUSIC): check: return {AxBossBarApi::data::%expr-1%}.hasFlag(BarFlag.valueOf({AxBossBarApi::flags::%parse mark%})) #bossbar title expression boss[ ]bar %string% (title|name): get: return {AxBossBarApi::data::%expr-1%}.getTitle() set: {AxBossBarApi::data::%expr-1%}.setTitle(change value) #delete bossbar effect delete boss[ ]bar %string%: trigger: {AxBossBarApi::data::%expr-1%}.removeAll() delete {AxBossBarApi::data::%expr-1%} expression boss[ ]bar %string%: get: return {AxBossBarApi::data::%{_id}%} #bossbar metadata expression boss[ ]bar %string% (1¦distance|2¦location|3¦actual distance|4¦time[ |-]lapse):#|5¦time[ |-]lapse as text): get: return {AxBossBarApi::data::%expr-1%::distance} if parse mark is 1 return {AxBossBarApi::data::%expr-1%::location} if parse mark is 2 return {AxBossBarApi::data::%expr-1%::ActualDistance} if parse mark is 3 return {AxBossBarApi::data::%expr-1%::ActualTime} if parse mark is 4 set: set {AxBossBarApi::data::%expr-1%::distance} to change value if parse mark is 1 set {AxBossBarApi::data::%expr-1%::location} to change value if parse mark is 2 set {AxBossBarApi::data::%expr-1%::ActualTime} to change value if parse mark is 4 remove: remove change value from {AxBossBarApi::data::%expr-1%::distance} if parse mark is 1 remove change value from {AxBossBarApi::data::%expr-1%::ActualTime} if parse mark is 4 add: add change value to {AxBossBarApi::data::%expr-1%::distance} if parse mark is 1 add change value to {AxBossBarApi::data::%expr-1%::ActualTime} if parse mark is 4 #create bossbar effect create boss[ ]bar title[d] %string% and id %string% for %players% [with (value|progress) %number%][ with color (1¦BLUE|2¦GREEN|3¦PINK|4¦PURPLE|5¦RED|6¦WHITE|7¦YELLOW)]: trigger: set {_color} to BarColor.valueOf({AxBossBarApi::colors::%parse mark%} ? "RED") stop if {AxBossBarApi::data::%expr-2%} is set set {AxBossBarApi::data::%expr-2%} to Bukkit.createBossBar(expr-1, {_color}, BarStyle.SOLID) set bossbar expr-2 visible to true add expr-3 to bossbar expr-2 players set bossbar expr-2 progress to (expr-4 ? 100) AxBossBarApi_callEvent("onBossbarChange", expr-2) effect create time[ ]lapse[d] boss[ ]bar title[d] %string% and id %string% for %players% for %timespan% and step %timespan%[ with color (1¦BLUE|2¦GREEN|3¦PINK|4¦PURPLE|5¦RED|6¦WHITE|7¦YELLOW)]: trigger: create bossbar titled expr-1 and id expr-2 for expr-3 set {_time} to expr-5 ? 1 second {AxBossBarApi::data::%expr-2%}.setColor(BarColor.valueOf({AxBossBarApi::colors::%parse mark%} ? "RED")) set {_max} and {AxBossBarApi::data::%expr-2%::ActualTime} to expr-4 while {AxBossBarApi::data::%expr-2%::ActualTime} > 0 second: stop if {AxBossBarApi::data::%expr-2%} is not set set bossbar expr-2 progress to (({AxBossBarApi::data::%expr-2%::ActualTime}.getMilliSeconds()/1000)/({_max}.getMilliSeconds()/1000))*100 remove {_time} from {AxBossBarApi::data::%expr-2%::ActualTime} AxBossBarApi_callEvent("onBossbarChange", expr-2) wait {_time} delete bossbar expr-2 effect create distance[d] boss[ ]bar title[d] %string% and id %string% for %player% at %location% and distance %number%[ with color (1¦BLUE|2¦GREEN|3¦PINK|4¦PURPLE|5¦RED|6¦WHITE|7¦YELLOW)]: trigger: create bossbar titled expr-1 and id expr-2 for expr-3 {AxBossBarApi::data::%expr-2%}.setColor(BarColor.valueOf({AxBossBarApi::colors::%parse mark%} ? "RED")) set {AxBossBarApi::data::%expr-2%::location} to expr-4 set {AxBossBarApi::data::%expr-2%::distance} to expr-5 add expr-2 to {AxBossBarApi::distance::*} on PlayerMoveEvent: loop {AxBossBarApi::distance::*}: {AxBossBarApi::data::%loop-value%::location} is set bossbar loop-value players contain event.getPlayer() set {AxBossBarApi::data::%loop-value%::ActualDistance} to distance between event.getPlayer() and {AxBossBarApi::data::%loop-value%::location} if {AxBossBarApi::data::%loop-value%::ActualDistance} > {AxBossBarApi::data::%loop-value%::distance}: {AxBossBarApi::data::%loop-value%}.hide() stop {AxBossBarApi::data::%loop-value%}.show() if bossbar loop-value visible is false set bossbar loop-value progress to 100-({AxBossBarApi::data::%loop-value%::ActualDistance}/{AxBossBarApi::data::%loop-value%::distance})*100 AxBossBarApi_callEvent("onBossbarChange", loop-value)