package nl.sbdeveloper.mctpaudio.commands; import co.aikar.commands.BaseCommand; import co.aikar.commands.CommandHelp; import co.aikar.commands.annotation.*; import nl.sbdeveloper.mctpaudio.ThemeParkAudio; import nl.sbdeveloper.mctpaudio.api.AudioType; import nl.sbdeveloper.mctpaudio.api.LightRegion; import nl.sbdeveloper.mctpaudio.listener.PlayInRegionHandler; import nl.sbdeveloper.mctpaudio.managers.PinManager; import nl.sbdeveloper.mctpaudio.utils.HeadUtil; import nl.sbdeveloper.mctpaudio.utils.SpigotPlayerSelector; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.json.simple.JSONObject; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @CommandAlias("tpaudio") @CommandPermission("tpa.cmd") public class TPAudioCMD extends BaseCommand { @Default @HelpCommand public void onHelp(CommandSender sender, CommandHelp help) { help.showHelp(); } @Subcommand("toggleradio") @Description("") public void toggleRadio(CommandSender sender) { if (ThemeParkAudio.getPlaylist().isRunning()) { ThemeParkAudio.getPlaylist().stop(); sender.sendMessage(ChatColor.GRAY + "De automatische radio is stopgezet. Zodra het huidige nummer is afgelopen, gebeurt er niks meer."); } else { ThemeParkAudio.getPlaylist().start(); sender.sendMessage(ChatColor.GRAY + "De automatische radio is weer gestart."); } } @Subcommand("addsong") @Description("") public void onAddSong(CommandSender sender, String url) { List urls = ThemeParkAudio.getInstance().getConfig().getStringList("radioSongs"); urls.add(url); ThemeParkAudio.getInstance().getConfig().set("radioSongs", urls); ThemeParkAudio.getInstance().saveConfig(); ThemeParkAudio.getPlaylist().addSong(url); sender.sendMessage(ChatColor.GRAY + "Nummer toegevoegd aan de automatische radio."); } @Subcommand("play") @Description("") public void onPlay(CommandSender sender, String selector, AudioType type, String url) { List players = new ArrayList<>(); Player target = Bukkit.getPlayer(selector); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(ChatColor.GRAY + "Die speler is niet verbonden met de client."); return; } players.add(target); } else { SpigotPlayerSelector sel = new SpigotPlayerSelector(selector); if (sel.getArgument("region").length() != 0) { String regionID = sel.getArgument("region"); new PlayInRegionHandler(regionID, url, sel.getPlayers(sender).stream().map(Entity::getUniqueId).collect(Collectors.toList())); sender.sendMessage(ChatColor.GRAY + "Gestart met afspelen!"); return; } else { players.addAll(sel.getPlayers(sender)); } } JSONObject data; for (Player p : players) { data = new JSONObject(); if (!PinManager.hasPin(p.getUniqueId())) continue; data.put("task", type.name()); data.put("path", url); data.put("uuid", p.getUniqueId().toString().replace("-", "")); ThemeParkAudio.getClient().sendData(data); } sender.sendMessage(ChatColor.GRAY + "Gestart met afspelen!"); } @Subcommand("light") @Description("") public void onLight(CommandSender sender, String selector, int r, int g, int b, int w, LightRegion region, @Default("255") Integer brightness) { if (brightness < 0 || brightness > 255) { sender.sendMessage(ChatColor.GRAY.toString() + brightness + " is geen geldige brightness."); return; } List players = new ArrayList<>(); Player target = Bukkit.getPlayer(selector); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(ChatColor.GRAY + "Die speler is niet verbonden met de client."); return; } players.add(target); } else { SpigotPlayerSelector sel = new SpigotPlayerSelector(selector); players.addAll(sel.getPlayers(sender)); } //CHECK FOR THE REGION SELECTOR -> Then save if (selector.startsWith("@a") && HeadUtil.getArgument(selector, "region").length() != 0) { String regionID = HeadUtil.getArgument(selector, "region"); String data = brightness + "_" + r + "_" + g + "_" + b + "_" + w + "_" + region.name(); ThemeParkAudio.getInstance().getConfig().set("regions.light." + regionID, data); ThemeParkAudio.getInstance().saveConfig(); } JSONObject data; for (Player p : players) { data = new JSONObject(); if (!PinManager.hasPin(p.getUniqueId())) continue; data.put("task", "LIGHT"); data.put("rgbw", r + ":" + g + ":" + b + ":" + w); data.put("region", region.name()); data.put("brightness", brightness); data.put("uuid", p.getUniqueId().toString().replace("-", "")); ThemeParkAudio.getClient().sendData(data); } sender.sendMessage(ChatColor.GRAY + "Kleuren aangepast!"); } @Subcommand("setregion") @Description("") public void onSetRegion(CommandSender sender, String regionName, String url) { ThemeParkAudio.getInstance().getConfig().set("regions.audio." + regionName, url); ThemeParkAudio.getInstance().saveConfig(); sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu muziek afspelen."); } @Subcommand("sethueregion") @Description("") public void onSetHueRegion(CommandSender sender, String regionName, String url) { ThemeParkAudio.getInstance().getConfig().set("regions.light." + regionName, url); ThemeParkAudio.getInstance().saveConfig(); sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu licht aanpassen."); } @Subcommand("stop") @Description("") public void onStop(CommandSender sender, String selector) { List players = new ArrayList<>(); Player target = Bukkit.getPlayer(selector); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(ChatColor.GRAY + "Die speler is niet verbonden met de client."); return; } players.add(target); } else { SpigotPlayerSelector sel = new SpigotPlayerSelector(selector); players.addAll(sel.getPlayers(sender)); } JSONObject data; for (Player p : players) { data = new JSONObject(); if (!PinManager.hasPin(p.getUniqueId())) continue; data.put("task", "STOP"); data.put("uuid", p.getUniqueId().toString().replace("-", "")); ThemeParkAudio.getClient().sendData(data); } sender.sendMessage(ChatColor.GRAY + "Gestopt met afspelen!"); } }