| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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
- );
- }
- }
|