Unixkitty / timecontrol

Take control over Minecraft's day-night cycle
10 stars 4 forks source link

Timecontrol

Since 1.20.1 there is also a version for Fabric!

Control Minecraft’s day-night cycle using a simple config file, choosing either:

No base classes are modified, no ASM/mixin transformations (on the Forge version) and no touching tick lengths.

For years when playing the game I couldn't stand vanilla day length.

No other mod that tried to implement a similar feature satisfied me, either due to breaking other mods or having unnecessary features.

This is my simplistic, non-invasive implementation that relies on the vanilla "doDaylightCycle" gamerule being off. The mod will set it to false on it's own during world startup.

/time command works, sleeping works (sleep should be mostly handled by vanilla)

There is also compatibility with Comforts and Vampirism's day sleeping

Configuration

File:

Starting with 1.20.1 on Forge configuration is saved per-world (serverside config):

.minecraft/saves/{world}/serverconfig/timecontrol-server.toml

On Fabric 1.20.1+:

.minecraft/config/timecontrol.json

If you're using Forge, on Minecraft versions up to and including 1.19.4 you can find it at:

.minecraft/config/timecontrol-common.toml

[system_time]
    #Synchronize game world time with system time
    sync_to_system_time = true
    #Sync time every n ticks
    #Range: 1 ~ 864000
    sync_to_system_time_rate = 20

[arbitrary_time]
    #How long daytime lasts (0 - 12000)
    #Range: 1 ~ 178956
    day_length_minutes = 30
    #How long nighttime lasts (12000 - 24000)
    #Range: 1 ~ 178956
    night_length_minutes = 25

[miscellaneous]
    debug = true

The Fabric version json does not have comments, so you can refer to the above example.

Commands:

There is also an in-game command:

In 1.20+

/timecontrol day_length_minutes [<value>]
/timecontrol night_length_minutes [<value>]
/timecontrol sync_to_system_time_rate [<value>]
/timecontrol sync_to_system_time [<value>]

Up to 1.19.4:

/timecontrol get < sync_to_system_time | night_length_minutes | day_length_minutes >
/timecontrol set < night_length_minutes | day_length_minutes > <value>

At this time it works with both multiplayer and singleplayer (must be installed on both), but on Dedicated Servers due to possible ping and ticks per second discrepancies slight skybox jitter may be noticeable.

FAQ

Q: Forge?

A: Forge, and since 1.20.1 - Fabric.

Q: Can I include your mod in a video?

A: As long as you include a link to the mod/modpack (if it happens to be in one), absolutely

Q: Can I add your mod to a modpack?

A: CurseForge/Modrinth modpacks are cool.

P.S.

If you don't feel confident enough about my mod and may have also become distrustful of all the previously existing mods attempting to give control to daylight cycle length:

I've been using it myself since 1.12.2, always in heavily modded packs (200+ mods), (usually) on a multiplayer server. This should be a vanilla feature in my opinion.

The mod also doesn't have any permanent effects on the game or save, so if you install/remove it without worry.