diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties
index 00ddba8f..e1da5e7a 100644
--- a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties
+++ b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties
@@ -623,6 +623,7 @@ SERVER_WORLD_ERROR=§cCreating the world failed.
WHOIS_USAGE=§c/whois [player/ID] [-a/-m]
WHOIS_USERNAME=§7Username§8: §e{0}
WHOIS_PREFIX=§7Chat-Prefix§8: {0}
+WHOIS_STREAMING=§7Streaming§8: §e{0}
WHOIS_UUID=§7UUID§8: §e{0}
WHOIS_UUID_HOVER=§eCopy UUID
WHOIS_ID=§7ID§8: §e{0}
@@ -735,6 +736,10 @@ INV_PAGE_NEXT=§{0}Seite vor
#VersionAnnouncer
SERVER_VERSION=§7This server runs on Minecraft version §e{0}
+#StreamingCommand
+STREAMING_ENABLE=§7Streaming mode §aenabled§8.
+STREAMING_DISABLE=§7Streaming mode §cdisabled§8.
+
#Discord
DC_UNLINKED=For this action your Discord account has to be linked to your Minecraft account. To link your accounts go onto the SteamWar Discord to the `regeln-infos` Channel and click on `Minecraft Verknüpfen`.
DC_TITLE_SCHEMINFO=Schematic Info
diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties
index b1051f94..f5d84d2e 100644
--- a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties
+++ b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties
@@ -683,6 +683,10 @@ INV_PAGE_NEXT=§{0}Next page
#VersionAnnouncer
SERVER_VERSION=§7Dieser Server läuft auf Minecraft-Version §e{0}
+#StreamingCommand
+STREAMING_ENABLE=§7Streaming Modus §aaktiviert§8.
+STREAMING_DISABLE=§7Streaming Modus §cdeaktiviert§8.
+
#Discord
DC_UNLINKED=Für diese Aktion muss dein Minecraftaccount mit deinem Discordaccount verknüpft sein, gehe dazu auf dem SteamWar-Discord in den `regeln-infos` Channel und Klicke auf `Minecraft Verknüpfen`.
DC_TITLE_SCHEMINFO=Schematicinfo
diff --git a/VelocityCore/src/de/steamwar/messages/Chatter.java b/VelocityCore/src/de/steamwar/messages/Chatter.java
index 5de34d0c..514e9b0a 100644
--- a/VelocityCore/src/de/steamwar/messages/Chatter.java
+++ b/VelocityCore/src/de/steamwar/messages/Chatter.java
@@ -28,6 +28,7 @@ import de.steamwar.persistent.Subserver;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm;
import de.steamwar.velocitycore.VelocityCore;
+import de.steamwar.velocitycore.commands.StreamingCommand;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
@@ -68,7 +69,9 @@ public interface Chatter {
}
static ChatterGroup serverteam() {
- return new ChatterGroup(allStream().filter(player -> player.user().hasPerm(UserPerm.TEAM)));
+ return new ChatterGroup(allStream()
+ .filter(player -> player.user().hasPerm(UserPerm.TEAM))
+ .filter(StreamingCommand::isNotStreaming));
}
SteamwarUser user();
diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/StreamingCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/StreamingCommand.java
new file mode 100644
index 00000000..1e50ecd3
--- /dev/null
+++ b/VelocityCore/src/de/steamwar/velocitycore/commands/StreamingCommand.java
@@ -0,0 +1,57 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2020 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.velocitycore.commands;
+
+import de.steamwar.command.SWCommand;
+import de.steamwar.messages.Chatter;
+import de.steamwar.sql.SteamwarUser;
+import de.steamwar.sql.UserPerm;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class StreamingCommand extends SWCommand {
+
+ private static final Set streaming = new HashSet<>();
+
+ public static boolean isNotStreaming(Chatter sender) {
+ return isNotStreaming(sender.user());
+ }
+
+ public static boolean isNotStreaming(SteamwarUser user) {
+ return !streaming.contains(user.getId());
+ }
+
+ public StreamingCommand() {
+ super("streaming", UserPerm.TEAM);
+ }
+
+ @Register
+ public void toggleStreamingMode(Chatter sender) {
+ int userId = sender.user().getId();
+ if (streaming.contains(userId)) {
+ streaming.remove(userId);
+ sender.system("STREAMING_DISABLE");
+ } else {
+ streaming.add(userId);
+ sender.system("STREAMING_ENABLE");
+ }
+ }
+}
diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java
index fa396cc0..1806a8cb 100644
--- a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java
+++ b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java
@@ -312,7 +312,19 @@ public class TeamCommand extends SWCommand {
private String getMemberList(List users, boolean leaders) {
return users.stream()
.filter(user -> user.isLeader() == leaders)
- .map(user -> (VelocityCore.getProxy().getPlayer(user.getUUID()).isPresent() ? "§a" : "§e") + user.getUserName())
+ .map(user -> {
+ StringBuilder st = new StringBuilder();
+ if (VelocityCore.getProxy().getPlayer(user.getUUID()).isPresent()) {
+ if (!StreamingCommand.isNotStreaming(user)) {
+ st.append("§5● ");
+ }
+ st.append("§a");
+ } else {
+ st.append("§e");
+ }
+ st.append(user.getUserName());
+ return st.toString();
+ })
.collect(Collectors.joining(" "));
}
diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamchatCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamchatCommand.java
index 6e9eb8e7..8381ba94 100644
--- a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamchatCommand.java
+++ b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamchatCommand.java
@@ -40,6 +40,6 @@ public class TeamchatCommand extends SWCommand {
return;
}
- ChatListener.sendChat(sender, new ChatterGroup(Chatter.allStream().filter(p -> p.user().getTeam() == user.getTeam())), "CHAT_TEAM", null, String.join(" ", args));
+ ChatListener.sendChat(sender, new ChatterGroup(Chatter.allStream().filter(p -> p.user().getTeam() == user.getTeam()).filter(StreamingCommand::isNotStreaming)), "CHAT_TEAM", null, String.join(" ", args));
}
}
diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/WhoisCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/WhoisCommand.java
index babf8262..7576f75f 100644
--- a/VelocityCore/src/de/steamwar/velocitycore/commands/WhoisCommand.java
+++ b/VelocityCore/src/de/steamwar/velocitycore/commands/WhoisCommand.java
@@ -71,6 +71,7 @@ public class WhoisCommand extends SWCommand {
if (!sender.user().hasPerm(UserPerm.TEAM))
return;
+ sender.system("WHOIS_STREAMING", !StreamingCommand.isNotStreaming(user));
if (sender.user().hasPerm(UserPerm.MODERATION) || sender.user().hasPerm(UserPerm.PREFIX_DEVELOPER)) {
sender.system("WHOIS_ID", user.getId());
sender.system("WHOIS_UUID", new Message("WHOIS_UUID_HOVER"), ClickEvent.copyToClipboard(user.getUUID().toString()), user.getUUID().toString());