Warning
Hi there! This is a read-only mirror, automatically synced from our Forgejo instance.
- 🛠️ All development happens on the primary Forgejo repository
- 💬 You’re welcome to open Issues, Discussions, or even PRs here if it’s convenient — just know they may not be acted on directly, since the sync is one-way
For the best chance of your contributions being merged, or for quicker responses, please head over to the main Forgejo repo.
- Original repo: https://git.prisma.moe/Thadah/Hibernateforge
— Self-hosting 4 the win!
Let your Minecraft Forge server snooze when idle, slashing CPU usage without missing a block!
View Demo
·
Report Bug or
·
Request Feature
Table of Contents
Hibernateforge is a lightweight tool that automatically puts your Minecraft Forge server to sleep when no players are online. By reducing CPU usage during idle times, it helps save server resources, lowers your electricity bill, and makes your server more eco-friendly. It's a simple way to keep your Minecraft world running smoothly without wasting power when it's not needed.
This project is built with the following technologies:
To get a local copy up and running, follow these simple steps.
Ensure you have the following installed on your machine:
- Java Development Kit (JDK): Version 21 or higher.
- Gradle: Version 8.9 or higher.
- Minecraft: Version 1.21.6 or higher
-
Clone the repository
git clone https://github.com/Thadah/hibernateforge.git
-
Navigate to the project directory
cd hibernateforge -
Build the project with Gradle
./gradlew clean :fabric:build :neoforge:build
You will need a Minecraft Forge server.
Copy the <mod>/build/libs/hibernateforge-<mod>-x.x.x.jar file to the mods folder of your Minecraft Forge server.
The mod automatically creates a configuration file at config/hibernateforge.json on first run. Here are the available settings:
{
"startEnabled": true,
"ticksToSkip": 400,
"permissionLevel": 2,
"sleepTimeMs": 75
}| Setting | Default | Description |
|---|---|---|
startEnabled |
true |
Whether hibernation activates automatically when server starts with no players |
ticksToSkip |
400 |
Number of ticks to process before applying sleep during hibernation |
permissionLevel |
2 |
Required permission level to use hibernation commands (0=all, 4=owner) |
sleepTimeMs |
75 |
Milliseconds to sleep between tick processing cycles |
{
"enableMemoryOptimization": true,
"memoryCleanupIntervalSeconds": 30,
"memoryThresholdPercent": 80.0,
"maxChunksToUnloadPerTick": 10,
"forceGarbageCollection": true,
"gcIntervalSeconds": 30,
"saveBeforeHibernation": true,
"removeOldDroppedItems": true,
"droppedItemMaxAgeSeconds": 300,
"removeProjectiles": true,
"removeExperienceOrbs": true,
"compactDataStructures": true,
"logMemoryUsage": true
}| Setting | Default | Description |
|---|---|---|
enableMemoryOptimization |
true |
Enable memory cleanup during hibernation |
memoryCleanupIntervalSeconds |
30 |
How often to run memory cleanup routines |
memoryThresholdPercent |
80.0 |
Memory usage percentage that triggers cleanup |
maxChunksToUnloadPerTick |
10 |
Maximum chunks to unload per server tick |
forceGarbageCollection |
true |
Force Java garbage collection during hibernation |
gcIntervalSeconds |
30 |
Minimum time between garbage collection runs |
saveBeforeHibernation |
true |
Save world data before entering hibernation |
removeOldDroppedItems |
true |
Remove old dropped items during hibernation |
droppedItemMaxAgeSeconds |
300 |
Age in seconds after which items are removed (5 minutes) |
removeProjectiles |
true |
Remove arrows and other projectiles |
removeExperienceOrbs |
true |
Remove floating experience orbs |
compactDataStructures |
true |
Attempt to compact server data structures |
logMemoryUsage |
true |
Log memory usage information to console |
{
"aggressiveCpuSaving": true,
"minSleepInterval": 1500,
"highLoadSleepMultiplier": 1.5,
"yieldInterval": 8
}| Setting | Default | Description |
|---|---|---|
aggressiveCpuSaving |
true |
Enable more aggressive CPU saving measures |
minSleepInterval |
1500 |
Minimum time in milliseconds between sleep cycles |
highLoadSleepMultiplier |
1.5 |
Multiplier for sleep time when system load is high |
yieldInterval |
8 |
How often to yield CPU to other threads (every N ticks) |
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you don't have any coding experience, testing other platforms and configurations is also very welcome!
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the European Union Public License v1.2. See LICENSE for more information.
Thadah D. Denyse - [email protected]
Project Link: https://github.com/Thadah/hibernateforge
Thanks to these nice projects!
Warning
🔗 This repository is automatically mirrored from a private Forgejo instance.