diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java b/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java index 0c96829..8a9914b 100644 --- a/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java +++ b/src/main/java/tech/sbdevelopment/themeparkaudio/commands/TPAudioCMD.java @@ -195,4 +195,44 @@ public class TPAudioCMD extends BaseCommand { sender.sendMessage(ChatColor.GRAY + "Playback stopped!"); } + + @Subcommand("stopchannel") + @Description("") + public void onStopChannel(CommandSender sender, String selector, AudioType type) { + List players = new ArrayList<>(); + Player target = Bukkit.getPlayer(selector); + if (target != null) { + if (!PinManager.hasPin(target.getUniqueId())) { + sender.sendMessage(ChatColor.GRAY + "The player is not connected to the client."); + return; + } + + players.add(target); + } else { + SpigotPlayerSelector sel = new SpigotPlayerSelector(selector); + + if (sel.getArgument("region").length() != 0) { + if (!ThemeParkAudio.isRegionSupport()) { + sender.sendMessage(ChatColor.GRAY + "Region support is not available."); + return; + } + String regionID = sel.getArgument("region"); + new PlayInRegionHandler(regionID, "", sel.getPlayers(sender).stream().map(Entity::getUniqueId).collect(Collectors.toList())); + + sender.sendMessage(ChatColor.GRAY + "Playback stopped in region " + regionID + "!"); + return; + } else { + players.addAll(sel.getPlayers(sender)); + } + } + + if (type == AudioType.RADIO && !ThemeParkAudio.getInstance().getConfig().getBoolean("radio")) { + sender.sendMessage(ChatColor.GRAY + "The radio is disabled, so it can't be played on."); + return; + } + + AudioMessage.of(type, "").broadcastSelection(players, PinManager::hasPin); + + sender.sendMessage(ChatColor.GRAY + "Playback stopped!"); + } } diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/ActionFotoMessage.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/ActionFotoMessage.java new file mode 100644 index 0000000..d4ba6dc --- /dev/null +++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/ActionFotoMessage.java @@ -0,0 +1,32 @@ +package tech.sbdevelopment.themeparkaudio.socket.messages; + +import lombok.Getter; +import org.json.simple.JSONObject; + +import java.time.ZonedDateTime; + +@Getter +public class ActionFotoMessage extends AbstractMessage { + private final String attractionId; + private final String image; + private final ZonedDateTime timestamp = ZonedDateTime.now(); + + protected ActionFotoMessage(String attractionId, String image) { + super(MessageTask.ACTIONFOTO); + this.attractionId = attractionId; + this.image = image; + } + + public static ActionFotoMessage of(String attractionId, String image) { + return new ActionFotoMessage(attractionId, image); + } + + @Override + protected JSONObject extendJson() { + JSONObject data = new JSONObject(); + data.put("attractionId", attractionId); + data.put("image", image); + data.put("timestamp", timestamp.toInstant().toString()); + return data; + } +} diff --git a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java index 04987e8..627225b 100644 --- a/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java +++ b/src/main/java/tech/sbdevelopment/themeparkaudio/socket/messages/MessageTask.java @@ -1,5 +1,5 @@ package tech.sbdevelopment.themeparkaudio.socket.messages; public enum MessageTask { - AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO, PING, STOP + AUTHENTICATION, LOGOUT, LIGHT, MUSIC, SFX, RADIO, PING, STOP, ACTIONFOTO }