幫我們的粉絲專頁按個讚!
本篇文章將教您如何在網頁上顯示 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
類別:Minecraft (當個創世神) 教學 程式 遊戲
標籤:HTML Minecraft Minecraft Server Minecraft 伺服器 PHP Server 伺服器 平台通用 狀態 網頁
張文相 Wenxiang Zhang
我是本站的站長,是一位 Web 工程師,喜歡 Coding XDD
本站內容未經授權許可請勿擅自抄襲
如果需引用部分內容請註明來源網址
發表時間:2018/04/06 12:45:00
修改時間:2019/03/13 16:23:19