Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f7e99f8625 | |||
| e03ebffb64 |
@@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: Minecraft BungeeCord Status – Network Edition
|
* Plugin Name: Minecraft BungeeCord Status – Network Edition
|
||||||
* Description: Der ultimative Live-Status für dein BungeeCord Netzwerk (Border None Fix).
|
* Description: Der ultimative Live-Status für dein BungeeCord Netzwerk (Border None Fix).
|
||||||
* Tags: minecraft, bungeecord, server status, player list
|
* Tags: minecraft, bungeecord, server status, player list
|
||||||
* Version: 3.6.1
|
* Version: 3.6.3
|
||||||
* Author: M_Viper
|
* Author: M_Viper
|
||||||
* Requires at least: 6.0
|
* Requires at least: 6.0
|
||||||
* Requires PHP: 7.4
|
* Requires PHP: 7.4
|
||||||
@@ -59,6 +59,23 @@ function mcss_format_minecraft_colors($text) {
|
|||||||
return $formatted;
|
return $formatted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ---------------- HELPER: 3D AVATAR URL ---------------- */
|
||||||
|
function mcss_get_3d_avatar($name, $uuid = null) {
|
||||||
|
// Bedrock-Spieler erkennen (Name enthält Punkt oder UUID beginnt mit xuid)
|
||||||
|
$is_bedrock = strpos($name, '.') !== false || ($uuid && strpos($uuid, 'xuid') === 0);
|
||||||
|
|
||||||
|
if ($is_bedrock) {
|
||||||
|
// Bedrock: mc-heads.net mit 3D Head (nutze UUID falls vorhanden)
|
||||||
|
if ($uuid && !empty($uuid)) {
|
||||||
|
return 'https://mc-heads.net/head/' . rawurlencode($uuid) . '/100';
|
||||||
|
}
|
||||||
|
return 'https://mc-heads.net/head/' . rawurlencode($name) . '/100';
|
||||||
|
} else {
|
||||||
|
// Java: mc-heads.net mit 3D Head
|
||||||
|
return 'https://mc-heads.net/head/' . rawurlencode($name) . '/100';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- AUTO UPDATE (MCSS) ---------------- */
|
/* ---------------- AUTO UPDATE (MCSS) ---------------- */
|
||||||
if ( ! class_exists( 'MCSS_Auto_Update' ) ) {
|
if ( ! class_exists( 'MCSS_Auto_Update' ) ) {
|
||||||
class MCSS_Auto_Update {
|
class MCSS_Auto_Update {
|
||||||
@@ -547,10 +564,12 @@ function mcss_fetch_server_with_ranks($srv) {
|
|||||||
if (is_array($player_data)) {
|
if (is_array($player_data)) {
|
||||||
$name = $player_data['name'];
|
$name = $player_data['name'];
|
||||||
$prefix = $player_data['prefix'] ?? '';
|
$prefix = $player_data['prefix'] ?? '';
|
||||||
|
$uuid = $player_data['uuid'] ?? null;
|
||||||
} else {
|
} else {
|
||||||
// Fallback für alte API
|
// Fallback für alte API
|
||||||
$name = $player_data;
|
$name = $player_data;
|
||||||
$prefix = '';
|
$prefix = '';
|
||||||
|
$uuid = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. Prefix mit Farben konvertieren
|
// 1. Prefix mit Farben konvertieren
|
||||||
@@ -566,9 +585,13 @@ function mcss_fetch_server_with_ranks($srv) {
|
|||||||
$display_html = $name_html;
|
$display_html = $name_html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4. 3D Avatar URL generieren (mit Bedrock-Support)
|
||||||
|
$avatar_url = mcss_get_3d_avatar($name, $uuid);
|
||||||
|
|
||||||
$players_info[] = [
|
$players_info[] = [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'avatar' => "https://mc-heads.net/avatar/" . rawurlencode($name) . "/64",
|
'uuid' => $uuid,
|
||||||
|
'avatar' => $avatar_url,
|
||||||
'prefix' => $prefix,
|
'prefix' => $prefix,
|
||||||
'display_html' => $display_html,
|
'display_html' => $display_html,
|
||||||
'rank' => $prefix ?: 'Spieler',
|
'rank' => $prefix ?: 'Spieler',
|
||||||
@@ -670,7 +693,7 @@ function mcss_shortcode($atts) {
|
|||||||
$widget_width = "650px";
|
$widget_width = "650px";
|
||||||
$widget_padding = "15px";
|
$widget_padding = "15px";
|
||||||
$logo_size = "70px";
|
$logo_size = "70px";
|
||||||
$player_head_size = "32px";
|
$player_head_size = "40px"; // Größer für 3D-Köpfe
|
||||||
|
|
||||||
$copy_addr = !empty($srv['copy_address']) ? $srv['copy_address'] : $srv['host'];
|
$copy_addr = !empty($srv['copy_address']) ? $srv['copy_address'] : $srv['host'];
|
||||||
if (empty($srv['hide_port']) && !empty($srv['player_port_copy'])) {
|
if (empty($srv['hide_port']) && !empty($srv['player_port_copy'])) {
|
||||||
@@ -756,13 +779,13 @@ function mcss_shortcode($atts) {
|
|||||||
|
|
||||||
<!-- PLAYER GRID -->
|
<!-- PLAYER GRID -->
|
||||||
<span style="color:#666;margin-bottom:15px;">Spieler:</span>
|
<span style="color:#666;margin-bottom:15px;">Spieler:</span>
|
||||||
<div id="mcss-player-grid-<?php echo esc_attr($uid); ?>" style="display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;color:#666;justify-content:center;">
|
<div id="mcss-player-grid-<?php echo esc_attr($uid); ?>" style="display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;color:#666;justify-content:center;">
|
||||||
|
|
||||||
<?php if (!empty($data['players']) && is_array($data['players'])): ?>
|
<?php if (!empty($data['players']) && is_array($data['players'])): ?>
|
||||||
<?php foreach ($data['players'] as $p): ?>
|
<?php foreach ($data['players'] as $p): ?>
|
||||||
<div style="text-align:center;">
|
<div style="text-align:center;">
|
||||||
<img src="<?php echo esc_url($p['avatar']); ?>" style="width:<?php echo $player_head_size; ?>;height:<?php echo $player_head_size; ?>;border-radius:4px;">
|
<img src="<?php echo esc_url($p['avatar']); ?>" style="width:<?php echo $player_head_size; ?>;height:<?php echo $player_head_size; ?>;border-radius:6px;box-shadow:0 2px 6px rgba(0,0,0,0.15);" loading="lazy">
|
||||||
<div style="font-size:0.75em;"><?php echo $p['display_html']; ?></div>
|
<div style="font-size:0.75em;margin-top:4px;"><?php echo $p['display_html']; ?></div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
@@ -847,8 +870,8 @@ function mcss_shortcode($atts) {
|
|||||||
d.players.forEach(function(p){
|
d.players.forEach(function(p){
|
||||||
var content = p.display_html ? p.display_html : p.name;
|
var content = p.display_html ? p.display_html : p.name;
|
||||||
html += '<div style="text-align:center;">' +
|
html += '<div style="text-align:center;">' +
|
||||||
'<img src="' + (p.avatar ? p.avatar : '') + '" style="width:<?php echo $player_head_size; ?>;height:<?php echo $player_head_size; ?>;border-radius:4px;">' +
|
'<img src="' + (p.avatar ? p.avatar : '') + '" style="width:<?php echo $player_head_size; ?>;height:<?php echo $player_head_size; ?>;border-radius:6px;box-shadow:0 2px 6px rgba(0,0,0,0.15);" loading="lazy">' +
|
||||||
'<div style="font-size:0.75em;">' + content + '</div>' +
|
'<div style="font-size:0.75em;margin-top:4px;">' + content + '</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
92
README.md
92
README.md
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
StatusAPI zeigt den aktuellen Status deines Minecraft-Servers direkt auf deiner Webseite an – inklusive Online/Offline, Version, Ping, Spieleranzahl und Spieler-Avatare.
|
StatusAPI zeigt den aktuellen Status deines Minecraft-Servers direkt auf deiner Webseite an – inklusive Online/Offline, Version, Ping, Spieleranzahl und Spieler-Avatare.
|
||||||
|
|
||||||
|
**StatusAPI Repository:** [https://git.viper.ipv64.net/M_Viper/StatusAPI](https://git.viper.ipv64.net/M_Viper/StatusAPI)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Zeigt Serverstatus: **Online / Offline**
|
- Zeigt Serverstatus: **Online / Offline**
|
||||||
@@ -12,26 +16,67 @@ StatusAPI zeigt den aktuellen Status deines Minecraft-Servers direkt auf deiner
|
|||||||
- Hinweise/Banner können vom Nutzer geschlossen werden
|
- Hinweise/Banner können vom Nutzer geschlossen werden
|
||||||
- Anpassbare Darstellung für verschiedene Layouts
|
- Anpassbare Darstellung für verschiedene Layouts
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Wichtige Hinweise
|
## Wichtige Hinweise
|
||||||
|
|
||||||
### BungeeCord Plugin
|
### BungeeCord Plugin (Voraussetzung)
|
||||||
|
|
||||||
|
⚠️ **Die [StatusAPI](https://git.viper.ipv64.net/M_Viper/StatusAPI) MUSS auf deinem BungeeCord-Server installiert sein!**
|
||||||
|
|
||||||
Das Plugin **StatusAPI.jar** muss in den BungeeCord Plugin-Ordner kopiert werden, damit die API korrekt funktioniert.
|
Das Plugin **StatusAPI.jar** muss in den BungeeCord Plugin-Ordner kopiert werden, damit die API korrekt funktioniert.
|
||||||
|
```text
|
||||||
|
BungeeCord/
|
||||||
|
├─ plugins/
|
||||||
|
│ └─ StatusAPI.jar ← PFLICHT
|
||||||
|
└─ config.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
**Download:** [https://git.viper.ipv64.net/M_Viper/StatusAPI](https://git.viper.ipv64.net/M_Viper/StatusAPI)
|
||||||
|
|
||||||
### WordPress Integration
|
### WordPress Integration
|
||||||
|
|
||||||
In WordPress muss der API-Port auf **9191** eingestellt sein, damit die Serverdaten korrekt abgerufen werden.
|
In WordPress muss der API-Port auf **9191** eingestellt sein, damit die Serverdaten korrekt abgerufen werden.
|
||||||
Stelle sicher, dass dein Server und die Webseite auf diesen Port zugreifen können.
|
Stelle sicher, dass dein Server und die Webseite auf diesen Port zugreifen können.
|
||||||
|
|
||||||
|
Die StatusAPI stellt einen HTTP-Endpunkt bereit (Standard: `http://localhost:9191`), den das WordPress-Plugin abfragt.
|
||||||
|
|
||||||
### Shortcode für WordPress
|
### Shortcode für WordPress
|
||||||
|
|
||||||
Um den Serverstatus auf deiner WordPress-Seite anzuzeigen, füge einfach folgenden Shortcode ein:
|
Um den Serverstatus auf deiner WordPress-Seite anzuzeigen, füge einfach folgenden Shortcode ein:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
[bungeecord_status id="Bungeecord"]
|
[bungeecord_status id="Bungeecord"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Ersetze `"Bungeecord"` durch die ID deines Servers, falls mehrere Server eingebunden werden.
|
Ersetze `"Bungeecord"` durch die ID deines Servers, falls mehrere Server eingebunden werden.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Schritt 1: StatusAPI auf BungeeCord installieren
|
||||||
|
|
||||||
|
1. Lade die **[StatusAPI](https://git.viper.ipv64.net/M_Viper/StatusAPI)** herunter
|
||||||
|
2. Kopiere die **StatusAPI.jar** in den `plugins`-Ordner deines BungeeCord-Servers
|
||||||
|
3. Starte den BungeeCord-Server neu
|
||||||
|
4. Die API läuft nun standardmäßig auf Port **9191**
|
||||||
|
|
||||||
|
### Schritt 2: WordPress-Plugin einrichten
|
||||||
|
|
||||||
|
1. Installiere das WordPress-Plugin für den BungeeCord-Status
|
||||||
|
2. Gehe zu den Plugin-Einstellungen
|
||||||
|
3. Trage die **StatusAPI URL** ein (z.B. `http://localhost:9191`)
|
||||||
|
4. Speichere die Einstellungen
|
||||||
|
|
||||||
|
### Schritt 3: Shortcode einbinden
|
||||||
|
|
||||||
|
Füge den Shortcode auf einer beliebigen WordPress-Seite ein:
|
||||||
|
```html
|
||||||
|
[bungeecord_status id="Bungeecord"]
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Beispielanzeige
|
## Beispielanzeige
|
||||||
|
|
||||||
**Status:** Online
|
**Status:** Online
|
||||||
@@ -42,17 +87,52 @@ Ersetze `"Bungeecord"` durch die ID deines Servers, falls mehrere Server eingebu
|
|||||||
**Avatare:**
|
**Avatare:**
|
||||||
 <!-- Platzhalter – wird im Plugin dynamisch geladen -->
|
 <!-- Platzhalter – wird im Plugin dynamisch geladen -->
|
||||||
|
|
||||||
> Der Abstand zwischen dem Text „Spieler:“ und den Avataren ist bewusst etwas größer, um die Übersichtlichkeit zu erhöhen.
|
> Der Abstand zwischen dem Text „Spieler:" und den Avataren ist bewusst etwas größer, um die Übersichtlichkeit zu erhöhen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Nutzung
|
## Nutzung
|
||||||
|
|
||||||
1. Shortcode an der gewünschten Stelle einfügen
|
1. Shortcode an der gewünschten Stelle einfügen
|
||||||
2. Der Serverstatus aktualisiert sich automatisch, sodass die angezeigten Spieler und der Ping immer aktuell sind
|
2. Der Serverstatus aktualisiert sich automatisch, sodass die angezeigten Spieler und der Ping immer aktuell sind
|
||||||
|
3. Alle Daten werden live von der StatusAPI bezogen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technische Details
|
||||||
|
|
||||||
|
- **API-Port:** 9191 (Standard)
|
||||||
|
- **Update-Intervall:** 2 Sekunden (automatisch)
|
||||||
|
- **Protokoll:** HTTP/JSON
|
||||||
|
- **Datenquelle:** StatusAPI auf BungeeCord
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
Bei Problemen überprüfe bitte:
|
Bei Problemen überprüfe bitte:
|
||||||
|
|
||||||
- Ob das Plugin **StatusAPI.jar** korrekt im BungeeCord Plugin-Ordner liegt
|
- Ob das Plugin **[StatusAPI.jar](https://git.viper.ipv64.net/M_Viper/StatusAPI)** korrekt im BungeeCord Plugin-Ordner liegt
|
||||||
- Ob der API-Port in WordPress korrekt auf **9191** eingestellt ist
|
- Ob der API-Port in WordPress korrekt auf **9191** eingestellt ist
|
||||||
- Ob der Server erreichbar ist und Spieler online sind
|
- Ob der BungeeCord-Server läuft und die StatusAPI erreichbar ist
|
||||||
|
- Ob keine Firewall den Port 9191 blockiert
|
||||||
|
- Ob die StatusAPI gültige JSON-Daten zurückliefert
|
||||||
|
|
||||||
|
### Häufige Fehler
|
||||||
|
|
||||||
|
❌ **"Server offline" obwohl Server läuft**
|
||||||
|
- StatusAPI ist nicht installiert oder läuft nicht
|
||||||
|
- Falscher Port in WordPress eingestellt
|
||||||
|
- Firewall blockiert Port 9191
|
||||||
|
|
||||||
|
❌ **Keine Spieler werden angezeigt**
|
||||||
|
- StatusAPI liefert keine Spielerdaten
|
||||||
|
- API-Verbindung fehlgeschlagen
|
||||||
|
- WordPress kann die API-URL nicht erreichen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Weitere Informationen
|
||||||
|
|
||||||
|
Für detaillierte Informationen zur Installation, Konfiguration und Fehlerbehebung der StatusAPI:
|
||||||
|
**[https://git.viper.ipv64.net/M_Viper/StatusAPI](https://git.viper.ipv64.net/M_Viper/StatusAPI)**
|
||||||
Reference in New Issue
Block a user