优化多人联机反馈页面 (#297)
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
neveler 2025-10-18 22:18:19 +08:00 committed by GitHub
parent 36e4fb4e76
commit 9b3f84b072
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 72 additions and 57 deletions

View File

@ -307,6 +307,8 @@ compress_html:
head_scripts:
- /assets/js/theme.js
after_footer_scripts:
- /assets/js/plugins/jquery.auto-redirect.js
# jekyll-feed
feed:

View File

@ -1,15 +1,21 @@
---
title: HMCL x Terracotta | 陶瓦联机
title: 多人联机反馈
date: 2025-10-07 18:44:00 +0800
author: Burning_TNT
---
## 反馈
您即将被重定向到反馈表界面。
## Terracotta | 陶瓦联机
<!--{% comment %}-->
> [!TIP]
> 欢迎您填写[反馈表单](https://f.kdocs.cn/ksform/w/write/njMwdtgD?channel=mdlsjp)。
<!--{% endcomment %}-->
<!----{{ '>' }}
> 欢迎您填写<a href="https://f.kdocs.cn/ksform/w/write/njMwdtgD?channel=mdlsjp" data-delay="10" data-redirect>反馈表单</a>
{: .notice--success }
{{ '<' }}!---->
我们注意到了 EasyTier 项目。它提供了一种简单、安全、去中心化的异地组网方案,足以承载 Minecraft 的联机需求。
在 EasyTier 开发团队的帮助下,我们决定重新在启动器内提供联机服务。
@ -24,11 +30,3 @@ author: Burning_TNT
它的主要目标依然是让朋友之间能共同游玩,而不是长时间的对外开放。
最后,我想感谢一切参与到 EasyTier、Terracotta \| 陶瓦联机开发和测试、为 EasyTier 提供打洞和中继服务器的社区志愿者。欢迎大家访问 easytier.cn 深入了解这一项目。
<script>
/* TODO: Read info from query argument 'v' and 'launcher_version' to determine the 'channel' argument in url. */
/* 等待 5 秒. */
setTimeout(function() {
window.location.href = "https://f.kdocs.cn/ksform/w/write/njMwdtgD?channel=mdlsjp";
}, 5000);
</script>

View File

@ -1,22 +0,0 @@
---
title: HMCL x Terracotta | 陶瓦联机
date: 2025-10-07 18:44:00 +0800
author: Burning_TNT
---
## Terracotta | 陶瓦联机
我们注意到了 EasyTier 项目。它提供了一种简单、安全、去中心化的异地组网方案,足以承载 Minecraft 的联机需求。
在 EasyTier 开发团队的帮助下,我们决定重新在启动器内提供联机服务。
如要体验陶瓦联机,请遵循以下步骤:打开 HMCL转到 **设置** - **通用**,展开 **启动器更新** ,勾选 **开发版**
然后,请根据启动器提示更新到 **3.7.0.300** 或以上版本,之后您可通过 HMCL 左下角 **多人联机** 入口体验 Terracotta | 陶瓦联机。
目前HMCL、PCL CE 已实现最基本的互通支持。我们欢迎其他启动器接入 Scaffolding 协议实现更完整的互通功能。
为向尽可能多的玩家免费开放基本联机功能,陶瓦联机将极大程度上基于 P2P。
简单而言,陶瓦联机不会比市面上基于服务器中继的联机方案稳定,但其开销将远远低于其他联机方案。
需要特别提醒的是:联机功能不会更不能取代 Minecraft: Java Edition 服务器。
它的主要目标依然是让朋友之间能共同游玩,而不是长时间的对外开放。
最后,我想感谢一切参与到 EasyTier、Terracotta \| 陶瓦联机开发和测试、为 EasyTier 提供打洞和中继服务器的社区志愿者。欢迎大家访问 easytier.cn 深入了解这一项目。

View File

@ -1,22 +0,0 @@
---
title: HMCL x Terracotta | 陶瓦联机
date: 2025-10-07 18:44:00 +0800
author: Burning_TNT
---
## Terracotta | 陶瓦联机
我们注意到了 EasyTier 项目。它提供了一种简单、安全、去中心化的异地组网方案,足以承载 Minecraft 的联机需求。
在 EasyTier 开发团队的帮助下,我们决定重新在启动器内提供联机服务。
如要体验陶瓦联机,请遵循以下步骤:打开 HMCL转到 **设置** - **通用**,展开 **启动器更新** ,勾选 **开发版**
然后,请根据启动器提示更新到 **3.7.0.300** 或以上版本,之后您可通过 HMCL 左下角 **多人联机** 入口体验 Terracotta | 陶瓦联机。
目前HMCL、PCL CE 已实现最基本的互通支持。我们欢迎其他启动器接入 Scaffolding 协议实现更完整的互通功能。
为向尽可能多的玩家免费开放基本联机功能,陶瓦联机将极大程度上基于 P2P。
简单而言,陶瓦联机不会比市面上基于服务器中继的联机方案稳定,但其开销将远远低于其他联机方案。
需要特别提醒的是:联机功能不会更不能取代 Minecraft: Java Edition 服务器。
它的主要目标依然是让朋友之间能共同游玩,而不是长时间的对外开放。
最后,我想感谢一切参与到 EasyTier、Terracotta \| 陶瓦联机开发和测试、为 EasyTier 提供打洞和中继服务器的社区志愿者。欢迎大家访问 easytier.cn 深入了解这一项目。

View File

@ -0,0 +1,59 @@
(function ($) {
var pluginName = "autoRedirect";
function Plugin(element, options) {
this.$el = $(element);
this.settings = $.extend({}, $.fn[pluginName].defaults, options, this.$el.data());
this.timer = null;
this.init();
}
Plugin.prototype = {
init: function () {
var self = this;
var delay = parseInt(self.settings.delay, 10);
var href = self.$el.attr("href");
if (!href) return;
var $info = $("<span class=\"redirect-info\"> (将在 <span class=\"time\">" + delay + "</span> 秒后自动跳转,您也可以手动<a href=\"javascript:;\" class=\"cancel-redirect\">取消跳转</a>) </span>");
self.$el.after($info);
self.timer = setInterval(function () {
delay--;
$info.find(".time").text(delay);
if (delay <= 0) {
clearInterval(self.timer);
window.location.href = href;
}
}, 1000);
$info.on("click", ".cancel-redirect", function () {
clearInterval(self.timer);
$info.text("");
});
},
destroy: function () {
clearInterval(this.timer);
this.$el.next(".redirect-info").remove();
}
};
$.fn[pluginName] = function (option) {
return this.each(function () {
var $this = $(this);
var instance = $this.data(pluginName);
if (!instance) {
$this.data(pluginName, new Plugin(this, option));
} else if (typeof option === "string" && instance[option]) {
instance[option]();
}
});
};
$.fn[pluginName].defaults = {
delay: 5
};
$(function () {
$("a[data-redirect]").each(function () {
$(this)[pluginName]();
});
});
})(jQuery);