​RCON und seine Limitierungen

Was ist RCON?

RCON = Remote Console – Ein Protokoll um von außen Commands an Minecraft zu senden.

Es funktioniert über TCP/Port 25575 (standardmäßig). Der Minecraft-Server muss vorher enable-rcon=true in server.properties haben.


Das Problem: Beschränkte Bandbreite

Stell dir RCON wie ein dünnes Rohr vor:

TikTok-Befehle
        ↓ (viele kommen an)
    RCON-Rohr  ← Begrenzte Kapazität!
        ↓ (muss der Reihe nach raus)
  Minecraft

Das Problem: Wenn zu viele Commands gleichzeitig ankommen → Überlastung!

Die Lösung: Queues (Warteschlangen) – Commands der Reihe nach abarbeiten!


Queue-Limits

trigger_queue = Queue(maxsize=10_000)  # Max 10k eingehende Events
rcon_queue = Queue(maxsize=10_000)     # Max 10k Commands an Minecraft
like_queue = Queue()                   # ∞ (unbegrenzt!)

Warum keine Limits bei like_queue?

Likes sind klein und kommen oft → viele in der Queue ist OK. Like-Daten sind nur delta (Integer), nicht volle Commands!


Dynamisches Throttling

Das System passt die Sendgeschwindigkeit an:

q_size = rcon_queue.qsize()
        wait_time = THROTTLE_TIME
        inner_pause = 0.01 

if q_size > 100:
    wait_time, inner_pause = 0.01, 0.001
elif q_size > 50:
    wait_time, inner_pause = 0.05, 0.005
elif q_size > 20:
    wait_time, inner_pause = 0.1, 0.01

Effekt:

  • Wenn Queue groß: schneller verarbeiten
  • Wenn Queue leer: langsamer senden (Ressourcen sparen)

Limitierungen & Edge Cases

ProblemFolgeLösung
Queue vollEvents gehen verlorenput_nowait() mit Exception-Handling
Verbindung bricht abEs kommen keine Commands anAuto-reconnect
Command zu großRCON-ErrorCommand splitten
Zu schnell sendenMinecraft-CrashThrottling anpassen

Best Practice

# DO: Befehle nacheinander ausführen
while True:
    command = rcon_queue.get()
    minecraft_server.execute(command)
    time.sleep(0.05)  # Kurze Pause für Stabilität

# DON'T: Befehle parallel ausführen (führt zu Instabilität!)
for command in large_command_batch:
    minecraft_server.execute(command)  # ← Zu schnell!

[!NOTE] Dieses Beispiel ist stark vereinfacht. Im Hauptprogramm sind mehrere hundert Zeilen notwendig, um RCON stabil zu betreiben, Fehler sauber abzufangen und alle Befehle zuverlässig der Reihe nach abzuarbeiten.


Zusammenfassung

  • RCON = Netzwerk-Protokoll für Commands
  • Queued = Um nicht zu überlasten
  • Rate-Limiting = Dynamisch angepasst

Nächstes Kapitel: mcfunction-Dateien