@@ -50,7 +50,7 @@ public static void main(String[] args) {
50
50
static HashMap <Player , BossBar > bossBarMap = new HashMap <>();
51
51
static HashMap <Player , Boolean > showDebugScreenMap = new HashMap <>();
52
52
private static int alternatingTicks = 0 ; // offsets the bukkitscheduler period every interval.
53
- //default values although the config will override theese.
53
+ private static boolean changedDimensionsEvent ;
54
54
private int particleLevel = 2 ;
55
55
private int particleMultiplier = 4 ;
56
56
private int maxParticleLevel = 4 ;
@@ -97,10 +97,17 @@ public static boolean isGeyserPlayer(Player player) {
97
97
98
98
@ EventHandler
99
99
public void onPlayerMove (PlayerMoveEvent e ) {
100
+ alternatingTicks = 0 ;
100
101
Player player = e .getPlayer ();
101
102
updateInfo (player , e .getTo ());
102
103
}
103
104
105
+ @ EventHandler
106
+ public void onDimensionChange (PlayerChangedWorldEvent e ) {
107
+ changedDimensionsEvent = true ;
108
+ alternatingTicks = 0 ;
109
+ }
110
+
104
111
public void updateInfo (Player player , Location location ) {
105
112
if (!isGeyserPlayer (player ))
106
113
return ;
@@ -126,8 +133,24 @@ public void updateInfo(Player player, Location location) {
126
133
currentBossBar = Bukkit .createBossBar (getBossBarTitle (player , location ), BarColor .BLUE , BarStyle .SOLID );
127
134
currentBossBar .addPlayer (player );
128
135
bossBarMap .put (player , currentBossBar );
129
- } else
136
+ } else {
137
+ // When switching dimensions, bossbar does not appear, re-enable when switching
138
+ // dimensions only.
139
+ // If bossbar immediately does not appear, stand still for 8 intervals. (2
140
+ // seconds)
141
+ if (changedDimensionsEvent == true && alternatingTicks == 8 ) {
142
+ currentBossBar .removePlayer (player );
143
+ currentBossBar .addPlayer (player );
144
+ changedDimensionsEvent = false ;
145
+ }
146
+
130
147
currentBossBar .setTitle (getBossBarTitle (player , location ));
148
+ if (alternatingTicks > 0 && alternatingTicks % 5 == 0 ) {
149
+ currentBossBar .setColor (BarColor .GREEN );
150
+ } else {
151
+ currentBossBar .setColor (BarColor .BLUE );
152
+ }
153
+ }
131
154
132
155
if (targetBlock == null || targetBlock .getLocation () == null ) {
133
156
player .spigot ().sendMessage (ChatMessageType .ACTION_BAR , new TextComponent ("-" ));
0 commit comments