#### ## TARGET LIBRARY UTILITY FOR FILLING HEADS IN GUI ASYNC #### # asynchronously and slowly updates all player skulls in any inventory # each skull you want to change has to be flagged with wardrobe_skull_texture:<[target].uuid> wardrobe_skull_texture_update: debug: false type: task definitions: player speed: 2t script: - define inventory <[player].open_inventory> - foreach <[inventory].map_slots> key:slot as:item: - if <[item].has_flag[wardrobe_skull_texture]>: - if <[inventory].viewers.if_null[].is_empty>: - stop - define texture <[item].flag[wardrobe_skull_texture]> - run wardrobe_skull_texture_update_single def.inventory:<[inventory]> def.slot:<[slot]> def.texture:<[texture]> # dont use by itself - always use wardrobe_skull_texture_update # creates a new queue to prevent overloading the main task wardrobe_skull_texture_update_single: debug: false type: task definitions: inventory|slot|texture script: - inventory adjust slot:<[slot]> skull_skin:<[texture]> destination:<[inventory]> ## wardrobe_max_skins: debug: false type: procedure definitions: player script: - define max 9 - while <[max]> > 3: - if <[player].has_permission[wardrobe.skins.<[max]>]>: - determine <[max]> - define max <[max].sub[1]> - determine <[max]> wardrobe_texture_decode: debug: false type: procedure definitions: skin_blob script: - determine <[skin_blob].split[;].get[1].base64_decode.substring[197,298]> wardrobe_save_latest: debug: false type: task definitions: player script: - define latest_texture ]> - define textures <[player].flag[wardrobe_all].values.if_null[]> - if <[textures].contains[<[latest_texture]>]>: - narrate targets:<[player]> "<&c>You already have your latest Minecraft skin saved in your wardrobe." - stop - flag <[player]> wardrobe_all:<[player].flag[wardrobe_all].if_null[].with[<[player].flag[wardrobe_latest]>].as[<[latest_texture]>]> - narrate format:formats_prefix "Saved latest Minecraft skin in your wardrobe." wardrobe_delete: debug: false type: task definitions: player|skin_blob script: - flag <[player]> wardrobe_all:<[player].flag[wardrobe_all].exclude[<[skin_blob]>]> - narrate format:formats_prefix "Deleted saved skin." wardrobe_apply: debug: false type: task definitions: player|skin_blob script: - adjust <[player]> skin_blob:<[skin_blob]> - flag <[player]> wardrobe_current:<[skin_blob]> - narrate format:formats_prefix "Applied saved skin from wardrobe." wardrobe_clear: debug: false type: task definitions: player script: - adjust <[player]> skin:<[player].name> - flag <[player]> wardrobe_current:! - narrate format:formats_prefix "Cleared current skin. You are now using your latest Minecraft skin instead." wardrobe_menu: debug: false type: task definitions: player script: - define inventory 邑邑邑邑鄇]]> # - define max ]> - define position 31 - define i 0 - foreach <[player].flag[wardrobe_all].if_null[]> key:skin_blob as:texture: - define skinitem - adjust def:skinitem "display:<&e>Skin #<[loop_index]>" - adjust def:skinitem lore:Left click to <&a>apply|<&7>Right click to <&c>delete]> - flag <[skinitem]> wardrobe:<[skin_blob]> - flag <[skinitem]> wardrobe_skull_texture:<[skin_blob].split[;].get[1]> - inventory set slot:<[position]> origin:<[skinitem]> destination:<[inventory]> - define position <[position].add[1]> - define i <[i].add[1]> - if <[i].mod[3]> == 0: - define position <[position].add[6]> - repeat ].sub[<[i]>]>: - define unusedskin - adjust def:unusedskin "display:<&7>Unused Skin Slot" - adjust def:unusedskin lore:Click to <&e>save <&7>your latest Minecraft skin.]> - inventory set slot:<[position]> origin:<[unusedskin]> destination:<[inventory]> - define position <[position].add[1]> - define i <[i].add[1]> - if <[i].mod[3]> == 0: - define position <[position].add[6]> # - define clearitem - adjust def:clearitem "display:<&f>Clear Skin" - run gui_restore_set_later def.player:<[player]> def.slot:13 def.item:<[clearitem]> - run gui_restore_set_later def.player:<[player]> def.slot:14 def.item:<[clearitem]> - run gui_restore_set_later def.player:<[player]> def.slot:15 def.item:<[clearitem]> # - inventory open destination:<[inventory]> - run wardrobe_skull_texture_update def.player:<[player]>