1 320
收录服务器
1 837
注册
43 099
玩家
SmoothSleep 流畅睡眠
更顺畅的多人友好睡眠。
作 者 OffLuffy
发布时间 2016年11月19日
支持核心 Spigot
原生版本
支持版本 1.16
点此下载

SmoothSleep 插件旨在根据睡眠玩家的数量逐渐加快夜晚的进程。每个世界的夜晚流逝速度都可以配置。如果玩家被设置为忽略睡眠,他们仍然可以通过睡觉来加速时间,但如果他们醒着,将不会被计算在内。

😴 SmoothSleep

💡 简介

  • 原生 Minecraft 版本: 1.16
  • 测试 Minecraft 版本: 1.16
  • 源代码: GitHub
  • 捐赠链接: PayPal

如果您遇到夜晚瞬间跳过的问题,这不是 SmoothSleep 的 Bug,而是 Essentials 的一项功能。要解决此问题,请否定 essentials.sleepingignored 权限,并让之前拥有此权限的玩家注销并重新登录,以允许 Essentials 缓存该权限。

自 v2.6.0 起,已实现对 PlaceholderAPI 的可选支持。

自 v2.9.3 起,该插件可以使用 CMI 忽略消失和 AFK 用户。

自 v2.10.0 起,您可以在可配置消息中使用十六进制颜色代码,格式为 &#AABBCC&#ABC

玩家可以选择在夜间被治愈、喂食(或受到伤害/饥饿),并移除药水效果,具体取决于玩家的睡眠时间。

早上会向玩家问好,并尽早将懒惰的人从床上踢出去。如果通过睡觉到达早晨,天气也会放晴(也可配置),就像原版睡觉一样。

SmoothSleep 会将统计数据传输到 bStats.org(如果您不选择退出)。这是统计页面:bStats

🔑 权限节点

  • smoothsleep.reload: 允许使用 /ssreload 重载配置。
  • smoothsleep.toggle: 允许使用 /sstoggle 临时禁用和重新启用 SmoothSleep。
  • smoothsleep.configure: 允许通过 /ssconf 命令管理配置。
  • smoothsleep.addworld: 允许通过 /ssaddworld 命令向配置添加世界配置段。
  • smoothsleep.ignore: 允许绕过睡眠需求。拥有此权限的玩家可以睡觉以加速时间,但不会被计为醒着。这与使用 Bukkit API 将玩家设置为忽略睡眠效果相同,但实际上并未将玩家设置为忽略睡眠。
  • smoothsleep.metrics: 允许使用 /ssmetrics 切换 SmoothSleep 指标。
  • smoothsleep.notify: 如果有插件更新可用,则在您登录时收到通知。
  • smoothsleep.ignoreheal: 拥有此权限的用户不会在夜间被治愈。
  • smoothsleep.ignorefeed: 拥有此权限的用户不会在夜间被喂食。
  • smoothsleep.sleepreward: 拥有此权限的用户如果睡到早上并且至少达到所需的睡眠小时数,将获得配置的睡眠奖励。默认情况下授予此权限。

⌨️ 命令

  • /ssreload: 重载配置。
  • /sstoggle: 临时禁用或重新启用插件。如果服务器重启或重新加载,则插件将重新启用。如果您想删除插件,但不想立即重启,或者如果您需要为活动或迷你游戏禁用它,这将非常有用。
  • /ssconf: 通过命令设置配置选项。使用不带参数的命令来列出哪些选项可以修改以及如何使用该命令。
  • /ssaddworld: 允许您使用默认设置将新世界添加到配置中,以便更轻松地进行修改。
  • /ssmetrics: 允许您切换指标。使用此命令将禁用指标,还会为您切换配置值。

⚙️ 默认配置文件


# 更多信息: https://www.spigotmc.org/resources/smoothsleep.32043
enable-stats: true
enable-update-check: true
update-notify-login: false
logging-settings:
  log-debug: false
  log-warning: true
  log-info: true
worlds:
  world:
    min-night-speed-mult: 10
    max-night-speed-mult: 20
    all-sleeping-speed-mult: 20
    night-speed-curve: 0.5
    accelerate-random-tick: true
    max-random-tick: 1000
    accelerate-weather: true
    clear-weather-when-morning: true
    heal-slept-villagers: true
    morning-sound: 'ENTITY_PLAYER_LEVELUP'
    morning-particle-options:
      particle: 'VILLAGER_HAPPY'
      amount: 20
      radius: 0.5
      enabled: true
      delay-ticks: 5
      pattern: 'RANDOM'
    instant-day-if-all-sleeping: false
    essentials-settings:
      ignore-afk: true
      ignore-vanish: true
    replenish-settings:
      heal-negative-statuses: true
      hours-to-heal-negative: 3
      heal-positive-statuses: false
      hours-to-heal-positive: 3
      ticks-per-heal: 1000
      heal-amount: 0
      heal-awake: false
      ticks-per-feed: 1000
      feed-amount: 0
      feed-awake: false
    sleep-rewards:
      potion-effects:
        enabled: true
        required-hours-sleep: 3
        show-effect-particles: false
        effects:
          LUCK:
            duration: 3600
            amplifier: 0
    titles:
      enabled: true
      sleep-title: '&b{12H}:{MIN} {MER_UPPER}'
      sleep-subtitle: '&a{SLEEPERS}/{TOTAL} Sleeping &3({TIMESCALE}x speed)'
      morning-title: '&e{12H}:{MIN} {MER_UPPER}'
      morning-subtitle: '&aRise and shine, {USERNAME}!'
      stay-ticks: 20
      fade-ticks: 40
    action-bar:
      enabled: true
      show-if-awake: false
      title: '&4Health: &c{HEALTH_BAR} &3Food: &b{FOOD_BAR}'
    boss-bar:
      enabled: true
      show-if-awake: true
      color: 'BLUE'
      style: 'SOLID'
      title: '&a{SLEEPERS}/{TOTAL} Sleeping &3- &b{12H}:{MIN} {MER_UPPER}'

要更改 SmoothSleep 使用的世界,只需将 world 更改为您要使用的世界的名称,或者使用新名称复制 world 部分。如果您想将新世界添加到配置中,请使用 /ssaddworld <word>

⚙️ 全局设置

  • enable-stats: 您可以通过将此值设置为 false 或在游戏中使用 /ssmetrics 来切换它来禁用指标。如果启用,一些数据将发送到 bStats.org。
  • enable-update-check: 这将允许插件从 Spigot 的网站请求最新的插件版本。将此值设置为 false 以完全绕过更新检查。
  • update-notify-login: 如果启用此选项,当工作人员登录时,如果有插件更新可用,则会收到通知。

日志选项

这些是不言自明的,选择要在控制台中显示的日志级别。我建议不要启用调试,除非您试图找到一个问题,因为它可能有点过头。

🌍 每个世界的设置

  • min-night-speed-mult: 最低的夜晚速度倍增器(如果只有极小部分的玩家在睡觉)。请记住,如果没有人睡觉,SmoothSleep 不会影响速度,这仅适用于至少有一个人睡觉的情况。必须是大于 0 的整数。
  • max-night-speed-mult: 最高的夜晚速度倍增器(如果每个人都在睡觉)。必须是大于 0 的整数。
  • all-sleeping-speed-mult: 只有当所有未被睡眠忽略的玩家都在睡觉时,此速度倍增器才会生效。如果设置为与 max-night-speed-mult 相同的值,将有效地禁用此功能。如果启用了 instant-day-if-all-sleeping,则将忽略此设置。
  • night-speed-curve: 此值允许您调整睡眠玩家的比例如何影响夜晚的速度。对于小于 0.5 的值,较少的睡眠者将对速度的影响较小,然后随着更多玩家睡眠,速度会更快地增加。对于大于 0.5 的值,则相反。精确地为 0.5 时,它是线性增加。如果您将值设置为 0,那么夜晚速度将是最小速度,直到每个人都睡着,然后它将是最大速度。如果为 1,那么如果有人睡觉,它将是最大速度。仅接受 0-1 之间的值。要更好地可视化此值的工作方式,请查看 Desmos 上的此图表:Desmos Graph

在此图中,X 轴表示睡眠玩家的百分比,Y 轴表示夜晚应该以多快的速度流逝(介于最小和最大夜晚速度之间)。

  • accelerate-random-tick: 此选项允许 SmoothSleep 在夜间修改 randomTickSpeed 游戏规则。这将加速受随机刻影响的任何事物,包括:作物生长、树叶腐烂、草/藤蔓蔓延等。
  • max-random-tick: 这允许您限制 randomTickSpeed 能够设置的速度。具有非常高的值可能会导致滞后,因此如果您已经设置了较高的 randomTickSpeed 并且不想太高,则可以使用此选项。
  • accelerate-weather: 这应该使天气更快地过去,类似于夜晚的工作方式。由于很难正确测试此功能,我什至无法说它是否有效,但是该选项在这里。
  • morning-sound: 如果这是一个有效的声音,那么它将在玩家醒来时播放。要禁用,请留空。有关有效声音的列表,请参阅 Sound enum - Bukkit API
  • clear-weather-when-morning: 如果为 true,则如果在到达早晨时仍有玩家在床上,则雨和风暴会停止。
  • heal-slept-villagers: 这将允许 SmoothSleep 在到达早晨时完全治愈正在睡觉的村民。以防万一该插件以某种方式阻止了香草治疗机制。
  • instant-day-if-all-sleeping: 不言自明。如果所有未被睡眠忽略的玩家都在睡觉,那么这会将时间立即设置为白天,同时仍然显示早晨标题/字幕。这比香草更即时。一旦最后(或唯一)的人点击床,它将立即将时间设置为白天,不像香草那样会等待您在床上坐几秒钟。

📜 标题

  • enabled: 如果为 true,那么标题将显示游戏内时间、睡眠玩家数量/非睡眠忽略玩家总数以及当前的夜晚速度倍增器。
  • morning-title: 如果启用了 use-titles,则在醒来时显示的标题。
  • morning-subtitle: 如果启用了 use-titles,则在醒来时在标题下显示的消息。
  • sleep-title: 如果启用了 use-titles,则在睡觉时显示的标题。
  • sleep-subtitle: 如果启用了 use-titles,则在睡觉时在标题下显示的消息。

✨ 动作栏

  • enabled: 如果为 true,那么当玩家睡觉时,消息将出现在热栏上方,并带有指定的标题。默认情况下,这用于在睡觉时向睡眠者显示他们的生命值/食物水平,因为“离开床”按钮在某些情况下会阻止正常的 UI 元素。
  • show-if-awake: 如果玩家没有睡觉,是否向他们显示动作栏。
  • title: 当玩家睡觉时,在动作栏中显示什么文本(支持占位符)

📊 Boss栏

  • enabled: 如果为 true,那么当玩家睡觉时,带有标题的老板栏将显示在屏幕顶部。
  • show-if-awake: 如果玩家没有睡觉,是否向他们显示老板栏。
  • title: 当玩家睡觉时,在老板栏中显示什么文本(支持占位符)
  • color: 使老板栏的颜色。有效颜色为 PINK、BLUE、RED、GREEN、YELLOW、PURPLE
  • style: 确定栏样式。有效样式为 SOLID、SEGMENTED_6、SEGMENTED_10、SEGMENTED_12、SEGMENTED_20

☀️ 早晨粒子选项

  • enabled: 是否在早上生成粒子
  • particle: 这是您要使用的粒子的名称。请注意,当前无法使用需要额外数据的粒子。如果您选择的粒子需要额外数据,您将在控制台中收到一些警告。

这些粒子目前无法工作!REDSTONE, BLOCK_CRACK, BLOCK_DUST, FALLING_DUST, ITEM_CRACK, LEGACY_BLOCK_CRACK, LEGACY_BLOCK_DUST, LEGACY_FALLING_DUST, SPELL_MOB, SPELL_MOB_AMBIENT

有关有效粒子的完整列表,请参阅 Particle enum - Bukkit API

  • amount: 这将更改显示的粒子数量以及粒子的显示时间。此设置和 delay-ticks 设置控制粒子效果持续的时间。
  • radius: 这控制您希望粒子从玩家身上产生的距离。最大半径当前为 20,仅仅是因为更大的值似乎没有多大意义。
  • pattern: 生成粒子的形状。这可以是 randomcirclespiral
  • delay-ticks: 在生成一组粒子后等待多少刻再生成另一组粒子。如果您想间隔粒子生成的频率,请增加此值。这增加了效果持续的时间。

❤️ 补充设置

  • heal-negative-statuses: 如果为 true,如果玩家已经睡了所需的 小时数,则治疗负面状态效果。
  • hours-to-heal-negative: 治疗负面状态所需的睡眠小时数。
  • heal-positive-statuses: 如果为 true,如果玩家已经睡了所需的 小时数,则治疗正面状态效果。
  • hours-to-heal-positive: 治疗正面状态所需的睡眠小时数。
  • ticks-per-health: 睡眠的刻数(包括时间刻度)以治疗指定的量。1000 = 1 游戏内小时。一个完整的夜晚持续不到 10 个小时。如果您将其设置为 1000,它将在早晨治愈玩家 9 次,而不管夜晚的速度如何。
  • heal-amount: 每次指定的间隔治疗的量。可以是负数。1 = 半颗心。
  • heal-awake: 治疗效果是否应适用于未睡觉的玩家,但在时间正在加速的世界中。
  • ticks-per-feed: 睡眠的刻数(包括时间刻度)以喂食指定的量。类似于 ticks-per-health
  • feed-amount: 睡眠的刻数(包括时间刻度)以喂食指定的量。
  • feed-awake: 喂食效果是否应适用于未睡觉的玩家,但在时间正在加速的世界中。

✨ 睡眠奖励.药水效果

  • enabled: 是否启用药水效果睡眠奖励
  • required-sleep-hours: 玩家需要睡眠多少游戏内小时才能获得奖励
  • show-effect-particles: 是否显示药水效果粒子。如果显示,粒子将是“环境”。
  • effects: 要应用的效果列表。此下的每个条目都应是有效的效果名称,并且在其下具有持续时间和放大器值。放大器从 0 开始作为基本级别效果。如果效果名称无效,则在初始化时将向控制台打印一条消息。

🛠️ Essentials 设置

这些设置仅在安装了 Essentials 时才适用

  • ignore-afk: 如果为 true,则 AFK 玩家将被视为睡眠忽略。
  • ignore-vanish: 如果为 true,则消失的玩家将被视为睡眠忽略。

与 YAML 文件通常的情况一样,间距很重要!不要使用选项卡,否则会破坏它!此外,对于文本值,如果各种特殊字符开始文本,则可能需要用引号引起来!通常始终使用“单引号”包装文本值是安全的,因为 YAML 引擎会在重新保存时删除它们(如果不是必需的)。

从 v2.6.0 开始,配置中的文本值现在也应支持 PlaceholderAPI。您可以混合和匹配内置占位符和 PAPI 占位符。首先解析内置占位符,因此您甚至可以在 PAPI 占位符中使用它们(例如,进度条)。

🔤 占位符

  • {12H}: 服务器时间的 12 小时部分
  • {24H}: 服务器时间的 24 小时部分。可以通过在标题配置中放置 {24H}:{MIN} 来设置标准 24 小时时钟,并根据口味着色。甚至费心研究并确保时钟循环到 0:00 而不是 24:00,不客气。
  • {MIN}: 服务器时间的分钟部分(如果 <10,则用 0 填充)
  • {MER_UPPER}: 12 小时时间的子午线对应项,AM 或 PM
  • {MER_LOWER}: 12 小时时间的子午线对应项,am 或 pm
  • {SLEEPERS}: 当前正在睡觉的玩家数量
  • {WAKERS}: 未被忽略的非睡眠玩家数量
  • {TOTAL}: 睡眠 + 非睡眠,未被忽略的玩家数量
  • {TIMESCALE}: 玩家的用户名(并不总是游戏中显示的那个)
  • {USERNAME}: 玩家的用户名(并不总是游戏中显示的那个)
  • {DISPLAYNAME}: 玩家在游戏中显示的名称。可能包含前缀、颜色代码等。
  • {DISPLAYNAME_STRIP}: DISPLAYNAME 没有颜色或格式。
  • {LEVEL}: 玩家的当前等级
  • {DAYS_LIVED}: 玩家居住的天数
  • {REM_HOURS_LIVED}: 玩家在减去天数后居住的小时数
  • {REM_MINS_LIVED}: 玩家在减去天数和小时数后居住的分钟数
  • {TOTAL_HOURS_LIVED}: 玩家居住的小时数(总小时数,不减去天数)
  • {TOTAL_MINS_LIVED}: 玩家居住的分钟数(总分钟数,不减去小时数或天数)
  • {TIME_LIVED}: 玩家居住的时间,以天、分钟和秒为单位;格式为“0d, 0h, 0m”
  • {WORLD}: 玩家正在睡觉的世界的名称
  • {SERVER_IP}: server.properties 中指定的“server-ip”
  • {SERVER_MOTD}: server.properties 中指定的“motd”(包括颜色)
  • {SERVER_NAME}: server.properties 中指定的“server-name”(包括颜色)
  • {SERVER_MOTD_STRIP}: server.properties 中指定的“motd”(已去除颜色)
  • {SERVER_NAME_STRIP}: server.properties 中指定的“server-name”(已去除颜色)
  • {NICKNAME}: 没有组前缀的 Essentials 昵称。如果未安装 essentials,则与 DISPLAYNAME 相同。
  • {NICKNAME_STRIP}: NICKNAME 没有颜色或格式。
  • {HEALTH}: 显示玩家的生命值 (0-20)
  • {HEALTH_PER}: 以百分比形式显示玩家的生命值 (0-100%)
  • {HEALTH_BAR}: 生成一个 20 段的条,指示玩家的生命值,将条的空闲部分设置为黑色(避免为此使用黑色颜色代码,否则条将始终显示为空)
  • {FOOD}: 显示玩家的食物水平 (0-20)
  • {FOOD_PER}: 以百分比形式显示玩家的食物水平 (0-100%)
  • {FOOD_BAR}: 生成一个 20 段的条,指示玩家的食物水平,将条的空闲部分设置为黑色(避免为此使用黑色颜色代码,否则条将始终显示为空)

当使用可以着色的占位符(显示名称、服务器名称和服务器 MOTD)时,您可能希望在占位符之后包含一个颜色字符,以防止它为消息的其余部分着色。


有建议吗?使用讨论或 github 问题提交您的想法!

🤝 感谢

  • IAlIstannen 提出了使用 NMS 睡眠刻度的想法
  • _theminerdude_ aka Drathares @ NarniaMC 帮助发现并简化了实现夜晚速度“曲线”的公式。
  • i0HeX 解释了如何将浮点数实现为夜晚速度倍增器
  • @Alter-Ego 只是讨论中反复出现的用户,并指出了几个错误和建议。

源代码在 GitHub