Skip to content

Commit 5bca2fe

Browse files
committed
fix: 修复资源刷新 Runnable 重复运行 [1]
chore(optimize): 优化部分代码结构 fix(chore): 修复代码静态混用问题 [1] https://www.spigotmc.org/threads/illegalstateexception-on-bukkitrunnable.197896/#post-2060708
1 parent 68dd8ab commit 5bca2fe

File tree

4 files changed

+8
-18
lines changed

4 files changed

+8
-18
lines changed

src/main/java/top/mpt/xzystudio/flywars/Main.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import top.mpt.xzystudio.flywars.executor.CommandHandler;
66
import top.mpt.xzystudio.flywars.listeners.GameEventListener;
77
import top.mpt.xzystudio.flywars.listeners.PlayerEventListener;
8-
import top.mpt.xzystudio.flywars.scheduler.ResourcesUpdate;
98
import top.mpt.xzystudio.flywars.utils.ChatUtils;
109

1110
import java.util.Objects;

src/main/java/top/mpt/xzystudio/flywars/game/Game.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.bukkit.enchantments.Enchantment;
66
import org.bukkit.entity.Player;
77
import org.bukkit.inventory.PlayerInventory;
8-
import org.bukkit.plugin.Plugin;
98
import org.bukkit.scheduler.BukkitRunnable;
109
import org.bukkit.scoreboard.Team;
1110
import top.mpt.xzystudio.flywars.Main;
@@ -35,7 +34,7 @@ public class Game {
3534
/**
3635
* 资源刷新
3736
*/
38-
public static ResourcesUpdate resUpdater;
37+
public static ResourcesUpdate resUpdater = null;
3938

4039
private final CommandSender sender;
4140

@@ -130,13 +129,7 @@ public void run() {
130129
// 资源刷新点
131130
resUpdater = new ResourcesUpdate();
132131
resUpdater.setGameWorld(pl.getWorld());
133-
try {
134-
// if (!resUpdater.isCancelled()) resUpdater.cancel(); // 这样写没用,还是会报错,干脆不用它了,用trycatch
135-
resUpdater.runTaskTimer(Main.instance, 0, Long.parseLong(ConfigUtils.getConfig("refresh-tick", 600).toString()));
136-
} catch (Exception e){
137-
Main.instance.getLogger().warning(ChatUtils.translateColor("#RED#奇奇怪怪的BUG出现了,不过应该问题不大"));
138-
ChatUtils.broadcast(ChatUtils.translateColor("[FlyWars] #GOLD#BugWars: #RED#创建资源刷新点任务失败,可能是已存在!"));
139-
}
132+
resUpdater.runTaskTimer(Main.instance, 0, Long.parseLong(ConfigUtils.getConfig("refresh-tick", 600).toString()));
140133
// 计分板
141134
teams.forEach(scoreboardManager::newBoard);
142135
scoreboardManager.renderScoreboard();

src/main/java/top/mpt/xzystudio/flywars/listeners/GameEventListener.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import top.mpt.xzystudio.flywars.events.GameOverEvent;
1010
import top.mpt.xzystudio.flywars.events.TeamEliminatedEvent;
1111
import top.mpt.xzystudio.flywars.game.Game;
12-
import top.mpt.xzystudio.flywars.game.scoreboard.ScoreboardManager;
1312
import top.mpt.xzystudio.flywars.game.team.GameTeam;
1413
import top.mpt.xzystudio.flywars.game.team.TeamInfo;
1514
import top.mpt.xzystudio.flywars.utils.ChatUtils;
@@ -27,7 +26,6 @@
2726
* 游戏相关事件监听器
2827
*/
2928
public class GameEventListener implements Listener {
30-
3129
@EventHandler
3230
public void onTeamEliminated(TeamEliminatedEvent event) {
3331
Player p = event.getPlayer();
@@ -75,11 +73,11 @@ public void onGameOver(GameOverEvent event) {
7573
// 重置计分板
7674
Game.scoreboardManager.reset();
7775
// 取消资源刷新
78-
Game.resUpdater.cancel();
79-
// 遍历teams数组,把每个team注销
80-
Game.teams.forEach(GameTeam::unregTeam);
76+
if (Game.resUpdater != null) Game.resUpdater.cancel();
8177
// 遍历teams数组
8278
Game.teams.forEach(team -> {
79+
// 把每个team注销
80+
team.unregTeam();
8381
// 获取团队信息
8482
TeamInfo info = Game.scoreboardManager.getInfo(team);
8583
// 获取每个玩家

src/main/java/top/mpt/xzystudio/flywars/scheduler/ResourcesUpdate.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
import org.bukkit.World;
66
import org.bukkit.inventory.ItemStack;
77
import org.bukkit.scheduler.BukkitRunnable;
8-
import top.mpt.xzystudio.flywars.Main;
98
import top.mpt.xzystudio.flywars.utils.ConfigUtils;
109
import top.mpt.xzystudio.flywars.utils.ItemUtils;
1110

12-
import java.util.*;
11+
import java.util.HashMap;
12+
import java.util.List;
13+
import java.util.Map;
1314

1415
/**
1516
* 刷新资源类
@@ -49,7 +50,6 @@ public void run() {
4950
int y = (Integer) its.get("y");
5051
int z = (Integer) its.get("z");
5152
int amount = (Integer) its.get("amount");
52-
// Main.instance.getLogger().info(String.format("(%d, %d, %d)", x, y, z));
5353

5454
Location loc = new Location(gameWorld, x, y, z);
5555
ItemStack itemStack = ItemUtils.newItem(value, displayName.getOrDefault(key, key), amount);

0 commit comments

Comments
 (0)