Skip to content

Commit 53f1791

Browse files
Animations Loader
1 parent db7f1e6 commit 53f1791

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

scripts/dmodels_loader.dsc

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ dmodels_load_bbmodel:
1313
- define pack_root data/dmodels/res_pack
1414
- define models_root <[pack_root]>/assets/minecraft/models/item/dmodels/<[model_name]>
1515
- define textures_root <[pack_root]>/assets/minecraft/textures/dmodels/<[model_name]>
16+
- define item_validate <item[<script[dmodels_config].data_key[item]>]||null>
17+
- if <[item_validate]> == null:
18+
- debug error "[Denizen Models] Item must be valid Example: potion"
19+
- stop
1620
- define override_item_filepath <[pack_root]>/assets/minecraft/models/item/<script[dmodels_config].data_key[item]>.json
1721
- define file data/dmodels/<[model_name]>.bbmodel
1822
- define scale_factor <element[2.285].div[4]>
@@ -82,14 +86,37 @@ dmodels_load_bbmodel:
8286
- flag server dmodels_data.animations_<[model_name]>:!
8387
# =============== Animations loading ===============
8488
- foreach <[data.animations]||<list>> as:animation:
85-
- narrate "TODO: Animation stuff <[animation.name]>"
86-
# TODO: Animation loading stuff
89+
- define animation_list.<[animation.name]>.loop <[animation.loop]>
90+
- define animation_list.<[animation.name]>.override <[animation.override]>
91+
- define animation_list.<[animation.name]>.anim_time_update <[animation.anim_time_update]>
92+
- define animation_list.<[animation.name]>.blend_weight <[animation.blend_weight]>
93+
- define animation_list.<[animation.name]>.length <[animation.length]>
94+
- define animator_data <[animation.animators]>
95+
- foreach <server.flag[dmodels_data.temp_<[model_name]>.raw_outlines]> key:o_uuid as:outline_data:
96+
- define animator <[animator_data.<[o_uuid]>]||null>
97+
- if <[animator]> != null:
98+
- define keyframes <[animator.keyframes]>
99+
- foreach <[keyframes]> as:keyframe:
100+
- define anim_map.channel <[keyframe.channel].to_uppercase>
101+
- define data_points <[keyframe.data_points].first>
102+
- if <[anim_map.channel]> == ROTATION:
103+
- define anim_map.data <[data_points.x].to_radians>,<[data_points.y].to_radians>,<[data_points.z].to_radians>
104+
- else:
105+
- define anim_map.data <[data_points.x]>,<[data_points.y]>,<[data_points.z]>
106+
- define anim_map.time <[keyframe.time]>
107+
- define anim_map.interpolation <[keyframe.interpolation]>
108+
- define animation_list.<[animation.name]>.animators.<[o_uuid]>.frames:->:<[anim_map]>
109+
#Time sort
110+
- define animation_list.<[animation.name]>.animators.<[o_uuid]>.frames <[animation_list.<[animation.name]>.animators.<[o_uuid]>.frames].sort_by_value[get[time]]>
111+
- else:
112+
- define animation_list.<[animation.name]>.animators.<[o_uuid]>.frames <list>
113+
- flag server dmodels_data.animations_<[model_name]>:<[animation_list]>
87114
# =============== Item model file generation ===============
88-
- if <server.has_flag[<[override_item_filepath]>]>:
115+
- if <server.has_file[<[override_item_filepath]>]>:
89116
- ~fileread path:<[override_item_filepath]> save:override_item
90-
- define override_item_data <util.parse_yaml[<entry[override_item].utf8_decode>]>
117+
- define override_item_data <util.parse_yaml[<entry[override_item].data.utf8_decode>]>
91118
- else:
92-
- definemap override_item_data parent:minecraft:item/generated textures:<map[layer0=minecraft:item/leather_horse_armor]>
119+
- definemap override_item_data parent:minecraft:item/generated textures:<map[layer0=minecraft:item/<script[dmodels_config].data_key[item]>]>
93120
- define overrides_changed false
94121
- foreach <server.flag[dmodels_data.temp_<[model_name]>.raw_outlines]> as:outline:
95122
- define outline_origin <location[<[outline.origin]>]>

0 commit comments

Comments
 (0)