PHP-Client-Beispiel
Eranio Veröffentlicht am: 14. Oktober 2026
StreamBridge (Hytale): PHP-Client-Beispiel
Ein einfacher PHP-Client, der dieselbe Rolle wie das Plugin übernimmt: in regelmäßigen Abständen den Bridge-Endpunkt abfragen, den eigenen Status melden und die zurückgegebenen Aktionen verarbeiten. Nützlich, wenn du eine eigene Anbindung gegen dieselbe Schnittstelle bauen möchtest.
Basis-Klasse
<?php
class StreamBridgeHytaleClient
{
private string $url;
private string $token;
public function __construct(string $url, string $token)
{
$this->url = rtrim($url, '/') . '/api/v1/hytale/bridge';
$this->token = $token;
}
/**
* Meldet den aktuellen Stand und holt wartende Aktionen ab.
*
* @param array $players Liste der Online-Spieler
* @param array $results Ergebnisse zuvor ausgeführter Aktionen
* @return array{actions: array, display: array}
*/
public function poll(array $players = [], array $results = [], bool $paused = false): array
{
$ch = curl_init($this->url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'version' => '1.4.1',
'paused' => $paused,
'game' => 'hytale',
'players' => $players,
'results' => $results,
]),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $this->token,
],
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status !== 200) {
throw new RuntimeException("Bridge-Anfrage fehlgeschlagen (HTTP {$status}): {$response}");
}
return json_decode($response, true) ?? ['actions' => [], 'display' => []];
}
}
Verwendung
$client = new StreamBridgeHytaleClient('https://dein-panel.beispiel', 'dein-token');
$players = [
['name' => 'Steve', 'health' => 20, 'max_health' => 20, 'food' => 20, 'level' => 0,
'world' => 'default', 'dimension' => '', 'gamemode' => 'survival', 'effects' => [], 'timers' => []],
];
$result = $client->poll($players);
foreach ($result['actions'] as $action) {
$farbe = ($action['group'] ?? '') === 'sabotage' ? 'rot' : 'grün';
echo "Aktion {$action['action']} für {$action['player']} von {$action['viewer']} (Anzeige: {$farbe})\n";
// Hier die Aktion im eigenen Spiel/Server ausführen ...
// Danach das Ergebnis beim nächsten poll()-Aufruf zurückmelden:
// $results[] = ['id' => $action['id'], 'ok' => true, 'detail' => null];
}
if ($result['display']['live'] ?? false) {
echo "{$result['display']['streamer']} ist gerade live auf {$result['display']['platform']}!\n";
}
Wichtig: Jede empfangene Aktion muss beim nächsten poll()-Aufruf im results-Array quittiert werden (mit ihrer id), sonst gilt sie weiterhin als offen.
Häufige Fragen
Was bedeutet das group-Feld in einer Aktion?
Es zeigt an, ob die Aktion als Sabotage eingestuft ist (sabotage) oder nicht (leer). Das steuert bei StreamBridge-Hytale nur die Farbe der Titel-Anzeige, du kannst es in einer eigenen Anbindung für eigene Zwecke nutzen.
Wie oft sollte ich poll() aufrufen?
Das echte Plugin fragt standardmäßig alle 1000 Millisekunden nach (siehe pollIntervalMs in der Konfiguration).
Was passiert, wenn ich ein Ergebnis nicht melde? Die Aktion bleibt als "gesendet, aber unbestätigt" stehen und wird serverseitig nicht als erfolgreich verbucht.