diff --git a/pom.xml b/pom.xml
index 5109c3d..69098a8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
tech.sbdevelopment
ThemeParkAudio
- 1.6
+ 1.0
jar
ThemeParkAudio
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/ThemeParkAudio.java b/src/main/java/tech/sbdevelopment/themeparkaudio/ThemeParkAudio.java
index 0d6ef33..9ddf868 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/ThemeParkAudio.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/ThemeParkAudio.java
@@ -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...");
- playlist = new 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;
- }
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java b/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java
index e6e6c67..0c96829 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java
@@ -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!");
}
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/listener/LogoutListener.java b/src/main/java/tech/sbdevelopment/themeparkaudio/listener/LogoutListener.java
index bd14c5f..5063748 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/listener/LogoutListener.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/listener/LogoutListener.java
@@ -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());
}
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/listener/WGListener.java b/src/main/java/tech/sbdevelopment/themeparkaudio/listener/WGListener.java
index c778a89..5a2a2a7 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/listener/WGListener.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/listener/WGListener.java
@@ -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());
}
}
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/managers/PinManager.java b/src/main/java/tech/sbdevelopment/themeparkaudio/managers/PinManager.java
index c26f5a6..8f37a0e 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/managers/PinManager.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/managers/PinManager.java
@@ -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));
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/managers/WGManager.java b/src/main/java/tech/sbdevelopment/themeparkaudio/managers/WGManager.java
index 6a16369..42b484a 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/managers/WGManager.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/managers/WGManager.java
@@ -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;
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/radio/Playlist.java b/src/main/java/tech/sbdevelopment/themeparkaudio/radio/Playlist.java
index 34b15b1..5ce0799 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/radio/Playlist.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/radio/Playlist.java
@@ -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);
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/Client.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/Client.java
index 69aed5e..8a16018 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/Client.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/Client.java
@@ -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,22 +96,25 @@ public class Client {
AudioConnectionUpdateEvent event = new AudioConnectionUpdateEvent(p, true);
Bukkit.getPluginManager().callEvent(event);
- List regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).toList();
- Set list = ThemeParkAudio.getInstance().getConfig().getConfigurationSection("regions.audio").getKeys(false);
- Optional regionName = regions.stream().filter(list::contains).findFirst();
- regionName.ifPresent(name -> {
- String regionURL = ThemeParkAudio.getInstance().getConfig().getString("regions.audio." + name);
- AudioMessage.of(AudioType.MUSIC, regionURL).send(pUUID);
- });
+ if (ThemeParkAudio.isRegionSupport()) {
+ List regions = tech.sbdevelopment.themeparkaudio.managers.WGManager.getRegionsIn(p.getLocation()).stream().map(com.sk89q.worldguard.protection.regions.ProtectedRegion::getId).toList();
- Set list2 = ThemeParkAudio.getInstance().getConfig().getConfigurationSection("regions.light").getKeys(false);
- Optional regionName2 = regions.stream().filter(list2::contains).findFirst();
- regionName2.ifPresent(name -> {
- String configData = ThemeParkAudio.getInstance().getConfig().getString("regions.light." + name);
- if (configData != null) {
- LightMessage.of(configData).send(pUUID);
- }
- });
+ Set list = ThemeParkAudio.getInstance().getConfig().getConfigurationSection("regions.audio").getKeys(false);
+ Optional regionName = regions.stream().filter(list::contains).findFirst();
+ regionName.ifPresent(name -> {
+ String regionURL = ThemeParkAudio.getInstance().getConfig().getString("regions.audio." + name);
+ AudioMessage.of(AudioType.MUSIC, regionURL).send(pUUID);
+ });
+
+ Set list2 = ThemeParkAudio.getInstance().getConfig().getConfigurationSection("regions.light").getKeys(false);
+ Optional regionName2 = regions.stream().filter(list2::contains).findFirst();
+ regionName2.ifPresent(name -> {
+ String configData = ThemeParkAudio.getInstance().getConfig().getString("regions.light." + name);
+ if (configData != null) {
+ LightMessage.of(configData).send(pUUID);
+ }
+ });
+ }
}
AuthenticationMessage.of(verified).send(pUUID);
@@ -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());
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/AbstractMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/AbstractMessage.java
index a288898..59f6c5a 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/AbstractMessage.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/AbstractMessage.java
@@ -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,18 +36,24 @@ public abstract class AbstractMessage {
send(Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).toList(), filter);
}
- public void send(List uuids, @Nullable Function filter) {
+ public void broadcastSelection(@Nullable List players, @Nullable Function filter) {
+ send(players.stream().map(Entity::getUniqueId).toList(), filter);
+ }
+
+ public void send(@Nullable List uuids, @Nullable Function filter) {
JSONObject data = new JSONObject();
- data.put("task", getTask());
+ data.put("task", getTask().name().toUpperCase());
JSONObject extendData = extendJson();
if (extendData != null) {
data.putAll(extendData);
}
- for (UUID uuid : uuids) {
- if (filter == null || filter.apply(uuid)) {
- data.put("uuid", uuid.toString().replace("-", ""));
- ThemeParkAudio.getClient().sendData(data);
+ if (uuids != null && !uuids.isEmpty()) {
+ for (UUID uuid : uuids) {
+ if (filter == null || filter.apply(uuid)) {
+ data.put("uuid", uuid.toString().replace("-", ""));
+ ThemeParkAudio.getClient().sendData(data);
+ }
}
}
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LightMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LightMessage.java
index 57839b5..8c3dff9 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LightMessage.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LightMessage.java
@@ -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;
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LogoutMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LogoutMessage.java
index d741cb7..44d7cbb 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LogoutMessage.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/LogoutMessage.java
@@ -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;
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java
index 093cf02..04987e8 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java
@@ -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
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/PingMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/PingMessage.java
new file mode 100644
index 0000000..4f8c76b
--- /dev/null
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/PingMessage.java
@@ -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;
+ }
+}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/StopAudioMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/StopAudioMessage.java
index 3b0eb94..3319d37 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/StopAudioMessage.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/StopAudioMessage.java
@@ -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;
}
}
diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/utils/SpigotPlayerSelector.java b/src/main/java/tech/sbdevelopment/themeparkaudio/utils/SpigotPlayerSelector.java
index 89e22c6..9dc05da 100644
--- a/src/main/java/tech/sbdevelopment/themeparkaudio/utils/SpigotPlayerSelector.java
+++ b/src/main/java/tech/sbdevelopment/themeparkaudio/utils/SpigotPlayerSelector.java
@@ -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 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 result.toString().replaceAll("\\.", "");
+ return HeadUtil.getArgument(selector, key);
}
-
}
\ No newline at end of file
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index a8f4aed..ad2e595 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -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
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 9bdd76d..0ce073f 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -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