private void startCountdown(Player player, int number) {
bossBar.setVisible(true);
bossBar.setProgress(1.0);
counter = number;
new BukkitRunnable() {
@Override
public void run() {
bossBar.setTitle("还有 "+ counter + "秒");
bossBar.setProgress( (double) counter / number);
counter--;
if (counter
cancel();
}
else if (stop == 1) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
else if (player.isDead()) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
}
}.runTaskTimer(this, 0, 20L); // 每秒更新一次
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
bossBar = Bukkit.createBossBar("倒计时", BarColor.YELLOW, BarStyle.SOLID);
int number = getConfig().getInt("time");
//for(Player player : Bukkit.getOnlinePlayers()){//全服
Player player = (Player) sender;
try {
if (Objects.equals(args[0], "start")) {
stop = 0;
bossBar.addPlayer(player);
new BukkitRunnable() {
@Override
public void run() {
if (stop == 0) {
startCountdown(player, number);
}
if (stop == 1) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
if (player.isDead()) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
}
}.runTaskTimer(this, 0, (number + 1) * 20L);
} else if (Objects.equals(args[0], "stop")) {
bossBar.removePlayer(player);
bossBar.removePlayer(player);
bossBar.setVisible(false);
stop = 1;
}catch (Exception e) {
// 处理异常情况
}
return true;
}复制代码以上是编写的代码 是一个倒计时进入游戏后,检测到发送的是start,能正常运行需要的功能检测到发送的是stop,倒计时停止,运行bossBar.removePlayer(player)后玩家还是能看到bossbar 直到退出重进后才会消失
我想要让玩家在发送stop后或在死亡后看不到bossbar
请问这个问题该怎么解决
bossBar.setVisible(true);
bossBar.setProgress(1.0);
counter = number;
new BukkitRunnable() {
@Override
public void run() {
bossBar.setTitle("还有 "+ counter + "秒");
bossBar.setProgress( (double) counter / number);
counter--;
if (counter
cancel();
}
else if (stop == 1) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
else if (player.isDead()) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
}
}.runTaskTimer(this, 0, 20L); // 每秒更新一次
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
bossBar = Bukkit.createBossBar("倒计时", BarColor.YELLOW, BarStyle.SOLID);
int number = getConfig().getInt("time");
//for(Player player : Bukkit.getOnlinePlayers()){//全服
Player player = (Player) sender;
try {
if (Objects.equals(args[0], "start")) {
stop = 0;
bossBar.addPlayer(player);
new BukkitRunnable() {
@Override
public void run() {
if (stop == 0) {
startCountdown(player, number);
}
if (stop == 1) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
if (player.isDead()) {
bossBar.removePlayer(player);
bossBar.setVisible(false);
cancel();
}
}
}.runTaskTimer(this, 0, (number + 1) * 20L);
} else if (Objects.equals(args[0], "stop")) {
bossBar.removePlayer(player);
bossBar.removePlayer(player);
bossBar.setVisible(false);
stop = 1;
}catch (Exception e) {
// 处理异常情况
}
return true;
}复制代码以上是编写的代码 是一个倒计时进入游戏后,检测到发送的是start,能正常运行需要的功能检测到发送的是stop,倒计时停止,运行bossBar.removePlayer(player)后玩家还是能看到bossbar 直到退出重进后才会消失
我想要让玩家在发送stop后或在死亡后看不到bossbar
请问这个问题该怎么解决