1use crate::timeline::{
2 Ease, Keyframe, KeyframeValue, TimeMarker, Timeline, TimelineRegistry, Track,
3};
4use steel_utils::Identifier;
5pub static VILLAGER_SCHEDULE: Timeline = Timeline {
6 key: Identifier::vanilla_static("villager_schedule"),
7 clock: Some(Identifier::vanilla_static("overworld")),
8 period_ticks: Some(24000i64),
9 tracks: &[
10 Track {
11 name: "minecraft:gameplay/baby_villager_activity",
12 ease: None,
13 modifier: None,
14 keyframes: &[
15 Keyframe {
16 ticks: 10i64,
17 value: KeyframeValue::String("minecraft:idle"),
18 },
19 Keyframe {
20 ticks: 3000i64,
21 value: KeyframeValue::String("minecraft:play"),
22 },
23 Keyframe {
24 ticks: 6000i64,
25 value: KeyframeValue::String("minecraft:idle"),
26 },
27 Keyframe {
28 ticks: 10000i64,
29 value: KeyframeValue::String("minecraft:play"),
30 },
31 Keyframe {
32 ticks: 12000i64,
33 value: KeyframeValue::String("minecraft:rest"),
34 },
35 ],
36 },
37 Track {
38 name: "minecraft:gameplay/villager_activity",
39 ease: None,
40 modifier: None,
41 keyframes: &[
42 Keyframe {
43 ticks: 10i64,
44 value: KeyframeValue::String("minecraft:idle"),
45 },
46 Keyframe {
47 ticks: 2000i64,
48 value: KeyframeValue::String("minecraft:work"),
49 },
50 Keyframe {
51 ticks: 9000i64,
52 value: KeyframeValue::String("minecraft:meet"),
53 },
54 Keyframe {
55 ticks: 11000i64,
56 value: KeyframeValue::String("minecraft:idle"),
57 },
58 Keyframe {
59 ticks: 12000i64,
60 value: KeyframeValue::String("minecraft:rest"),
61 },
62 ],
63 },
64 ],
65 time_markers: &[],
66};
67pub static DAY: Timeline = Timeline {
68 key: Identifier::vanilla_static("day"),
69 clock: Some(Identifier::vanilla_static("overworld")),
70 period_ticks: Some(24000i64),
71 tracks: &[
72 Track {
73 name: "minecraft:audio/firefly_bush_sounds",
74 ease: None,
75 modifier: Some("or"),
76 keyframes: &[
77 Keyframe {
78 ticks: 12600i64,
79 value: KeyframeValue::Bool(true),
80 },
81 Keyframe {
82 ticks: 23401i64,
83 value: KeyframeValue::Bool(false),
84 },
85 ],
86 },
87 Track {
88 name: "minecraft:gameplay/bees_stay_in_hive",
89 ease: None,
90 modifier: Some("or"),
91 keyframes: &[
92 Keyframe {
93 ticks: 12542i64,
94 value: KeyframeValue::Bool(true),
95 },
96 Keyframe {
97 ticks: 23460i64,
98 value: KeyframeValue::Bool(false),
99 },
100 ],
101 },
102 Track {
103 name: "minecraft:gameplay/cat_waking_up_gift_chance",
104 ease: Some(Ease::Named("constant")),
105 modifier: Some("maximum"),
106 keyframes: &[
107 Keyframe {
108 ticks: 362i64,
109 value: KeyframeValue::Float(0f32),
110 },
111 Keyframe {
112 ticks: 23667i64,
113 value: KeyframeValue::Float(0.7f32),
114 },
115 ],
116 },
117 Track {
118 name: "minecraft:gameplay/creaking_active",
119 ease: None,
120 modifier: Some("or"),
121 keyframes: &[
122 Keyframe {
123 ticks: 12600i64,
124 value: KeyframeValue::Bool(true),
125 },
126 Keyframe {
127 ticks: 23401i64,
128 value: KeyframeValue::Bool(false),
129 },
130 ],
131 },
132 Track {
133 name: "minecraft:gameplay/eyeblossom_open",
134 ease: None,
135 modifier: None,
136 keyframes: &[
137 Keyframe {
138 ticks: 12600i64,
139 value: KeyframeValue::Bool(true),
140 },
141 Keyframe {
142 ticks: 23401i64,
143 value: KeyframeValue::Bool(false),
144 },
145 ],
146 },
147 Track {
148 name: "minecraft:gameplay/monsters_burn",
149 ease: None,
150 modifier: Some("or"),
151 keyframes: &[
152 Keyframe {
153 ticks: 12542i64,
154 value: KeyframeValue::Bool(false),
155 },
156 Keyframe {
157 ticks: 23460i64,
158 value: KeyframeValue::Bool(true),
159 },
160 ],
161 },
162 Track {
163 name: "minecraft:gameplay/sky_light_level",
164 ease: None,
165 modifier: Some("multiply"),
166 keyframes: &[
167 Keyframe {
168 ticks: 133i64,
169 value: KeyframeValue::Float(1f32),
170 },
171 Keyframe {
172 ticks: 11867i64,
173 value: KeyframeValue::Float(1f32),
174 },
175 Keyframe {
176 ticks: 13670i64,
177 value: KeyframeValue::Float(0.26666668f32),
178 },
179 Keyframe {
180 ticks: 22330i64,
181 value: KeyframeValue::Float(0.26666668f32),
182 },
183 ],
184 },
185 Track {
186 name: "minecraft:gameplay/turtle_egg_hatch_chance",
187 ease: Some(Ease::Named("constant")),
188 modifier: Some("maximum"),
189 keyframes: &[
190 Keyframe {
191 ticks: 21062i64,
192 value: KeyframeValue::Float(1f32),
193 },
194 Keyframe {
195 ticks: 21905i64,
196 value: KeyframeValue::Float(0.002f32),
197 },
198 ],
199 },
200 Track {
201 name: "minecraft:visual/cloud_color",
202 ease: None,
203 modifier: Some("multiply"),
204 keyframes: &[
205 Keyframe {
206 ticks: 133i64,
207 value: KeyframeValue::Int(-1 as i32),
208 },
209 Keyframe {
210 ticks: 11867i64,
211 value: KeyframeValue::Int(-1 as i32),
212 },
213 Keyframe {
214 ticks: 13670i64,
215 value: KeyframeValue::Int(-15132378 as i32),
216 },
217 Keyframe {
218 ticks: 22330i64,
219 value: KeyframeValue::Int(-15132378 as i32),
220 },
221 ],
222 },
223 Track {
224 name: "minecraft:visual/fog_color",
225 ease: None,
226 modifier: Some("multiply"),
227 keyframes: &[
228 Keyframe {
229 ticks: 133i64,
230 value: KeyframeValue::String("#ffffff"),
231 },
232 Keyframe {
233 ticks: 11867i64,
234 value: KeyframeValue::String("#ffffff"),
235 },
236 Keyframe {
237 ticks: 13670i64,
238 value: KeyframeValue::String("#0f0f16"),
239 },
240 Keyframe {
241 ticks: 22330i64,
242 value: KeyframeValue::String("#0f0f16"),
243 },
244 ],
245 },
246 Track {
247 name: "minecraft:visual/moon_angle",
248 ease: Some(Ease::CubicBezier([0.362f32, 0.241f32, 0.638f32, 0.759f32])),
249 modifier: None,
250 keyframes: &[
251 Keyframe {
252 ticks: 6000i64,
253 value: KeyframeValue::Float(540f32),
254 },
255 Keyframe {
256 ticks: 6000i64,
257 value: KeyframeValue::Float(180f32),
258 },
259 ],
260 },
261 Track {
262 name: "minecraft:visual/sky_color",
263 ease: None,
264 modifier: Some("multiply"),
265 keyframes: &[
266 Keyframe {
267 ticks: 133i64,
268 value: KeyframeValue::String("#ffffff"),
269 },
270 Keyframe {
271 ticks: 11867i64,
272 value: KeyframeValue::String("#ffffff"),
273 },
274 Keyframe {
275 ticks: 13670i64,
276 value: KeyframeValue::String("#000000"),
277 },
278 Keyframe {
279 ticks: 22330i64,
280 value: KeyframeValue::String("#000000"),
281 },
282 ],
283 },
284 Track {
285 name: "minecraft:visual/sky_light_color",
286 ease: None,
287 modifier: Some("multiply"),
288 keyframes: &[
289 Keyframe {
290 ticks: 730i64,
291 value: KeyframeValue::String("#ffffff"),
292 },
293 Keyframe {
294 ticks: 11270i64,
295 value: KeyframeValue::String("#ffffff"),
296 },
297 Keyframe {
298 ticks: 13140i64,
299 value: KeyframeValue::String("#7a7aff"),
300 },
301 Keyframe {
302 ticks: 22860i64,
303 value: KeyframeValue::String("#7a7aff"),
304 },
305 ],
306 },
307 Track {
308 name: "minecraft:visual/sky_light_factor",
309 ease: None,
310 modifier: Some("multiply"),
311 keyframes: &[
312 Keyframe {
313 ticks: 730i64,
314 value: KeyframeValue::Float(1f32),
315 },
316 Keyframe {
317 ticks: 11270i64,
318 value: KeyframeValue::Float(1f32),
319 },
320 Keyframe {
321 ticks: 13140i64,
322 value: KeyframeValue::Float(0.24f32),
323 },
324 Keyframe {
325 ticks: 22860i64,
326 value: KeyframeValue::Float(0.24f32),
327 },
328 ],
329 },
330 Track {
331 name: "minecraft:visual/star_angle",
332 ease: Some(Ease::CubicBezier([0.362f32, 0.241f32, 0.638f32, 0.759f32])),
333 modifier: None,
334 keyframes: &[
335 Keyframe {
336 ticks: 6000i64,
337 value: KeyframeValue::Float(360f32),
338 },
339 Keyframe {
340 ticks: 6000i64,
341 value: KeyframeValue::Float(0f32),
342 },
343 ],
344 },
345 Track {
346 name: "minecraft:visual/star_brightness",
347 ease: None,
348 modifier: Some("maximum"),
349 keyframes: &[
350 Keyframe {
351 ticks: 92i64,
352 value: KeyframeValue::Float(0.037f32),
353 },
354 Keyframe {
355 ticks: 627i64,
356 value: KeyframeValue::Float(0f32),
357 },
358 Keyframe {
359 ticks: 11373i64,
360 value: KeyframeValue::Float(0f32),
361 },
362 Keyframe {
363 ticks: 11732i64,
364 value: KeyframeValue::Float(0.016f32),
365 },
366 Keyframe {
367 ticks: 11959i64,
368 value: KeyframeValue::Float(0.044f32),
369 },
370 Keyframe {
371 ticks: 12399i64,
372 value: KeyframeValue::Float(0.143f32),
373 },
374 Keyframe {
375 ticks: 12729i64,
376 value: KeyframeValue::Float(0.258f32),
377 },
378 Keyframe {
379 ticks: 13228i64,
380 value: KeyframeValue::Float(0.5f32),
381 },
382 Keyframe {
383 ticks: 22772i64,
384 value: KeyframeValue::Float(0.5f32),
385 },
386 Keyframe {
387 ticks: 23032i64,
388 value: KeyframeValue::Float(0.364f32),
389 },
390 Keyframe {
391 ticks: 23356i64,
392 value: KeyframeValue::Float(0.225f32),
393 },
394 Keyframe {
395 ticks: 23758i64,
396 value: KeyframeValue::Float(0.101f32),
397 },
398 ],
399 },
400 Track {
401 name: "minecraft:visual/sun_angle",
402 ease: Some(Ease::CubicBezier([0.362f32, 0.241f32, 0.638f32, 0.759f32])),
403 modifier: None,
404 keyframes: &[
405 Keyframe {
406 ticks: 6000i64,
407 value: KeyframeValue::Float(360f32),
408 },
409 Keyframe {
410 ticks: 6000i64,
411 value: KeyframeValue::Float(0f32),
412 },
413 ],
414 },
415 Track {
416 name: "minecraft:visual/sunrise_sunset_color",
417 ease: None,
418 modifier: None,
419 keyframes: &[
420 Keyframe {
421 ticks: 71i64,
422 value: KeyframeValue::String("#5fefa333"),
423 },
424 Keyframe {
425 ticks: 310i64,
426 value: KeyframeValue::String("#29f5ba33"),
427 },
428 Keyframe {
429 ticks: 565i64,
430 value: KeyframeValue::String("#06fbd433"),
431 },
432 Keyframe {
433 ticks: 730i64,
434 value: KeyframeValue::String("#00ffe533"),
435 },
436 Keyframe {
437 ticks: 11270i64,
438 value: KeyframeValue::String("#00ffe533"),
439 },
440 Keyframe {
441 ticks: 11397i64,
442 value: KeyframeValue::String("#04fcd833"),
443 },
444 Keyframe {
445 ticks: 11522i64,
446 value: KeyframeValue::String("#0ff9cb33"),
447 },
448 Keyframe {
449 ticks: 11690i64,
450 value: KeyframeValue::String("#29f5ba33"),
451 },
452 Keyframe {
453 ticks: 11929i64,
454 value: KeyframeValue::String("#5fefa333"),
455 },
456 Keyframe {
457 ticks: 12243i64,
458 value: KeyframeValue::String("#b1e78733"),
459 },
460 Keyframe {
461 ticks: 12358i64,
462 value: KeyframeValue::String("#cce47e33"),
463 },
464 Keyframe {
465 ticks: 12512i64,
466 value: KeyframeValue::String("#e9e07233"),
467 },
468 Keyframe {
469 ticks: 12613i64,
470 value: KeyframeValue::String("#f6dd6b33"),
471 },
472 Keyframe {
473 ticks: 12732i64,
474 value: KeyframeValue::String("#feda6333"),
475 },
476 Keyframe {
477 ticks: 12841i64,
478 value: KeyframeValue::String("#fed75c33"),
479 },
480 Keyframe {
481 ticks: 13035i64,
482 value: KeyframeValue::String("#ecd25133"),
483 },
484 Keyframe {
485 ticks: 13252i64,
486 value: KeyframeValue::String("#c1cc4733"),
487 },
488 Keyframe {
489 ticks: 13775i64,
490 value: KeyframeValue::String("#36be3733"),
491 },
492 Keyframe {
493 ticks: 13888i64,
494 value: KeyframeValue::String("#1fbb3533"),
495 },
496 Keyframe {
497 ticks: 14039i64,
498 value: KeyframeValue::String("#09b73333"),
499 },
500 Keyframe {
501 ticks: 14192i64,
502 value: KeyframeValue::String("#00b33333"),
503 },
504 Keyframe {
505 ticks: 21807i64,
506 value: KeyframeValue::String("#00b23333"),
507 },
508 Keyframe {
509 ticks: 21961i64,
510 value: KeyframeValue::String("#09b73333"),
511 },
512 Keyframe {
513 ticks: 22112i64,
514 value: KeyframeValue::String("#1fbb3533"),
515 },
516 Keyframe {
517 ticks: 22225i64,
518 value: KeyframeValue::String("#36be3733"),
519 },
520 Keyframe {
521 ticks: 22748i64,
522 value: KeyframeValue::String("#c1cc4733"),
523 },
524 Keyframe {
525 ticks: 22965i64,
526 value: KeyframeValue::String("#ecd25133"),
527 },
528 Keyframe {
529 ticks: 23159i64,
530 value: KeyframeValue::String("#fed75c33"),
531 },
532 Keyframe {
533 ticks: 23272i64,
534 value: KeyframeValue::String("#feda6333"),
535 },
536 Keyframe {
537 ticks: 23488i64,
538 value: KeyframeValue::String("#e9e07233"),
539 },
540 Keyframe {
541 ticks: 23642i64,
542 value: KeyframeValue::String("#cce47e33"),
543 },
544 Keyframe {
545 ticks: 23757i64,
546 value: KeyframeValue::String("#b1e78733"),
547 },
548 ],
549 },
550 ],
551 time_markers: &[
552 TimeMarker {
553 name: "minecraft:day",
554 ticks: 1000i64,
555 show_in_commands: Some(true),
556 },
557 TimeMarker {
558 name: "minecraft:midnight",
559 ticks: 18000i64,
560 show_in_commands: Some(true),
561 },
562 TimeMarker {
563 name: "minecraft:night",
564 ticks: 13000i64,
565 show_in_commands: Some(true),
566 },
567 TimeMarker {
568 name: "minecraft:noon",
569 ticks: 6000i64,
570 show_in_commands: Some(true),
571 },
572 TimeMarker {
573 name: "minecraft:roll_village_siege",
574 ticks: 18000i64,
575 show_in_commands: None,
576 },
577 TimeMarker {
578 name: "minecraft:wake_up_from_sleep",
579 ticks: 0i64,
580 show_in_commands: None,
581 },
582 ],
583};
584pub static MOON: Timeline = Timeline {
585 key: Identifier::vanilla_static("moon"),
586 clock: Some(Identifier::vanilla_static("overworld")),
587 period_ticks: Some(192000i64),
588 tracks: &[
589 Track {
590 name: "minecraft:gameplay/surface_slime_spawn_chance",
591 ease: Some(Ease::Named("constant")),
592 modifier: Some("maximum"),
593 keyframes: &[
594 Keyframe {
595 ticks: 0i64,
596 value: KeyframeValue::Float(0.5f32),
597 },
598 Keyframe {
599 ticks: 24000i64,
600 value: KeyframeValue::Float(0.375f32),
601 },
602 Keyframe {
603 ticks: 48000i64,
604 value: KeyframeValue::Float(0.25f32),
605 },
606 Keyframe {
607 ticks: 72000i64,
608 value: KeyframeValue::Float(0.125f32),
609 },
610 Keyframe {
611 ticks: 96000i64,
612 value: KeyframeValue::Float(0f32),
613 },
614 Keyframe {
615 ticks: 120000i64,
616 value: KeyframeValue::Float(0.125f32),
617 },
618 Keyframe {
619 ticks: 144000i64,
620 value: KeyframeValue::Float(0.25f32),
621 },
622 Keyframe {
623 ticks: 168000i64,
624 value: KeyframeValue::Float(0.375f32),
625 },
626 ],
627 },
628 Track {
629 name: "minecraft:visual/moon_phase",
630 ease: None,
631 modifier: None,
632 keyframes: &[
633 Keyframe {
634 ticks: 0i64,
635 value: KeyframeValue::String("full_moon"),
636 },
637 Keyframe {
638 ticks: 24000i64,
639 value: KeyframeValue::String("waning_gibbous"),
640 },
641 Keyframe {
642 ticks: 48000i64,
643 value: KeyframeValue::String("third_quarter"),
644 },
645 Keyframe {
646 ticks: 72000i64,
647 value: KeyframeValue::String("waning_crescent"),
648 },
649 Keyframe {
650 ticks: 96000i64,
651 value: KeyframeValue::String("new_moon"),
652 },
653 Keyframe {
654 ticks: 120000i64,
655 value: KeyframeValue::String("waxing_crescent"),
656 },
657 Keyframe {
658 ticks: 144000i64,
659 value: KeyframeValue::String("first_quarter"),
660 },
661 Keyframe {
662 ticks: 168000i64,
663 value: KeyframeValue::String("waxing_gibbous"),
664 },
665 ],
666 },
667 ],
668 time_markers: &[],
669};
670pub static EARLY_GAME: Timeline = Timeline {
671 key: Identifier::vanilla_static("early_game"),
672 clock: Some(Identifier::vanilla_static("overworld")),
673 period_ticks: None,
674 tracks: &[Track {
675 name: "minecraft:gameplay/can_pillager_patrol_spawn",
676 ease: None,
677 modifier: Some("and"),
678 keyframes: &[
679 Keyframe {
680 ticks: 0i64,
681 value: KeyframeValue::Bool(false),
682 },
683 Keyframe {
684 ticks: 120000i64,
685 value: KeyframeValue::Bool(true),
686 },
687 ],
688 }],
689 time_markers: &[],
690};
691pub fn register_timelines(registry: &mut TimelineRegistry) {
692 registry.register(&VILLAGER_SCHEDULE);
693 registry.register(&DAY);
694 registry.register(&MOON);
695 registry.register(&EARLY_GAME);
696}