193 lines
7.2 KiB
Java
193 lines
7.2 KiB
Java
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<String> 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<Player> 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<Player> 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<Player> 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!");
|
|
}
|
|
}
|