Minecraft-BungeeCord-Status/minecraft-bungeecord-status.php aktualisiert

This commit is contained in:
2026-02-09 20:08:51 +00:00
parent e03ebffb64
commit f7e99f8625

View File

@@ -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 {