图特书籍

图特书籍

小小友好指南手册

生活质量

需要 HyUI! 
📘 TuTBooKs(编辑中,待完成)

大家好!我是 TuTBooKs —— 一本小巧友好的指南书,热爱帮助模组开发者解释他们的模组如何运作,这样玩家就不必在黑暗中摸索或碰壁了。✨📖


💡 TuTBooKs 能做什么?

有了 TuTBooKs,你可以:

  • 📚 创建教程页面和游戏内文档
  • 🧭 添加提示、建议和分步指南
  • 🖼️ 嵌入图片、🔗 链接以及其他有用的内容
  • 🔄 让你的内容随着模组的更新而保持同步更新

🧸 你的游戏内小助手

把我当作你的可爱游戏内助手吧——随时准备帮助玩家理解你的模组,并充分享受其中的乐趣,不再迷茫或受挫。😊

我在这里是为了让你的模组变得更清晰、更友好、更好玩 💖

TuTBooKs 远程书本(GitHub ZIP)—— 快速教程

本指南将展示如何将你的 TuTBooKs 导出文件托管在 GitHub Releases 上,并在模组启动时自动下载到 Mods/TutBooksConfig/ 目录中。


1) 从编辑器中导出你的书

  1. 打开 TuTBooKs 编辑器 /tutbooks editor
  2. 编写你的书
  3. 点击 导出 ZIP
    你应该会得到一个包含以下内容的 ZIP 文件:
Common/ tutbooks/

2) 将 ZIP 上传到 GitHub Releases

  1. 创建一个代码仓库,例如 HyProTechBook
  2. 进入 Releases → New release
  3. 标签名:latest(重要)
  4. 将你的 ZIP 文件作为发布资产上传
    示例文件名:HyProTechBook.zip

你的下载 URL 看起来会像这样:

https://github.com/YoofeCZ/HyProTechBook/releases/latest/download/HyProTechBook.zip 

通过命令自动下载 TutBooks(PlayerReady)重要!

✅ 此代码的作用

  • 等待玩家完全准备就绪(PlayerReadyEvent)
  • 控制台身份运行 TutBooks 命令,因此没有权限问题
  • 下载你的书本 ZIP 文件,然后重新加载 TutBooks
  • 每次服务器启动仅运行一次(避免垃圾信息)
  • 如果失败,将在下一个玩家加入时重试

✅ 你必须更改的内容

替换以下两个常量:

private static final String TUTBOOKS_DOWNLOAD_URL =
        "https://github.com/YoofeCZ/HyProTechBook/releases/latest/download/HyProTechBook.zip";
private static final String TUTBOOKS_MOD_ID = "HyProTech";

更改为你自己的:

  • TUTBOOKS_DOWNLOAD_URL → 你自己的 GitHub Release ZIP 链接
  • TUTBOOKS_MOD_ID → 你自己的模组 ID(Mods/TutBooksConfig/ 下的文件夹名称)

✅ 完整示例(保留原样,仅更改 URL + modId)

import com.hypixel.hytale.server.core.command.system.CommandManager;
import com.hypixel.hytale.server.core.console.ConsoleSender;
import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import java.util.concurrent.atomic.AtomicBoolean;

public class MainClass extends JavaPlugin { private static final String TUTBOOKS_DOWNLOAD_URL = "https://github.com/YoofeCZ/HyProTechBook/releases/latest/download/HyProTechBook.zip"; private static final String TUTBOOKS_MOD_ID = "HyProTech"; private final AtomicBoolean tutbooksDownloadQueued = new AtomicBoolean(false);

public MainClass(JavaPluginInit init) {
    super(init);
}

@Override
protected void setup() {
    super.setup();

    registerTutbooksDownloadOnPlayerJoin();

    // ...rest of setup
}

private void registerTutbooksDownloadOnPlayerJoin() {
    getEventRegistry().registerGlobal(
            PlayerReadyEvent.class,
            event -> {
                if (!tutbooksDownloadQueued.compareAndSet(false, true)) {
                    return;
                }
                CommandManager commandManager = CommandManager.get();
                if (commandManager == null) {
                    tutbooksDownloadQueued.set(false);
                    getLogger().atWarning().log("[HyProTech] CommandManager not available.");
                    return;
                }
                String downloadCommand = String.format(
                        "tutbooks download %s %s",
                        TUTBOOKS_MOD_ID,
                        TUTBOOKS_DOWNLOAD_URL);

                commandManager
                        .handleCommand(ConsoleSender.INSTANCE, downloadCommand)
                        .thenCompose(ignored ->
                                commandManager.handleCommand(ConsoleSender.INSTANCE, "tutbooks reload"))
                        .exceptionally(ex -> {
                            tutbooksDownloadQueued.set(false);
                            getLogger().atWarning().log(
                                    "[HyProTech] TutBooks download/reload failed: %s",
                                    ex.getMessage());
                            return null;
                        });
            });
}

}


它的作用是:
  • 将 ZIP 下载到 Mods/TutBooksConfig/HyProTech/
  • 解压 index.json 和所有图片
  • 保存版本元数据(ETag/Last-Modified)
  • 仅在文件发生更改时重新下载

4) 在游戏中重新加载

模组启动后:

/tutbooks reload /tutbooks <bookId>

✅ 就这些了。
每次你在 GitHub 上更新 ZIP 文件,玩家都将在下次启动时获取新书。

如果你希望在 ZIP 中包含一个“版本文件”,或者添加一个在服务器运行时更新的命令,请告诉我,我会加上。