diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml
new file mode 100644
index 0000000..80ea26e
--- /dev/null
+++ b/.forgejo/workflows/build.yaml
@@ -0,0 +1,29 @@
+name: Java CI
+on: [push]
+
+jobs:
+ build:
+ name: Build
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: https://gitea.com/actions/checkout@v4
+
+ - name: Set up JDK 21
+ uses: https://gitea.com/actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: 21
+
+ - name: Set up Maven
+ uses: https://gitea.com/actions/setup-maven@v5
+
+ - name: Build with Maven
+ run: mvn -B package --file pom.xml
+
+ - name: Upload build artifacts
+ uses: https://gitea.com/actions/upload-artifact@v3
+ with:
+ name: ThemeParkAudio
+ path: target
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 5b06320..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# To get started with Dependabot version updates, you'll need to specify which
-# package ecosystems to update and where the package manifests are located.
-# Please see the documentation for all configuration options:
-# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
-
-version: 2
-updates:
- - package-ecosystem: "maven" # See documentation for possible values
- directory: "/" # Location of package manifests
- schedule:
- interval: "daily"
diff --git a/README.md b/README.md
index 21f0a9d..2bc4190 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,6 @@
-# McThemeParks Audio
+# ThemePark Audio Plugin
-This repository contains the official audio plugin of McThemeParks.
-This plugin contains all the audio functions for the server.
+The ThemePark Audio Plugin is a plugin for your for ThemePark Minecraft server that allows you to play audio files and control the lights of players from in the server.
## License
diff --git a/pom.xml b/pom.xml
index e7bdde1..c17df63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,18 +4,18 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- me.mctp
- MCTPAudio
- 1.5-SNAPSHOT
+ tech.sbdevelopment
+ ThemeParkAudio
+ 1.6
jar
- MCTPAudio
+ ThemeParkAudio
- The audio plugin of McThemeParks!
+ Audio and light control via your Minecraft server!
UTF-8
- https://mcthemeparks.com
+ https://sbdevelopment.tech/
@@ -37,7 +37,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.13.0
+ 3.14.0
21
@@ -61,11 +61,11 @@
co.aikar.commands
- nl.sbdeveloper.mctpaudio.libs.acf
+ tech.sbdevelopment.ThemeParkAudio.libs.acf
co.aikar.locales
- nl.sbdeveloper.mctpaudio.libs.locales
+ tech.sbdevelopment.ThemeParkAudio.libs.locales
@@ -104,19 +104,19 @@
org.spigotmc
spigot-api
- 1.21.1-R0.1-SNAPSHOT
+ 1.21.5-R0.1-SNAPSHOT
provided
org.bukkit
craftbukkit
- 1.21.1-R0.1-SNAPSHOT
+ 1.21.5-R0.1-SNAPSHOT
provided
org.java-websocket
Java-WebSocket
- 1.5.7
+ 1.6.0
com.mpatric
@@ -144,13 +144,19 @@
com.bergerkiller.bukkit
BKCommonLib
- 1.21.1-v1
+ 1.21.4-v1-SNAPSHOT
provided
com.bergerkiller.bukkit
TrainCarts
- 1.21.1-v1
+ 1.21.4-v1-SNAPSHOT
+ provided
+
+
+ org.projectlombok
+ lombok
+ 1.18.38
provided
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/MCTPAudio.java b/src/main/java/nl/sbdeveloper/mctpaudio/ThemeParkAudio.java
similarity index 50%
rename from src/main/java/nl/sbdeveloper/mctpaudio/MCTPAudio.java
rename to src/main/java/nl/sbdeveloper/mctpaudio/ThemeParkAudio.java
index 4f72a24..8a3da09 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/MCTPAudio.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/ThemeParkAudio.java
@@ -1,7 +1,8 @@
package nl.sbdeveloper.mctpaudio;
import co.aikar.commands.PaperCommandManager;
-import nl.sbdeveloper.mctpaudio.commands.MCTPAudioCMD;
+import lombok.Getter;
+import nl.sbdeveloper.mctpaudio.commands.TPAudioCMD;
import nl.sbdeveloper.mctpaudio.listener.LogoutListener;
import nl.sbdeveloper.mctpaudio.listener.WGListener;
import nl.sbdeveloper.mctpaudio.managers.WGManager;
@@ -11,59 +12,56 @@ import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
-public final class MCTPAudio extends JavaPlugin {
+public final class ThemeParkAudio extends JavaPlugin {
+ @Getter
private static Plugin instance;
+ @Getter
private static PaperCommandManager commandManager;
+ @Getter
private static Client client;
+
+ @Getter
private static Playlist playlist;
public void onEnable() {
- Bukkit.getLogger().info("[MCTPAudio] Loading...");
+ Bukkit.getLogger().info("[ThemeParkAudio] Loading...");
if (!setupPlugins()) {
- Bukkit.getLogger().severe("[MCTPAudio] WorldGuard not found! Disabling...");
+ Bukkit.getLogger().severe("[ThemeParkAudio] WorldGuard not found! Disabling...");
getServer().getPluginManager().disablePlugin(this);
return;
}
instance = this;
- getConfig().addDefault("Regions.demosound", "https://www.mcthemeparks.com/musicupload/downloads/Berlin/kaad.mp3");
- getConfig().addDefault("HueRegions.demosound", "255_0_0_254");
getConfig().options().copyDefaults(true);
- saveConfig();
+ saveDefaultConfig();
- Bukkit.getLogger().info("[MCTPAudio] Connecting with socket...");
- client = new Client("ws://116.203.56.13:25564");
+ Bukkit.getLogger().info("[ThemeParkAudio] Connecting with socket...");
+ client = new Client(getConfig().getString("socketUrl"));
client.connect();
- Bukkit.getLogger().info("[MCTPAudio] Loading commands and events...");
+ Bukkit.getLogger().info("[ThemeParkAudio] Loading commands and events...");
commandManager = new PaperCommandManager(this);
commandManager.enableUnstableAPI("help");
- commandManager.registerCommand(new MCTPAudioCMD());
+ commandManager.registerCommand(new TPAudioCMD());
Bukkit.getPluginManager().registerEvents(new WGListener(), this);
Bukkit.getPluginManager().registerEvents(new LogoutListener(), this);
- Bukkit.getLogger().info("[MCTPAudio] Loading playlist...");
+ Bukkit.getLogger().info("[ThemeParkAudio] Loading playlist...");
playlist = new Playlist();
- Bukkit.getLogger().info("[MCTPAudio] Plugin is enabled!");
+ Bukkit.getLogger().info("[ThemeParkAudio] Plugin is enabled!");
}
public void onDisable() {
client.disconnect();
instance = null;
- Bukkit.getLogger().info("[MCTPAudio] Plugin is disabled!");
+ Bukkit.getLogger().info("[ThemeParkAudio] Plugin is disabled!");
}
private boolean setupPlugins() {
@@ -73,20 +71,4 @@ public final class MCTPAudio extends JavaPlugin {
}
return false;
}
-
- public static Plugin getPlugin() {
- return instance;
- }
-
- public static Client getClient() {
- return client;
- }
-
- public static Playlist getPlaylist() {
- return playlist;
- }
-
- public static PaperCommandManager getCommandManager() {
- return commandManager;
- }
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/api/AudioType.java b/src/main/java/nl/sbdeveloper/mctpaudio/api/AudioType.java
index effe790..c21cb05 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/api/AudioType.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/api/AudioType.java
@@ -1,11 +1,15 @@
package nl.sbdeveloper.mctpaudio.api;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
+import nl.sbdeveloper.mctpaudio.socket.messages.MessageTask;
public enum AudioType {
- MUSIC, SFX, RADIO
+ MUSIC, SFX, RADIO;
+
+ public MessageTask toMessageTask() {
+ return switch (this) {
+ case MUSIC -> MessageTask.MUSIC;
+ case SFX -> MessageTask.SFX;
+ case RADIO -> MessageTask.RADIO;
+ };
+ }
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/api/HueType.java b/src/main/java/nl/sbdeveloper/mctpaudio/api/HueType.java
deleted file mode 100644
index a28a968..0000000
--- a/src/main/java/nl/sbdeveloper/mctpaudio/api/HueType.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package nl.sbdeveloper.mctpaudio.api;
-
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
-public enum HueType {
- LEFT, MID, RIGHT, ALL
-}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/api/LightRegion.java b/src/main/java/nl/sbdeveloper/mctpaudio/api/LightRegion.java
new file mode 100644
index 0000000..4693215
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/api/LightRegion.java
@@ -0,0 +1,5 @@
+package nl.sbdeveloper.mctpaudio.api;
+
+public enum LightRegion {
+ LEFT, MID, RIGHT, ALL
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/api/events/AudioConnectionUpdateEvent.java b/src/main/java/nl/sbdeveloper/mctpaudio/api/events/AudioConnectionUpdateEvent.java
index 258f64c..206e41a 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/api/events/AudioConnectionUpdateEvent.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/api/events/AudioConnectionUpdateEvent.java
@@ -1,20 +1,17 @@
package nl.sbdeveloper.mctpaudio.api.events;
+import lombok.Getter;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
public class AudioConnectionUpdateEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();
+ @Getter
private final Player player;
+ @Getter
private final boolean connected;
private boolean cancelled = false;
@@ -25,14 +22,6 @@ public class AudioConnectionUpdateEvent extends Event implements Cancellable {
this.connected = connected;
}
- public Player getPlayer() {
- return player;
- }
-
- public boolean isConnected() {
- return connected;
- }
-
@NotNull
@Override
public HandlerList getHandlers() {
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/api/maps/SongList.java b/src/main/java/nl/sbdeveloper/mctpaudio/api/maps/SongList.java
index cfd3cff..04a4bd8 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/api/maps/SongList.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/api/maps/SongList.java
@@ -3,12 +3,6 @@ package nl.sbdeveloper.mctpaudio.api.maps;
import java.util.ArrayList;
import java.util.Random;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
/**
* An {@link ArrayList} with shuffle support.
*
@@ -34,7 +28,7 @@ public class SongList extends ArrayList {
*/
public E getRandom() {
int size = size();
- if (size <= 0) return null;
+ if (size == 0) return null;
return get(r.nextInt(size()));
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/commands/MCTPAudioCMD.java b/src/main/java/nl/sbdeveloper/mctpaudio/commands/TPAudioCMD.java
similarity index 64%
rename from src/main/java/nl/sbdeveloper/mctpaudio/commands/MCTPAudioCMD.java
rename to src/main/java/nl/sbdeveloper/mctpaudio/commands/TPAudioCMD.java
index ebaa0d4..7586c1a 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/commands/MCTPAudioCMD.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/commands/TPAudioCMD.java
@@ -3,9 +3,9 @@ package nl.sbdeveloper.mctpaudio.commands;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.CommandHelp;
import co.aikar.commands.annotation.*;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
import nl.sbdeveloper.mctpaudio.api.AudioType;
-import nl.sbdeveloper.mctpaudio.api.HueType;
+import nl.sbdeveloper.mctpaudio.api.LightRegion;
import nl.sbdeveloper.mctpaudio.listener.PlayInRegionHandler;
import nl.sbdeveloper.mctpaudio.managers.PinManager;
import nl.sbdeveloper.mctpaudio.utils.HeadUtil;
@@ -21,15 +21,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
-@CommandAlias("mctpaudio")
-@CommandPermission("mctp.audio")
-public class MCTPAudioCMD extends BaseCommand {
+@CommandAlias("tpaudio")
+@CommandPermission("tpa.cmd")
+public class TPAudioCMD extends BaseCommand {
@Default
@HelpCommand
public void onHelp(CommandSender sender, CommandHelp help) {
@@ -39,30 +33,30 @@ public class MCTPAudioCMD extends BaseCommand {
@Subcommand("toggleradio")
@Description("")
public void toggleRadio(CommandSender sender) {
- if (MCTPAudio.getPlaylist().isRunning()) {
- MCTPAudio.getPlaylist().stop();
- sender.sendMessage(ChatColor.GRAY + "De auto radio is stopgezet. Zodra het huidige nummer is afgelopen, gebeurt er niks meer.");
+ 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 {
- MCTPAudio.getPlaylist().start();
- sender.sendMessage(ChatColor.GRAY + "De auto radio is weer gestart.");
+ ThemeParkAudio.getPlaylist().start();
+ sender.sendMessage(ChatColor.GRAY + "De automatische radio is weer gestart.");
}
}
@Subcommand("addsong")
@Description("")
public void onAddSong(CommandSender sender, String url) {
- List urls = MCTPAudio.getPlugin().getConfig().getStringList("RadioSongs");
+ List urls = ThemeParkAudio.getPlugin().getConfig().getStringList("radioSongs");
urls.add(url);
- MCTPAudio.getPlugin().getConfig().set("RadioSongs", urls);
- MCTPAudio.getPlugin().saveConfig();
- MCTPAudio.getPlaylist().addSong(url);
- sender.sendMessage(ChatColor.GRAY + "Nummer toegevoegd aan de lijst.");
+ ThemeParkAudio.getPlugin().getConfig().set("radioSongs", urls);
+ ThemeParkAudio.getPlugin().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) {
- ArrayList players = new ArrayList<>();
+ List players = new ArrayList<>();
Player target = Bukkit.getPlayer(selector);
if (target != null) {
if (!PinManager.hasPin(target.getUniqueId())) {
@@ -94,21 +88,21 @@ public class MCTPAudioCMD extends BaseCommand {
data.put("task", type.name());
data.put("path", url);
data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ ThemeParkAudio.getClient().sendData(data);
}
sender.sendMessage(ChatColor.GRAY + "Gestart met afspelen!");
}
- @Subcommand("hue")
+ @Subcommand("light")
@Description("")
- public void onHue(CommandSender sender, String selector, int r, int g, int b, HueType type, @Optional Integer brightness) {
- if (brightness != null && (brightness < 0 || brightness > 254)) {
- sender.sendMessage(ChatColor.GRAY.toString() + brightness + " is geen correcte brightness.");
+ 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;
}
- ArrayList players = new ArrayList<>();
+ List players = new ArrayList<>();
Player target = Bukkit.getPlayer(selector);
if (target != null) {
if (!PinManager.hasPin(target.getUniqueId())) {
@@ -125,11 +119,10 @@ public class MCTPAudioCMD extends BaseCommand {
//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 = r + "_" + g + "_" + b + "_" + type.name();
- if (brightness != null) data += "_" + brightness;
+ String data = brightness + "_" + r + "_" + g + "_" + b + "_" + w + "_" + region.name();
- MCTPAudio.getPlugin().getConfig().set("HueRegions." + regionID, data);
- MCTPAudio.getPlugin().saveConfig();
+ ThemeParkAudio.getPlugin().getConfig().set("regions.light." + regionID, data);
+ ThemeParkAudio.getPlugin().saveConfig();
}
JSONObject data;
@@ -138,39 +131,39 @@ public class MCTPAudioCMD extends BaseCommand {
if (!PinManager.hasPin(p.getUniqueId())) continue;
- data.put("task", "HUE");
- data.put("rgb", r + ":" + g + ":" + b);
- data.put("type", type.name());
- if (brightness != null) data.put("brightness", brightness);
+ 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("-", ""));
- MCTPAudio.getClient().sendData(data);
+ ThemeParkAudio.getClient().sendData(data);
}
- sender.sendMessage(ChatColor.GRAY + "Indien de speler(s) is/zijn verbonden met Philips Hue, is de kleur veranderd.");
+ sender.sendMessage(ChatColor.GRAY + "Kleuren aangepast!");
}
@Subcommand("setregion")
@Description("")
public void onSetRegion(CommandSender sender, String regionName, String url) {
- MCTPAudio.getPlugin().getConfig().set("Regions." + regionName, url);
- MCTPAudio.getPlugin().saveConfig();
+ ThemeParkAudio.getPlugin().getConfig().set("regions.audio." + regionName, url);
+ ThemeParkAudio.getPlugin().saveConfig();
sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu muziek afspelen.");
}
-// @Subcommand("sethueregion")
-// @Description("")
-// public void onSetHueRegion(CommandSender sender, String regionName, String url) {
-// MCTPAudio.getPlugin().getConfig().set("HueRegions." + regionName, url);
-// MCTPAudio.getPlugin().saveConfig();
-//
-// sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu licht aanpassen.");
-// }
+ @Subcommand("sethueregion")
+ @Description("")
+ public void onSetHueRegion(CommandSender sender, String regionName, String url) {
+ ThemeParkAudio.getPlugin().getConfig().set("regions.light." + regionName, url);
+ ThemeParkAudio.getPlugin().saveConfig();
+
+ sender.sendMessage(ChatColor.GRAY + "De region zal vanaf nu licht aanpassen.");
+ }
@Subcommand("stop")
@Description("")
public void onStop(CommandSender sender, String selector) {
- ArrayList players = new ArrayList<>();
+ List players = new ArrayList<>();
Player target = Bukkit.getPlayer(selector);
if (target != null) {
if (!PinManager.hasPin(target.getUniqueId())) {
@@ -192,7 +185,7 @@ public class MCTPAudioCMD extends BaseCommand {
data.put("task", "STOP");
data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ ThemeParkAudio.getClient().sendData(data);
}
sender.sendMessage(ChatColor.GRAY + "Gestopt met afspelen!");
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/listener/LogoutListener.java b/src/main/java/nl/sbdeveloper/mctpaudio/listener/LogoutListener.java
index 8757133..db39341 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/listener/LogoutListener.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/listener/LogoutListener.java
@@ -1,23 +1,17 @@
package nl.sbdeveloper.mctpaudio.listener;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.json.simple.JSONObject;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
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("-", ""));
- MCTPAudio.getClient().sendData(data);
+ ThemeParkAudio.getClient().sendData(data);
}
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/listener/PlayInRegionHandler.java b/src/main/java/nl/sbdeveloper/mctpaudio/listener/PlayInRegionHandler.java
index 4c43726..167e53d 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/listener/PlayInRegionHandler.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/listener/PlayInRegionHandler.java
@@ -5,30 +5,23 @@ import com.mpatric.mp3agic.UnsupportedTagException;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.raidstone.wgevents.events.RegionEnteredEvent;
import net.raidstone.wgevents.events.RegionLeftEvent;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
import nl.sbdeveloper.mctpaudio.api.AudioType;
import nl.sbdeveloper.mctpaudio.api.events.AudioConnectionUpdateEvent;
import nl.sbdeveloper.mctpaudio.managers.PinManager;
import nl.sbdeveloper.mctpaudio.managers.WGManager;
+import nl.sbdeveloper.mctpaudio.socket.messages.AudioMessage;
import nl.sbdeveloper.mctpaudio.utils.HeadUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitRunnable;
-import org.json.simple.JSONObject;
import java.io.IOException;
-import java.util.Iterator;
import java.util.List;
import java.util.UUID;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
/**
* This class handles playing numbers in a region.
* This will NOT be used for region much, only if you start playing music in a region with the @a[region=...] selector.
@@ -47,7 +40,7 @@ public class PlayInRegionHandler implements Listener {
this.players = players;
load();
- Bukkit.getPluginManager().registerEvents(this, MCTPAudio.getPlugin());
+ Bukkit.getPluginManager().registerEvents(this, ThemeParkAudio.getPlugin());
}
/**
@@ -71,34 +64,9 @@ public class PlayInRegionHandler implements Listener {
cancel();
}
}
- }.runTaskTimer(MCTPAudio.getPlugin(), 0L, 1L);
+ }.runTaskTimer(ThemeParkAudio.getPlugin(), 0L, 1L);
- Player p;
- JSONObject data;
- Iterator uuidS = players.iterator();
- while (uuidS.hasNext()) {
- p = Bukkit.getPlayer(uuidS.next());
- if (p == null || !PinManager.hasPin(p.getUniqueId())) {
- uuidS.remove();
- continue;
- }
-
- data = new JSONObject();
- data.put("task", AudioType.SFX.name());
- data.put("path", url);
- data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- data.put("play", false);
- MCTPAudio.getClient().sendData(data);
- }
-
- startForAll();
- }
-
- /**
- * Starts the song for every player.
- */
- private void startForAll() {
- players.forEach(this::start);
+ AudioMessage.of(AudioType.SFX, url, true).send(players, PinManager::hasPin);
}
private void start(UUID pUUID) {
@@ -109,20 +77,14 @@ public class PlayInRegionHandler implements Listener {
* Starts the song for a Player.
* @param pUUID The player to start it for.
*/
- private void start(UUID pUUID, int ms) {
+ private void start(UUID pUUID, int tick) {
if (!isListening) return;
Player p = Bukkit.getPlayer(pUUID);
if (p == null) return;
if (!PinManager.hasPin(p.getUniqueId())) return;
- JSONObject data = new JSONObject();
- data.put("task", AudioType.SFX.name());
- data.put("path", url);
- data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- data.put("play", true);
- data.put("at", ms);
- MCTPAudio.getClient().sendData(data);
+ AudioMessage.of(AudioType.SFX, url, true, tick * 50).send(pUUID);
}
/**
@@ -136,12 +98,7 @@ public class PlayInRegionHandler implements Listener {
if (p == null) return;
if (!PinManager.hasPin(p.getUniqueId())) return;
- JSONObject data = new JSONObject();
- data.put("task", AudioType.SFX.name());
- data.put("path", url);
- data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- data.put("play", false);
- MCTPAudio.getClient().sendData(data);
+ AudioMessage.of(AudioType.SFX, url, false).send(pUUID);
}
@EventHandler
@@ -151,7 +108,7 @@ public class PlayInRegionHandler implements Listener {
if (e.getRegionName().equals(region)) {
if (!players.contains(e.getPlayer().getUniqueId())) {
players.add(e.getPlayer().getUniqueId());
- start(e.getPlayer().getUniqueId(), getMs());
+ start(e.getPlayer().getUniqueId(), currentTick);
} else {
start(e.getPlayer().getUniqueId());
}
@@ -175,7 +132,7 @@ public class PlayInRegionHandler implements Listener {
if (regionsIn.stream().anyMatch(reg -> reg.getId().equals(region))) {
players.add(e.getPlayer().getUniqueId());
e.setCancelled(true);
- start(e.getPlayer().getUniqueId(), getMs());
+ start(e.getPlayer().getUniqueId(), currentTick);
}
} else {
if (!players.contains(e.getPlayer().getUniqueId())) return;
@@ -183,8 +140,4 @@ public class PlayInRegionHandler implements Listener {
players.remove(e.getPlayer().getUniqueId());
}
}
-
- private int getMs() {
- return Math.round(currentTick * 50);
- }
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/listener/WGListener.java b/src/main/java/nl/sbdeveloper/mctpaudio/listener/WGListener.java
index e98ac6e..d26b664 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/listener/WGListener.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/listener/WGListener.java
@@ -8,10 +8,13 @@ import com.bergerkiller.bukkit.tc.controller.MinecartMember;
import com.bergerkiller.bukkit.tc.controller.MinecartMemberStore;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.raidstone.wgevents.events.RegionsEnteredEvent;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
+import nl.sbdeveloper.mctpaudio.api.AudioType;
import nl.sbdeveloper.mctpaudio.managers.PinManager;
import nl.sbdeveloper.mctpaudio.managers.WGManager;
-import org.bukkit.Bukkit;
+import nl.sbdeveloper.mctpaudio.socket.messages.AudioMessage;
+import nl.sbdeveloper.mctpaudio.socket.messages.LightMessage;
+import nl.sbdeveloper.mctpaudio.socket.messages.StopAudioMessage;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
@@ -19,16 +22,8 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
-import org.json.simple.JSONObject;
import java.util.*;
-import java.util.stream.Collectors;
-
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
public class WGListener implements Listener {
/**
@@ -64,10 +59,10 @@ public class WGListener implements Listener {
if (from.getBlockX() != to.getBlockX() || from.getBlockY() != to.getBlockY() || from.getBlockZ() != to.getBlockZ()) {
if (!PinManager.hasPin(player.getUniqueId())) return;
- Set list = MCTPAudio.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
+ Set list = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.audio").getKeys(false);
- List fromRegions = WGManager.getRegionsIn(from).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
- List toRegions = WGManager.getRegionsIn(to).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
+ List fromRegions = WGManager.getRegionsIn(from).stream().map(ProtectedRegion::getId).toList();
+ List toRegions = WGManager.getRegionsIn(to).stream().map(ProtectedRegion::getId).toList();
if ((Collections.disjoint(list, fromRegions) && !Collections.disjoint(list, toRegions)) || (!Collections.disjoint(list, fromRegions) && !Collections.disjoint(list, toRegions))) {
//Walked in a region
@@ -91,8 +86,8 @@ public class WGListener implements Listener {
return; //Beide heeft een region, en dat is dezelfde.
if (name.isPresent() && name2.isPresent()) {
- String regionURL = MCTPAudio.getPlugin().getConfig().getString("Regions." + name.get());
- String regionURL2 = MCTPAudio.getPlugin().getConfig().getString("Regions." + name2.get());
+ String regionURL = ThemeParkAudio.getPlugin().getConfig().getString("regions.audio." + name.get());
+ String regionURL2 = ThemeParkAudio.getPlugin().getConfig().getString("regions.audio." + name2.get());
if (regionURL.equals(regionURL2))
return; //Beide heeft een region, niet dezelfde, maar wel met dezelfde muziek.
@@ -100,21 +95,13 @@ public class WGListener implements Listener {
}
Optional name = toRegions.stream().filter(list::contains).findFirst();
- if (!name.isPresent()) return;
- String regionURL = MCTPAudio.getPlugin().getConfig().getString("Regions." + name.get());
+ if (name.isEmpty()) return;
+ String regionURL = ThemeParkAudio.getPlugin().getConfig().getString("regions.audio." + name.get());
- JSONObject data = new JSONObject();
- data.put("task", "MUSIC");
- data.put("path", regionURL);
- data.put("uuid", player.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ AudioMessage.of(AudioType.MUSIC, regionURL).send(player.getUniqueId());
} else if (!Collections.disjoint(list, fromRegions) && Collections.disjoint(list, toRegions)) {
//Not in a region, stop...
- JSONObject data = new JSONObject();
- data.put("task", "MUSIC");
- data.put("path", "");
- data.put("uuid", player.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ StopAudioMessage.of(AudioType.MUSIC).send(player.getUniqueId());
}
}
}
@@ -126,34 +113,18 @@ public class WGListener implements Listener {
public void onRegionEnter(RegionsEnteredEvent e) {
if (e.getPlayer() == null) return;
- Set list2 = MCTPAudio.getPlugin().getConfig().getConfigurationSection("HueRegions").getKeys(false);
+ Set list2 = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.light").getKeys(false);
if (!Collections.disjoint(list2, e.getRegionsNames())) {
//One element is the same -> In a region
Optional name = e.getRegionsNames().stream().filter(list2::contains).findFirst();
- if (!name.isPresent()) return;
- String configData = MCTPAudio.getPlugin().getConfig().getString("HueRegions." + name.get());
+ if (name.isEmpty()) return;
+ String configData = ThemeParkAudio.getPlugin().getConfig().getString("regions.light." + name.get());
- if (configData == null) return;
- String[] configDataSplit = configData.split("_");
-
- int r = Integer.parseInt(configDataSplit[0]);
- int g = Integer.parseInt(configDataSplit[1]);
- int b = Integer.parseInt(configDataSplit[2]);
- String type = configDataSplit[3];
- Integer brightness = null;
- if (configDataSplit.length == 5) brightness = Integer.parseInt(configDataSplit[4]);
-
- if (!PinManager.hasPin(e.getPlayer().getUniqueId())) return;
-
- JSONObject data = new JSONObject();
- data.put("task", "HUE");
- data.put("rgb", r + ":" + g + ":" + b);
- data.put("type", type);
- if (brightness != null) data.put("brightness", brightness);
- data.put("uuid", e.getPlayer().getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ if (configData != null) {
+ LightMessage.of(configData).send(e.getPlayer().getUniqueId());
+ }
}
}
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/managers/PinManager.java b/src/main/java/nl/sbdeveloper/mctpaudio/managers/PinManager.java
index 188e16e..c3b7592 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/managers/PinManager.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/managers/PinManager.java
@@ -1,17 +1,9 @@
package nl.sbdeveloper.mctpaudio.managers;
-import org.bukkit.Bukkit;
-
import java.security.SecureRandom;
import java.util.UUID;
import java.util.WeakHashMap;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
public class PinManager {
private static final WeakHashMap pins = new WeakHashMap<>();
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/managers/WGManager.java b/src/main/java/nl/sbdeveloper/mctpaudio/managers/WGManager.java
index c8f0231..6e0d98c 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/managers/WGManager.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/managers/WGManager.java
@@ -19,6 +19,7 @@ import com.sk89q.worldguard.protection.managers.storage.StorageException;
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
import com.sk89q.worldguard.protection.regions.ProtectedPolygonalRegion;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
@@ -32,24 +33,19 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
/**
* WorldGuard class to make the usage of WorldGuard easy. This is the 1.14.x version!
- *
+ *
* Note that if you do use this in one of your projects, leave this notice.
* Please do credit me if you do use this in one of your projects.
*
* @author SBDeveloper [Fixed 1.13+ support]
*/
-public class WGManager {
- public static WorldGuardPlugin wgp;
- public static WorldEditPlugin wep;
+@UtilityClass
+public class WGManager {
+ private static WorldGuardPlugin wgp;
+ private static WorldEditPlugin wep;
public static boolean hasWorldGuard() {
return wgp != null;
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/radio/Playlist.java b/src/main/java/nl/sbdeveloper/mctpaudio/radio/Playlist.java
index 71cd325..d821ee5 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/radio/Playlist.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/radio/Playlist.java
@@ -2,30 +2,25 @@ package nl.sbdeveloper.mctpaudio.radio;
import com.mpatric.mp3agic.InvalidDataException;
import com.mpatric.mp3agic.UnsupportedTagException;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import lombok.Getter;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
+import nl.sbdeveloper.mctpaudio.api.AudioType;
import nl.sbdeveloper.mctpaudio.api.maps.SongList;
import nl.sbdeveloper.mctpaudio.managers.PinManager;
+import nl.sbdeveloper.mctpaudio.socket.messages.AudioMessage;
import nl.sbdeveloper.mctpaudio.utils.HeadUtil;
-import nl.sbdeveloper.mctpaudio.utils.MainUtil;
+import nl.sbdeveloper.mctpaudio.utils.DiscordUtil;
import nl.sbdeveloper.mctpaudio.utils.WebhookMessage;
import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
-import org.json.simple.JSONObject;
import java.awt.*;
import java.io.IOException;
-import java.util.Collections;
-
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
public class Playlist {
private final SongList playList = new SongList<>();
+ @Getter
private boolean running = false;
private BukkitTask currentTimer;
private int faultCounter = 0;
@@ -42,11 +37,11 @@ public class Playlist {
* Start this playlist
*/
public void start() {
- for (String URL : MCTPAudio.getPlugin().getConfig().getStringList("RadioSongs")) {
+ for (String URL : ThemeParkAudio.getPlugin().getConfig().getStringList("RadioSongs")) {
addSong(URL);
}
- Bukkit.getScheduler().runTaskAsynchronously(MCTPAudio.getPlugin(), this::nextSong);
+ Bukkit.getScheduler().runTaskAsynchronously(ThemeParkAudio.getPlugin(), this::nextSong);
running = true;
}
@@ -82,7 +77,7 @@ public class Playlist {
if (currentTimer != null) return; //A song is playing?
if (faultCounter > 4) {
- MCTPAudio.getPlugin(MCTPAudio.class).getLogger().severe("Detected to many IO errors! Stopping the radio...");
+ ThemeParkAudio.getPlugin(ThemeParkAudio.class).getLogger().severe("Detected to many IO errors! Stopping the radio...");
stop(); //FALLBACK! 4 errors occured.
return;
}
@@ -112,7 +107,7 @@ public class Playlist {
embed.setDescription("A song in the radio does not have MPEG headers. A song without headers cannot be played in the radio because the length cannot be determined. Please fix as soon as possible.\n\nClick on the title to go to the song.");
embed.setUrl(nextURL);
try {
- MainUtil.sendMessageDiscord(embed);
+ DiscordUtil.sendMessageDiscord(embed);
} catch (IOException e) {
e.printStackTrace();
}
@@ -131,7 +126,7 @@ public class Playlist {
embed.setDescription("A song in the radio does not have MPEG headers. A song without headers cannot be played in the radio because the length cannot be determined. Please fix as soon as possible.\n\nClick on the title to go to the song.");
embed.setUrl(nextURL);
try {
- MainUtil.sendMessageDiscord(embed);
+ DiscordUtil.sendMessageDiscord(embed);
} catch (IOException e) {
e.printStackTrace();
}
@@ -139,25 +134,14 @@ public class Playlist {
return;
}
- //Send to client
- JSONObject data;
- for (Player p : Bukkit.getOnlinePlayers()) {
- data = new JSONObject();
-
- if (!PinManager.hasPin(p.getUniqueId())) continue;
-
- data.put("task", "RADIO");
- data.put("path", nextURL);
- data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
- }
+ AudioMessage.of(AudioType.RADIO, nextURL).broadcast(PinManager::hasPin);
Bukkit.getLogger().info("Started song with duration: " + ticks / 20 + " sec.");
faultCounter = 0;
//And started timer, so that it starts a new song if the old one is done
- currentTimer = Bukkit.getScheduler().runTaskLaterAsynchronously(MCTPAudio.getPlugin(), () -> {
+ currentTimer = Bukkit.getScheduler().runTaskLaterAsynchronously(ThemeParkAudio.getPlugin(), () -> {
currentTimer = null;
nextSong();
}, ticks);
@@ -165,13 +149,4 @@ public class Playlist {
//And shuffle the playlist now
playList.shuffle();
}
-
- /**
- * Check if the playlist is running
- *
- * @return true if running
- */
- public boolean isRunning() {
- return running;
- }
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/Client.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/Client.java
index 940306b..7084fe9 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/socket/Client.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/Client.java
@@ -1,10 +1,14 @@
package nl.sbdeveloper.mctpaudio.socket;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
-import nl.sbdeveloper.mctpaudio.MCTPAudio;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
+import nl.sbdeveloper.mctpaudio.api.AudioType;
import nl.sbdeveloper.mctpaudio.api.events.AudioConnectionUpdateEvent;
import nl.sbdeveloper.mctpaudio.managers.PinManager;
import nl.sbdeveloper.mctpaudio.managers.WGManager;
+import nl.sbdeveloper.mctpaudio.socket.messages.AudioMessage;
+import nl.sbdeveloper.mctpaudio.socket.messages.AuthenticationMessage;
+import nl.sbdeveloper.mctpaudio.socket.messages.LightMessage;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.java_websocket.client.WebSocketClient;
@@ -19,12 +23,6 @@ import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
public class Client {
private final String url;
@@ -50,7 +48,7 @@ public class Client {
public void connect() {
if (!this.connected) {
this.connected = true;
- this.controlID = Bukkit.getScheduler().runTaskTimer(MCTPAudio.getPlugin(), () -> {
+ this.controlID = Bukkit.getScheduler().runTaskTimer(ThemeParkAudio.getPlugin(), () -> {
if (!this.connected) {
Bukkit.getScheduler().cancelTask(this.controlID);
this.controlID = 0;
@@ -100,25 +98,25 @@ public class Client {
AudioConnectionUpdateEvent event = new AudioConnectionUpdateEvent(p, true);
Bukkit.getPluginManager().callEvent(event);
- List regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
- Set list = MCTPAudio.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
+ List regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).toList();
+ Set list = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.audio").getKeys(false);
Optional regionName = regions.stream().filter(list::contains).findFirst();
regionName.ifPresent(name -> {
- String regionURL = MCTPAudio.getPlugin().getConfig().getString("Regions." + name);
+ String regionURL = ThemeParkAudio.getPlugin().getConfig().getString("regions.audio." + name);
+ AudioMessage.of(AudioType.MUSIC, regionURL).send(pUUID);
+ });
- JSONObject data = new JSONObject();
- data.put("task", "MUSIC");
- data.put("path", regionURL);
- data.put("uuid", p.getUniqueId().toString().replace("-", ""));
- MCTPAudio.getClient().sendData(data);
+ Set list2 = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.light").getKeys(false);
+ Optional regionName2 = regions.stream().filter(list2::contains).findFirst();
+ regionName2.ifPresent(name -> {
+ String configData = ThemeParkAudio.getPlugin().getConfig().getString("regions.light." + name);
+ if (configData != null) {
+ LightMessage.of(configData).send(pUUID);
+ }
});
}
- JSONObject reply = new JSONObject();
- reply.put("task", "AUTHENTICATION");
- reply.put("verified", verified);
- reply.put("uuid", uuid);
- this.send(reply.toJSONString());
+ AuthenticationMessage.of(verified).send(pUUID);
} else if (str.equals("DISCONNECTED")) {
String uuid = JSONUtil.getValue(json, "uuid");
if (uuid == null || uuid.isEmpty()) return;
@@ -148,7 +146,7 @@ public class Client {
this.wsc.connect();
if (this.taskID == 0) {
- this.taskID = Bukkit.getScheduler().runTaskTimerAsynchronously(MCTPAudio.getPlugin(), () -> {
+ this.taskID = Bukkit.getScheduler().runTaskTimerAsynchronously(ThemeParkAudio.getPlugin(), () -> {
if (Client.this.wsc != null && Client.this.wsc.isOpen()) {
Client.this.wsc.send("__PING__");
} else {
@@ -191,9 +189,9 @@ public class Client {
}
}
- public void sendData(JSONObject object) {
- if (this.wsc != null && this.wsc.isOpen() && object != null && object.toJSONString() != null) {
- this.wsc.send(object.toJSONString());
+ public void sendData(JSONObject json) {
+ if (this.wsc != null && this.wsc.isOpen()) {
+ this.wsc.send(json.toJSONString());
}
}
}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/JSONUtil.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/JSONUtil.java
index 831b518..6aa982c 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/socket/JSONUtil.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/JSONUtil.java
@@ -1,17 +1,13 @@
package nl.sbdeveloper.mctpaudio.socket;
+import lombok.experimental.UtilityClass;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.util.UUID;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
+@UtilityClass
public class JSONUtil {
public static JSONObject parse(String string) {
try {
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AbstractMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AbstractMessage.java
new file mode 100644
index 0000000..7450c26
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AbstractMessage.java
@@ -0,0 +1,51 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import lombok.Getter;
+import nl.sbdeveloper.mctpaudio.ThemeParkAudio;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Entity;
+import org.jetbrains.annotations.Nullable;
+import org.json.simple.JSONObject;
+
+import java.util.List;
+import java.util.UUID;
+import java.util.function.Function;
+
+@Getter
+public abstract class AbstractMessage {
+ private final MessageTask task;
+
+ public AbstractMessage(MessageTask task) {
+ this.task = task;
+ }
+
+ public void send(UUID uuid) {
+ send(List.of(uuid), null);
+ }
+
+ public void send(List uuids) {
+ send(uuids, null);
+ }
+
+ public void broadcast(@Nullable Function filter) {
+ send(Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).toList(), filter);
+ }
+
+ public void send(List uuids, @Nullable Function filter) {
+ JSONObject data = new JSONObject();
+ data.put("task", getTask());
+ 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);
+ }
+ }
+ }
+
+ protected abstract JSONObject extendJson();
+}
\ No newline at end of file
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AudioMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AudioMessage.java
new file mode 100644
index 0000000..74ab217
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AudioMessage.java
@@ -0,0 +1,40 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import lombok.Getter;
+import nl.sbdeveloper.mctpaudio.api.AudioType;
+import org.json.simple.JSONObject;
+
+@Getter
+public class AudioMessage extends AbstractMessage {
+ private final String path;
+ private final Boolean play;
+ private final Integer at;
+
+ protected AudioMessage(AudioType type, String path, Boolean play, Integer at) {
+ super(type.toMessageTask());
+ this.path = path;
+ this.play = play;
+ this.at = at;
+ }
+
+ public static AudioMessage of(AudioType type, String path) {
+ return new AudioMessage(type, path, null, null);
+ }
+
+ public static AudioMessage of(AudioType type, String path, boolean play) {
+ return new AudioMessage(type, path, play, null);
+ }
+
+ public static AudioMessage of(AudioType type, String path, boolean play, int at) {
+ return new AudioMessage(type, path, play, at);
+ }
+
+ @Override
+ protected JSONObject extendJson() {
+ JSONObject data = new JSONObject();
+ data.put("path", path);
+ if (play != null) data.put("play", play);
+ if (at != null) data.put("at", at);
+ return data;
+ }
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AuthenticationMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AuthenticationMessage.java
new file mode 100644
index 0000000..7b36b00
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/AuthenticationMessage.java
@@ -0,0 +1,25 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import lombok.Getter;
+import org.json.simple.JSONObject;
+
+@Getter
+public class AuthenticationMessage extends AbstractMessage {
+ private final boolean verified;
+
+ private AuthenticationMessage(boolean verified) {
+ super(MessageTask.AUTHENTICATION);
+ this.verified = verified;
+ }
+
+ public static AuthenticationMessage of(boolean verified) {
+ return new AuthenticationMessage(verified);
+ }
+
+ @Override
+ protected JSONObject extendJson() {
+ JSONObject data = new JSONObject();
+ data.put("verified", verified);
+ return data;
+ }
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LightMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LightMessage.java
new file mode 100644
index 0000000..a48760a
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LightMessage.java
@@ -0,0 +1,54 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import nl.sbdeveloper.mctpaudio.api.LightRegion;
+import org.jetbrains.annotations.NotNull;
+import org.json.simple.JSONObject;
+
+public class LightMessage extends AbstractMessage {
+ private final int brightness;
+ private final int r, g, b, w;
+ private final LightRegion region;
+
+ private LightMessage(int brightness, int r, int g, int b, int w, LightRegion region) {
+ super(MessageTask.LIGHT);
+ this.brightness = brightness;
+ this.r = r;
+ this.g = g;
+ this.b = b;
+ this.w = w;
+ this.region = region;
+ }
+
+ public static LightMessage of(int brightness, int r, int g, int b, int w, LightRegion region) {
+ return new LightMessage(brightness, r, g, b, w, region);
+ }
+
+ private LightMessage(@NotNull String configData) {
+ super(MessageTask.LIGHT);
+
+ String[] configDataSplit = configData.split("_");
+ if (configDataSplit.length != 6) {
+ throw new IllegalArgumentException("Invalid config data: " + configData);
+ }
+
+ this.brightness = Integer.parseInt(configDataSplit[0]);
+ this.r = Integer.parseInt(configDataSplit[1]);
+ this.g = Integer.parseInt(configDataSplit[2]);
+ this.b = Integer.parseInt(configDataSplit[3]);
+ this.w = Integer.parseInt(configDataSplit[4]);
+ this.region = LightRegion.valueOf(configDataSplit[5]);
+ }
+
+ public static LightMessage of(@NotNull String configData) {
+ return new LightMessage(configData);
+ }
+
+ @Override
+ protected JSONObject extendJson() {
+ JSONObject data = new JSONObject();
+ data.put("rgbw", r + "_" + g + "_" + b + "_" + w);
+ data.put("region", region);
+ data.put("brightness", brightness);
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LogoutMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LogoutMessage.java
new file mode 100644
index 0000000..c5236ba
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/LogoutMessage.java
@@ -0,0 +1,14 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import org.json.simple.JSONObject;
+
+public class LogoutMessage extends AbstractMessage {
+ public LogoutMessage() {
+ super(MessageTask.LOGOUT);
+ }
+
+ @Override
+ protected JSONObject extendJson() {
+ return null;
+ }
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/MessageTask.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/MessageTask.java
new file mode 100644
index 0000000..8ce3487
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/MessageTask.java
@@ -0,0 +1,5 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+public enum MessageTask {
+ AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/StopAudioMessage.java b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/StopAudioMessage.java
new file mode 100644
index 0000000..e7e1320
--- /dev/null
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/socket/messages/StopAudioMessage.java
@@ -0,0 +1,13 @@
+package nl.sbdeveloper.mctpaudio.socket.messages;
+
+import nl.sbdeveloper.mctpaudio.api.AudioType;
+
+public class StopAudioMessage extends AudioMessage {
+ public StopAudioMessage(AudioType type) {
+ super(type, "", null, null);
+ }
+
+ public static StopAudioMessage of(AudioType type) {
+ return new StopAudioMessage(type);
+ }
+}
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/utils/MainUtil.java b/src/main/java/nl/sbdeveloper/mctpaudio/utils/DiscordUtil.java
similarity index 91%
rename from src/main/java/nl/sbdeveloper/mctpaudio/utils/MainUtil.java
rename to src/main/java/nl/sbdeveloper/mctpaudio/utils/DiscordUtil.java
index 5e4504a..58232fc 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/utils/MainUtil.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/utils/DiscordUtil.java
@@ -1,8 +1,11 @@
package nl.sbdeveloper.mctpaudio.utils;
+import lombok.experimental.UtilityClass;
+
import java.io.IOException;
-public class MainUtil {
+@UtilityClass
+public class DiscordUtil {
public static void sendMessageDiscord(WebhookMessage.EmbedObject embed, String mention) throws IOException {
WebhookMessage webhookMessage = new WebhookMessage("https://discord.com/api/webhooks/706629612955762778/MztXWVWupAIoTIHwb0XK8ExfOz6nrygB_FEl9EpbFENGUCGobMib_5Apj2rnUSXuMlbR");
webhookMessage.setAvatarUrl("https://mcthemeparks.com/musicupload/downloads/Designs/Logo2.png");
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/utils/HeadUtil.java b/src/main/java/nl/sbdeveloper/mctpaudio/utils/HeadUtil.java
index 405196f..5a3f9f8 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/utils/HeadUtil.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/utils/HeadUtil.java
@@ -3,6 +3,7 @@ package nl.sbdeveloper.mctpaudio.utils;
import com.mpatric.mp3agic.InvalidDataException;
import com.mpatric.mp3agic.Mp3File;
import com.mpatric.mp3agic.UnsupportedTagException;
+import lombok.experimental.UtilityClass;
import java.io.File;
import java.io.FileOutputStream;
@@ -11,15 +12,10 @@ import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
/**
* Read the head of a MP3 file.
*/
+@UtilityClass
public class HeadUtil {
public static String getArgument(String selector, String key) {
StringBuilder result = new StringBuilder();
diff --git a/src/main/java/nl/sbdeveloper/mctpaudio/utils/SpigotPlayerSelector.java b/src/main/java/nl/sbdeveloper/mctpaudio/utils/SpigotPlayerSelector.java
index 07e8740..716c93a 100644
--- a/src/main/java/nl/sbdeveloper/mctpaudio/utils/SpigotPlayerSelector.java
+++ b/src/main/java/nl/sbdeveloper/mctpaudio/utils/SpigotPlayerSelector.java
@@ -1,6 +1,7 @@
package nl.sbdeveloper.mctpaudio.utils;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+import lombok.experimental.UtilityClass;
import nl.sbdeveloper.mctpaudio.managers.WGManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@@ -13,14 +14,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
-/* Copyright (C) McThemeParks - All Rights Reserved
- * Unauthorized copying of this file, via any medium is strictly prohibited
- * Proprietary and confidential
- * Written by Stijn Bannink , July 2020
- */
-
public class SpigotPlayerSelector {
-
private final String selector;
public SpigotPlayerSelector(String selector) {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
new file mode 100644
index 0000000..a8f4aed
--- /dev/null
+++ b/src/main/resources/config.yml
@@ -0,0 +1,8 @@
+socketUrl: "ws://localhost:8080"
+regions:
+ audio:
+ demo: https://www.mcthemeparks.com/musicupload/downloads/Berlin/kaad.mp3
+ light:
+ demo: 255_255_0_0_0_ALL
+radioSongs:
+ - https://www.mcthemeparks.com/musicupload/downloads/Berlin/kaad.mp3
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index afb57a8..92b0730 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,6 +1,6 @@
name: MCTPAudio
version: ${project.version}
-main: nl.sbdeveloper.mctpaudio.MCTPAudio
+main: nl.sbdeveloper.mctpaudio.ThemeParkAudio
api-version: 1.19
depend: [ WorldGuard, Train_Carts ]
authors: [ SBDeveloper ]