# Destruct singleton before constructing function _daynight:destruct # Summon an armor stand that will be used as the target entity for in-game commands execute as @s run summon armor_stand 0.0 0.0 0.0 { CustomName: daynight_entity_daytime, Invisible: true, Health: 600.0f, NoGravity: true, Marker: true } # Store the current state of gamerule advance_time scoreboard objectives add daynight_score_runtime_gamerule_advancetime dummy [ daynight_score_runtime_gamerule_advancetime ] execute as @p store result score @e[ name=daynight_entity_daytime, type=armor_stand, x=0.0, y=0.0, z=0.0 ] daynight_score_runtime_gamerule_advancetime run gamerule advance_time # Set up scoreboard objective to track the current time scoreboard objectives add daynight_score_runtime_daytime_tick dummy [ daynight_score_runtime_daytime_tick ] # Set up scoreboard objective to track when we should advance the time scoreboard objectives add daynight_score_runtime_advance_time_mtick dummy [ daynight_score_runtime_advance_time_mtick ] scoreboard players set @e[ name=daynight_entity_daytime, type=armor_stand, x=0.0, y=0.0, z=0.0 ] daynight_score_runtime_advance_time_mtick 0 # Set up scoreboard objectives to store day and night time length in ticks scoreboard objectives add daynight_score_setting_ticks_day trigger [ daynight_score_setting_ticks_day ] scoreboard objectives add daynight_score_setting_ticks_night trigger [ daynight_score_setting_ticks_night ] # Set up scoreboard objectives to store at which tick day and night start scoreboard objectives add daynight_score_setting_day_end_tick trigger [ daynight_score_setting_day_end_tick ] scoreboard objectives add daynight_score_setting_day_start_tick trigger [ daynight_score_setting_day_start_tick ] # Set default values function _daynight:defaults # Start main execution loop schedule function _daynight:tick 1s replace