@@ -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