Skip to content

Commit a4298dc

Browse files
committed
1.19.3 texture atlas gen, and packversion 12
1 parent 94a696a commit a4298dc

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

scripts/dmodels_loader.dsc

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,13 @@ dmodels_load_bbmodel:
6363
- debug error "[DModels] Can't load bbmodel for '<[model_name]>' - file has no elements?"
6464
- stop
6565
# =============== Pack validation ===============
66-
- if !<server.has_flag[<[pack_root]>/pack.mcmeta]>:
67-
- run dmodels_multiwaitable_filewrite def.key:<[model_name]> def.path:<[pack_root]>/pack.mcmeta def.data:<map.with[pack].as[<map[pack_format=8;description=dModels_AutoPack_Default]>].to_json[native_types=true;indent=4].utf8_encode>
66+
- define packversion 12
67+
- if !<util.has_file[<[pack_root]>/pack.mcmeta]> || <server.flag[dmodels_last_pack_version]||0> != packversion:
68+
- flag server dmodels_last_pack_version:<[packversion]>
69+
- run dmodels_multiwaitable_filewrite def.key:<[model_name]> def.path:<[pack_root]>/pack.mcmeta def.data:<map.with[pack].as[<map[pack_format=<[packversion]>;description=dModels_AutoPack_Default]>].to_json[native_types=true;indent=4].utf8_encode>
6870
# =============== Textures loading ===============
6971
- define tex_id 0
72+
- define texture_paths <list>
7073
- foreach <[data.textures]||<list>> as:texture:
7174
- define texname <[texture.name]>
7275
- if <[texname].ends_with[.png]>:
@@ -79,6 +82,7 @@ dmodels_load_bbmodel:
7982
- run dmodels_multiwaitable_filewrite def.key:<[model_name]> def.path:<[texture_output_path]> def.data:<[raw_source].after[,].base64_to_binary>
8083
- define proper_path dmodels/<[model_name]>/<[texname]>
8184
- define mc_texture_data.<[tex_id]> <[proper_path]>
85+
- define texture_paths:->:<[proper_path]>
8286
- if <[texture.particle]||false>:
8387
- define mc_texture_data.particle <[proper_path]>
8488
- define tex_id:++
@@ -134,6 +138,32 @@ dmodels_load_bbmodel:
134138
- define animation_list.<[animation.name]>.animators.<[o_uuid]>.frames <[animation_list.<[animation.name]>.animators.<[o_uuid]>.frames].sort_by_value[get[time]]>
135139
- if <[animation_list].any||false>:
136140
- flag server dmodels_data.animations_<[model_name]>:<[animation_list]>
141+
# =============== Atlas gen ===============
142+
- define atlas_file <[pack_root]>/assets/minecraft/atlases/blocks.json
143+
- waituntil rate:1t max:15s !<server.has_flag[dmodels_temp_atlas_handling]>
144+
- if <server.has_flag[dmodels_temp_atlas_file]>:
145+
- define atlas_data <util.parse_yaml[<server.flag[dmodels_temp_atlas_file].utf8_decode>]>
146+
- else if <util.has_file[<[atlas_file]>]>:
147+
- flag server dmodels_temp_atlas_handling expire:1h
148+
- ~fileread path:<[atlas_file]> save:atlas_file_data
149+
- flag server dmodels_temp_atlas_handling:!
150+
- define atlas_data <util.parse_yaml[<entry[atlas_file_data].data.utf8_decode>]>
151+
- else:
152+
- definemap atlas_data sources:<list>
153+
- define known_atlas_dirs <[atlas_data.sources].parse[get[source]].deduplicate>
154+
- define atlas_dirs_to_track <[texture_paths].parse[before_last[/]].deduplicate>
155+
- define atlas_dirs_to_add <[atlas_dirs_to_track].exclude[<[known_atlas_dirs]>]>
156+
- if <[atlas_dirs_to_add].any>:
157+
- foreach <[atlas_dirs_to_add]> as:new_dir:
158+
- definemap src:
159+
type: directory
160+
source: <[new_dir]>
161+
prefix: <[new_dir]>/
162+
- define atlas_data.sources:->:<[src]>
163+
- define new_atlas_json <[atlas_data].to_json[indent=4].utf8_encode>
164+
- flag server dmodels_temp_atlas_file:<[new_atlas_json]> expire:1h
165+
- waituntil rate:1t max:15s !<server.has_flag[dmodels_data.temp_core.filewrites.<[atlas_file].escaped>]>
166+
- run dmodels_multiwaitable_filewrite def.key:core def.path:<[atlas_file]> def.data:<[new_atlas_json]>
137167
# =============== Item model file generation ===============
138168
- waituntil rate:1t max:15s !<server.has_flag[dmodels_temp_item_reading]>
139169
- if <server.has_flag[dmodels_temp_item_file]>:
@@ -198,10 +228,10 @@ dmodels_load_bbmodel:
198228
- if <[overrides_changed]>:
199229
- define override_file_json <[override_item_data].to_json[native_types=true;indent=4].utf8_encode>
200230
- flag server dmodels_temp_item_file:<[override_file_json]> expire:1h
201-
- waituntil rate:1t max:15s !<server.has_flag[dmodels_data.temp_<[model_name]>.filewrites.<[override_item_filepath].escaped>]>
231+
- waituntil rate:1t max:15s !<server.has_flag[dmodels_data.temp_core.filewrites.<[override_item_filepath].escaped>]>
202232
- run dmodels_multiwaitable_filewrite def.key:<[model_name]> def.path:<[override_item_filepath]> def.data:<[override_file_json]>
203233
# Ensure all filewrites are done before ending the task
204-
- waituntil rate:1t max:5m <server.flag[dmodels_data.temp_<[model_name]>.filewrites].is_empty||true>
234+
- waituntil rate:1t max:5m <server.flag[dmodels_data.temp_<[model_name]>.filewrites].is_empty||true> && <server.flag[dmodels_data.temp_core.filewrites].is_empty||true>
205235
# Final clear of temp data
206236
- flag server dmodels_data.temp_<[model_name]>:!
207237

scripts/dmodels_main.dsc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
# @contributors Max^
1010
# @thanks Darwin, Max^, kalebbroo, sharklaserss - for helping with reference models, testing, ideas, etc
1111
# @date 2022/06/01
12-
# @updated 2022/07/25
13-
# @denizen-build REL-1773
14-
# @script-version 1.5
12+
# @updated 2022/12/24
13+
# @denizen-build REL-1782
14+
# @script-version 1.6
1515
#
1616
# This takes BlockBench "BBModel" files, converts them to a client-ready resource pack and Denizen internal data,
1717
# then is able to display them in minecraft and even animate them, by spawning and moving invisible armor stands with resource pack items on their heads.

0 commit comments

Comments
 (0)