I Made a Minecraft Server Status Widget #1270
Freedbot
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This is a clean but informative Minecraft server status "widget" using https://mcsrvstat.us/ that I agonized on making for quite a while. It can display one or several different servers in the same widget. The information displayed depends on the minecraft server.properties settings. The default settings will work fine, but Public servers often hide the player list. Also, without setting 'enable-query=true', the player name list will be incomplete above some number I can't find (15 maybe?).
Instructions:
popMcsrvWidget('yourmcserveraddress','nonstandardport');
Features:
Issues:
If anyone can help resolve the issues and/or get a proper widget implementation of this put in Dashy, then please let me know. Otherwise, use this as you like.
widgets: - type: embed options: css: >- #mcsrv-widget{ .pop-mcsrv{ color:var(--item-text-color); display: flex; flex-flow: row wrap; justify-content: center; .server-icon{height: 128px; width: 128px; margin-right:10px;} .server-text { min-width: 0; flex: 0 1 58%; overflow:hidden; } .server-ip, .colored {color:var(--primary);} .server-ip {margin: -5px 0 0 0; } .animate{ display: inline-block; position: relative; animation: leftright 4s infinite alternate ease-in-out; } .player-gap{ margin: 5px 0 2px 0; .mc-version{ margin-left: 50px;}}.player-list{ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; text-align:justify;}}} @keyframes leftright { 0%, 20% {transform: translateX(0%); left: 0%;} 80%, 100% { transform: translateX(-100%);left: 100%;}} html: <div id="mcsrv-widget"></div> script: >- function popMcsrvWidget(serverIp,serverPort = '25565'){let serverIdent = serverIp+':'+serverPort;document.getElementById('mcsrv-widget').insertAdjacentHTML('beforeend','<div id="'+serverIdent+'" class="pop-mcsrv"><img class="server-icon" src="/item-icons/mc-down.png"/><div class="server-text"><h1 class="server-ip">'+serverIp+'</h1><div class="server-motd"></div><div class="player-gap"><span class="player-count">Not</span> <span class="colored">Online</span> <span class="mc-version"></span></div><div class="player-list"></div></div></div>');let serverBlock = document.getElementById(serverIdent); let longTitle = serverBlock.querySelector('h1'); if (longTitle.offsetWidth < longTitle.scrollWidth) {longTitle.classList.add('animate');} fetch('https://api.mcsrvstat.us/2/'+serverIdent).then(response => response.json()).then(data => handleServerStatus(data));function handleServerStatus(data){if(!data.online){console.log(data.online);return false;}else {serverBlock.querySelector('.server-icon').src = data.icon;serverBlock.querySelector('.server-motd').innerHTML = data.motd.html; serverBlock.querySelector('.player-count').innerHTML = data.players.online;serverBlock.querySelector('.mc-version').innerHTML = '<span class="colored">MC: </span>'+data.version; serverBlock.querySelector('.player-list').innerHTML = data.players.list.join(' ');}}}popMcsrvWidget('fake_mcserver.com');popMcsrvWidget('fake_mcserver2.com','28898');
Beta Was this translation helpful? Give feedback.
All reactions