package me.mctp; import me.mctp.api.AudioType; import me.mctp.api.HueType; import me.mctp.managers.PinManager; import me.mctp.utils.SpigotPlayerSelector; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.json.simple.JSONObject; import java.util.ArrayList; public class MCTPAudioCmd implements CommandExecutor { public String prefix = (ChatColor.GOLD + "[" + ChatColor.YELLOW + "MCTP" + ChatColor.GOLD + "] " + ChatColor.GRAY); public boolean onCommand(CommandSender sender, Command cmd, String commandlabel, String[] args) { if (cmd.getName().equalsIgnoreCase("mctpaudio")) { if (!sender.hasPermission("mctp.audio")) { sender.sendMessage(prefix + "You don't have the permission to do this."); return true; } // /mctpaudio play SELECTOR TYPE URL // /mctpaudio stop SELECTOR TYPE if (args.length == 4 && args[0].equalsIgnoreCase("play")) { AudioType type; try { type = AudioType.valueOf(args[2].toUpperCase()); } catch (IllegalArgumentException ex) { sender.sendMessage(prefix + args[2] + " is geen correcte type."); return true; } ArrayList players = new ArrayList<>(); Player target = Bukkit.getPlayer(args[1]); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(prefix + "Die speler is niet verbonden met de client."); return true; } players.add(target); } else { SpigotPlayerSelector selector = new SpigotPlayerSelector(args[1]); players.addAll(selector.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", args[3]); data.put("uuid", p.getUniqueId().toString().replace("-", "")); Main.getClient().sendData(data); } sender.sendMessage(prefix + "Gestart met afspelen!"); return true; } else if (args.length == 6 && args[0].equalsIgnoreCase("hue")) { int r; int g; int b; try { r = Integer.parseInt(args[2]); g = Integer.parseInt(args[3]); b = Integer.parseInt(args[4]); } catch (IllegalArgumentException ex) { sender.sendMessage(prefix + args[2] + ", " + args[3] + ", " + args[4] + " zijn incorrecte RGB waardes."); return true; } HueType type; try { type = HueType.valueOf(args[5].toUpperCase()); } catch (IllegalArgumentException ex) { sender.sendMessage(prefix + args[5] + " is geen correcte type."); return true; } ArrayList players = new ArrayList<>(); Player target = Bukkit.getPlayer(args[1]); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(prefix + "Die speler is niet verbonden met de client."); return true; } players.add(target); } else { SpigotPlayerSelector selector = new SpigotPlayerSelector(args[1]); players.addAll(selector.getPlayers(sender)); } JSONObject data; for (Player p : players) { data = new JSONObject(); if (!PinManager.hasPin(p.getUniqueId())) continue; data.put("task", "HUE"); data.put("rgb", r + ":" + g + ":" + b); data.put("type", type.name()); data.put("uuid", p.getUniqueId().toString().replace("-", "")); Main.getClient().sendData(data); } sender.sendMessage(prefix + "Indien de speler(s) is/zijn verbonden met Philips Hue, is de kleur veranderd."); return true; } else if (args.length == 3 && args[0].equalsIgnoreCase("setregion")) { String regionName = args[1]; String url = args[1]; Main.getPlugin().getConfig().set("Regions." + regionName, url); Main.getPlugin().saveConfig(); sender.sendMessage(prefix + "De region zal vanaf nu muziek afspelen."); return true; } else if (args.length == 2 && args[0].equalsIgnoreCase("stop")) { ArrayList players = new ArrayList<>(); Player target = Bukkit.getPlayer(args[1]); if (target != null) { if (!PinManager.hasPin(target.getUniqueId())) { sender.sendMessage(prefix + "Die speler is niet verbonden met de client."); return true; } players.add(target); } else { SpigotPlayerSelector selector = new SpigotPlayerSelector(args[1]); players.addAll(selector.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("-", "")); Main.getClient().sendData(data); } sender.sendMessage(prefix + "Gestopt met afspelen!"); return true; } } else if (cmd.getName().equalsIgnoreCase("audio")) { if (!(sender instanceof Player)) { sender.sendMessage(prefix + "Alleen spelers kunnen verbinden met onze audioclient."); return true; } Player p = (Player) sender; String pin = PinManager.getPIN(p.getUniqueId()); String url = "http://audio.mcthemeparks.eu/"; url = url + "?uuid=" + p.getUniqueId().toString().replace("-", "") + "&pin=" + pin; TextComponent message = new TextComponent(TextComponent.fromLegacyText(prefix + "Klik hierop om te verbinden met de audioclient.")); message.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url)); p.spigot().sendMessage(message); return true; } return false; } }