From 615248c214c5e4b2873e90db0751ae8a42fe79eb Mon Sep 17 00:00:00 2001 From: Wesley Chalmers Date: Sun, 16 Aug 2020 00:06:35 -0400 Subject: [PATCH] Handle non-extra server MOTDs more gracefully --- mcstatus.css | 1 + mcstatus.js | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/mcstatus.css b/mcstatus.css index b66aaea..49aab74 100644 --- a/mcstatus.css +++ b/mcstatus.css @@ -11,6 +11,7 @@ white-space: pre; font-family: monospace; background-color: #000; + color: #bebebe; width: 53ch; padding: 10px; diff --git a/mcstatus.js b/mcstatus.js index ad9ab62..7289314 100644 --- a/mcstatus.js +++ b/mcstatus.js @@ -19,6 +19,20 @@ function loadStatus(parent, server, callback) { } function mcDescriptionToHTML(descriptionRaw) { + if (typeof descriptionRaw == "object") { + return mcExtraDescriptionToHTML(descriptionRaw["extra"]); + } else { + var root = document.createElement("div"); + root.classList.add("mc-description"); + + description = descriptionRaw.replace(/\xa7./g, ""); + + root.appendChild(document.createTextNode(description)); + return root; + } +} + +function mcExtraDescriptionToHTML(descriptionRaw) { const color_codes = { "dark_red": "#be0000", "red": "#fe3f3f", @@ -85,7 +99,7 @@ function mcPlayersToHTML(playersRaw) { var list = document.createElement("ul"); list.classList.add("mc-players-list"); - if (playersRaw["online"] > 0) { + if (playersRaw["online"] > 0 && playersRaw["sample"].length > 0) { playersRaw["sample"].forEach(function(player, index) { var li = document.createElement("li"); li.appendChild(document.createTextNode(player["name"])); @@ -106,7 +120,7 @@ function handleStatus(parent, result) { root.classList.add("mc-status-root"); // MOTD: - var descriptionRaw = [{ + var descriptionRaw = {"extra": [{ "bold": true, "color": "red", "italic": false, @@ -114,10 +128,10 @@ function handleStatus(parent, result) { "strikethrough": false, "text": "Server offline", "underlined": false - }]; + }]}; if (code == 200) { - descriptionRaw = status["description"]["extra"]; + descriptionRaw = status["description"]; } var description = mcDescriptionToHTML(descriptionRaw); root.appendChild(description);