Newer
Older
ChallengeSystem / Challenge / src / main / java / de / fanta / challenge / commands / NetherToggleCommand.java
@fanta fanta on 7 Jun 2024 4 KB start module system
package de.fanta.challenge.commands;

import de.fanta.challenge.Challenges;
import de.fanta.challenge.utils.ChatUtil;
import de.fanta.challenge.utils.Config;
import de.iani.cubesideutils.bukkit.commands.SubCommand;
import de.iani.cubesideutils.commands.ArgsParser;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class NetherToggleCommand extends SubCommand {

    private final Challenges plugin;
    private final boolean enable;

    public NetherToggleCommand(Challenges plugin, boolean enable) {
        this.plugin = plugin;
        this.enable = enable;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) {
        if (!(sender instanceof Player p)) {
            ChatUtil.sendErrorMessage(sender, "You are not a Player :>");
            return true;
        }
        if (plugin.isEditor(p) || p.hasPermission("Challenges.editor.override")) {
            if (enable) {
                if (!Config.getBoolean("nether.enabled")) {
                    Config.setValue("nether.enabled", true);

                    Location spawn = Bukkit.getWorlds().get(1).getSpawnLocation();
                    World world = spawn.getWorld();
                    plugin.getScheduler().runLocalDelayed(spawn, () -> {
                        for (int x = spawn.getBlockX() - 2; x <= spawn.getBlockX() + 2; x++) {
                            for (int z = spawn.getBlockZ() - 2; z <= spawn.getBlockZ() + 2; z++) {
                                for (int y = spawn.getBlockY(); y <= spawn.getBlockY() + 3; y++) {
                                    world.getBlockAt(x, y, z).setType(Material.AIR);
                                    world.getBlockAt(x, y, spawn.getBlockZ() + 3).setType(Material.SLIME_BLOCK);
                                    world.getBlockAt(x, y, spawn.getBlockZ() - 3).setType(Material.SLIME_BLOCK);
                                    world.getBlockAt(spawn.getBlockX() + 3, y, z).setType(Material.SLIME_BLOCK);
                                    world.getBlockAt(spawn.getBlockX() - 3, y, z).setType(Material.SLIME_BLOCK);
                                }
                                world.getBlockAt(x, spawn.getBlockY(), z).setType(Material.SLIME_BLOCK);
                                world.getBlockAt(x, spawn.getBlockY() - 1, z).setType(Material.BEDROCK);
                                world.getBlockAt(x, spawn.getBlockY() + 4, z).setType(Material.SLIME_BLOCK);
                            }
                        }

                        for (Player pp : Bukkit.getOnlinePlayers()) {
                            pp.teleportAsync(spawn.clone().add(0, 1, 0));
                        }
                    }, 1L);

                    ChatUtil.sendTitleToAll(Component.text("Nether Challenge"), Component.text("Nether-Modus aktiviert", ChatUtil.GREEN));
                } else {
                    ChatUtil.sendErrorMessage(p, "Die Nether Challenge läuft bereits!");
                    return true;
                }
            } else {
                if (Config.getBoolean("nether.enabled")) {
                    Config.setValue("nether.enabled", false);
                    ChatUtil.sendTitleToAll(Component.text("Nether Challenge"), Component.text("Nether-Modus deaktiviert", ChatUtil.RED));
                } else {
                    ChatUtil.sendErrorMessage(p, "Aktuell läuft keine Nether Challenge!");
                    return true;
                }
            }
        } else if (plugin.getCurrentEditor() != null) {
            ChatUtil.sendErrorMessage(p, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!");
            return true;
        } else {
            ChatUtil.sendErrorMessage(p, "Aktuell gibt es keinen Editor!");
            ChatUtil.sendErrorMessage(p, "Um selbst Editor zu werden musst du dir im Freebuild VIP kaufen!");
            return true;
        }
        return true;
    }
}