Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

doom.schedule — 原版数据包任务调度器

最新版本 Minecraft 许可

这是什么:一个纯数据包的任务调度框架 —— 持久化队列、执行上下文冻结、玩家离线自动恢复、失败重试、暂停/恢复、UUID 追踪,全部用 mcfunction 写成,零 Mod、零外部库。原来 /schedule 做不到的那几件事,它一次性补齐。 下哪个:只有一个成品 —— dist/doom.schedule-v2.2.zip。没有变体,不用挑。 怎么装:解压 zip → 得到 doom.schedule/ 文件夹 → 整个丢进 saves/<存档>/datapacks/(服务器:world/datapacks/)→ 进游戏 /reload。就这三步。 源码在哪:这个包没有生成器 —— 源码就是 doom.schedule/ 里那 35 个 mcfunction 本体,点开就能逐个读;zip 里的文件与它逐字节相同(见下)。 怎么验:下载后对一下 sha256,见下面「校验下载的文件」。

30 秒:下载 → 装 → 跑起来

步 做什么
① 下载 dist/doom.schedule-v2.2.zip,顺手对一下 SHA256SUMS.txt
② 解压,把 doom.schedule/ 整个放进 <存档>/datapacks/;服务器放 world/datapacks/
③ 进世界 /reload,然后 /function doom.schedule:__help__ 看聊天栏里的命令清单

三条命令试一下(粘贴进聊天栏或命令方块都行):

/function doom.schedule:schedule {run:'say hello',time:5,unit:'s',id:'hello'}
/function doom.schedule:schedule_with_retry {run:'say hi',time:20,unit:'t',id:'rt',retry:3,retry_delay:5}
/function doom.schedule:cancel_one {id:'hello'}

要卸载:删掉 datapacks/doom.schedule/ → /reload。这个包不改原版任何东西,删了就干净了(队列数据留在 storage doom.schedule:data,想清干净就 /function doom.schedule:clear 再删)。

校验下载的文件

dist/ 里每个 zip 的 sha256 都写在 dist/SHA256SUMS.txt,在 zip 所在目录里跑:

Linux / macOS:        sha256sum -c SHA256SUMS.txt
Windows PowerShell:   (Get-FileHash doom.schedule-v2.2.zip -Algorithm SHA256).Hash

输出 OK(或哈希与表里那串相等)就是完整下载;不等就别用,重新下。当前值:

文件 sha256
doom.schedule-v2.2.zip 44b950445764d710de058f5b54ce49ed32c90919cd682cd9fafe9ead7d418482

GitHub 在每个 Release 附件右侧也会显示同一串,可直接对照。

我该下载哪个

文件 里面是什么 适合谁
dist/doom.schedule-v2.2.zip(唯一成品) 完整的 doom.schedule/ 数据包:35 个 mcfunction + 一组函数标签 + pack.mcmeta + 一份 mcdoc 补全定义 所有人。没有任何需要额外开启的实验性玩法,也没有第二个变体要挑

它替你解决了什么问题

原版 /schedule function 只能"到点触发一个函数名"。一旦要持久化、要认人、要能撤销,它就不够了:

需求 原版 /schedule doom.schedule
服务端重启后任务还在 ❌ 全丢 ✅ 队列存在 storage,随存档持久化
任务属于哪个玩家/实体 ❌ 只记函数名 ✅ 入队时冻结 UUID(4 int → hex,execute as $(by) 匹配)
执行时的位置/朝向/维度 ❌ 无 ✅ 入队时冻结 dim / posX..posZ / rotX,rotY
目标掉线了怎么办 ❌ 照跑或报错 ✅ 进 offline[] 冻结,玩家上线自动恢复(10/tick)
执行失败再来一次 ❌ 失败就是失败 ✅ schedule_with_retry,retry + retry_delay
取消 / 暂停 / 恢复 ❌ 发出去就收不回 ✅ cancel_one / cancel_all / pause / resume
外部依赖 — 无(不需要 Bookshelf、不需要 gu、不需要任何库)

细节与设计取舍见 docs/20-架构与实现详解.md(原文 FEATURE.md)。

兼容与版本(速查)

你的环境 能不能用
Minecraft 1.21.7 / 1.21.8(pack_format 81) ✅ 目标版本
Minecraft 1.21.6(pack_format 80) ✅ 在声明的 supported_formats 范围内
更老的版本 ⚠️ 包里声明 supported_formats 48–82;实际只在 1.21.x 上验证过,更老请自测
Minecraft 1.21.9+(pack_format 88) ❌ 版本号超出声明范围,会被判版本不符
单人存档 / 服务器 都行;服务器放 world/datapacks/
实验性玩法 不需要开任何实验性玩法

完整的版本矩阵与升级/降级见 docs/13-兼容与版本.md。

源码在哪(直接点开就能看)

这个包是手写的 mcfunction,没有生成器,所以仓库里没有 src/:源码本身就在数据包本体里。

你想看 去哪
每个函数的实现 doom.schedule/data/doom.schedule/function/ —— 35 个 .mcfunction,文件名就是它们干的事
函数清单与调用关系 doom.schedule/README.md(包内自带的文件结构表)
函数标签(load / tick / 可注册的自定义维度) doom.schedule/data/doom.schedule/tags/function/
storage 结构定义(Spyglass / Misode mcdoc 补全) doom.schedule/mcdoc/doom.schedule.mcdoc
成品与其 sha256 dist/
逐版变更 CHANGELOG.md

成品即源码:dist/doom.schedule-v2.2.zip 里的每个文件,都与仓库 doom.schedule/ 下同名文件逐字节相同(45/45 一致)—— 也就是说,你从 Releases 下的 zip 和你在网页上点开的 mcfunction 是同一份东西,不存在"仓库里是旧版"的情况。

文档

文档 讲什么
docs/10-安装与卸载.md 单人 / 服务器两条安装路径、怎么确认装上了、怎么卸干净
docs/11-玩家手册.md 全部 API:调度、重试、取消、暂停/恢复、快速调度、返回值
docs/12-配置与自定义维度.md 时间单位、storage 布局、自定义维度注册、mcdoc 补全
docs/13-兼容与版本.md pack_format、版本矩阵、升级/降级、和其他调度包的对比
docs/14-致谢与许可.md 许可(MIT)、第三方边界、致谢
docs/20-架构与实现详解.md 四队列模型、入队流程、looper_exec 分流表、性能考量
docs/README.md 文档索引

许可

MIT —— 自用、游玩、改、转发、商用都可以,保留版权声明即可。

About

Minecraft datapack scheduler - offline recovery, retry, pause/resume, UUID tracking

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages