Fix ConcurrentModificationException through death in loop

This commit is contained in:
Lixfel
2024-11-29 15:23:17 +01:00
parent 28f96e313a
commit 4ee8456fd4
@@ -29,6 +29,7 @@ import de.steamwar.towerrun.state.GameStates;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
@@ -83,14 +84,16 @@ public class IngameListener extends GameStateBukkitListener {
.min(Comparator.comparing(Function.identity())) .min(Comparator.comparing(Function.identity()))
.orElse(0.0); .orElse(0.0);
List<Player> toDamage = new ArrayList<>();
TowerRunGame.PLAYERS_ALIVE.forEach(towerRunPlayer -> { TowerRunGame.PLAYERS_ALIVE.forEach(towerRunPlayer -> {
if (towerRunPlayer.player().getLocation().getY() - minY > 20) { if (towerRunPlayer.player().getLocation().getY() - minY > 20) {
towerRunPlayer.player().sendTitle("§a", TowerRun.getMessage().parse("CATCH_UP_WARNING", towerRunPlayer.player()), 5, 30, 5); towerRunPlayer.player().sendTitle("§a", TowerRun.getMessage().parse("CATCH_UP_WARNING", towerRunPlayer.player()), 5, 30, 5);
} }
if (towerRunPlayer.player().getLocation().getY() - minY > 30) { if (towerRunPlayer.player().getLocation().getY() - minY > 30) {
towerRunPlayer.player().damage(1.0); toDamage.add(towerRunPlayer.player());
} }
}); });
toDamage.forEach(p -> p.damage(1.0));
} }
}; };
antiCampRunnable.runTaskTimer(TowerRun.getInstance(), 100, 100); antiCampRunnable.runTaskTimer(TowerRun.getInstance(), 100, 100);