diff --git a/src/main/java/io/github/dre2n/dungeonsxl/player/DGroup.java b/src/main/java/io/github/dre2n/dungeonsxl/player/DGroup.java index 3c57619f..4d11bbea 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/player/DGroup.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/player/DGroup.java @@ -310,6 +310,25 @@ public class DGroup { this.dungeon = dungeon; } + /** + * Sets up all dungeon-related fields. + * + * @param name + * the name of the dungeon + */ + public void setDungeon(String name) { + dungeon = plugin.getDungeons().getDungeon(name); + if (dungeon != null) { + dungeonName = dungeon.getName(); + mapName = dungeon.getConfig().getStartFloor(); + unplayedFloors = dungeon.getConfig().getFloors(); + + } else { + mapName = name; + dungeon = new Dungeon(name); + } + } + /** * @return the dungeonName */ diff --git a/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java b/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java index a4613f9e..e0f55c29 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/task/AnnouncerStartGameTask.java @@ -39,6 +39,9 @@ public class AnnouncerStartGameTask extends BukkitRunnable { HashSet players = new HashSet<>(); for (DGroup dGroup : announcer.getDGroups()) { + if (dGroup == null) { + continue; + } for (Player player : dGroup.getPlayers()) { players.add(player); } @@ -56,10 +59,21 @@ public class AnnouncerStartGameTask extends BukkitRunnable { @Override public void run() { - Game game = new Game(announcer.getDGroups().get(0), announcer.getMapName()); + Game game = null; for (DGroup dGroup : announcer.getDGroups()) { - game.getDGroups().set(announcer.getDGroups().indexOf(dGroup), dGroup); + if (dGroup == null) { + continue; + } + + if (game == null) { + game = new Game(dGroup, announcer.getMapName()); + } else { + game.getDGroups().add(dGroup); + } + + dGroup.setDungeon(announcer.getDungeonName() == null ? announcer.getMapName() : announcer.getDungeonName()); + dGroup.setGameWorld(game.getWorld()); } for (Player player : game.getPlayers()) {