diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Obstacle.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Obstacle.java index 45a6c66..4dbbefe 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Obstacle.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Obstacle.java @@ -4,6 +4,7 @@ import eu.mhsl.minenet.minigames.util.GeneratorUtils; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.generator.GenerationUnit; +import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; @@ -45,8 +46,14 @@ public abstract class Obstacle { */ public abstract void generate(GenerationUnit unit, Point start); + private static final List remaining = new ArrayList<>(); + public static Obstacle getRandomObstacle() { - return obstacles.get(ThreadLocalRandom.current().nextInt(obstacles.size())); + if(remaining.isEmpty()) { + remaining.addAll(obstacles); + } + int index = ThreadLocalRandom.current().nextInt(remaining.size()); + return remaining.remove(index); } protected static void forEachColumn(Point start, Consumer callback) {