# Połączenie sieci Proxy (Velocity & BungeeCord)

Serwery proxy (np. **Velocity** lub **BungeeCord / Waterfall**) pozwalają na łączenie wielu niezależnych podserwerów (np. Lobby, Survival, BedWars) w jedną spójną sieć, po której gracze mogą przechodzić za pomocą komend (np. `/server survival`) lub portali.

Poniższy poradnik wyjaśnia, jak poprawnie i bezpiecznie spiąć podserwery z silnikiem proxy, unikając luk bezpieczeństwa.

> 🔒 **Kluczowa zasada bezpieczeństwa:**  
> Wszystkie podserwery w sieci muszą mieć ustawione `online-mode=false` w pliku `server.properties`, ponieważ to proxy weryfikuje konta graczy w bazie Mojang.  
> **Nigdy nie zostawiaj podserwera z wyłączonym online-mode bez włączonego forwardingu (Velocity Modern Forwarding lub BungeeGuard)**. Bez tego każdy gracz może połączyć się bezpośrednio z adresem podserwera pod dowolnym nickiem (w tym administratora) i przejąć uprawnienia.

---

## Wariant 1: Konfiguracja Velocity (Zalecana)

Velocity to nowoczesny silnik proxy zapewniający najwyższą wydajność oraz wbudowany, kryptograficznie zabezpieczony system **Modern Forwarding**.

### 1. Skonfiguruj serwer Proxy (Velocity)

1. W **Menedżerze plików** serwera proxy otwórz plik `velocity.toml`.
2. Ustaw tryb przesyłania danych graczy na `modern`:
   ```toml
   player-info-forwarding-mode = "modern"
   ```
3. W polu `forwarding-secret` zdefiniuj własny, długi ciąg znaków (lub skopiuj wygenerowany sekret z pliku `forwarding.secret`):
   ```toml
   forwarding-secret = "twoj_bardzo_tajny_ciag_znakow_123456"
   ```
4. W sekcji `[servers]` zdefiniuj adresy IP i porty swoich podserwerów:
   ```toml
   [servers]
   lobby = "193.70.12.34:25566"
   survival = "193.70.12.34:25567"

   try = [
       "lobby"
   ]
   ```
5. Zapisz plik.

### 2. Skonfiguruj podserwer (Paper / Purpur)

1. Otwórz plik `server.properties` podserwera i zmień:
   ```properties
   online-mode=false
   ```
2. Otwórz plik `config/paper-global.yml` (w starszych wersjach `paper.yml`):
   ```yaml
   proxies:
     velocity:
       enabled: true
       online-mode: true
       secret: "twoj_bardzo_tajny_ciag_znakow_123456" # Wklej ten sam sekret co w velocity.toml!
   ```
3. Zapisz plik i zrestartuj podserwer.

---

## Wariant 2: Konfiguracja BungeeCord / Waterfall

Jeśli korzystasz ze starszego silnika BungeeCord lub Waterfall:

### 1. Konfiguracja BungeeCord (`config.yml`)
1. Otwórz plik `config.yml` w głównym folderze proxy.
2. Włącz przesyłanie adresów IP i UUID graczy:
   ```yaml
   ip_forward: true
   ```
3. W sekcji `servers:` wpisz swoje podserwery:
   ```yaml
   servers:
     lobby:
       motd: 'Serwer Lobby'
       address: 193.70.12.34:25566
       restricted: false
   ```

### 2. Konfiguracja podserwera Spigot / Paper
1. W pliku `server.properties` ustaw:
   ```properties
   online-mode=false
   ```
2. W pliku `spigot.yml` przestaw:
   ```yaml
   settings:
     bungeecord: true
   ```
3. **Zabezpieczenie:** Zainstaluj plugin **BungeeGuard** na serwerze proxy oraz na wszystkich podserwerach, aby uniemożliwić wejście na podserwery z pominięciem proxy.

---

## 💡 Najczęściej zadawane pytania (FAQ)

**❔ Błąd przy łączeniu: "Unable to verify player details" lub "Connection refused" – co oznacza?**  
Sekret w konfiguracji podserwera (`paper-global.yml`) nie zgadza się z sekretem w `velocity.toml`. Upewnij się, że w obu plikach wpisany jest dokładnie ten sam ciąg znaków bez zbędnych spacji.

**❔ Wszyscy gracze na podserwerze mają ten sam adres IP (127.0.0.1) lub domyślny skin – jak naprawić?**  
Nie włączyłeś przesyłania danych gracza (forwarding). Upewnij się, że w Velocity masz `player-info-forwarding-mode = "modern"`, a w Paper włączoną opcję `proxies.velocity.enabled: true`.
