> For the complete documentation index, see [llms.txt](https://chatsystem-wiki.gitbook.io/chatsystem-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chatsystem-wiki.gitbook.io/chatsystem-wiki/coming-soon-.../simple-voice-chat-+.md).

# Simple Voice Chat +

### 📋 Übersicht

SimpleVoiceChat+ ist ein **Addon-Plugin** für Simple Voice Chat, das Admin-Features wie Mute, Fullmute, heimliches Mithören und mehr hinzufügt. Es überschreibt das originale SVC-Mikrofon-Icon mit eigenen Mute-Icons und schaltet Spieler **technisch wirklich stumm**.

***

### 🔧 Technische Funktionsweise

#### SVC-Integration (SVCIntegration.java)

Das Plugin nutzt **Reflection**, um ohne feste SVC-API-Abhängigkeit mit SimpleVoiceChat zu kommunizieren. Das macht es kompatibel mit allen SVC-Versionen.

**Ablauf:**

1. Beim Start sucht das Plugin nach SVC (sucht nach 4 möglichen Plugin-Namen)
2. Findet es SVC, wird über `BukkitVoicechatService.get().getApi()` die API geholt
3. Alle Methoden (`setMuted`, `setDeafened`, `setMicrophoneIcon`, `setBadge`) werden per Reflection gecached
4. Befehle rufen diese Methoden auf → technische Umsetzung in Echtzeit

#### Icon-System (IconManager.java)

Wenn ein Spieler gemutet wird:

1. `IconManager.updatePlayerIcon()` prüft den Mute-Status
2. Bei Voice-Mute → setzt `svcplus:textures/mic_muted` als Mikrofon-Icon
3. Bei Fullmute → setzt `svcplus:textures/mic_fullmuted` als Mikrofon-Icon
4. Das originale SVC-Icon wird **überschrieben/ausgeblendet**
5. Bei Unmute → Original-Icon wird wiederhergestellt
6. Gleichzeitig wird ein Badge gesetzt (erscheint im Overlay + Gruppenmenü)

#### Mute-System (MuteManager.java)

**Voice-Mute:**

* `SVCIntegration.setMuted(player, true)` → Mikrofon wird technisch deaktiviert
* Spieler kann **nicht sprechen** (Gruppe + Proximity)
* Icon wechselt zu 🚫

**Full-Mute:**

* `SVCIntegration.setMuted(player, true)` → Mikrofon deaktiviert
* `SVCIntegration.setDeafened(player, true)` → Gehör deaktiviert
* Spieler kann **nicht sprechen + hört niemanden**
* Icon wechselt zu ⛔

**Permanent bis Aufhebung:**

* Keine Zeitbegrenzung
* Bleibt aktiv bis Admin `/unmutevoice` oder `/unfullmute` ausführt
* Überlebt Server-Neustarts nicht (flüchtig im RAM)

***

### 📋 Alle Befehle

#### Spieler-Befehle

| Befehl                  | Beschreibung                       | Permission          |
| ----------------------- | ---------------------------------- | ------------------- |
| `/svcplus channels`     | Zeigt alle persistenten Funkkanäle | Keine               |
| `/svcplus join <Kanal>` | Betritt einen Funkkanal            | Keine               |
| `/svcplus leave`        | Verlässt aktuellen Funkkanal       | Keine               |
| `/megaphone`            | Aktiviert Megaphon-Modus           | `svcplus.megaphone` |

#### Admin-Befehle

| Befehl                   | Beschreibung                            | Permission      |
| ------------------------ | --------------------------------------- | --------------- |
| `/svcplus reload`        | Lädt Config neu                         | `svcplus.admin` |
| `/mutevoice <Spieler>`   | Schaltet Stimme stumm (permanent)       | `svcplus.admin` |
| `/unmutevoice <Spieler>` | Hebt Voice-Mute auf                     | `svcplus.admin` |
| `/fullmute <Spieler>`    | Schaltet Stimme+Gehör stumm (permanent) | `svcplus.admin` |
| `/unfullmute <Spieler>`  | Hebt Full-Mute auf                      | `svcplus.admin` |
| `/vlisten <Spieler>`     | Heimlich mithören                       | `svcplus.admin` |
| `/vlisten stop`          | Mithören beenden                        | `svcplus.admin` |
| `/vlisten list`          | Aktive Mithör-Sessions anzeigen         | `svcplus.admin` |

***

### 🔑 Permissions

| Permission          | Beschreibung                   | Standard |
| ------------------- | ------------------------------ | -------- |
| `svcplus.admin`     | Zugriff auf ALLE Admin-Befehle | OP       |
| `svcplus.megaphone` | Darf `/megaphone` nutzen       | Jeder    |

**TabCompleter-Verhalten:**

* Ohne Permission → Admin-Befehle werden NICHT im Tab angezeigt
* Ohne Permission → Admin-Befehle können NICHT ausgeführt werden
* Hilfe-Befehl zeigt nur Befehle die man auch nutzen darf

***

### ⚙️ Config (config.yml)

yaml

```
svc:
  port: 24454              # SVC UDP-Port (zur Info)
  version: "2.5.35"        # SVC-Version (zur Info)

debug: false               # Aktiviert ausführliche Logs

dimension_separation:
  enabled: true            # Dimensions-Trennung an/aus
  separated_worlds:        # Getrennte Welten
    - world
    - world_nether
    - world_the_end
  notify_on_switch: true   # Nachricht bei Dimensionswechsel

persistent_channels:
  enabled: true
  channels:                # Funkkanäle die NIE gelöscht werden
    - id: "global"
      name: "§a🌍 Global"
      locked: false
      password: ""
      icon: "ENDER_PEARL"

megaphone:
  enabled: true
  item: "GOAT_HORN"        # Item für Megaphon
  range: 200               # Reichweite in Blöcken
  distortion: 0.6           # Verzerrung (0.0-1.0)
  cooldown_seconds: 10     # Wartezeit zwischen Nutzungen
  require_holding: true    # Item muss in Hand sein

admin:
  bypass_group_password: true   # Admins brauchen kein Passwort
  max_listen_sessions: 5        # Max. gleichzeitige Mithör-Sessions
```

***

### 🎨 Resource Pack

#### Icon-Zustände

| Zustand    | Icon                  | Wann?             |
| ---------- | --------------------- | ----------------- |
| Normal     | SVC-Original          | Standard          |
| Voice-Mute | 🚫 `mic_muted.png`    | Nach `/mutevoice` |
| Full-Mute  | ⛔ `mic_fullmuted.png` | Nach `/fullmute`  |

#### Wo erscheinen die Icons?

| Ort                          | Voice-Mute     | Full-Mute     |
| ---------------------------- | -------------- | ------------- |
| Mikrofon-Ecke (unten rechts) | 🚫             | ⛔             |
| Overlay (beim Sprechen)      | 🚫             | ⛔             |
| Gruppenmenü (Taste G)        | 🚫 hinter Name | ⛔ hinter Name |

***

### 🔄 Ablauf: Mute

text

```
1. Admin: /mutevoice Steve
2. MuteManager: voiceMutes.add(Steve)
3. SVCIntegration.setMuted(Steve, true)    → Mikrofon AUS
4. IconManager.updatePlayerIcon(Steve)     → Icon 🚫 + Badge 🚫
5. Steve: "Deine Stimme wurde stummgeschaltet!"
6. Steve kann NICHT sprechen
7. Icon bleibt bis /unmutevoice Steve
```

### 🔄 Ablauf: Fullmute

text

```
1. Admin: /fullmute Steve
2. MuteManager: fullMutes.add(Steve)
3. SVCIntegration.setMuted(Steve, true)    → Mikrofon AUS
4. SVCIntegration.setDeafened(Steve, true) → Gehör AUS
5. IconManager.updatePlayerIcon(Steve)     → Icon ⛔ + Badge ⛔
6. Steve: "Du kannst weder sprechen noch hören!"
7. Steve kann NICHT sprechen + hört NIEMANDEN
8. Icon bleibt bis /unfullmute Steve
```

***

### 🎯 Funktionen im Detail

#### Admin-Mithören (`/vlisten`)

* Admin wird unsichtbar zur Gruppe des Ziels hinzugefügt
* Admin hört alles, Ziel sieht und hört Admin nicht
* Maximal 5 gleichzeitige Sessions (konfigurierbar)
* `/vlisten stop` beendet alle, `/vlisten list` zeigt aktive

#### Admin-Bypass

* Admins können passwortgeschützte Gruppen OHNE Passwort betreten
* Permission: `svcplus.admin`
* Konfigurierbar in config.yml

#### Dimensions-Trennung

* Spieler in verschiedenen Welten hören sich NICHT
* Standard: Oberwelt, Nether, Ende getrennt
* Benachrichtigung bei Dimensionswechsel

#### Persistente Funkkanäle

* Werden NIE gelöscht, auch wenn leer
* Erscheinen im Gruppenmenü (Taste G) ganz oben
* Können passwortgeschützt sein (Admins umgehen das)
* In config.yml frei konfigurierbar

#### Megaphon

* Item (Standard: Goat-Horn) rechtsklicken
* Reichweite 200 Blöcke
* Verzerrter Sound
* 10 Sekunden Cooldown
* Permission: `svcplus.megaphone`

***

### 🚀 Installation

1. `SimpleVoiceChatPlus-1.0.0.jar` in `plugins/` legen
2. `SVCPlus_ResourcePack.zip` in `server.properties` eintragen oder manuell verteilen
3. `SimpleVoiceChat` Plugin muss installiert sein
4. `LuckPerms` optional (sonst Bukkit-Permissions)
5. Server starten
6. In Konsole muss erscheinen: `SimpleVoiceChat gefunden!`
7. Fertig!

***

### 🐛 Debug

Bei Problemen in `config.yml` setzen:

yaml

```
debug: true
```

Dann erscheinen ausführliche Logs:

* `[Icon] Steve → Mute-Icon`
* `[SVC] Steve muted=true`
* `[Badge] Aktualisiert für Steve`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://chatsystem-wiki.gitbook.io/chatsystem-wiki/coming-soon-.../simple-voice-chat-+.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
