diff --git a/MCTPAudio.iml b/MCTPAudio.iml
index 8d68862..88ba95d 100644
--- a/MCTPAudio.iml
+++ b/MCTPAudio.iml
@@ -29,5 +29,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/me/mctp/MCTPAudioCmd.java b/src/me/mctp/MCTPAudioCmd.java
index 064c790..5cc4f73 100644
--- a/src/me/mctp/MCTPAudioCmd.java
+++ b/src/me/mctp/MCTPAudioCmd.java
@@ -26,7 +26,7 @@ public class MCTPAudioCmd implements CommandExecutor {
try {
type = AudioType.valueOf(args[2].toUpperCase());
} catch (IllegalArgumentException ex) {
- sender.sendMessage(prefix + args[1] + " is geen correcte type.");
+ sender.sendMessage(prefix + args[2] + " is geen correcte type.");
return true;
}
@@ -58,12 +58,16 @@ public class MCTPAudioCmd implements CommandExecutor {
sender.sendMessage(prefix + "Gestart met afspelen!");
return true;
- } else if (args.length == 3 && args[0].equalsIgnoreCase("stop")) {
- AudioType type;
+ } else if (args.length == 5 && args[0].equalsIgnoreCase("hue")) {
+ int r;
+ int g;
+ int b;
try {
- type = AudioType.valueOf(args[2].toUpperCase());
+ r = Integer.parseInt(args[2]);
+ g = Integer.parseInt(args[3]);
+ b = Integer.parseInt(args[4]);
} catch (IllegalArgumentException ex) {
- sender.sendMessage(prefix + args[1] + " is geen correcte type.");
+ sender.sendMessage(prefix + args[2] + ", " + args[3] + ", " + args[4] + " zijn incorrecte RGB waardes.");
return true;
}
@@ -81,6 +85,35 @@ public class MCTPAudioCmd implements CommandExecutor {
players.addAll(selector.getPlayers(sender));
}
+ JSONObject data;
+ for (Player p : players) {
+ data = new JSONObject();
+
+ if (!PinManager.hasPin(p.getUniqueId())) continue;
+
+ data.put("task", "HUE");
+ data.put("rgb", r + ":" + g + ":" + b);
+ data.put("uuid", p.getUniqueId().toString().replace("-", ""));
+ Main.getClient().sendData(data);
+ }
+
+ sender.sendMessage(prefix + "Gestart met afspelen!");
+ return true;
+ } else if (args.length == 2 && args[0].equalsIgnoreCase("stop")) {
+ ArrayList players = new ArrayList<>();
+ Player target = Bukkit.getPlayer(args[1]);
+ if (target != null) {
+ if (!PinManager.hasPin(target.getUniqueId())) {
+ sender.sendMessage(prefix + "Die speler is niet verbonden met de client.");
+ return true;
+ }
+
+ players.add(target);
+ } else {
+ SpigotPlayerSelector selector = new SpigotPlayerSelector(args[1]);
+ players.addAll(selector.getPlayers(sender));
+ }
+
JSONObject data;
for (Player p : players) {
data = new JSONObject();
@@ -88,7 +121,6 @@ public class MCTPAudioCmd implements CommandExecutor {
if (!PinManager.hasPin(p.getUniqueId())) continue;
data.put("task", "STOP");
- data.put("type", type.name());
data.put("uuid", p.getUniqueId().toString().replace("-", ""));
Main.getClient().sendData(data);
}
diff --git a/src/me/mctp/Main.java b/src/me/mctp/Main.java
index 8f8c3ca..928df1d 100644
--- a/src/me/mctp/Main.java
+++ b/src/me/mctp/Main.java
@@ -1,5 +1,6 @@
package me.mctp;
+import me.mctp.listener.WGListener;
import me.mctp.socket.Client;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -19,6 +20,10 @@ public class Main extends JavaPlugin implements Listener {
Bukkit.getLogger().info(prefix + "loading...");
+ getConfig().addDefault("Regions.demosound", "https://audiopagina.mcthemeparks.eu/gallery/voletarium.mp3");
+ getConfig().options().copyDefaults(true);
+ saveConfig();
+
pl = this;
client = new Client("ws://144.91.100.169:30217");
@@ -27,6 +32,8 @@ public class Main extends JavaPlugin implements Listener {
getCommand("audio").setExecutor(new MCTPAudioCmd());
getCommand("mctpaudio").setExecutor(new MCTPAudioCmd());
+ Bukkit.getPluginManager().registerEvents(new WGListener(), this);
+
Bukkit.getLogger().info(prefix + " __ __ ____ _____ ____ _ _ _ ");
Bukkit.getLogger().info(prefix + " | \\/ |/ ___|_ _| _ \\ / \\ _ _ __| (_) ___ ");
Bukkit.getLogger().info(prefix + " | |\\/| | | | | | |_) / _ \\| | | |/ _` | |/ _ \\ ");
diff --git a/src/me/mctp/listener/WGListener.java b/src/me/mctp/listener/WGListener.java
new file mode 100644
index 0000000..83baecb
--- /dev/null
+++ b/src/me/mctp/listener/WGListener.java
@@ -0,0 +1,55 @@
+package me.mctp.listener;
+
+import me.mctp.Main;
+import me.mctp.managers.PinManager;
+import net.raidstone.wgevents.events.RegionsEnteredEvent;
+import net.raidstone.wgevents.events.RegionsLeftEvent;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.json.simple.JSONObject;
+
+import java.util.Collections;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+
+public class WGListener implements Listener {
+ @EventHandler
+ public void onRegionEnter(RegionsEnteredEvent e) {
+ Set list = Main.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
+
+ if (!Collections.disjoint(list, e.getRegionsNames())) {
+ //One element is the same -> In a region
+
+ Optional name = e.getRegionsNames().stream().filter(list::contains).findFirst();
+ if (!name.isPresent()) return;
+ String regionURL = Main.getPlugin().getConfig().getString("Regions." + name.get());
+
+ JSONObject data = new JSONObject();
+
+ if (!PinManager.hasPin(Objects.requireNonNull(e.getPlayer()).getUniqueId())) return;
+
+ data.put("task", "MUSIC");
+ data.put("path", regionURL);
+ data.put("uuid", e.getPlayer().getUniqueId().toString().replace("-", ""));
+ Main.getClient().sendData(data);
+ }
+ }
+
+ @EventHandler
+ public void onRegionExit(RegionsLeftEvent e) {
+ Set list = Main.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
+
+ if (!Collections.disjoint(list, e.getRegionsNames())) {
+ //One element is the same -> In a region
+ JSONObject data = new JSONObject();
+
+ if (!PinManager.hasPin(Objects.requireNonNull(e.getPlayer()).getUniqueId())) return;
+
+ data.put("task", "MUSIC");
+ data.put("path", "");
+ data.put("uuid", e.getPlayer().getUniqueId().toString().replace("-", ""));
+ Main.getClient().sendData(data);
+ }
+ }
+}
diff --git a/src/me/mctp/socket/Client.java b/src/me/mctp/socket/Client.java
index e6cbd7f..b3a54b2 100644
--- a/src/me/mctp/socket/Client.java
+++ b/src/me/mctp/socket/Client.java
@@ -3,7 +3,6 @@ package me.mctp.socket;
import me.mctp.Main;
import me.mctp.managers.PinManager;
import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.json.simple.JSONObject;
@@ -64,14 +63,12 @@ public class Client {
String pin = JSONUtil.getValue(json, "pin");
if (pin == null || pin.isEmpty()) return;
- UUID pUUID = UUID.fromString(JSONUtil.fixUUID(uuid));
+ UUID pUUID = JSONUtil.formatFromInput(uuid);
boolean verified = false;
if (Bukkit.getPlayer(pUUID) != null) {
verified = PinManager.checkPin(pUUID, pin);
}
- Bukkit.getLogger().info("VERIFIED IS: " + verified);
-
JSONObject reply = new JSONObject();
reply.put("task", "AUTHENTICATION");
reply.put("verified", verified);
diff --git a/src/me/mctp/socket/JSONUtil.java b/src/me/mctp/socket/JSONUtil.java
index 8599059..4fbb6cf 100644
--- a/src/me/mctp/socket/JSONUtil.java
+++ b/src/me/mctp/socket/JSONUtil.java
@@ -4,6 +4,8 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import java.util.UUID;
+
public class JSONUtil {
public static JSONObject parse(String string) {
try {
@@ -23,19 +25,25 @@ public class JSONUtil {
return null;
}
- public static String fixUUID(String uuid) {
- if (uuid != null && !uuid.isEmpty()) {
- StringBuilder sb = new StringBuilder(uuid);
- sb.insert(8, "-");
- sb = new StringBuilder(sb.toString());
- sb.insert(13, "-");
- sb = new StringBuilder(sb.toString());
- sb.insert(18, "-");
- sb = new StringBuilder(sb.toString());
- sb.insert(23, "-");
- return sb.toString();
- } else {
- return null;
+ public static UUID formatFromInput(String uuid) throws IllegalArgumentException{
+ if(uuid == null) throw new IllegalArgumentException();
+ uuid = uuid.trim();
+ return uuid.length() == 32 ? fromTrimmed(uuid.replaceAll("-", "")) : UUID.fromString(uuid);
+ }
+
+ public static UUID fromTrimmed(String trimmedUUID) throws IllegalArgumentException{
+ if(trimmedUUID == null) throw new IllegalArgumentException();
+ StringBuilder builder = new StringBuilder(trimmedUUID.trim());
+ /* Backwards adding to avoid index adjustments */
+ try {
+ builder.insert(20, "-");
+ builder.insert(16, "-");
+ builder.insert(12, "-");
+ builder.insert(8, "-");
+ } catch (StringIndexOutOfBoundsException e){
+ throw new IllegalArgumentException();
}
+
+ return UUID.fromString(builder.toString());
}
}