ThemeParkAudio/src/main/java/nl/sbdeveloper/mctpaudio/commands/TPAudioCMD.java
SBDeveloper 6196b0bfa1
Some checks failed
Java CI / Build (push) Failing after 1m27s
Fixed compile issue
2025-04-03 22:21:58 +02:00

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!");
}
}