Skip to content

Tick freeze#1215

Open
balugaq wants to merge 6 commits into
SlimefunGuguProject:devfrom
balugaq:tick-freeze
Open

Tick freeze#1215
balugaq wants to merge 6 commits into
SlimefunGuguProject:devfrom
balugaq:tick-freeze

Conversation

@balugaq

@balugaq balugaq commented May 31, 2026

Copy link
Copy Markdown

此 PR 添加了 /sf tick 指令,旨在方便地对粘液刻运行打断点,便于调试机器时序运行测试bug等。

命令基础:

  • 根命令:/sf tick
  • 权限节点:slimefun.command.tick(控制台无需权限)
  • 适用对象:玩家或控制台

一、无额外参数
/sf tick
功能:切换全局 Tick 冻结模式(开启 ↔ 关闭)
效果:发送 messages.tick-mode,显示当前是“开启”还是“关闭”

二、两个参数(/sf tick <参数>)
/sf tick show
功能:显示当前正在等待 Tick 的物品列表

/sf tick freeze
功能:开启全局 Tick 冻结(所有机器停止工作)

/sf tick unfreeze
功能:关闭全局 Tick 冻结(恢复正常)

/sf tick query
功能:查询当前 Tick 冻结状态和 Tick 速率(isTickFreeze + getTickRate)

/sf tick at
功能:仅玩家可用。冻结玩家准星指向的方块(距离 ≤ 8 格)或主手持有的 Slimefun 物品。若目标既不是机器也不是物品,则提示 not-found

/sf tick <SlimefunItemID>
功能:冻结指定 ID 的 Slimefun 物品(如 BASIC_CIRCUIT_BOARD)。ID 自动转为大写匹配

三、三个参数(速率设置)
/sf tick rate <数字>
功能:设置 Tick 的执行间隔(单位:游戏刻,20 tick = 1 秒)
示例:/sf tick rate 10 → 每 10 tick 执行一次
异常:若 <数字> 非整数,提示 not-a-number

四、坐标参数(冻结指定位置的方块)

  • 使用当前世界的坐标(4 个参数):
    /sf tick <x> <y> <z>
    世界取当前发送者所在的世界(控制台默认为 "world")
  • 指定世界的坐标(5 个参数):
    /sf tick <世界名> <x> <y> <z>
    示例:/sf tick world_nether 100 64 -200
    功能:仅冻结该坐标方块的 Tick

帮助信息:
当参数模式无法匹配上述任何一条时,发送 messages.usage,提示:
/sf tick (<x> <y> <z> | <Slimefun Item>)

无权限提示:
若玩家没有权限且不是控制台,发送 messages.no-permission

在启动 Tick 冻结(/sf tick freeze)后,管理员可以使用 /sf tick show 查看当前被阻塞的 Slimefun 机器/物品等待列表,并针对列表中的条目进行逐步执行、跳转执行或位置高亮等调试操作。

本功能(showWaitingList)的行为描述如下:

  1. 分页显示等待队列

    • 每页显示 PAGE_SIZE 个条目(通常为 10)
    • 显示格式:序号 + 物品名称 + 操作按钮
    • 支持上一页/下一页翻页(点击文字跳转)
  2. 每个条目提供三种可点击的操作(悬浮提示):

    • “步过”:从队列头部开始依次执行该序号之前的所有 Tick(包含本条目),执行后刷新列表
    • “运行到”:执行到本条目之前停止(即执行前 id-1 个 Tick),然后刷新列表
    • “高亮”:若发送者为玩家,则在对应方块位置生成粒子效果高亮显示 3 秒(用于定位机器)
  3. 操作执行逻辑

    • “步过”与“运行到”都会调用 tickBlock() 方法依次处理指定数量的等待项
    • 执行完毕后自动重新调用 showWaitingList() 刷新列表
  4. 权限与接收者

    • 只有服务器管理员(OP)且在线玩家才能收到该交互式消息
    • 消息使用 MiniMessage 格式,支持点击事件和悬浮提示

使用场景:当全局 Tick 冻结后,管理员可以通过该命令观察仍有待处理任务的机器队列,并有选择地逐步执行某些机器的 Tick 任务,便于排查问题或手动推进流程。

  • Generated by DeepSeek
QQ_1780213673119

@StarWishsama

Copy link
Copy Markdown
Member

@codex review pr

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bd0fd07c30

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/main/resources/plugin.yml Outdated
@balugaq

balugaq commented May 31, 2026

Copy link
Copy Markdown
Author

Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants