2024-06-06 19:46:06 +02:00
|
|
|
goal: realtime to in game time conversion
|
|
|
|
There is no need to keep days
|
|
|
|
|
|
|
|
minecraft day is 0 - 24000 ticks
|
|
|
|
where 6000 ticks is noon (peak sun) and 18000 is midnight (peak moon)
|
|
|
|
|
|
|
|
irl day is 0 - 86400 seconds
|
|
|
|
|
|
|
|
0. s = epoch % 86400 to get seconds since midnight
|
|
|
|
^
|
|
|
|
(* scale) here
|
|
|
|
1. t = s / 72.0 to fit into minecraft day
|
|
|
|
2. t = t * 20 to convert that to ticks
|
|
|
|
3. t = t - 6000 to align noon and midnight
|
|
|
|
this leaves us with negative time, so
|
|
|
|
4. t = floorMod(t, 24000) to wrap if negative
|
|
|
|
|
|
|
|
example:
|
|
|
|
epoch = 1713593340
|
|
|
|
|
|
|
|
0. getting seconds since midnight
|
|
|
|
s = epoch % 86400
|
|
|
|
s = 1713593340 % 86400
|
|
|
|
s = 22140
|
|
|
|
|
|
|
|
1. conversion to minecraft day length
|
|
|
|
gs = s / 72.0
|
|
|
|
gs = 22140 / 72.0
|
|
|
|
gs = 307.5
|
|
|
|
|
|
|
|
2. to ticks
|
|
|
|
t = gs * 20
|
|
|
|
t = 307.5 * 20
|
|
|
|
t = 6150
|
|
|
|
|
|
|
|
3. step 3
|
|
|
|
t = t - 6000
|
|
|
|
t = 6150 - 6000
|
|
|
|
t = 150
|
|
|
|
|
|
|
|
4. wrapping
|
|
|
|
t = floorMod(150, 24000)
|
|
|
|
t = 150
|
|
|
|
|
|
|
|
|
|
|
|
goal: frequency of time update
|
|
|
|
|
|
|
|
t = 72 / scale
|
|
|
|
t is the period, in ticks of course
|
|
|
|
|
|
|
|
to see how many irl seconds a tick represents:
|
|
|
|
s = 3.6 * scale
|
|
|
|
(from 1 / (1/72 * 20 * scale))
|
|
|
|
|
|
|
|
however, some scales result in fractions
|
|
|
|
here's how many in game aligned seconds have passed at the end of a real day:
|
|
|
|
84000 / 72 * scale * floor(72/scale)
|
|
|
|
for scale 0.99: 83160
|
|
|
|
so we'll be 14 minutes behind
|
|
|
|
|
|
|
|
solution? for now let's warn and update time every tick
|
|
|
|
to check:
|
|
|
|
scale * floor(72/scale) == 72
|
|
|
|
|
2024-06-07 16:46:15 +02:00
|
|
|
|
|
|
|
goal: offsetting by player position
|
|
|
|
|
|
|
|
t = (longitude / 15) * 1000 * scale
|
|
|
|
|
|
|
|
accounting for sunrise and sunset
|
|
|
|
TODO, idk yet without
|
|
|
|
|