MediaWiki:Mainpage.js

MediaWiki界面页面
Aurora Lemon讨论 | 贡献2023年7月21日 (五) 17:38的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
$(function() {
    /* Player */
    function getServerStatus() {
        if ($("#live-player-status").length > 0) {
            $.getJSON("https://mcapi.us/server/status?ip=helium.hydcraft.cn&port=25565", function(data) {
            if (data.online == true) {
                $("#live-info-start").css("display" , "block");
                var curPlayers = data.players.now;
                var maxPlayers = data.players.max;
                var width = curPlayers / maxPlayers;

                var statusText = curPlayers + " / " + maxPlayers;
                
                if (curPlayers > maxPlayers)
                    $("#live-player-curmax").css("display" , "block");
                else if (curPlayers == maxPlayers)
                    $("#live-player-max").css("display" , "block");
                else if (curPlayers < maxPlayers)
                    $("#live-player-normal").css("display" , "block");
                else if (curPlayers == maxPlayers / 2)
                    $("#live-player-center").css("display" , "block");

                if (curPlayers <= maxPlayers / 2)
                    $("#live-player-progress").css("background-color" , "#096dd9");
                else if(curPlayers > maxPlayers / 2 && curPlayers <= maxPlayers * 0.9)
                    $("#live-player-progress").css("background-color" , "#ff7440");
                else if(curPlayers > maxPlayers * 0.9)
                    $("#live-player-progress").css("background-color" , "#a52a2a");
                else 
                    $("#live-player-progress").css("background-color" , "#096dd9");

                $("#live-player-status").html(statusText + " (" + (width * 100).toFixed(1) + "%)");
                $("#live-player-progress").width(width * 100 + '%'); 
            } else {
                $("#live-info-stop").css("display" , "block");
                var statusText = "服务器未启动";
                $("#live-player-status").html(statusText);
                $("#live-player-progress").width(0 + '%'); 
            }
            })

            .fail(function (xhr) {
            if (xhr.status == 502) {
                $("#live-player-status").html("无法获取服务器信息。");
            } else {
                $("#live-player-status").html("无法获取服务器信息,错误值:" + xhr.status + "。");
                $("#live-player-progress").width(100 + '%'); 
                $("#live-player-progress").css("background-color" , "#ff0000"); 
            }
            });
        }
    }

    getServerStatus();
    setInterval(getServerStatus, 60000);

    /* Poster */
    var page = document.querySelector("body");
    if (page.classList.contains('page-首页')) {
        var mwBody = document.getElementById('content');
        var newDiv = document.createElement('div');
        newDiv.setAttribute('class', 'header-image');
        newDiv.innerHTML = '<div class="header-image" style="background-image: linear-gradient(to top, var(--color-surface-0), transparent 150%), url(https://h2-wiki-1254268741.cos.accelerate.myqcloud.com/wiki-poster.png);background-size: cover;background-position: top;height: 36vh;margin-bottom: -28vh;"></div>';
        mwBody.parentNode.insertBefore(newDiv, mwBody);
    }

    /* Sakana */
	importScript( 'MediaWiki:Sakana.js' );

    /* Animate */
    function animate() {
        return new Promise(resolve => {
            let textBox = $('#title');
            let ani_index = 0;
            let str = 'Welcome to HydCraft Wiki! :D';
            let len = str.length;
        
            function input() {
                textBox.html(str.substr(0, ani_index) + '<span class="animate">|</span>');
                setTimeout(function() {
                    ani_index++;
                    if (ani_index === len + 1) {
                    $('.animate').addClass('on');
                    resolve(); // 动画执行完成后,调用 resolve() 以解析 Promise
                    return;
                    }
                    input();
                }, Math.random() * 600);
            }
        
            input();
        });
    }
    animate();
}());
为了让您的浏览体验更加高效、方便和个性化,遵照《中华人民共和国网络安全法》和《信息安全技术个人信息安全规范》,我们需要您允许本站使用Cookies。在某些情况下,Cookies是使网站正常运行的必要条件。