【PHP】網頁顯示 Minecraft 伺服器狀態 (PC、PE 平台通用)

2018-04-06 |

本篇文章將教您如何在網頁上顯示 Minecraft 伺服器狀態!

在教學開始前,先下載我寫的範例專案吧!(點我前往 GitHub)

下載完解壓縮資料夾內應該有一個 src 資料夾,這資料夾內的檔案都很重要,我也寫好了 data.php 程式碼,要調用狀態顯示比較方便。

伺服器記得要啟用 Query 查詢,否則部分內容會無法取得,在 server.properties 文件內修改或新增 enable-query=true

我先來說明一下可以使用的變數,後續教學會使用到:

  • $status – 伺服器狀態 (在線 or 離線)
  • $platform – 伺服器平台 (MINECRAFT or MINECRAFTPE)
  • $gametype – 遊戲類型 (提醒一下,並不是遊戲模式喔)
  • $motd – 伺服器 MOTD (未清除顏色參數)
  • $clean_motd – 伺服器 MOTD (已清除顏色參數)
  • $host – 伺服器 IP 或網域 (例如:meow.mcpe.tw)
  • $hostip – 伺服器 IP
  • $port – 伺服器端口 (例如:19132 or 25565)
  • $players_max – 伺服器可容納最大玩家數
  • $players_online – 伺服器線上玩家數
  • $version – 伺服器兼容遊戲版本
  • $software – 伺服器使用的軟體或核心 (例如:PocketMine-MP 1.7dev-743)
  • $agreement – 使用的查詢協定,這是用來顯示查詢方式的 (Query or Ping)
  • $processed – 查詢耗時
  • $Players – 取得在線玩家列表 (此為陣列,需使用 foreach($Players as $Player))

接下來我來示範一下基本的用法

首先我們必須先定義伺服器 IP 和端口

$host = "meow.mcpe.tw"; //設定伺服器網域或 IP
$port = "19132"; //設定伺服器端口

然後引入 data.php (需要注意檔案路徑,我 data.php 是放在專案根目錄)

require __DIR__.'/data.php';

接下來我們來顯示伺服器狀態、名稱及玩家人數

<?php echo $clean_motd; ?> (<?php echo $status; ?>)<br>
線上人數:<?php echo $players_online; ?>/<?php echo $players_max; ?>

上面的程式碼整合起來

<?php
$host = "meow.mcpe.tw"; //設定伺服器網域或 IP
$port = "19132"; //設定伺服器端口

require __DIR__.'/data.php';
?>
<?php echo $clean_motd; ?> (<?php echo $status; ?>)<br>
線上人數:<?php echo $players_online; ?>/<?php echo $players_max; ?>

呈現樣子

以上是最基本的範例,你也可以自行修改排版,在上面的變數都可以自由使用!

接下來教如何顯示在線玩家清單,需要使用到 foreach

<?php if (is_array($Players)) : ?>
    <?php foreach($Players as $Player) : ?>
        <?php echo htmlspecialchars($Player); ?><br>
    <?php endforeach; ?>
<?php else: ?>
    無玩家在線。
<?php endif; ?>

上面是一個例子,呈現樣子為下圖

if (is_array($Players)) 是用來判斷 $Players 這變數是不是陣列 (如果有玩家就會以陣列顯示,否則顯示無玩家在線)

foreach($Players as $Player) 是迴圈,用來抓取陣列的值 (迴圈內變數請使用 $Player 而不是 $Players)

如果想要呈現玩家 Skin 可以這樣寫

<?php if (is_array($Players)) : ?>
    <?php foreach($Players as $Player) : ?>
        <?php if ($platform == "MINECRAFT") : ?>
            <?php echo '<img src="https://cravatar.eu/helmhead/'.htmlspecialchars($Player).'/15.png"> '.htmlspecialchars($Player); ?><br>
        <?php else: ?>
            <?php echo '<img src="https://cravatar.eu/helmhead/steve/15.png"> '.htmlspecialchars($Player); ?><br>
        <?php endif; ?>
    <?php endforeach; ?>
<?php else: ?>
    無玩家在線。
<?php endif; ?>

if ($platform == "MINECRAFT") 是用來判斷伺服器是否為 Java (PC) 版,因為 PE 版並不能查詢 Skin,所以默認顯示 Steve 皮膚!

以上就是最基本的教學,還有其他變數你也可以寫入程式碼測試看看,下面是完整的程式碼範例

<?php
/*
 * 張文相 Zhang Wenxiang - 個人 Blog
 * https://blog.reh.tw/
 *
 * 範例教學
 * https://blog.reh.tw/webpage-display-minecraft-server-status/
 */
$host = "meow.mcpe.tw"; //設定伺服器網域或 IP
$port = "19132"; //設定伺服器端口
/*
$host = $_GET["host"];
$port = $_GET["port"];
*/

require __DIR__.'/data.php';
?>
<html>
    <head>
        <title>網頁顯示 Minecraft 伺服器狀態示範</title>
    </head>
    <body>
        <h1>網頁顯示 Minecraft 伺服器狀態示範</h1>
        <h2>教學文章:<a href="https://blog.reh.tw/webpage-display-minecraft-server-status/" target="_blank">https://blog.reh.tw/webpage-display-minecraft-server-status/</a></h2>
        <hr>
        <p>狀態:<font color="#2a6c0f"><?php echo $status; ?></font></p>
        <p>IP 或網域:<font color="#2a6c0f"><?php echo $host; ?></font>
            <br>主機 IP:<font color="#2a6c0f"><?php echo $hostip; ?></font>
            <br>端口:<font color="#2a6c0f"><?php echo $port; ?></font></p>
        <p>MOTD:<font color="#2a6c0f"><?php echo $motd; ?></font>
            <br>清除顏色參數後的 MOTD:<font color="#2a6c0f"><?php echo $clean_motd; ?></font></p>
        <p>平台:<font color="#2a6c0f"><?php echo $platform; ?></font>
            <br>遊戲類型:<font color="#2a6c0f"><?php echo $gametype; ?></font></p>
        <p>兼容遊戲版本:<font color="#2a6c0f"><?php echo $version; ?></font>
            <br>伺服器使用的軟體或核心:<font color="#2a6c0f"><?php echo $software; ?></font></p>
        <p>可容納最大玩家數:<font color="#2a6c0f"><?php echo $players_max; ?></font>
            <br>線上玩家數:<font color="#2a6c0f"><?php echo $players_online; ?></font></p>
        <p>使用的查詢協定:<font color="#2a6c0f"><?php echo $agreement; ?></font>
            <br>查詢耗時:<font color="#2a6c0f"><?php echo $processed; ?></font></p>
        <hr>
        <h3>目前在線玩家 <font color="#2a6c0f"><?php echo $players_online; ?></font>/<font color="#2a6c0f"><?php echo $players_max; ?></font></h3>
        <?php if (is_array($Players)) : ?>
        <?php foreach($Players as $Player) : ?>
        <font color="#2a6c0f"><?php echo htmlspecialchars($Player); ?></font><br>
        <?php endforeach; ?>
        <?php else: ?>
        無玩家在線。
        <?php endif; ?>
    </body>
</html>

再次提醒伺服器記得要啟用 Query 查詢,否則部分內容會無法取得,在 server.properties 文件內修改或新增 enable-query=true

GitHub
https://github.com/GoneTone/webpage-minecraft-server-status

範例網頁
https://demo.reh.tw/mcstatus/?host=meow.mcpe.tw&port=19132



【PHP】網頁顯示 Minecraft 伺服器狀態 (PC、PE 平台通用) - QR Code
本站內容未經授權許可請勿擅自抄襲
如果需引用部分文章內容請註明來源網址

發表時間:2018-04-06 12:45:00
此文章網址:https://blog.reh.tw/archives/204
關於作者
張文相 Zhang Wenxiang 的頭像

張文相 Zhang Wenxiang

我是本站的站長,喜歡 Coding 的一位學生。

張文相 Zhang Wenxiang

我是本站的站長,喜歡 Coding 的一位學生。


分類:Minecraft (當個創世神) 教學 程式 遊戲
標籤:HTML Minecraft Minecraft Server Minecraft 伺服器 PHP Server 伺服器 平台通用 狀態 網頁



Facebook 留言