TioPvP时间

TioPvP时间

TioPvPTime根据游戏中的白天/夜晚时间(按世界)开启或关闭服务器上的PVP。当PVP在配置的世界中开启或关闭时,玩家会看到一个小角落图标。

杂项

本模组的作用

TioPvPTime 用于控制玩家是否可以在你选定的世界中互相攻击(PVP)。它使用现实世界的时钟——它使用每个世界中的游戏内时间(与你用 /time set 调整的、表现为昼夜交替的时间相同)。

  • 你设置的时间 → PVP 开启
  • 这些时间之外 → PVP 关闭

每个世界都可以有其自己的时间安排。例如,你的主生存地图可能只允许在夜晚(例如游戏内时间 19:00 到 06:00)进行 PVP,而竞技场世界可能只允许在短暂的下午时段进行 PVP。

未列出的世界将不受影响:没有自动的 PVP 切换,并且此模组不会显示 PVP 图标。


玩家会看到什么

  • 已列出的世界中,一个角落图标会指示该世界 PVP 当前是开启还是关闭
  • 当因游戏内时间跨越了你的设定窗口而导致 PVP 开启或关闭时,该世界中的所有玩家都会收到一个醒目的屏幕标题(可选——你可以在配置中关闭它)。
  • 已列出的世界中使用 /tpvp/pvp 命令会切换他们是否看到角落图标(这不会改变服务器 PVP 规则——仅影响他们自己的显示)。如果他们所在的世界被列出,他们会收到一条简短的提示信息,说明此模组仅适用于特定世界。

如何设置(服务器管理员)

  1. 在服务器上安装模组,并确保玩家也安装了相同的模组(它包含了图标所需的图像文件)。
  2. 启动服务器一次。 模组会在其插件数据文件夹中创建一个 config.json 文件。
  3. 打开 config.json 并编辑 worlds 列表:
    • name — 世界的确切名称(必须与服务器的世界名称完全一致)。
    • pvpActiveStartpvpActiveEnd — 使用该世界的游戏内时钟,允许 PVP 的时间,格式为 HH:mm(24小时制)。
  4. 如果 开始时间晚于 结束时间(例如 19:00 到 06:00),模组会将其视为跨夜时段:PVP 从傍晚开启,贯穿午夜直到早晨。
  5. 保存文件。你可以重启服务器,或者从服务器控制台运行 /tpvp reload(或 /pvp reload)以无需完全重启即可应用更改。

你可以更改服务器检查时间的频率checkIntervalSeconds)。数值越低反应越快,数值越高对服务器负载越小。


命令

命令 效果
玩家 /tpvp/pvp 已列出的世界中:开启或关闭 屏幕上的 PVP 图标(聊天栏会确认)。不会改变实际的 PVP 规则。在其他世界中:说明哪些世界使用了此模组。
服务器控制台 /tpvp reload/pvp reload 从磁盘重新加载配置,并更新时间安排和图标。无需特殊权限。
玩家 /tpvp reload / /pvp reload 与控制台重载相同,但通常仅限管理员使用——需给予他们 tio.tiopvptime.command.tpvp.reload 权限(或 tio.tiopvptime.*)。

可选:其他添加自定义 HUD 的模组

如果你使用 MultipleHUD(或当多个模组试图同时显示内容时遇到关于自定义 UI / HUD 的错误),请打开 config.json 并将 useMultipleHud 设置为 true。这会使本模组将其图标注册到专用插槽中,而不是接管整个 HUD。


自定义消息

所有聊天文本标题文本都可以在 config.jsontranslation 部分进行编辑(例如玩家显示或隐藏图标时的消息、错误世界提示以及重载成功/失败消息)。你可以将它们翻译成任何你喜欢的语言。


TioPvPTime — 服务器 config.json 设置指南(管理员)

本指南说明如何使用 config.json,通过游戏内时间计划来控制基于世界的 PVP,自定义消息,以及调整 HUD/图标行为。

1. 模组的作用(实际行为)

  • 服务器会在游戏内时间窗口HH:mm)内按世界开启或关闭 PVP
  • 窗口在 worlds 中定义,并且可以为每个世界设置不同的时间
  • 在已配置的世界中,一个小图标会显示 PVP 开启/关闭
  • 玩家命令 /tpvp(和 /pvp仅切换该玩家屏幕上的图标(它不会改变世界的 PVP 规则)。
  • 管理员无需重启即可使用 /tpvp reload / /pvp reload 应用更改。

2. config.json 创建位置

在服务器首次运行时,插件会自动在模组的数据文件夹内创建 config.json

3. 主要配置:worlds

设置的核心是列表:

"worlds": [
  { "name": "survival", "pvpActiveStart": "19:00", "pvpActiveEnd": "06:00" }
]

3.1. 字段

  • name
    • 世界的确切名称(必须与你服务器上的世界名称匹配)。
  • pvpActiveStartpvpActiveEnd
    • 使用 24小时制格式:HH:mm
    • 定义该世界 PVP 开启的时间段。

3.2. 跨越午夜的时段

如果 pvpActiveStart 晚于 pvpActiveEnd(例如:19:0006:00):

  • 模组会将其视为一个跨夜窗口。
  • 例如:PVP 从 19:0024:00 保持开启,并继续从 00:0006:00 保持开启。

3.3. 未列出的世界

如果某个世界包含在 worlds 数组中:

  • 此模组不会改变该世界的 PVP 行为。
  • 此模组的 PVP 图标不会出现在列表之外的世界中。

4. 完整示例(多世界)

{
  "worlds": [
    { "name": "survival", "pvpActiveStart": "19:00", "pvpActiveEnd": "06:00" },
    { "name": "arena", "pvpActiveStart": "12:00", "pvpActiveEnd": "14:00" },
    { "name": "default", "pvpActiveStart": "00:00", "pvpActiveEnd": "23:59" }
  ],
  "useMultipleHud": false,
  "showPvpStatusEventTitle": true,
  "checkIntervalSeconds": 30,
  "pvpIconHorizontalAlign": "left",
  "pvpIconTopOffsetPx": 132,
  "hudResyncIntervalSeconds": 3,
  "translation": {
    "pvpEnabledMessage": "PVP is enabled, be careful!",
    "pvpDisabledMessage": "PVP is disabled, enjoy exploring!",
    "commandWrongWorldMessage": "This mod’s PVP schedule only applies to these worlds: {world}.",
    "commandPvpIconShownMessage": "PVP icon enabled.",
    "commandPvpIconHiddenMessage": "PVP icon disabled. Use /tpvp again to show it.",
    "commandReloadSuccessMessage": "TioPvPTime: configuration reloaded.",
    "commandReloadErrorMessage": "TioPvPTime: error reading config.json.",
    "commandReloadPermissionDeniedMessage": "You don’t have permission to reload TioPvPTime configuration.",
    "pvpStatusTitleMessage": "TioPvPTime",
    "pvpStatusSubtitleEnabledMessage": "PVP Enabled",
    "pvpStatusSubtitleDisabledMessage": "PVP Disabled"
  }
}

5. config.json 选项

checkIntervalSeconds

  • 服务器重新检查游戏内时间并更新 PVP 的频率(以秒为单位)。
  • 建议:通常 3060 这样的值就足够了。
  • 模组内部会限制取值范围。

useMultipleHud

  • false(默认):此模组直接使用其图标 HUD。
  • true:如果你使用 MultipleHUD(或任何其他也使用自定义 UI 修改 HUD 的模组),建议启用。

如果你遇到类似 "Failed to apply CustomUI HUD commands"(客户端踢出/报错)的冲突,请将 useMultipleHud 设置为 true

showPvpStatusEventTitle

  • true:当世界 PVP 状态切换(进入/离开你的时间窗口)时,该世界中的玩家可以收到一个原生标题/副标题
  • false:仅禁用该标题/副标题;图标和其他行为仍然有效。

pvpIconHorizontalAlign

  • PVP 图标在屏幕上的水平锚点位置。
  • 有效值:leftright
  • 默认值:left

pvpIconTopOffsetPx

  • 从屏幕顶部到 PVP 图标锚点的垂直偏移量(以像素为单位)。
  • 默认值:132(匹配当前“下移约 120px”的行为)。
  • 模组会将值限制在安全范围内。

hudResyncIntervalSeconds

  • 服务器向客户端重新同步 PVP 图标的频率(以秒为单位),独立于 PVP 计划变更。
  • 默认值:3(限制后允许范围:1–60)。
  • 用于恢复因玩家打开其他模组的自定义 UI 菜单/HUD 而导致的 HUD 故障(图标丢失、纹理错误等)。
  • 模组会检测自定义页面何时打开或关闭,并重新发送图标;此间隔还会在没有自定义菜单打开时定期执行客户端刷新。
  • 较低的值(例如 23):在其他模组的 UI 之后恢复更快;但自定义 UI 流量稍多。
  • 较高的值(例如 1015):网络负担较轻;故障可能需要更长时间才能自行修复。
  • 如果玩家报告在大量使用 HUD 后出现断开连接或 Failed to apply CustomUI commands 错误,请尝试在更改其他设置之前增加此值。

6. translation(消息)

你可以自定义聊天文本和标题消息。

6.1. 重要消息

  • commandWrongWorldMessage
    • 当玩家在一个包含在 worlds 中的世界运行 /tpvp / /pvp 时发送。
    • 使用 {world} 占位符(已配置世界名称的列表)。
  • commandPvpIconShownMessage / commandPvpIconHiddenMessage
    • 当玩家使用 /tpvp / /pvp 切换图标时发送给该玩家。
    • 重要提示:这关于玩家屏幕上的图标,而不是世界的实际 PVP 规则。
  • commandReloadSuccessMessage / commandReloadErrorMessage
    • 当有人重新加载配置时的消息。
  • commandReloadPermissionDeniedMessage
    • 当玩家没有权限时显示。

6.2. 遗留消息

  • pvpEnabledMessagepvpDisabledMessage 存在的目的是为了兼容性。主要的 /tpvp 行为现在是图标切换

7. 重载(无需重启)

  • 管理员控制台:/tpvp reload/pvp reload
  • 玩家(需要权限):tio.tiopvptime.command.tpvp.reload

重载后,模组会:

  • 重新读取 worlds 和时间计划;
  • 更新已列出世界的 PVP 状态;
  • 同步图标(包括移除不再位于 config.json 中的世界上的图标)。

8. 旧版配置迁移(如适用)

如果你之前的配置包含:

  • worldNames + 全局时间(或单个 worldName 字符串),

模组会在加载时自动将其转换为新的 worlds 格式。

9. 快速检查清单(避免问题)

  • 确保 worlds[].name 中的世界名称与你服务器上的实际世界名称完全匹配。
  • 使用 HH:mm 格式的时间(例如 07:3019:00)。
  • 对于“夜晚到早晨”的时段,使用 start > end(例如 19:0006:00)。
  • 如果出现 HUD 冲突,请启用 useMultipleHud
  • 如果 PVP 图标与其他模组的菜单出现故障,请调整 hudResyncIntervalSeconds(默认 3);如果客户端因自定义 UI 流量过多而被踢出,请增加此值。
  • 编辑文件后,运行 /tpvp reload

❤️‍🔥 Sponsored by Vanguard Server

Vanguard

加入 Vanguard!

服务器 IP:vanguard.vgh.com.br 网站:https://vgh.com.br Discord:https://discord.gg/Q53GmaeAyB