
Hibernate Fabric
让你的Minecraft Fabric服务器在空闲时休眠,大幅降低CPU占用,且不遗漏任何方块!

Hibernate Fabric
让你的 Minecraft Fabric 服务器在空闲时休眠,大幅降低 CPU 占用,同时不丢失任何一个方块!
关于本项目
Hibernate Fabric 是一个轻量级工具,当没有玩家在线时会自动让你的 Minecraft Fabric 服务器进入休眠状态。通过在空闲时段降低 CPU 使用率,它有助于节省服务器资源、降低电费,并让你的服务器更加环保。这是一种简单的方式,让你在不必要的时候不浪费电力,同时保持 Minecraft 世界平稳运行。
构建所用技术
本项目使用以下技术构建:
- ![Java][java-icon]
- ![Fabric][fabric-icon]
运行
你需要一个 Minecraft Fabric 服务器。
- 从本 README 顶部的任意一个位置下载
hibernate-fabric-x.x.x+mc2x.x.jar。 - 将下载的 jar 文件复制到你的 Minecraft Fabric 服务器的
mods文件夹中。
别忘了在 server.properties 文件中将 pause-when-empty-seconds 设置为 0,以禁用原版休眠系统。
通过兼容层支持 NeoForge
[!WARNING] 目前 NeoForge 仅通过 Sinytra Connector 获得支持,这是一个允许 Fabric 模组在 NeoForge 中加载的兼容层。
Hibernate Fabric 目前可以通过 Sinytra Connector 在 NeoForge 上使用,但此配置不受官方支持。 尽管可以运行,但兼容性取决于 Hibernate Fabric 和 Sinytra Connector 两者,其中任一项目的未来更新都可能导致其停止工作。
仅在 NeoForge/Sinytra Connector 上出现的问题通常不受支持,可能会在不进行调查的情况下被关闭。 如果你遇到问题,请先在 Fabric 上复现后再报告。
除上述说明外:
- 下载并将 Sinytra Connector 和 LaunchPad 安装到你的 Minecraft NeoForge 服务器的
mods文件夹中。 - 下载并将 Forgified Fabric API 安装到你的 Minecraft NeoForge 服务器的
mods文件夹中。
开发入门
要在本地获取副本并运行,请按照以下简单步骤操作。
前置要求
确保你的机器上已安装以下内容:
构建
- 克隆仓库
git clone https://codeberg.org/VoxelBill/hibernate-fabric.git
- 进入项目目录
cd hibernate-fabric
- 使用 Gradle 构建项目
./gradlew clean build
你可以在 hibernate-fabric/build/libs/hibernate-fabric-x.x.x+mc2x.x.jar 找到构建好的模组。
配置
模组在首次运行时会自动在 config/hibernate-fabric.json 创建配置文件。以下是可用的设置:
基础设置
{
"startEnabled": true,
"ticksToSkip": 400,
"permissionLevel": 2,
"sleepTimeMs": 75,
...
| 设置 | 默认值 | 描述 |
|---|---|---|
startEnabled |
true |
当服务器启动且没有玩家时,是否自动激活休眠 |
ticksToSkip |
400 |
休眠期间应用睡眠前要处理的刻数 |
permissionLevel |
2 |
使用休眠命令所需的权限等级(0=所有人,4=服主) |
sleepTimeMs |
75 |
每个刻处理周期之间的睡眠毫秒数 |
内存优化
...
"enableMemoryOptimization": true,
"memoryCleanupIntervalSeconds": 30,
"memoryThresholdPercent": 80.0,
"forceGarbageCollection": true,
"gcIntervalSeconds": 30,
"saveBeforeHibernation": true,
"removeEntities": [
"minecraft:item",
"minecraft:firework_rocket",
"minecraft:arrow",
"minecraft:experience_orb"
],
"droppedItemMaxAgeSeconds": 300,
"logMemoryInfo": false,
...
| 设置 | 默认值 | 描述 |
|---|---|---|
enableMemoryOptimization |
true |
在休眠期间启用内存清理 |
memoryCleanupIntervalSeconds |
30 |
运行内存清理例程的频率 |
memoryThresholdPercent |
80.0 |
触发清理的内存使用百分比 |
forceGarbageCollection |
true |
在休眠期间强制进行 Java 垃圾回收 |
gcIntervalSeconds |
30 |
垃圾回收运行之间的最短时间 |
saveBeforeHibernation |
true |
在进入休眠前保存世界数据 |
removeEntities |
item、firework_rocket、arrow、experience_orb |
休眠期间要移除的实体列表(忽略带有自定义名称的实体) |
droppedItemMaxAgeSeconds |
300 |
物品被移除前的存在时间(秒)(5 分钟) |
logMemoryInfo |
false |
将内存使用情况和垃圾回收器信息记录到控制台 |
CPU 优化
...
"aggressiveCpuSaving": true,
"minSleepInterval": 1500,
"highLoadSleepMultiplier": 1.5,
"yieldInterval": 8,
...
| 设置 | 默认值 | 描述 |
|---|---|---|
aggressiveCpuSaving |
true |
启用更激进的 CPU 节省措施 |
minSleepInterval |
1500 |
睡眠周期之间的最短时间(毫秒) |
highLoadSleepMultiplier |
1.5 |
系统负载高时睡眠时间的倍数 |
yieldInterval |
8 |
将 CPU 让给其他线程的频率(每 N 刻) |
服务器唤醒时的游戏规则值
...
"awakeGameRules": {
"advance_time": true,
"advance_weather": true,
"random_tick_speed": 3,
"spawn_mobs": true,
"fire_spread_radius_around_player": 128
},
...
| 设置 | 默认值 | 描述 |
|---|---|---|
advance_time |
true |
退出休眠时设置游戏规则 advance_time 的值 |
advance_weather |
true |
退出休眠时设置游戏规则 advance_weather 的值 |
random_tick_speed |
3 |
退出休眠时设置游戏规则 random_tick_speed 的值 |
spawn_mobs |
true |
退出休眠时设置游戏规则 spawn_mobs 的值 |
fire_spread_radius_around_player |
128 |
退出休眠时设置游戏规则 fire_spread_radius_around_player 的值 |
服务器休眠时的游戏规则值
...
"hibernatingGameRules": {
"advance_time": false,
"advance_weather": false,
"random_tick_speed": 0,
"spawn_mobs": false,
"fire_spread_radius_around_player": 0
}
}
| 设置 | 默认值 | 描述 |
|---|---|---|
advance_time |
false |
进入休眠时设置游戏规则 advance_time 的值 |
advance_weather |
false |
进入休眠时设置游戏规则 advance_weather 的值 |
random_tick_speed |
0 |
进入休眠时设置游戏规则 random_tick_speed 的值 |
spawn_mobs |
false |
进入休眠时设置游戏规则 spawn_mobs 的值 |
fire_spread_radius_around_player |
0 |
进入休眠时设置游戏规则 fire_spread_radius_around_player 的值 |
贡献
贡献正是让开源社区成为一个学习、启发和创造的绝佳场所的原因。你所做的任何贡献都深受感谢。 如果你没有任何编程经验,测试其他平台和配置也非常欢迎!
如果你有能让它变得更好的建议,请 fork 仓库并创建 pull request。你也可以简单地开一个带有 "enhancement" 标签的 issue。 别忘了给项目点个星!再次感谢!
- Fork 项目
- 创建你的功能分支(
git checkout -b feature/AmazingFeature) - 提交你的更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 打开一个 Pull Request
许可证
基于 GNU 较宽松通用公共许可证 v3.0 或更高版本 (LGPL-3.0-or-later) 分发。
本项目是 Hibernateforge 的 fork,后者基于 欧盟公共许可证 v1.2 (EUPL-1.2) 分发。 重新许可已按照 EUPL 的兼容性条款(第 5 条)完成。
更多信息请参阅 LICENSE。
[java-icon]: https://img.shields.io/badge/Java-D5D5D5.svg?style=for-the-badge&logo=[已省略Base64资源][fabric-icon]: https://img.shields.io/badge/Fabric-DBD0B4.svg?style=for-the-badge&logo=[已省略Base64资源]
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。