Fixes and improvements
All checks were successful
Java CI / Build (push) Successful in 1m54s

This commit is contained in:
Stijn Bannink 2025-04-24 21:06:05 +02:00
parent f474ff3ed6
commit 536cb90868
Signed by: SBDeveloper
GPG key ID: B730712F2C3A9D7A
18 changed files with 188 additions and 156 deletions

View file

@ -6,7 +6,7 @@
<groupId>tech.sbdevelopment</groupId>
<artifactId>ThemeParkAudio</artifactId>
<version>1.6</version>
<version>1.0</version>
<packaging>jar</packaging>
<name>ThemeParkAudio</name>

View file

@ -2,10 +2,9 @@ package tech.sbdevelopment.themeparkaudio;
import co.aikar.commands.PaperCommandManager;
import lombok.Getter;
import org.bukkit.ChatColor;
import tech.sbdevelopment.themeparkaudio.commands.TPAudioCMD;
import tech.sbdevelopment.themeparkaudio.listener.LogoutListener;
import tech.sbdevelopment.themeparkaudio.listener.WGListener;
import tech.sbdevelopment.themeparkaudio.managers.WGManager;
import tech.sbdevelopment.themeparkaudio.radio.Playlist;
import tech.sbdevelopment.themeparkaudio.socket.Client;
import org.bukkit.Bukkit;
@ -25,13 +24,18 @@ public final class ThemeParkAudio extends JavaPlugin {
@Getter
private static Playlist playlist;
@Getter
private static boolean regionSupport = false;
public void onEnable() {
Bukkit.getLogger().info("[ThemeParkAudio] Loading...");
if (!setupPlugins()) {
Bukkit.getLogger().severe("[ThemeParkAudio] WorldGuard not found! Disabling...");
getServer().getPluginManager().disablePlugin(this);
return;
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null && Bukkit.getPluginManager().getPlugin("Train_Carts") != null) {
Bukkit.getLogger().info("[ThemeParkAudio] WorldGuard and TrainCarts found! Loading region support...");
regionSupport = true;
Bukkit.getPluginManager().registerEvents(new tech.sbdevelopment.themeparkaudio.listener.WGListener(), this);
} else {
Bukkit.getLogger().warning("[ThemeParkAudio] WorldGuard not found! Regions won't work...");
}
instance = this;
@ -47,13 +51,15 @@ public final class ThemeParkAudio extends JavaPlugin {
commandManager = new PaperCommandManager(this);
commandManager.enableUnstableAPI("help");
commandManager.getCommandReplacements().addReplacement("tpcommand", getConfig().getString("command"));
commandManager.registerCommand(new TPAudioCMD());
Bukkit.getPluginManager().registerEvents(new WGListener(), this);
Bukkit.getPluginManager().registerEvents(new LogoutListener(), this);
Bukkit.getLogger().info("[ThemeParkAudio] Loading playlist...");
if (ThemeParkAudio.getInstance().getConfig().getBoolean("radio")) {
Bukkit.getLogger().info("[ThemeParkAudio] Loading radio playlist...");
playlist = new Playlist();
}
Bukkit.getLogger().info("[ThemeParkAudio] Plugin is enabled!");
}
@ -63,12 +69,4 @@ public final class ThemeParkAudio extends JavaPlugin {
instance = null;
Bukkit.getLogger().info("[ThemeParkAudio] Plugin is disabled!");
}
private boolean setupPlugins() {
if (Bukkit.getPluginManager().getPlugin("WorldGuard") != null) {
WGManager.setWorldGuard(getServer().getPluginManager().getPlugin("WorldGuard"));
return true;
}
return false;
}
}

View file

@ -3,11 +3,15 @@ package tech.sbdevelopment.themeparkaudio.commands;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.CommandHelp;
import co.aikar.commands.annotation.*;
import net.md_5.bungee.api.chat.TextComponent;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import tech.sbdevelopment.themeparkaudio.api.AudioType;
import tech.sbdevelopment.themeparkaudio.api.LightRegion;
import tech.sbdevelopment.themeparkaudio.listener.PlayInRegionHandler;
import tech.sbdevelopment.themeparkaudio.managers.PinManager;
import tech.sbdevelopment.themeparkaudio.socket.messages.AudioMessage;
import tech.sbdevelopment.themeparkaudio.socket.messages.LightMessage;
import tech.sbdevelopment.themeparkaudio.socket.messages.StopAudioMessage;
import tech.sbdevelopment.themeparkaudio.utils.HeadUtil;
import tech.sbdevelopment.themeparkaudio.utils.SpigotPlayerSelector;
import org.bukkit.Bukkit;
@ -15,30 +19,47 @@ 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")
@CommandAlias("%tpcommand")
@CommandPermission("tpa.cmd")
public class TPAudioCMD extends BaseCommand {
@Default
@Subcommand("help")
@HelpCommand
public void onHelp(CommandSender sender, CommandHelp help) {
help.showHelp();
}
@Default
@Description("Get your audio URL.")
public void getAudioUrl(Player sender) {
String pin = PinManager.getPIN(sender.getUniqueId());
String url = ThemeParkAudio.getInstance().getConfig().getString("clientUrl");
url = url + "?uuid=" + sender.getUniqueId().toString().replace("-", "") + "&pin=" + pin;
TextComponent component = new TextComponent(ChatColor.GRAY + "Click here to open our audio client.");
component.setClickEvent(new net.md_5.bungee.api.chat.ClickEvent(net.md_5.bungee.api.chat.ClickEvent.Action.OPEN_URL, url));
sender.spigot().sendMessage(component);
}
@Subcommand("toggleradio")
@Description("")
public void toggleRadio(CommandSender sender) {
if (!ThemeParkAudio.getInstance().getConfig().getBoolean("radio")) {
sender.sendMessage(ChatColor.GRAY + "The radio is disabled, so it can't be toggled.");
return;
}
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.");
sender.sendMessage(ChatColor.GRAY + "The automatic radio has been stopped. Once the current song ends, it will not continue.");
} else {
ThemeParkAudio.getPlaylist().start();
sender.sendMessage(ChatColor.GRAY + "De automatische radio is weer gestart.");
sender.sendMessage(ChatColor.GRAY + "The automatic radio has started again.");
}
}
@ -50,7 +71,7 @@ public class TPAudioCMD extends BaseCommand {
ThemeParkAudio.getInstance().getConfig().set("radioSongs", urls);
ThemeParkAudio.getInstance().saveConfig();
ThemeParkAudio.getPlaylist().addSong(url);
sender.sendMessage(ChatColor.GRAY + "Nummer toegevoegd aan de automatische radio.");
sender.sendMessage(ChatColor.GRAY + "The song has been added to the radio playlist.");
}
@Subcommand("play")
@ -60,7 +81,7 @@ public class TPAudioCMD extends BaseCommand {
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.");
sender.sendMessage(ChatColor.GRAY + "The player is not connected to the client.");
return;
}
@ -69,36 +90,35 @@ public class TPAudioCMD extends BaseCommand {
SpigotPlayerSelector sel = new SpigotPlayerSelector(selector);
if (sel.getArgument("region").length() != 0) {
if (!ThemeParkAudio.isRegionSupport()) {
sender.sendMessage(ChatColor.GRAY + "Region support is not available.");
return;
}
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!");
sender.sendMessage(ChatColor.GRAY + "Playback started in region " + regionID + "!");
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);
if (type == AudioType.RADIO && !ThemeParkAudio.getInstance().getConfig().getBoolean("radio")) {
sender.sendMessage(ChatColor.GRAY + "The radio is disabled, so it can't be played on.");
return;
}
sender.sendMessage(ChatColor.GRAY + "Gestart met afspelen!");
AudioMessage.of(type, url).broadcastSelection(players, PinManager::hasPin);
sender.sendMessage(ChatColor.GRAY + "Playback started!");
}
@Subcommand("light")
@Subcommand("light|hue")
@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.");
sender.sendMessage(ChatColor.GRAY.toString() + brightness + " is not a valid brightness value. It must be between 0 and 255.");
return;
}
@ -106,7 +126,7 @@ public class TPAudioCMD extends BaseCommand {
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.");
sender.sendMessage(ChatColor.GRAY + "The player is not connected to the client.");
return;
}
@ -125,21 +145,15 @@ public class TPAudioCMD extends BaseCommand {
ThemeParkAudio.getInstance().saveConfig();
}
JSONObject data;
for (Player p : players) {
data = new JSONObject();
LightMessage.of(brightness, r, g, b, w, region).broadcastSelection(players, PinManager::hasPin);
for (Player p : players) {
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);
LightMessage.of(brightness, r, g, b, w, region).send(p.getUniqueId());
}
sender.sendMessage(ChatColor.GRAY + "Kleuren aangepast!");
sender.sendMessage(ChatColor.GRAY + "Light color has been changed!");
}
@Subcommand("setregion")
@ -148,16 +162,16 @@ public class TPAudioCMD extends BaseCommand {
ThemeParkAudio.getInstance().getConfig().set("regions.audio." + regionName, url);
ThemeParkAudio.getInstance().saveConfig();
sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu muziek afspelen.");
sender.sendMessage(ChatColor.GRAY + "The region will now play audio.");
}
@Subcommand("sethueregion")
@Subcommand("setlightregion|sethueregion")
@Description("")
public void onSetHueRegion(CommandSender sender, String regionName, String url) {
public void onSetLightRegion(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.");
sender.sendMessage(ChatColor.GRAY + "The region will now control the lights.");
}
@Subcommand("stop")
@ -167,7 +181,7 @@ public class TPAudioCMD extends BaseCommand {
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.");
sender.sendMessage(ChatColor.GRAY + "The player is not connected to the client.");
return;
}
@ -177,17 +191,8 @@ public class TPAudioCMD extends BaseCommand {
players.addAll(sel.getPlayers(sender));
}
JSONObject data;
for (Player p : players) {
data = new JSONObject();
StopAudioMessage.of().broadcastSelection(players, PinManager::hasPin);
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!");
sender.sendMessage(ChatColor.GRAY + "Playback stopped!");
}
}

View file

@ -1,17 +1,13 @@
package tech.sbdevelopment.themeparkaudio.listener;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.json.simple.JSONObject;
import tech.sbdevelopment.themeparkaudio.socket.messages.LogoutMessage;
public class LogoutListener implements Listener {
@EventHandler
public void onDisconnect(PlayerQuitEvent e) {
JSONObject data = new JSONObject();
data.put("task", "LOGOUT");
data.put("uuid", e.getPlayer().getUniqueId().toString().replace("-", ""));
ThemeParkAudio.getClient().sendData(data);
LogoutMessage.of().send(e.getPlayer().getUniqueId());
}
}

View file

@ -101,7 +101,7 @@ public class WGListener implements Listener {
AudioMessage.of(AudioType.MUSIC, regionURL).send(player.getUniqueId());
} else if (!Collections.disjoint(list, fromRegions) && Collections.disjoint(list, toRegions)) {
//Not in a region, stop...
StopAudioMessage.of(AudioType.MUSIC).send(player.getUniqueId());
AudioMessage.of(AudioType.MUSIC, "").send(player.getUniqueId());
}
}
}

View file

@ -1,6 +1,7 @@
package tech.sbdevelopment.themeparkaudio.managers;
import lombok.experimental.UtilityClass;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import java.security.SecureRandom;
import java.util.UUID;
@ -28,8 +29,13 @@ public class PinManager {
String pin = builder.toString();
pins.put(pUUID, pin);
ThemeParkAudio.getInstance().getLogger().info("Assigned pin " + pin + " to " + pUUID);
return pin;
} else {
ThemeParkAudio.getInstance().getLogger().info("Pin " + pins.get(pUUID) + " already assigned to " + pUUID);
return pins.get(pUUID);
}
}
@ -52,10 +58,18 @@ public class PinManager {
* @return true/false
*/
public static boolean checkPin(UUID pUUID, String pin) {
ThemeParkAudio.getInstance().getLogger().info("Checking pin " + pin + " for " + pUUID);
if (pUUID == null || pin == null || pin.isEmpty()) {
return false;
}
pins.forEach((uuid, p) -> {
if (pUUID.equals(uuid)) {
ThemeParkAudio.getInstance().getLogger().info("Pin " + p + " for " + pUUID);
}
});
return pins.containsKey(pUUID) && pin.equals(pins.get(pUUID));
}

View file

@ -4,11 +4,9 @@ import com.sk89q.worldedit.IncompleteRegionException;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.regions.Polygonal2DRegion;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.domains.DefaultDomain;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.flags.Flags;
@ -25,7 +23,6 @@ import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList;
import java.util.List;
@ -44,27 +41,6 @@ import java.util.UUID;
@UtilityClass
public class WGManager {
private static WorldGuardPlugin wgp;
private static WorldEditPlugin wep;
public static boolean hasWorldGuard() {
return wgp != null;
}
public static boolean hasWorldEdit() {
return wep != null;
}
public static boolean setWorldGuard(Plugin plugin) {
wgp = (WorldGuardPlugin) plugin;
return true;
}
public static boolean setWorldEdit(Plugin plugin) {
wep = (WorldEditPlugin) plugin;
return true;
}
public static ProtectedRegion createRegion(Player p, String id) throws StorageException {
LocalSession l = WorldEdit.getInstance().getSessionManager().get(BukkitAdapter.adapt(p));
Region s;

View file

@ -37,7 +37,7 @@ public class Playlist {
* Start this playlist
*/
public void start() {
for (String URL : ThemeParkAudio.getInstance().getConfig().getStringList("RadioSongs")) {
for (String URL : ThemeParkAudio.getInstance().getConfig().getStringList("radioSongs")) {
addSong(URL);
}

View file

@ -1,11 +1,9 @@
package tech.sbdevelopment.themeparkaudio.socket;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import tech.sbdevelopment.themeparkaudio.api.AudioType;
import tech.sbdevelopment.themeparkaudio.api.events.AudioConnectionUpdateEvent;
import tech.sbdevelopment.themeparkaudio.managers.PinManager;
import tech.sbdevelopment.themeparkaudio.managers.WGManager;
import tech.sbdevelopment.themeparkaudio.socket.messages.AudioMessage;
import tech.sbdevelopment.themeparkaudio.socket.messages.AuthenticationMessage;
import tech.sbdevelopment.themeparkaudio.socket.messages.LightMessage;
@ -14,6 +12,7 @@ import org.bukkit.entity.Player;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.json.simple.JSONObject;
import tech.sbdevelopment.themeparkaudio.socket.messages.PingMessage;
import java.net.URI;
import java.net.URISyntaxException;
@ -97,7 +96,9 @@ public class Client {
AudioConnectionUpdateEvent event = new AudioConnectionUpdateEvent(p, true);
Bukkit.getPluginManager().callEvent(event);
List<String> regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).toList();
if (ThemeParkAudio.isRegionSupport()) {
List<String> regions = tech.sbdevelopment.themeparkaudio.managers.WGManager.getRegionsIn(p.getLocation()).stream().map(com.sk89q.worldguard.protection.regions.ProtectedRegion::getId).toList();
Set<String> list = ThemeParkAudio.getInstance().getConfig().getConfigurationSection("regions.audio").getKeys(false);
Optional<String> regionName = regions.stream().filter(list::contains).findFirst();
regionName.ifPresent(name -> {
@ -114,6 +115,7 @@ public class Client {
}
});
}
}
AuthenticationMessage.of(verified).send(pUUID);
} else if (str.equals("DISCONNECTED")) {
@ -147,7 +149,7 @@ public class Client {
if (this.taskID == 0) {
this.taskID = Bukkit.getScheduler().runTaskTimerAsynchronously(ThemeParkAudio.getInstance(), () -> {
if (Client.this.wsc != null && Client.this.wsc.isOpen()) {
Client.this.wsc.send("__PING__");
PingMessage.of().sendService();
} else {
if (Client.this.wsc != null) {
Client.this.wsc.closeConnection(404, "Disconnected from socket");
@ -188,6 +190,10 @@ public class Client {
}
}
public String getAudioUrl(UUID pUUID) {
return this.url;
}
public void sendData(JSONObject json) {
if (this.wsc != null && this.wsc.isOpen()) {
this.wsc.send(json.toJSONString());

View file

@ -1,6 +1,7 @@
package tech.sbdevelopment.themeparkaudio.socket.messages;
import lombok.Getter;
import org.bukkit.entity.Player;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
@ -19,6 +20,10 @@ public abstract class AbstractMessage {
this.task = task;
}
public void sendService() {
send(null, null);
}
public void send(UUID uuid) {
send(List.of(uuid), null);
}
@ -31,14 +36,19 @@ public abstract class AbstractMessage {
send(Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).toList(), filter);
}
public void send(List<UUID> uuids, @Nullable Function<UUID, Boolean> filter) {
public void broadcastSelection(@Nullable List<Player> players, @Nullable Function<UUID, Boolean> filter) {
send(players.stream().map(Entity::getUniqueId).toList(), filter);
}
public void send(@Nullable List<UUID> uuids, @Nullable Function<UUID, Boolean> filter) {
JSONObject data = new JSONObject();
data.put("task", getTask());
data.put("task", getTask().name().toUpperCase());
JSONObject extendData = extendJson();
if (extendData != null) {
data.putAll(extendData);
}
if (uuids != null && !uuids.isEmpty()) {
for (UUID uuid : uuids) {
if (filter == null || filter.apply(uuid)) {
data.put("uuid", uuid.toString().replace("-", ""));
@ -46,6 +56,7 @@ public abstract class AbstractMessage {
}
}
}
}
protected abstract JSONObject extendJson();
}

View file

@ -46,8 +46,11 @@ public class LightMessage extends AbstractMessage {
@Override
protected JSONObject extendJson() {
JSONObject data = new JSONObject();
data.put("rgbw", r + "_" + g + "_" + b + "_" + w);
data.put("region", region);
data.put("r", r);
data.put("g", g);
data.put("b", b);
data.put("w", w);
data.put("region", region.name().toUpperCase());
data.put("brightness", brightness);
return data;
}

View file

@ -7,6 +7,10 @@ public class LogoutMessage extends AbstractMessage {
super(MessageTask.LOGOUT);
}
public static LogoutMessage of() {
return new LogoutMessage();
}
@Override
protected JSONObject extendJson() {
return null;

View file

@ -1,5 +1,5 @@
package tech.sbdevelopment.themeparkaudio.socket.messages;
public enum MessageTask {
AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO
AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO, PING, STOP
}

View file

@ -0,0 +1,18 @@
package tech.sbdevelopment.themeparkaudio.socket.messages;
import org.json.simple.JSONObject;
public class PingMessage extends AbstractMessage {
public PingMessage() {
super(MessageTask.PING);
}
public static PingMessage of() {
return new PingMessage();
}
@Override
protected JSONObject extendJson() {
return null;
}
}

View file

@ -1,13 +1,18 @@
package tech.sbdevelopment.themeparkaudio.socket.messages;
import tech.sbdevelopment.themeparkaudio.api.AudioType;
import org.json.simple.JSONObject;
public class StopAudioMessage extends AudioMessage {
public StopAudioMessage(AudioType type) {
super(type, "", null, null);
public class StopAudioMessage extends AbstractMessage {
public StopAudioMessage() {
super(MessageTask.STOP);
}
public static StopAudioMessage of(AudioType type) {
return new StopAudioMessage(type);
public static StopAudioMessage of() {
return new StopAudioMessage();
}
@Override
protected JSONObject extendJson() {
return null;
}
}

View file

@ -1,6 +1,7 @@
package tech.sbdevelopment.themeparkaudio.utils;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import tech.sbdevelopment.themeparkaudio.ThemeParkAudio;
import tech.sbdevelopment.themeparkaudio.managers.WGManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -34,7 +35,7 @@ public class SpigotPlayerSelector {
//get Location
Location standPoint = getLocation(commandSender);
if (getArgument("r").length() != 0) {
if (!getArgument("r").isEmpty()) {
int radius = Integer.parseInt(getArgument("r"));
Player nearest = Bukkit.getOnlinePlayers().stream()
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
@ -44,7 +45,7 @@ public class SpigotPlayerSelector {
players.add(nearest);
}
if (getArgument("distance").length() != 0) {
if (!getArgument("distance").isEmpty()) {
int distance = Integer.parseInt(getArgument("distance"));
Player nearest = Bukkit.getOnlinePlayers().stream()
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
@ -62,7 +63,12 @@ public class SpigotPlayerSelector {
//everyone
Location standPoint = getLocation(commandSender);
if (getArgument("region").length() != 0) {
if (!getArgument("region").isEmpty()) {
if (!ThemeParkAudio.isRegionSupport()) {
commandSender.sendMessage("Region support is not available.");
return players;
}
String regionID = getArgument("region");
for (Player p : Bukkit.getOnlinePlayers()) {
ArrayList<ProtectedRegion> regions = WGManager.getRegionsIn(p.getLocation());
@ -70,22 +76,22 @@ public class SpigotPlayerSelector {
players.add(p);
}
}
} else if (getArgument("r").length() != 0) {
} else if (!getArgument("r").isEmpty()) {
int radius = Integer.parseInt(getArgument("r"));
players.addAll(Bukkit.getOnlinePlayers().stream()
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
.filter(player -> radius > player.getLocation().distance(standPoint))
.collect(Collectors.toList()));
} else if (getArgument("distance").length() != 0) {
.toList());
} else if (!getArgument("distance").isEmpty()) {
int distance = Integer.parseInt(getArgument("distance"));
players.addAll(Bukkit.getOnlinePlayers().stream()
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
.filter(player -> distance > player.getLocation().distance(standPoint))
.collect(Collectors.toList()));
.toList());
} else {
players.addAll(Bukkit.getOnlinePlayers().stream()
.filter(player -> player.getLocation().getWorld().getName().equals(standPoint.getWorld().getName()))
.collect(Collectors.toList()));
.toList());
}
} else if (selector.length() <= 16) {
//player
@ -113,7 +119,7 @@ public class SpigotPlayerSelector {
initialLocation = ((BlockCommandSender) commandSender).getBlock().getLocation();
}
if (!getArgument("x").equals("") && !getArgument("y").equals("") && !getArgument("z").equals("")) {
if (!getArgument("x").isEmpty() && !getArgument("y").isEmpty() && !getArgument("z").isEmpty()) {
try {
int x = Integer.parseInt(getArgument("x"));
int y = Integer.parseInt(getArgument("y"));
@ -129,19 +135,6 @@ public class SpigotPlayerSelector {
}
public String getArgument(String key) {
StringBuilder result = new StringBuilder();
String[] arguments = selector.split(key + "=");
if (arguments.length == 1) return "";
for (byte type : arguments[1].getBytes()) {
char element = (char) type;
if (element == ',' || element == ']') {
return result.toString();
} else {
result.append(element);
return HeadUtil.getArgument(selector, key);
}
}
return result.toString().replaceAll("\\.", "");
}
}

View file

@ -1,4 +1,7 @@
socketUrl: "ws://localhost:8080"
command: "tpaudio"
socketUrl: "wss://localhost:8080"
clientUrl: "https://localhost:8081"
radio: false
regions:
audio:
demo: https://www.mcthemeparks.com/musicupload/downloads/Berlin/kaad.mp3

View file

@ -2,7 +2,7 @@ name: ThemeParkAudio
version: ${project.version}
main: tech.sbdevelopment.themeparkaudio.ThemeParkAudio
api-version: 1.21
depend: [ WorldGuard, Train_Carts ]
softdepend: [ WorldGuard, Train_Carts ]
authors: [ SBDeveloper ]
description: Audio and light control from your Minecraft server!
website: https://sbdevelopment.tech