Converted to generic ThemeParkAudio plugin.

This commit is contained in:
Stijn Bannink 2025-04-03 22:21:14 +02:00
parent d28c9a5d6a
commit 2deeee7971
Signed by: SBDeveloper
GPG key ID: B730712F2C3A9D7A
31 changed files with 425 additions and 368 deletions

View file

@ -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

View file

@ -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"

View file

@ -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

34
pom.xml
View file

@ -4,18 +4,18 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.mctp</groupId>
<artifactId>MCTPAudio</artifactId>
<version>1.5-SNAPSHOT</version>
<groupId>tech.sbdevelopment</groupId>
<artifactId>ThemeParkAudio</artifactId>
<version>1.6</version>
<packaging>jar</packaging>
<name>MCTPAudio</name>
<name>ThemeParkAudio</name>
<description>The audio plugin of McThemeParks!</description>
<description>Audio and light control via your Minecraft server!</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>https://mcthemeparks.com</url>
<url>https://sbdevelopment.tech/</url>
<pluginRepositories>
<pluginRepository>
@ -37,7 +37,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<version>3.14.0</version>
<configuration>
<release>21</release>
<compilerArgs>
@ -61,11 +61,11 @@
<relocations>
<relocation>
<pattern>co.aikar.commands</pattern>
<shadedPattern>nl.sbdeveloper.mctpaudio.libs.acf</shadedPattern>
<shadedPattern>tech.sbdevelopment.ThemeParkAudio.libs.acf</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.locales</pattern>
<shadedPattern>nl.sbdeveloper.mctpaudio.libs.locales</shadedPattern>
<shadedPattern>tech.sbdevelopment.ThemeParkAudio.libs.locales</shadedPattern>
</relocation>
</relocations>
</configuration>
@ -104,19 +104,19 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21.1-R0.1-SNAPSHOT</version>
<version>1.21.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>1.21.1-R0.1-SNAPSHOT</version>
<version>1.21.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.5.7</version>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>com.mpatric</groupId>
@ -144,13 +144,19 @@
<dependency>
<groupId>com.bergerkiller.bukkit</groupId>
<artifactId>BKCommonLib</artifactId>
<version>1.21.1-v1</version>
<version>1.21.4-v1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.bergerkiller.bukkit</groupId>
<artifactId>TrainCarts</artifactId>
<version>1.21.1-v1</version>
<version>1.21.4-v1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
<scope>provided</scope>
</dependency>
</dependencies>

View file

@ -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 <stijnbannink23@gmail.com>, 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;
}
}

View file

@ -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 <stijnbannink23@gmail.com>, 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;
};
}
}

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
public enum HueType {
LEFT, MID, RIGHT, ALL
}

View file

@ -0,0 +1,5 @@
package nl.sbdeveloper.mctpaudio.api;
public enum LightRegion {
LEFT, MID, RIGHT, ALL
}

View file

@ -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 <stijnbannink23@gmail.com>, 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() {

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
/**
* An {@link ArrayList} with shuffle support.
*
@ -34,7 +28,7 @@ public class SongList<E> extends ArrayList<E> {
*/
public E getRandom() {
int size = size();
if (size <= 0) return null;
if (size == 0) return null;
return get(r.nextInt(size()));
}

View file

@ -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 <stijnbannink23@gmail.com>, 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<String> urls = MCTPAudio.getPlugin().getConfig().getStringList("RadioSongs");
List<String> 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<Player> players = new ArrayList<>();
List<Player> 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<Player> players = new ArrayList<>();
List<Player> 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<Player> players = new ArrayList<>();
List<Player> 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!");

View file

@ -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 <stijnbannink23@gmail.com>, 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);
}
}

View file

@ -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 <stijnbannink23@gmail.com>, 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<UUID> 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);
}
}

View file

@ -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 <stijnbannink23@gmail.com>, 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<String> list = MCTPAudio.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
Set<String> list = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.audio").getKeys(false);
List<String> fromRegions = WGManager.getRegionsIn(from).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
List<String> toRegions = WGManager.getRegionsIn(to).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
List<String> fromRegions = WGManager.getRegionsIn(from).stream().map(ProtectedRegion::getId).toList();
List<String> 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<String> 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<String> list2 = MCTPAudio.getPlugin().getConfig().getConfigurationSection("HueRegions").getKeys(false);
Set<String> list2 = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.light").getKeys(false);
if (!Collections.disjoint(list2, e.getRegionsNames())) {
//One element is the same -> In a region
Optional<String> 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());
}
}
}
}

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
public class PinManager {
private static final WeakHashMap<UUID, String> pins = new WeakHashMap<>();

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
/**
* WorldGuard class to make the usage of WorldGuard easy. This is the 1.14.x version!
*
* <br>
* <i>Note that if you do use this in one of your projects, leave this notice.</i>
* <i>Please do credit me if you do use this in one of your projects.</i>
*
* @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;

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
public class Playlist {
private final SongList<String> 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;
}
}

View file

@ -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 <stijnbannink23@gmail.com>, 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<String> regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).collect(Collectors.toList());
Set<String> list = MCTPAudio.getPlugin().getConfig().getConfigurationSection("Regions").getKeys(false);
List<String> regions = WGManager.getRegionsIn(p.getLocation()).stream().map(ProtectedRegion::getId).toList();
Set<String> list = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.audio").getKeys(false);
Optional<String> 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<String> list2 = ThemeParkAudio.getPlugin().getConfig().getConfigurationSection("regions.light").getKeys(false);
Optional<String> 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());
}
}
}

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
@UtilityClass
public class JSONUtil {
public static JSONObject parse(String string) {
try {

View file

@ -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<UUID> uuids) {
send(uuids, null);
}
public void broadcast(@Nullable Function<UUID, Boolean> filter) {
send(Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).toList(), filter);
}
public void send(List<UUID> uuids, @Nullable Function<UUID, Boolean> 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();
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -0,0 +1,5 @@
package nl.sbdeveloper.mctpaudio.socket.messages;
public enum MessageTask {
AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO
}

View file

@ -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);
}
}

View file

@ -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");

View file

@ -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 <stijnbannink23@gmail.com>, 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();

View file

@ -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 <stijnbannink23@gmail.com>, July 2020
*/
public class SpigotPlayerSelector {
private final String selector;
public SpigotPlayerSelector(String selector) {

View file

@ -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

View file

@ -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 ]