Skip to content

Commit 66031ce

Browse files
committed
:bugs: BugWars :(
1 parent fbe89c0 commit 66031ce

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ public void startGame() {
127127
// 在run方法中不要创建计分板,要不然后期`GameTeam.getBoard()`获取不到(((
128128
@Override
129129
public void run() {
130+
// 资源刷新点
131+
resUpdater.setGameWorld(pl.getWorld());
132+
try {
133+
if (!resUpdater.isCancelled()) resUpdater.cancel();
134+
} catch (IllegalStateException e){
135+
Main.instance.getLogger().warning(ChatUtils.translateColor("#RED#奇奇怪怪的BUG出现了,不过应该问题不大"));
136+
}
137+
resUpdater.runTaskTimer(Main.instance, 0, Long.parseLong(ConfigUtils.getConfig("refresh-tick", 600).toString()));
130138
// 计分板
131139
teams.forEach(scoreboardManager::newBoard);
132140
scoreboardManager.renderScoreboard();
@@ -164,10 +172,6 @@ public void run() {
164172
}
165173
}
166174
}
167-
168-
resUpdater.setGameWorld(pl.getWorld());
169-
resUpdater.cancel();
170-
resUpdater.runTaskTimer(Main.instance, 0, Long.parseLong(ConfigUtils.getConfig("refresh-tick", 600).toString()));
171175
}
172176
}.runTaskLater(Main.instance, (Integer) ConfigUtils.getConfig("delay-tick", 200));
173177
// runTaskLater 延迟♂执行

src/main/java/top/mpt/xzystudio/flywars/game/team/GameTeam.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ public String getTeamDisplayName() {
100100
* 让p2骑在p1头上
101101
*/
102102
public void ride(){
103-
while (!p1.addPassenger(p2)){
103+
if (!p1.addPassenger(p2)){
104104
p2.eject();
105105
p1.eject();
106+
p1.addPassenger(p2); // 不使用循环,否则一直报错
106107
}
107108
}
108109

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.bukkit.entity.Player;
66
import org.bukkit.event.EventHandler;
77
import org.bukkit.event.Listener;
8+
import top.mpt.xzystudio.flywars.Main;
89
import top.mpt.xzystudio.flywars.events.GameOverEvent;
910
import top.mpt.xzystudio.flywars.events.TeamEliminatedEvent;
1011
import top.mpt.xzystudio.flywars.game.Game;
@@ -19,6 +20,7 @@
1920
import java.util.ArrayList;
2021
import java.util.Collections;
2122
import java.util.concurrent.atomic.AtomicInteger;
23+
import java.util.concurrent.atomic.AtomicReference;
2224
import java.util.stream.Collectors;
2325

2426
/**
@@ -48,11 +50,20 @@ public void onTeamEliminated(TeamEliminatedEvent event) {
4850

4951
// 判断是不是只剩最后一个队伍(胜利)
5052
AtomicInteger ifGameOver = new AtomicInteger();
53+
AtomicReference<GameTeam> aliveTeam = null;
5154
Game.teams.forEach(it -> {
52-
if (ScoreboardManager.info.get(it).getAlive()) ifGameOver.getAndIncrement();
55+
if (ScoreboardManager.info.get(it).getAlive()){
56+
ifGameOver.getAndIncrement();
57+
aliveTeam.set(it);
58+
}
5359
});
5460
if (ifGameOver.get() == 1){
55-
GameOverEvent gameOverEvent = new GameOverEvent(Game.teams.get(0));
61+
GameOverEvent gameOverEvent = new GameOverEvent(aliveTeam.get());
62+
EventUtils.callEvent(gameOverEvent);
63+
} else if (ifGameOver.get() == 0) {
64+
Main.instance.getLogger().warning(ChatUtils.translateColor("#RED#请勿在玩家数不足4个时开始游戏"));
65+
66+
GameOverEvent gameOverEvent = new GameOverEvent(team);
5667
EventUtils.callEvent(gameOverEvent);
5768
}
5869
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,14 @@ public void onEntityDismount(EntityDismountEvent event) {
110110
// 遍历team数组
111111
Game.teams.forEach(it -> {
112112
// 如果被骑乘实体和离开骑乘实体的玩家是队友关系,就取消玩家的行为
113-
if (it.isP2((Player) passenger) && it.isP1((Player) vehicle) && ScoreboardManager.info.get(it).getAlive()) {
114-
vehicle.eject();
115-
passenger.eject();
116-
vehicle.addPassenger(passenger);
113+
if (it.isP2((Player) passenger) && it.isP1((Player) vehicle) && Game.scoreboardManager.getInfo(it).getAlive()) {
114+
try {
115+
vehicle.eject();
116+
passenger.eject();
117+
vehicle.addPassenger(passenger);
118+
} catch (Exception e) {
119+
Main.instance.getLogger().warning(ChatUtils.translateColor("#RED#又是奇奇怪怪的bug,罢了罢了"));
120+
}
117121
}
118122
});
119123
}

src/main/resources/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ resources:
5050
amount: 5
5151

5252
# 刷新资源间隔ticks
53-
refresh-tick: 600
53+
refresh-tick: 20

0 commit comments

Comments
 (0)