package me.lethunderhawk.dungeon.command; import me.lethunderhawk.bazaarflux.service.Services; import me.lethunderhawk.bazaarflux.util.command.CommandNode; import me.lethunderhawk.bazaarflux.util.command.CustomCommand; import me.lethunderhawk.dungeon.DungeonModule; import me.lethunderhawk.dungeon.generation.DungeonWorld; import me.lethunderhawk.dungeon.manager.DungeonManager; import me.lethunderhawk.main.Main; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class DungeonCommand extends CustomCommand { public DungeonCommand() { super( new CommandNode("dungeon", "Main Dungeon command", null), Services.get(DungeonModule.class) ); } @Override public void createCommands() { registerCommand( "test", "creates a test instance of a dungeon and teleports you there", this::testDungeon ); registerCommand( "cleanup", "Clears all dungeon worlds", this::clearDungeons ); registerCommand( "back", "go back to the world you were previously in", this::backFromDungeon ); } private void clearDungeons(CommandSender sender, String[] strings) { Services.get(DungeonManager.class).deleteAllDungeons(); } private void testDungeon(CommandSender sender, String[] args) { if (!(sender instanceof Player player)) return; backFromDungeon(sender, args); DungeonWorld dungeon = Services.get(DungeonManager.class).createDungeon(); dungeon.sendPlayerToDungeon(player); } private void backFromDungeon(CommandSender sender, String[] args) { if (!(sender instanceof Player player)) return; DungeonManager manager = Services.get(DungeonManager.class); DungeonWorld dungeon = manager.getDungeonByWorld(player.getWorld()); if (dungeon == null) { player.sendMessage("§cYou are not in a dungeon."); return; } dungeon.returnPlayer(player); // Optional: auto-delete dungeon if empty Bukkit.getScheduler().runTaskLater( Services.get(Main.class), () -> { if (player.getWorld().getPlayers().isEmpty()) { manager.deleteDungeon(dungeon.getUUID()); } }, 1L ); } }