Is there a way to slow down the Day/Night cycle?
Using command blocks and some redstone, this can be achieved.
First of all, you need to set /gamerule doDaylightCycle
to false, to stop the natural daylight cycle. From here, we are going to use command blocks (/give <username> command_block
), some redstone, and the command /time add <number>
to control the daylight cycle.
Here is a very simple, and pretty easy to tune setup:
The command on the command block is /time add <number>
, tuned however you would like (1 item in the clock with an increment of 5 results in a 28 minute day). There is no hidden redstone, and both pistons are sticky. The hoppers feed into each other, and you choose the number of items put in (more items means slower day/night cycle).
The formula for calculating the length of daytime is 140 * (items / number)
minutes of daytime (double that for the length of a whole day).
You're also going to want to use the command /gamerule commandBlockOutput false
if you don't want periodic chat updates saying Added 1 to time
.
You're also going to want to put this in your spawn chunk if you intend for it to work no matter where you are in the world (determine your spawn chunk by breaking your bed and killing yourself).
There is no way to do this directly in Vanilla Minecraft, no. You may be able to find a mod to do this, or you can probably rig something up with Command Blocks. Specifically, if you hook up a circuit to send a redstone pulse alternately into one of two Command Blocks, with the commands
gamerule doDaylightCycle true
gamerule doDaylightCycle false
Then they will alternately turn on and off the code that advances the day/night cycle. Use some repeaters to control how long the pause is between them activating, and you should be able to control the rate pretty carefully, but this will only work as long as the chunk containing the whole setup remains loaded; wander too far away, and time will go back to normal.
This can also be achieved using purely command blocks (because redstone is an evil lag-machine), ideally using 1.9's new command blocks.
First, set the gamerules commandBlockOutput
and doDaylightCycle
to false
to turn off command block spam and the natural daylight cycle. We'll also need an objective to store a timer.
/scoreboard objectives add TIMER dummy
1.9
Next, place one repeat command block and three chain command blocks in a line. Set the last two to "conditional" and put the following commands
/scoreboard players add #TIMER TIMER 1
/scoreboard players test #TIMER TIMER <X>
/time add <Y>
/scoreboard players set #TIMER TIMER 0
#TIMER
is a nonexistent player (the # makes the name illegal for real players) who counts ticks for us.
Replace <X>
and <Y>
with appropriate numbers. Time will advance at a rate of <Y>
/<X>
the normal speed. Try and use low numbers, or time will "stutter" because it's only advanced every <X>
ticks.
1.8
Emulating 1.9's conditional command blocks in 1.8 without using redstone is non-trivial (but doable). Hence using /scoreboard players test
won't work.
We can use /execute
instead, but that won't work on a non-existing player because those are not entities. We can use an invisible armorstand instead:
/summon ArmorStand ~ ~ ~ {CustomName:"#TIMER",Marker:1b,Invisible:1b}
Create a fill clock and place the following three commands:
/scoreboard players add @e[type=ArmorStand,name=#TIMER] TIMER 1
/execute @e[type=ArmorStand,name=#TIMER,score_TIMER=0] ~ ~ ~ /time add <Y>
/scoreboard players set @e[type=ArmorStand,name=#TIMER,score_TIMER_min=<X>] TIMER 0
As above, set <X>
and <Y>
accordingly.