Add time tracking and display functionality
This commit is contained in:
		
							parent
							
								
									7e0e96d1f9
								
							
						
					
					
						commit
						39677499a9
					
				
							
								
								
									
										53
									
								
								main/time.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								main/time.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| -- Define constants | ||||
| local tick_per_second = 20 | ||||
| local tick_per_minute = tick_per_second * 60 | ||||
| local tick_per_hour = tick_per_minute * 60 | ||||
| 
 | ||||
| -- Initialize objectives and constants | ||||
| commands.exec("scoreboard objectives add time_t custom:play_time") | ||||
| commands.exec("scoreboard objectives add time_h dummy") | ||||
| commands.exec("scoreboard objectives add time_m dummy") | ||||
| commands.exec("scoreboard objectives add time_s dummy") | ||||
| commands.exec("scoreboard objectives add time_formatted dummy") | ||||
| commands.exec("scoreboard objectives add time_display dummy") | ||||
| 
 | ||||
| -- Display on the sidebar | ||||
| commands.exec("scoreboard objectives setdisplay sidebar time_display") | ||||
| 
 | ||||
| -- Main loop to update the time continuously | ||||
| while true do | ||||
|     -- Calculate seconds | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_s = @s time_t") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_s %= " .. tick_per_minute .. " const") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_s /= " .. tick_per_second .. " const") | ||||
| 
 | ||||
|     -- Calculate minutes | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_m = @s time_t") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_m /= " .. tick_per_minute .. " const") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_m %= 60 const") | ||||
| 
 | ||||
|     -- Calculate hours | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_h = @s time_t") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_h /= " .. tick_per_hour .. " const") | ||||
| 
 | ||||
|     -- Combine into HHMMSS format | ||||
|     commands.exec("execute as @a run scoreboard players set @s time_formatted 0") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_formatted += @s time_h") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_formatted *= 100 const") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_formatted += @s time_m") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_formatted *= 100 const") | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_formatted += @s time_s") | ||||
| 
 | ||||
|     -- Play a sound if the hour has changed | ||||
|     commands.exec('execute as @a unless score @s time_h = @s prev_time_h run playsound minecraft:entity.experience_orb.pickup master @s ~ ~ ~') | ||||
|     commands.exec('execute as @a unless score @s time_h = @s prev_time_h run scoreboard players operation @s prev_time_h = @s time_h') | ||||
| 
 | ||||
|     -- Copy the formatted time to the display objective | ||||
|     commands.exec("execute as @a run scoreboard players operation @s time_display = @s time_formatted") | ||||
| 
 | ||||
|     -- Display on the actionbar | ||||
|     commands.exec('execute as @a run title @s actionbar [{"text":"Time: "},{"score":{"name":"@s","objective":"time_h"},"color":"gold"},{"text":":"},{"score":{"name":"@s","objective":"time_m"},"color":"yellow"},{"text":":"},{"score":{"name":"@s","objective":"time_s"},"color":"green"}]') | ||||
| 
 | ||||
|     -- Delay to prevent excessive updates | ||||
|     os.sleep(0.1) | ||||
| end | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user