Actionbar unauffälliger: ♪ Name DC · Name TS

This commit is contained in:
MineTec committed 2026-10-18 16:17:40 +02:00
1 parent b335933678
commit 2e46c9ea1c
4 files changed
+21 -6

No files matched your search

@@ -142,14 +142,29 @@ final class BridgeVoicechat implements VoicechatPlugin {
case Message.Speakers speakers -> Bukkit.getScheduler().runTask(plugin, () -> {
CrosstalkRoom room = rooms.get(speakers.room());
if (room == null || speakers.names().isEmpty() || !plugin.getConfig().getBoolean("actionbar", true)) return;
Component text = Component.text("Spricht: ", NamedTextColor.GRAY)
.append(Component.text(String.join(", ", speakers.names()), NamedTextColor.GOLD));
Component text = speakersLine(speakers.names());
room.memberPlayers().stream().filter(ActionbarCommand::enabled).forEach(player -> player.sendActionBar(text));
});
case Message.Hello ignored -> {}
}
}
/** Unauffällige Actionbar: "♪ Anna DC · Bob TS", höchstens drei Namen, Rest als "+N". */
static Component speakersLine(List<String> speakers) {
int shown = Math.min(3, speakers.size());
Component line = Component.text("♪ ", NamedTextColor.DARK_GRAY);
for (int i = 0; i < shown; i++) {
String entry = speakers.get(i);
int split = entry.lastIndexOf('|');
String name = split < 0 ? entry : entry.substring(0, split);
String tag = split < 0 ? "" : " " + entry.substring(split + 1);
if (i > 0) line = line.append(Component.text(" · ", NamedTextColor.DARK_GRAY));
line = line.append(Component.text(name, NamedTextColor.GRAY)).append(Component.text(tag, NamedTextColor.DARK_GRAY));
}
if (speakers.size() > shown) line = line.append(Component.text(" +" + (speakers.size() - shown), NamedTextColor.DARK_GRAY));
return line;
}
/** Main-Thread: Gruppen an die Räume der Bridge angleichen. */
private void syncRooms(List<Message.RoomInfo> infos) {
VoicechatServerApi api = this.api;
+1 -1
View File
@@ -3,6 +3,6 @@ bridge:
host: 127.0.0.1
port: 24470
# Actionbar "Spricht: …" mit den gerade sprechenden Leuten aus Discord/TeamSpeak.
# Actionbar "♪ Anna DC · Bob TS" mit den gerade sprechenden Leuten aus Discord/TeamSpeak.
# Jeder Spieler kann sie zusätzlich mit /crosstalk actionbar für sich aus- und einschalten.
actionbar: true