diff --git a/.spyglassrc.json b/.spyglassrc.json index 2db32a5..04281a8 100644 --- a/.spyglassrc.json +++ b/.spyglassrc.json @@ -1,6 +1,6 @@ { "env": { - "gameVersion": "1.21.5" + "gameVersion": "1.21.6" }, "lint": { "idOmitDefaultNamespace": false, diff --git a/data/bored-face.pose.cape/function/add_entries.mcfunction b/data/bored-face.pose.cape/function/add_entries.mcfunction new file mode 100644 index 0000000..dcd9acc --- /dev/null +++ b/data/bored-face.pose.cape/function/add_entries.mcfunction @@ -0,0 +1,165 @@ +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "none", \ + name: {translate: "resource.bored-face.pose.cape.none.name"}, \ + description: {translate: "resource.bored-face.pose.cape.none.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "bored", \ + name: {translate: "resource.bored-face.pose.cape.bored.name"}, \ + description: {translate: "resource.bored-face.pose.cape.bored.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "15th_anniversary", \ + name: {translate: "resource.bored-face.pose.cape.15th_anniversary.name"}, \ + description: {translate: "resource.bored-face.pose.cape.15th_anniversary.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "birthday", \ + name: {translate: "resource.bored-face.pose.cape.birthday.name"}, \ + description: {translate: "resource.bored-face.pose.cape.birthday.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "cherry_blossom", \ + name: {translate: "resource.bored-face.pose.cape.cherry_blossom.name"}, \ + description: {translate: "resource.bored-face.pose.cape.cherry_blossom.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "cobalt", \ + name: {translate: "resource.bored-face.pose.cape.cobalt.name"}, \ + description: {translate: "resource.bored-face.pose.cape.cobalt.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "db", \ + name: {translate: "resource.bored-face.pose.cape.db.name"}, \ + description: {translate: "resource.bored-face.pose.cape.db.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "followers", \ + name: {translate: "resource.bored-face.pose.cape.followers.name"}, \ + description: {translate: "resource.bored-face.pose.cape.followers.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mcc_15th_year", \ + name: {translate: "resource.bored-face.pose.cape.mcc_15th_year.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mcc_15th_year.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "migrator", \ + name: {translate: "resource.bored-face.pose.cape.migrator.name"}, \ + description: {translate: "resource.bored-face.pose.cape.migrator.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "millionth_customer", \ + name: {translate: "resource.bored-face.pose.cape.millionth_customer.name"}, \ + description: {translate: "resource.bored-face.pose.cape.millionth_customer.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "minecon_2011", \ + name: {translate: "resource.bored-face.pose.cape.minecon_2011.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecon_2011.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + name: {translate: "resource.bored-face.pose.cape.minecon_2012.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecon_2012.description"}, \ + id: "minecon_2012", \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "minecon_2013", \ + name: {translate: "resource.bored-face.pose.cape.minecon_2013.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecon_2013.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "minecon_2015", \ + name: {translate: "resource.bored-face.pose.cape.minecon_2015.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecon_2015.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "minecon_2016", \ + name: {translate: "resource.bored-face.pose.cape.minecon_2016.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecon_2016.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "minecraft_experience", \ + name: {translate: "resource.bored-face.pose.cape.minecraft_experience.name"}, \ + description: {translate: "resource.bored-face.pose.cape.minecraft_experience.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mojang_classic", \ + name: {translate: "resource.bored-face.pose.cape.mojang_classic.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mojang_classic.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mojang_office", \ + name: {translate: "resource.bored-face.pose.cape.mojang_office.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mojang_office.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mojang_studios", \ + name: {translate: "resource.bored-face.pose.cape.mojang_studios.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mojang_studios.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mojang", \ + name: {translate: "resource.bored-face.pose.cape.mojang.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mojang.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "mojira_moderator", \ + name: {translate: "resource.bored-face.pose.cape.mojira_moderator.name"}, \ + description: {translate: "resource.bored-face.pose.cape.mojira_moderator.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "prismarine", \ + name: {translate: "resource.bored-face.pose.cape.prismarine.name"}, \ + description: {translate: "resource.bored-face.pose.cape.prismarine.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "purple_heart", \ + name: {translate: "resource.bored-face.pose.cape.purple_heart.name"}, \ + description: {translate: "resource.bored-face.pose.cape.purple_heart.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "realms_mapmaker", \ + name: {translate: "resource.bored-face.pose.cape.realms_mapmaker.name"}, \ + description: {translate: "resource.bored-face.pose.cape.realms_mapmaker.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "scrolls", \ + name: {translate: "resource.bored-face.pose.cape.scrolls.name"}, \ + description: {translate: "resource.bored-face.pose.cape.scrolls.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "snowman", \ + name: {translate: "resource.bored-face.pose.cape.snowman.name"}, \ + description: {translate: "resource.bored-face.pose.cape.snowman.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "spade", \ + name: {translate: "resource.bored-face.pose.cape.spade.name"}, \ + description: {translate: "resource.bored-face.pose.cape.spade.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "test", \ + name: {translate: "resource.bored-face.pose.cape.test.name"}, \ + description: {translate: "resource.bored-face.pose.cape.test.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "translator", \ + name: {translate: "resource.bored-face.pose.cape.translator.name"}, \ + description: {translate: "resource.bored-face.pose.cape.translator.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "turtle", \ + name: {translate: "resource.bored-face.pose.cape.turtle.name"}, \ + description: {translate: "resource.bored-face.pose.cape.turtle.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "valentine", \ + name: {translate: "resource.bored-face.pose.cape.valentine.name"}, \ + description: {translate: "resource.bored-face.pose.cape.valentine.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "vanilla", \ + name: {translate: "resource.bored-face.pose.cape.vanilla.name"}, \ + description: {translate: "resource.bored-face.pose.cape.vanilla.description"}, \ +} diff --git a/data/bored-face.pose.cape/function/item.mcfunction b/data/bored-face.pose.cape/function/item.mcfunction new file mode 100644 index 0000000..d4ba395 --- /dev/null +++ b/data/bored-face.pose.cape/function/item.mcfunction @@ -0,0 +1,12 @@ +# detect if the cape id is "none" to not display an item +$data modify storage bored-face.pose:smartphone tmp.id set value "$(id)" +execute store success storage bored-face.pose:smartphone tmp.index int 1 run data modify storage bored-face.pose:smartphone tmp.id set value "none" +$execute if data storage bored-face.pose:smartphone {tmp: {index: 0}} run return run \ + data remove storage bored-face.pose:data loaded_registries[{id:"$(registry_id)"}].item + +$data modify storage bored-face.pose:data loaded_registries[{id:"$(registry_id)"}].item set value { \ + id: "minecraft:barrier", \ + components: { \ + "minecraft:item_model": "bored-face.pose:cape/$(id)", \ + }, \ +} diff --git a/data/bored-face.pose.cape/function/load_pose.mcfunction b/data/bored-face.pose.cape/function/load_pose.mcfunction new file mode 100644 index 0000000..5679205 --- /dev/null +++ b/data/bored-face.pose.cape/function/load_pose.mcfunction @@ -0,0 +1,11 @@ +data modify storage bored-face.pose:data registries append value { \ + id: "bored-face.cape", \ + name: {text: "Capes"}, \ + description: { \ + text: "", \ + extra: [ \ + {text: "\n\u0006\n\n", font: "bored-face.pose:icon", color: "blue" }, \ + {text: "Change the cape of a Bored-Face P.O.S.E."}, \ + ] \ + }, \ +} diff --git a/data/bored-face.pose/function/cape.mcfunction b/data/bored-face.pose.cape/function/run.mcfunction similarity index 89% rename from data/bored-face.pose/function/cape.mcfunction rename to data/bored-face.pose.cape/function/run.mcfunction index ff1df6b..7e299a1 100644 --- a/data/bored-face.pose/function/cape.mcfunction +++ b/data/bored-face.pose.cape/function/run.mcfunction @@ -1,7 +1,7 @@ # called when clicked in the smartphone # Update all loaded capes from versions prior to 2.0 -execute as @n[type=minecraft:item_display, distance=..3, nbt={item:{components: {"minecraft:item_model": "bored-face.pose:cape"}}}] run function bored-face.pose:misc/update_cape +execute as @n[type=minecraft:item_display, distance=..3, nbt={item:{components: {"minecraft:item_model": "bored-face.pose:cape"}}}] run function bored-face.pose.cape:tool/update_cape $execute as @n[type=minecraft:item_display, distance=..3, nbt={item:{components: {"minecraft:custom_data": {"cape": {}}}}}] run \ data modify entity @s item.components.minecraft:item_model set value "bored-face.pose:cape/$(id)" diff --git a/data/bored-face.pose.cape/function/tool/update_cape.mcfunction b/data/bored-face.pose.cape/function/tool/update_cape.mcfunction new file mode 100644 index 0000000..c5b5005 --- /dev/null +++ b/data/bored-face.pose.cape/function/tool/update_cape.mcfunction @@ -0,0 +1,5 @@ +data modify storage bored-face.pose:smartphone tmp.id set from entity @s item.components.minecraft:custom_model_data.strings[0] + +data remove entity @s item.components.minecraft:custom_model_data +function bored-face.pose.cape:tool/update_cape_macro with storage bored-face.pose:smartphone tmp +data modify entity @s item.components.minecraft:custom_data.cape set value {} diff --git a/data/bored-face.pose.cape/function/tool/update_cape_macro.mcfunction b/data/bored-face.pose.cape/function/tool/update_cape_macro.mcfunction new file mode 100644 index 0000000..06b2d5e --- /dev/null +++ b/data/bored-face.pose.cape/function/tool/update_cape_macro.mcfunction @@ -0,0 +1 @@ +$data modify entity @s item.components.minecraft:item_model set value "bored-face.pose:cape/$(id)" diff --git a/data/bored-face.pose.player/function/add_entries.mcfunction b/data/bored-face.pose.player/function/add_entries.mcfunction new file mode 100644 index 0000000..285f8cd --- /dev/null +++ b/data/bored-face.pose.player/function/add_entries.mcfunction @@ -0,0 +1,35 @@ +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "normal", \ + name: {translate: "resource.bored-face.pose.player.normal.name"}, \ + description: {translate: "resource.bored-face.pose.player.normal.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "cardboard", \ + name: {translate: "resource.bored-face.pose.player.cardboard.name"}, \ + description: {translate: "resource.bored-face.pose.player.cardboard.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "handstand", \ + name: {translate: "resource.bored-face.pose.player.handstand.name"}, \ + description: {translate: "resource.bored-face.pose.player.handstand.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "happy", \ + name: {translate: "resource.bored-face.pose.player.happy.name"}, \ + description: {translate: "resource.bored-face.pose.player.happy.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "high_five", \ + name: {translate: "resource.bored-face.pose.player.high_five.name"}, \ + description: {translate: "resource.bored-face.pose.player.high_five.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "run", \ + name: {translate: "resource.bored-face.pose.player.run.name"}, \ + description: {translate: "resource.bored-face.pose.player.run.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "sneak", \ + name: {translate: "resource.bored-face.pose.player.sneak.name"}, \ + description: {translate: "resource.bored-face.pose.player.sneak.description"}, \ +} diff --git a/data/bored-face.pose.player/function/load_pose.mcfunction b/data/bored-face.pose.player/function/load_pose.mcfunction new file mode 100644 index 0000000..92b8cb4 --- /dev/null +++ b/data/bored-face.pose.player/function/load_pose.mcfunction @@ -0,0 +1,11 @@ +data modify storage bored-face.pose:data registries append value { \ + id: "bored-face.player", \ + name: {text: "Player Poses"}, \ + description: { \ + text: "", \ + extra: [ \ + {text: "\n\u0005\n\n", font: "bored-face.pose:icon", color: "blue" }, \ + {text: "Create a new Bored-Face P.O.S.E. player"}, \ + ] \ + }, \ +} diff --git a/data/bored-face.pose/function/players/cardboard.mcfunction b/data/bored-face.pose.player/function/players/cardboard.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/cardboard.mcfunction rename to data/bored-face.pose.player/function/players/cardboard.mcfunction diff --git a/data/bored-face.pose/function/players/handstand.mcfunction b/data/bored-face.pose.player/function/players/handstand.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/handstand.mcfunction rename to data/bored-face.pose.player/function/players/handstand.mcfunction diff --git a/data/bored-face.pose/function/players/happy.mcfunction b/data/bored-face.pose.player/function/players/happy.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/happy.mcfunction rename to data/bored-face.pose.player/function/players/happy.mcfunction diff --git a/data/bored-face.pose/function/players/high_five.mcfunction b/data/bored-face.pose.player/function/players/high_five.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/high_five.mcfunction rename to data/bored-face.pose.player/function/players/high_five.mcfunction diff --git a/data/bored-face.pose/function/players/normal.mcfunction b/data/bored-face.pose.player/function/players/normal.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/normal.mcfunction rename to data/bored-face.pose.player/function/players/normal.mcfunction diff --git a/data/bored-face.pose/function/players/run.mcfunction b/data/bored-face.pose.player/function/players/run.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/run.mcfunction rename to data/bored-face.pose.player/function/players/run.mcfunction diff --git a/data/bored-face.pose/function/players/sneak.mcfunction b/data/bored-face.pose.player/function/players/sneak.mcfunction similarity index 100% rename from data/bored-face.pose/function/players/sneak.mcfunction rename to data/bored-face.pose.player/function/players/sneak.mcfunction diff --git a/data/bored-face.pose.player/function/run.mcfunction b/data/bored-face.pose.player/function/run.mcfunction new file mode 100644 index 0000000..6825722 --- /dev/null +++ b/data/bored-face.pose.player/function/run.mcfunction @@ -0,0 +1,3 @@ +#called when clicked in the smartphone + +$function bored-face.pose.player:players/$(id) diff --git a/data/bored-face.pose.skin/function/add_entries.mcfunction b/data/bored-face.pose.skin/function/add_entries.mcfunction new file mode 100644 index 0000000..23d1fb1 --- /dev/null +++ b/data/bored-face.pose.skin/function/add_entries.mcfunction @@ -0,0 +1,26 @@ +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "default_wide", \ + name: {translate: "resource.bored-face.pose.skin.default_wide.name"}, \ + description: {translate: "resource.bored-face.pose.skin.default_wide.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "default_slim", \ + name: {translate: "resource.bored-face.pose.skin.default_slim.name"}, \ + description: {translate: "resource.bored-face.pose.skin.default_slim.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "steve", \ + name: {translate: "resource.bored-face.pose.skin.steve.name"}, \ + description: {translate: "resource.bored-face.pose.skin.steve.description"}, \ +} +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "alex", \ + name: {translate: "resource.bored-face.pose.skin.alex.name"}, \ + description: {translate: "resource.bored-face.pose.skin.alex.description"}, \ +} + +data modify storage bored-face.pose:data loaded_registries[0].entries append value { \ + id: "blockbench", \ + name: {text: "Blockbench"}, \ + description: {text: "The Blockbench default skin"}, \ +} diff --git a/data/bored-face.pose.skin/function/item.mcfunction b/data/bored-face.pose.skin/function/item.mcfunction new file mode 100644 index 0000000..316232a --- /dev/null +++ b/data/bored-face.pose.skin/function/item.mcfunction @@ -0,0 +1,7 @@ +$data modify storage bored-face.pose:data loaded_registries[{id:"$(registry_id)"}].item set value { \ + id: "minecraft:barrier", \ + components: { \ + "minecraft:item_model": "bored-face.pose:players/$(id)", \ + "minecraft:custom_model_data": {strings: ["head"]}, \ + }, \ +} diff --git a/data/bored-face.pose.skin/function/load_pose.mcfunction b/data/bored-face.pose.skin/function/load_pose.mcfunction new file mode 100644 index 0000000..0260708 --- /dev/null +++ b/data/bored-face.pose.skin/function/load_pose.mcfunction @@ -0,0 +1,11 @@ +data modify storage bored-face.pose:data registries append value { \ + id: "bored-face.skin", \ + name: {text: "Skins"}, \ + description: { \ + text: "", \ + extra: [ \ + {text: "\n\u0007\n\n", font: "bored-face.pose:icon", color: "blue" }, \ + {text: "Change the skin of a Bored-Face P.O.S.E."}, \ + ] \ + }, \ +} diff --git a/data/bored-face.pose/function/skin.mcfunction b/data/bored-face.pose.skin/function/run.mcfunction similarity index 100% rename from data/bored-face.pose/function/skin.mcfunction rename to data/bored-face.pose.skin/function/run.mcfunction diff --git a/data/bored-face.pose/dialog/pose.json b/data/bored-face.pose/dialog/pose.json new file mode 100644 index 0000000..39ff590 --- /dev/null +++ b/data/bored-face.pose/dialog/pose.json @@ -0,0 +1,42 @@ +{ + "title": "P.O.S.E.", + "type": "minecraft:multi_action", + "body": { + "type": "minecraft:plain_message", + "contents": { + "text": "Hello world!" + } + }, + "actions": [ + { + "label": "Smartphone", + "action": { + "type": "run_command", + "command": "trigger bored-face.pose.smartphone" + }, + "tooltip": { + "text": "Give yourself a smartphone" + } + }, + { + "label": "GitHub", + "action": { + "type": "open_url", + "url": "https://github.com/Bored-Face" + }, + "tooltip": { + "text": "Open our GitHub page in your browser" + } + }, + { + "label": "Modrinth", + "action": { + "type": "open_url", + "url": "https://modrinth.com/organization/boredface" + }, + "tooltip": { + "text": "Open our Modrinth page in your browser" + } + } + ] +} diff --git a/data/bored-face.pose/function/admin.mcfunction b/data/bored-face.pose/function/admin.mcfunction new file mode 100644 index 0000000..d792497 --- /dev/null +++ b/data/bored-face.pose/function/admin.mcfunction @@ -0,0 +1,37 @@ + +$dialog show @s { \ + title: "P.O.S.E. - Admin", \ + type: "minecraft:multi_action", \ + body: [ \ + { \ + type: "minecraft:plain_message", \ + contents: { \ + text: "\n", \ + extra: [ \ + { \ + text: "\u0005", \ + font: "bored-face.pose:space_neg", \ + color: "white", \ + extra: [ \ + { text: "\u0003", font: "bored-face.pose:icon" }, \ + { text: "\u0001" }, \ + { text: "\u0004", font: "bored-face.pose:icon" } \ + ] \ + }, \ + ], \ + }, \ + }, \ + { \ + type: "minecraft:plain_message", \ + contents: { \ + text: "Version 2.0", \ + color: "#696969", \ + }, \ + }, \ + ], \ + actions: $(admin_actions), \ + columns: 1, \ + exit_action: { \ + label: {translate: "gui.cancel"}, \ + }, \ +} diff --git a/data/bored-face.pose/function/engine/registry/entry/load.mcfunction b/data/bored-face.pose/function/engine/registry/entry/load.mcfunction new file mode 100644 index 0000000..cd7d15e --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/entry/load.mcfunction @@ -0,0 +1,21 @@ +# Copy the index and registry values to the entry to not have to write it later when using it. +# We cant write the registry index here because it may or may not change when the registry is reloaded. +execute store result storage bored-face.pose:data loaded_registries[0].entries[0].index int 1 run scoreboard players get $loop_inner bored-face.pose.loop +data modify storage bored-face.pose:data loaded_registries[0].entries[0].registry_id set from storage bored-face.pose:data loaded_registries[0].id +data modify storage bored-face.pose:data loaded_registries[0].entries[0].registry_name set from storage bored-face.pose:data loaded_registries[0].name + +# Build the button in tmp.button +data modify storage bored-face.pose:smartphone tmp.button.label set from storage bored-face.pose:data loaded_registries[0].entries[0].name +data modify storage bored-face.pose:smartphone tmp.button.action.type set value "run_command" +# Build the button with macros +data modify storage bored-face.pose:smartphone tmp.id set from storage bored-face.pose:data loaded_registries[0].id +data modify storage bored-face.pose:smartphone tmp.index set from storage bored-face.pose:data loaded_registries[0].entries[0].index +function bored-face.pose:engine/registry/entry/load_macro with storage bored-face.pose:smartphone tmp + +data modify storage bored-face.pose:smartphone registries[0].actions append from storage bored-face.pose:smartphone tmp.button + +# continue loop +data modify storage bored-face.pose:data loaded_registries[0].entries append from storage bored-face.pose:data loaded_registries[0].entries[0] +data remove storage bored-face.pose:data loaded_registries[0].entries[0] +scoreboard players add $loop_inner bored-face.pose.loop 1 +execute if score $loop_inner bored-face.pose.loop <= $loop_inner_max bored-face.pose.loop run return run function bored-face.pose:engine/registry/entry/load diff --git a/data/bored-face.pose/function/engine/registry/entry/load_macro.mcfunction b/data/bored-face.pose/function/engine/registry/entry/load_macro.mcfunction new file mode 100644 index 0000000..be01e72 --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/entry/load_macro.mcfunction @@ -0,0 +1,2 @@ +# Build the button in tmp.button +$data modify storage bored-face.pose:smartphone tmp.button.action.command set value "trigger bored-face.pose.$(id)_prompt set $(index)" diff --git a/data/bored-face.pose/function/engine/registry/load.mcfunction b/data/bored-face.pose/function/engine/registry/load.mcfunction new file mode 100644 index 0000000..de22561 --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/load.mcfunction @@ -0,0 +1,24 @@ +# Copy the index back to the data storage to not have to write it later when using it. +execute store result storage bored-face.pose:data registries[0].index int 1 run scoreboard players get $loop bored-face.pose.loop + +# Build the button in tmp.button +data modify storage bored-face.pose:smartphone tmp.button.label set from storage bored-face.pose:data registries[0].name +data modify storage bored-face.pose:smartphone tmp.button.action.type set value "run_command" +# Build the button with macros +function bored-face.pose:engine/registry/load_button with storage bored-face.pose:data registries[0] +data modify storage bored-face.pose:smartphone actions append from storage bored-face.pose:smartphone tmp.button + +# Build the admin button in tmp.button +data modify storage bored-face.pose:smartphone tmp.button.label set from storage bored-face.pose:data registries[0].name +data modify storage bored-face.pose:smartphone tmp.button.action.type set value "run_command" +# Build the admin button with macros +function bored-face.pose:engine/registry/load_button_admin with storage bored-face.pose:data registries[0] +data modify storage bored-face.pose:smartphone admin_actions append from storage bored-face.pose:smartphone tmp.button + +function bored-face.pose:engine/registry/load_macro with storage bored-face.pose:data registries[0] + +# continue loop +data modify storage bored-face.pose:data registries append from storage bored-face.pose:data registries[0] +data remove storage bored-face.pose:data registries[0] +scoreboard players add $loop bored-face.pose.loop 1 +execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop run return run function bored-face.pose:engine/registry/load diff --git a/data/bored-face.pose/function/engine/registry/load_button.mcfunction b/data/bored-face.pose/function/engine/registry/load_button.mcfunction new file mode 100644 index 0000000..fbaa72d --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/load_button.mcfunction @@ -0,0 +1,2 @@ +# Build the button in tmp.button +$data modify storage bored-face.pose:smartphone tmp.button.action.command set value "trigger bored-face.pose.registry set $(index)" diff --git a/data/bored-face.pose/function/engine/registry/load_button_admin.mcfunction b/data/bored-face.pose/function/engine/registry/load_button_admin.mcfunction new file mode 100644 index 0000000..b3d2bbd --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/load_button_admin.mcfunction @@ -0,0 +1,2 @@ +# Build the admin button in tmp.button +$data modify storage bored-face.pose:smartphone tmp.button.action.command set value "function bored-face.pose:reload_registry {id: $(id)}" diff --git a/data/bored-face.pose/function/engine/registry/load_macro.mcfunction b/data/bored-face.pose/function/engine/registry/load_macro.mcfunction new file mode 100644 index 0000000..f74aa1d --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/load_macro.mcfunction @@ -0,0 +1,49 @@ +# do nothing if already loaded +$execute if data storage bored-face.pose:data {loaded_registries: [{id: "$(id)"}]} run return 1 + +data modify storage bored-face.pose:data loaded_registries prepend from storage bored-face.pose:data registries[0] + +$scoreboard objectives add bored-face.pose.$(id)_prompt trigger {text: "P.O.S.E. Registry: ", extra: [$(name), {text: " (prompt)"}], color: "gray", italic: true} +$scoreboard objectives add bored-face.pose.$(id) trigger {text: "P.O.S.E. Registry: ", extra: [$(name)]} + +$data remove storage bored-face.pose:smartphone registries[{id:"$(id)"}] +data modify storage bored-face.pose:smartphone registries prepend from storage bored-face.pose:data registries[0] + +$function #bored-face.pose:$(id)/add_entries + +# load entries in registry +execute store result score $loop_inner_max bored-face.pose.loop run data get storage bored-face.pose:data loaded_registries[0].entries +scoreboard players remove $loop_inner_max bored-face.pose.loop 1 +scoreboard players set $loop_inner bored-face.pose.loop 0 +execute if score $loop_inner_max bored-face.pose.loop matches 0.. run function bored-face.pose:engine/registry/entry/load + + +tellraw @a { \ + translate: "chat.type.announcement", \ + with: [ \ + {text: "P.O.S.E.", color: "white", shadow_color: -13223871}, \ + { \ + translate: "message.bored-face.pose.registry_loaded", \ + color: "green", \ + with: [ \ + { \ + storage: "bored-face.pose:data", \ + nbt: "registries[0].name", \ + interpret: true, \ + hover_event: { \ + action: "show_text", \ + value: { \ + storage: "bored-face.pose:data", \ + nbt: "registries[0].description", \ + interpret: true, \ + extra: [ \ + {color: "dark_gray", italic: true, text: "\n\nbored-face.pose:"}, \ + {color: "dark_gray", italic: true, storage: "bored-face.pose:data", nbt: "registries[0].id"}, \ + ], \ + }, \ + }, \ + }, \ + ], \ + }, \ + ], \ +} diff --git a/data/bored-face.pose/function/engine/registry/remove.mcfunction b/data/bored-face.pose/function/engine/registry/remove.mcfunction new file mode 100644 index 0000000..81579dc --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/remove.mcfunction @@ -0,0 +1,7 @@ +function bored-face.pose:engine/registry/remove_macro with storage bored-face.pose:data loaded_registries[0] + +# continue loop +data modify storage bored-face.pose:data loaded_registries append from storage bored-face.pose:data loaded_registries[0] +data remove storage bored-face.pose:data loaded_registries[0] +scoreboard players add $loop bored-face.pose.loop 1 +execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop run return run function bored-face.pose:engine/registry/remove diff --git a/data/bored-face.pose/function/engine/registry/remove_macro.mcfunction b/data/bored-face.pose/function/engine/registry/remove_macro.mcfunction new file mode 100644 index 0000000..c22fad3 --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/remove_macro.mcfunction @@ -0,0 +1,40 @@ +# do nothing if registered +$execute if data storage bored-face.pose:data {registries: [{id: $(id)}]} run return 1 + +$scoreboard objectives remove bored-face.pose.$(id)_prompt +$scoreboard objectives remove bored-face.pose.$(id) + +$tellraw @a { \ + translate: "chat.type.announcement", \ + with: [ \ + {text: "P.O.S.E.", color: "white", shadow_color: -13223871}, \ + { \ + translate: "message.bored-face.pose.registry_removed", \ + color: "red", \ + with: [ \ + { \ + text: "", \ + extra: [$(name)], \ + hover_event: { \ + action: "show_text", \ + value: { \ + text: "", \ + extra: [ \ + $(description), \ + { \ + text: "\n\nbored-face.pose:", \ + color: "dark_gray", \ + italic: true, \ + extra: [$(id)], \ + }, \ + ], \ + }, \ + }, \ + }, \ + ], \ + }, \ + ], \ +} + +$data remove storage bored-face.pose:data loaded_registries[{id: "$(id)"}] +$data remove storage bored-face.pose:smartphone registries[{id:"$(id)"}] diff --git a/data/bored-face.pose/function/engine/registry/tick.mcfunction b/data/bored-face.pose/function/engine/registry/tick.mcfunction new file mode 100644 index 0000000..c81d461 --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/tick.mcfunction @@ -0,0 +1,7 @@ +function bored-face.pose:engine/registry/tick_macro with storage bored-face.pose:data registries[0] + +# continue loop +data modify storage bored-face.pose:data registries append from storage bored-face.pose:data registries[0] +data remove storage bored-face.pose:data registries[0] +scoreboard players add $loop bored-face.pose.loop 1 +execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop run return run function bored-face.pose:engine/registry/tick diff --git a/data/bored-face.pose/function/engine/registry/tick_macro.mcfunction b/data/bored-face.pose/function/engine/registry/tick_macro.mcfunction new file mode 100644 index 0000000..b1a6db0 --- /dev/null +++ b/data/bored-face.pose/function/engine/registry/tick_macro.mcfunction @@ -0,0 +1,10 @@ +$execute as @a if score @s bored-face.pose.$(id)_prompt matches 0.. store result storage bored-face.pose:data loaded_registries[{id:"$(id)"}].index int 1 run scoreboard players get @s bored-face.pose.$(id)_prompt +$execute as @a if score @s bored-face.pose.$(id)_prompt matches 0.. at @s run function bored-face.pose:engine/show_prompt with storage bored-face.pose:data loaded_registries[{id:"$(id)"}] +$execute as @a if score @s bored-face.pose.$(id) matches 0.. store result storage bored-face.pose:data loaded_registries[{id:"$(id)"}].index int 1 run scoreboard players get @s bored-face.pose.$(id) +$execute as @a if score @s bored-face.pose.$(id) matches 0.. at @s run function bored-face.pose:engine/run with storage bored-face.pose:data loaded_registries[{id:"$(id)"}] + +$scoreboard players enable @a bored-face.pose.$(id)_prompt +$scoreboard players enable @a bored-face.pose.$(id) +# set to -1 because we need to differentiate between 0 and no input (no input therefore being -1) +$scoreboard players set @a bored-face.pose.$(id)_prompt -1 +$scoreboard players set @a bored-face.pose.$(id) -1 diff --git a/data/bored-face.pose/function/engine/reload_smartphone.mcfunction b/data/bored-face.pose/function/engine/reload_smartphone.mcfunction new file mode 100644 index 0000000..a823334 --- /dev/null +++ b/data/bored-face.pose/function/engine/reload_smartphone.mcfunction @@ -0,0 +1,15 @@ +data remove storage bored-face.pose:data registries +data remove storage bored-face.pose:smartphone actions +data remove storage bored-face.pose:smartphone admin_actions + +function #bored-face.pose:load + +execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data loaded_registries +scoreboard players remove $loop_max bored-face.pose.loop 1 +scoreboard players set $loop bored-face.pose.loop 0 +execute if score $loop_max bored-face.pose.loop matches 0.. run function bored-face.pose:engine/registry/remove + +execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data registries +scoreboard players remove $loop_max bored-face.pose.loop 1 +scoreboard players set $loop bored-face.pose.loop 0 +execute if score $loop_max bored-face.pose.loop matches 0.. run function bored-face.pose:engine/registry/load diff --git a/data/bored-face.pose/function/engine/run.mcfunction b/data/bored-face.pose/function/engine/run.mcfunction new file mode 100644 index 0000000..9b8f9d1 --- /dev/null +++ b/data/bored-face.pose/function/engine/run.mcfunction @@ -0,0 +1 @@ +$function #bored-face.pose:$(id)/run with storage bored-face.pose:data loaded_registries[{id: "$(id)"}].entries[$(index)] diff --git a/data/bored-face.pose/function/engine/show_entries.mcfunction b/data/bored-face.pose/function/engine/show_entries.mcfunction new file mode 100644 index 0000000..9736bfb --- /dev/null +++ b/data/bored-face.pose/function/engine/show_entries.mcfunction @@ -0,0 +1 @@ +$function bored-face.pose:engine/show_entries_registry with storage bored-face.pose:smartphone registries[{id:"$(id)"}] diff --git a/data/bored-face.pose/function/engine/show_entries_registry.mcfunction b/data/bored-face.pose/function/engine/show_entries_registry.mcfunction new file mode 100644 index 0000000..f3f2ae1 --- /dev/null +++ b/data/bored-face.pose/function/engine/show_entries_registry.mcfunction @@ -0,0 +1,16 @@ +$dialog show @s { \ + title: $(name), \ + type: "minecraft:multi_action", \ + body: [ \ + { \ + type: "minecraft:plain_message", \ + contents: $(description), \ + }, \ + ], \ + actions: $(actions), \ + columns: 1, \ + exit_action: { \ + label: {translate: "gui.back"}, \ + action: {type: "run_command", command: "trigger bored-face.pose.smartphone"}, \ + }, \ +} diff --git a/data/bored-face.pose/function/engine/show_prompt.mcfunction b/data/bored-face.pose/function/engine/show_prompt.mcfunction new file mode 100644 index 0000000..9f37d8d --- /dev/null +++ b/data/bored-face.pose/function/engine/show_prompt.mcfunction @@ -0,0 +1,12 @@ +# we have to copy the registry index here at runtine because it may have changed when the registry was reloaded +$data modify storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)].registry_index set from storage bored-face.pose:data registries[{id:"$(id)"}].index + +$data modify storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entry_name set from storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)].name + +$function #bored-face.pose:$(id)/item with storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)] +$execute if data storage bored-face.pose:data loaded_registries[{id:"$(id)"}].item run \ + function bored-face.pose:engine/show_prompt_with_item with storage bored-face.pose:data loaded_registries[{id:"$(id)"}] +$execute unless data storage bored-face.pose:data loaded_registries[{id:"$(id)"}].item run \ + function bored-face.pose:engine/show_prompt_without_item with storage bored-face.pose:data loaded_registries[{id:"$(id)"}] + +$function bored-face.pose:engine/show_prompt_entry with storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)] diff --git a/data/bored-face.pose/function/engine/show_prompt_entry.mcfunction b/data/bored-face.pose/function/engine/show_prompt_entry.mcfunction new file mode 100644 index 0000000..d40ca3c --- /dev/null +++ b/data/bored-face.pose/function/engine/show_prompt_entry.mcfunction @@ -0,0 +1,25 @@ +$dialog show @s {\ + type: "minecraft:confirmation", \ + title: $(registry_name), \ + body: [ \ + $(prompt_body), \ + { \ + type: "minecraft:plain_message", \ + contents: $(description), \ + }, \ + ], \ + no: { \ + label: {translate: "gui.back"}, \ + action: { \ + type: "run_command", \ + command: "trigger bored-face.pose.registry set $(registry_index)", \ + }, \ + }, \ + yes: { \ + label: {translate: "gui.yes"}, \ + action: { \ + type: "run_command", \ + command: "trigger bored-face.pose.$(registry_id) set $(index)", \ + }, \ + }, \ +} diff --git a/data/bored-face.pose/function/engine/show_prompt_with_item.mcfunction b/data/bored-face.pose/function/engine/show_prompt_with_item.mcfunction new file mode 100644 index 0000000..4bb268c --- /dev/null +++ b/data/bored-face.pose/function/engine/show_prompt_with_item.mcfunction @@ -0,0 +1,7 @@ +$data modify storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)].prompt_body set value { \ + type: "minecraft:item", \ + item: $(item), \ + show_tooltip: false, \ + description: $(entry_name), \ + height: 35, \ +} diff --git a/data/bored-face.pose/function/engine/show_prompt_without_item.mcfunction b/data/bored-face.pose/function/engine/show_prompt_without_item.mcfunction new file mode 100644 index 0000000..c6e59f1 --- /dev/null +++ b/data/bored-face.pose/function/engine/show_prompt_without_item.mcfunction @@ -0,0 +1,4 @@ +$data modify storage bored-face.pose:data loaded_registries[{id:"$(id)"}].entries[$(index)].prompt_body set value { \ + type: "minecraft:plain_message", \ + contents: $(entry_name), \ +} diff --git a/data/bored-face.pose/function/load.mcfunction b/data/bored-face.pose/function/load.mcfunction index 6ba10dd..ca4722e 100644 --- a/data/bored-face.pose/function/load.mcfunction +++ b/data/bored-face.pose/function/load.mcfunction @@ -1,16 +1,11 @@ scoreboard objectives add bored-face.pose.smartphone trigger scoreboard objectives add bored-face.pose.loop dummy +scoreboard objectives add bored-face.pose.registry trigger -execute unless data storage bored-face.pose:data title run function bored-face.pose:load/title -execute unless data storage bored-face.pose:data {title:[{name:{text:" v2.0"}}]} run \ - data modify storage bored-face.pose:data title[3].name.text set value " v2.0" -execute unless data storage bored-face.pose:data players run function bored-face.pose:load/players -execute unless data storage bored-face.pose:data capes run function bored-face.pose:load/capes -execute unless data storage bored-face.pose:data skins run function bored-face.pose:load/skins - -function bored-face.pose:load/footer - -function bored-face.pose:reload_smartphone +function bored-face.pose:engine/reload_smartphone # Update all loaded capes from versions prior to 2.0 function bored-face.pose:tool/update_capes + +# Clear tmp storage +data remove storage bored-face.pose:smartphone tmp diff --git a/data/bored-face.pose/function/load/capes.mcfunction b/data/bored-face.pose/function/load/capes.mcfunction deleted file mode 100644 index c6034e8..0000000 --- a/data/bored-face.pose/function/load/capes.mcfunction +++ /dev/null @@ -1,266 +0,0 @@ -data modify storage bored-face.pose:data capes set value [ \ - { \ - id: "none", \ - name: { \ - translate: "resource.bored-face.pose.cape.none.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.none.description"}} \ - }, \ - }, \ - { \ - id: "bored", \ - name: { \ - translate: "resource.bored-face.pose.cape.bored.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.bored.description"}} \ - }, \ - }, \ - { \ - id: "15th_anniversary", \ - name: { \ - translate: "resource.bored-face.pose.cape.15th_anniversary.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.15th_anniversary.description"}} \ - }, \ - }, \ - { \ - id: "birthday", \ - name: { \ - translate: "resource.bored-face.pose.cape.birthday.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.birthday.description"}} \ - }, \ - }, \ - { \ - id: "cherry_blossom", \ - name: { \ - translate: "resource.bored-face.pose.cape.cherry_blossom.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.cherry_blossom.description"}} \ - }, \ - }, \ - { \ - id: "cobalt", \ - name: { \ - translate: "resource.bored-face.pose.cape.cobalt.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.cobalt.description"}} \ - }, \ - }, \ - { \ - id: "db", \ - name: { \ - translate: "resource.bored-face.pose.cape.db.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.db.description"}} \ - }, \ - }, \ - { \ - id: "followers", \ - name: { \ - translate: "resource.bored-face.pose.cape.followers.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.followers.description"}} \ - }, \ - }, \ - { \ - id: "mcc_15th_year", \ - name: { \ - translate: "resource.bored-face.pose.cape.mcc_15th_year.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mcc_15th_year.description"}} \ - }, \ - }, \ - { \ - id: "migrator", \ - name: { \ - translate: "resource.bored-face.pose.cape.migrator.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.migrator.description"}} \ - }, \ - }, \ - { \ - id: "millionth_customer", \ - name: { \ - translate: "resource.bored-face.pose.cape.millionth_customer.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.millionth_customer.description"}} \ - }, \ - }, \ - { \ - id: "minecon_2011", \ - name: { \ - translate: "resource.bored-face.pose.cape.minecon_2011.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecon_2011.description"}} \ - }, \ - }, \ - { \ - name: { \ - translate: "resource.bored-face.pose.cape.minecon_2012.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecon_2012.description"}} \ - }, \ - id: "minecon_2012", \ - }, \ - { \ - id: "minecon_2013", \ - name: { \ - translate: "resource.bored-face.pose.cape.minecon_2013.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecon_2013.description"}} \ - }, \ - }, \ - { \ - id: "minecon_2015", \ - name: { \ - translate: "resource.bored-face.pose.cape.minecon_2015.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecon_2015.description"}} \ - }, \ - }, \ - { \ - id: "minecon_2016", \ - name: { \ - translate: "resource.bored-face.pose.cape.minecon_2016.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecon_2016.description"}} \ - }, \ - }, \ - { \ - id: "minecraft_experience", \ - name: { \ - translate: "resource.bored-face.pose.cape.minecraft_experience.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.minecraft_experience.description"}} \ - }, \ - }, \ - { \ - id: "mojang_classic", \ - name: { \ - translate: "resource.bored-face.pose.cape.mojang_classic.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mojang_classic.description"}} \ - }, \ - }, \ - { \ - id: "mojang_office", \ - name: { \ - translate: "resource.bored-face.pose.cape.mojang_office.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mojang_office.description"}} \ - }, \ - }, \ - { \ - id: "mojang_studios", \ - name: { \ - translate: "resource.bored-face.pose.cape.mojang_studios.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mojang_studios.description"}} \ - }, \ - }, \ - { \ - id: "mojang", \ - name: { \ - translate: "resource.bored-face.pose.cape.mojang.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mojang.description"}} \ - }, \ - }, \ - { \ - id: "mojira_moderator", \ - name: { \ - translate: "resource.bored-face.pose.cape.mojira_moderator.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.mojira_moderator.description"}} \ - }, \ - }, \ - { \ - id: "prismarine", \ - name: { \ - translate: "resource.bored-face.pose.cape.prismarine.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.prismarine.description"}} \ - }, \ - }, \ - { \ - id: "purple_heart", \ - name: { \ - translate: "resource.bored-face.pose.cape.purple_heart.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.purple_heart.description"}} \ - }, \ - }, \ - { \ - id: "realms_mapmaker", \ - name: { \ - translate: "resource.bored-face.pose.cape.realms_mapmaker.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.realms_mapmaker.description"}} \ - }, \ - }, \ - { \ - id: "scrolls", \ - name: { \ - translate: "resource.bored-face.pose.cape.scrolls.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.scrolls.description"}} \ - }, \ - }, \ - { \ - id: "snowman", \ - name: { \ - translate: "resource.bored-face.pose.cape.snowman.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.snowman.description"}} \ - }, \ - }, \ - { \ - id: "spade", \ - name: { \ - translate: "resource.bored-face.pose.cape.spade.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.spade.description"}} \ - }, \ - }, \ - { \ - id: "test", \ - name: { \ - translate: "resource.bored-face.pose.cape.test.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.test.description"}} \ - }, \ - }, \ - { \ - id: "translator", \ - name: { \ - translate: "resource.bored-face.pose.cape.translator.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.translator.description"}} \ - }, \ - }, \ - { \ - id: "turtle", \ - name: { \ - translate: "resource.bored-face.pose.cape.turtle.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.turtle.description"}} \ - }, \ - }, \ - { \ - id: "valentine", \ - name: { \ - translate: "resource.bored-face.pose.cape.valentine.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.valentine.description"}} \ - }, \ - }, \ - { \ - id: "vanilla", \ - name: { \ - translate: "resource.bored-face.pose.cape.vanilla.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.cape.vanilla.description"}} \ - }, \ - }, \ -] diff --git a/data/bored-face.pose/function/load/footer.mcfunction b/data/bored-face.pose/function/load/footer.mcfunction deleted file mode 100644 index 78eaed9..0000000 --- a/data/bored-face.pose/function/load/footer.mcfunction +++ /dev/null @@ -1,6 +0,0 @@ -execute unless data storage bored-face.pose:smartphone nav_bar.player.icon.text run \ - data modify storage bored-face.pose:smartphone nav_bar.player.icon set value {text: "\u0005", font: "bored-face.pose:icon", color: "red"} -execute unless data storage bored-face.pose:smartphone nav_bar.cape.icon.text run \ - data modify storage bored-face.pose:smartphone nav_bar.cape.icon set value {text: "\u0006", font: "bored-face.pose:icon", color: "green"} -execute unless data storage bored-face.pose:smartphone nav_bar.skin.icon.text run \ - data modify storage bored-face.pose:smartphone nav_bar.skin.icon set value {text: "\u0007", font: "bored-face.pose:icon", color: "blue"} diff --git a/data/bored-face.pose/function/load/players.mcfunction b/data/bored-face.pose/function/load/players.mcfunction deleted file mode 100644 index 0fb02a3..0000000 --- a/data/bored-face.pose/function/load/players.mcfunction +++ /dev/null @@ -1,58 +0,0 @@ -data modify storage bored-face.pose:data players set value [ \ - { \ - id: "normal", \ - name: { \ - translate: "resource.bored-face.pose.player.normal.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.normal.description"}} \ - }, \ - }, \ - { \ - id: "cardboard", \ - name: { \ - translate: "resource.bored-face.pose.player.cardboard.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.cardboard.description"}} \ - }, \ - }, \ - { \ - id: "handstand", \ - name: { \ - translate: "resource.bored-face.pose.player.handstand.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.handstand.description"}} \ - }, \ - }, \ - { \ - id: "happy", \ - name: { \ - translate: "resource.bored-face.pose.player.happy.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.happy.description"}} \ - }, \ - }, \ - { \ - id: "high_five", \ - name: { \ - translate: "resource.bored-face.pose.player.high_five.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.high_five.description"}} \ - }, \ - }, \ - { \ - id: "run", \ - name: { \ - translate: "resource.bored-face.pose.player.run.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.run.description"}} \ - }, \ - }, \ - { \ - id: "sneak", \ - name: { \ - translate: "resource.bored-face.pose.player.sneak.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.player.sneak.description"}} \ - }, \ - }, \ -] diff --git a/data/bored-face.pose/function/load/skins.mcfunction b/data/bored-face.pose/function/load/skins.mcfunction deleted file mode 100644 index 8391c49..0000000 --- a/data/bored-face.pose/function/load/skins.mcfunction +++ /dev/null @@ -1,34 +0,0 @@ -data modify storage bored-face.pose:data skins set value [ \ - { \ - id: "default_wide", \ - name: { \ - translate: "resource.bored-face.pose.skin.default_wide.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.skin.default_wide.description"}} \ - }, \ - }, \ - { \ - id: "default_slim", \ - name: { \ - translate: "resource.bored-face.pose.skin.default_slim.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.skin.default_slim.description"}} \ - }, \ - }, \ - { \ - id: "steve", \ - name: { \ - translate: "resource.bored-face.pose.skin.steve.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.skin.steve.description"}} \ - }, \ - }, \ - { \ - id: "alex", \ - name: { \ - translate: "resource.bored-face.pose.skin.alex.name", \ - color: "#000000", \ - hover_event: {action: "show_text", value: {translate: "resource.bored-face.pose.skin.alex.description"}} \ - }, \ - }, \ -] diff --git a/data/bored-face.pose/function/load/title.mcfunction b/data/bored-face.pose/function/load/title.mcfunction deleted file mode 100644 index 6c5a885..0000000 --- a/data/bored-face.pose/function/load/title.mcfunction +++ /dev/null @@ -1,117 +0,0 @@ -data modify storage bored-face.pose:data title set value [ \ - { \ - id: "title", \ - name: { \ - text: "\u0005", \ - font: "bored-face.pose:space_neg", \ - color: "white", \ - extra: [ \ - { text: "\u0003", font: "bored-face.pose:icon" }, \ - { text: "\u0001" }, \ - { text: "\u0004", font: "bored-face.pose:icon" } \ - ] \ - }, \ - }, \ - { \ - id: "title", \ - name: { \ - text: "\u0005", \ - font: "bored-face.pose:space_neg", \ - extra: [ \ - { \ - text: "\u0064\u0013", \ - font: "bored-face.pose:space_pos" \ - } \ - ] \ - }, \ - }, \ - { name: {text: ""}}, \ - { \ - name: { \ - text: "", \ - color: "#696969" \ - } \ - }, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - { name: {text: ""}}, \ - \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_1", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_2", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_3", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_4", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_5", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_6", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_7", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_8", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_9", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_10", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.welcome_11", fallback: ""} \ - ]}}, \ - \ - {name: {text: "", extra: [ \ - {text: "\u000b", font: "bored-face.pose:space_neg"},\ - {text: "\u0005", font: "bored-face.pose:icon", color: "red"}, \ - {translate: "gui.bored-face.pose.smartphone.title.nav_bar.pose_1", color: "#bb0000", fallback: ""} \ - ]}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.pose_2", color: "#bb0000", fallback: ""}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.pose_3", color: "#bb0000", fallback: ""}}, \ - {name: {text: "", extra: [ \ - {text: "\u0009\u0001", font: "bored-face.pose:space_neg"},\ - {text: "\u0006", font: "bored-face.pose:icon", color: "green"}, \ - {translate: "gui.bored-face.pose.smartphone.title.nav_bar.cape_1", color: "#00bb00", fallback: ""} \ - ]}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.cape_2", color: "#00bb00", fallback: ""}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.cape_3", color: "#00bb00", fallback: ""}}, \ - {name: {text: "", extra: [ \ - {text: "\u000e", font: "bored-face.pose:space_neg"},\ - {text: "\u0007", font: "bored-face.pose:icon", color: "blue"}, \ - {translate: "gui.bored-face.pose.smartphone.title.nav_bar.skin_1", color: "#0000bb", fallback: ""} \ - ]}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.skin_2", color: "#0000bb", fallback: ""}}, \ - {name: {translate: "gui.bored-face.pose.smartphone.title.nav_bar.skin_3", color: "#0000bb", fallback: ""}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.nav_bar_1", fallback: ""} \ - ]}}, \ - {name: {text: "", extra: [ \ - {text: "\u000d", font: "bored-face.pose:space_neg"},\ - {translate: "gui.bored-face.pose.smartphone.title.nav_bar_2", fallback: ""} \ - ]}}, \ -] diff --git a/data/bored-face.pose/function/misc/update_cape.mcfunction b/data/bored-face.pose/function/misc/update_cape.mcfunction deleted file mode 100644 index 7425acf..0000000 --- a/data/bored-face.pose/function/misc/update_cape.mcfunction +++ /dev/null @@ -1,2 +0,0 @@ -data modify storage bored-face.pose:smartphone tmp.id set from entity @s item.components.minecraft:custom_model_data.strings[0] -function bored-face.pose:misc/update_cape/macro with storage bored-face.pose:smartphone tmp diff --git a/data/bored-face.pose/function/misc/update_cape/macro.mcfunction b/data/bored-face.pose/function/misc/update_cape/macro.mcfunction deleted file mode 100644 index e2e12ca..0000000 --- a/data/bored-face.pose/function/misc/update_cape/macro.mcfunction +++ /dev/null @@ -1,3 +0,0 @@ -data remove entity @s item.components.minecraft:custom_model_data -$data modify entity @s item.components.minecraft:item_model set value "bored-face.pose:cape/$(id)" -data modify entity @s item.components.minecraft:custom_data.cape set value {} diff --git a/data/bored-face.pose/function/player.mcfunction b/data/bored-face.pose/function/player.mcfunction deleted file mode 100644 index 123d0db..0000000 --- a/data/bored-face.pose/function/player.mcfunction +++ /dev/null @@ -1,3 +0,0 @@ -#called when clicked in the smartphone - -$function bored-face.pose:players/$(id) diff --git a/data/bored-face.pose/function/reload_registry.mcfunction b/data/bored-face.pose/function/reload_registry.mcfunction new file mode 100644 index 0000000..dbad7bd --- /dev/null +++ b/data/bored-face.pose/function/reload_registry.mcfunction @@ -0,0 +1,8 @@ +$tellraw @s {translate: "message.bored-face.pose.registry_reloading", with: [$(id)]} + +# simulate the unloading of the registry +$data remove storage bored-face.pose:data registries[{id: "$(id)"}] +$function bored-face.pose:engine/registry/remove_macro with storage bored-face.pose:data loaded_registries[{id: "$(id)"}] + +# reloading all registries adds our registry again, because it wasn't really removed and is still present +function bored-face.pose:engine/reload_smartphone diff --git a/data/bored-face.pose/function/reload_smartphone.mcfunction b/data/bored-face.pose/function/reload_smartphone.mcfunction deleted file mode 100644 index 685b221..0000000 --- a/data/bored-face.pose/function/reload_smartphone.mcfunction +++ /dev/null @@ -1,74 +0,0 @@ -data remove storage bored-face.pose:smartphone pages -data remove storage bored-face.pose:smartphone title -data remove storage bored-face.pose:smartphone players -data remove storage bored-face.pose:smartphone capes -data remove storage bored-face.pose:smartphone skins -scoreboard players reset $page_count bored-face.pose.loop - -# Entries per page -scoreboard players set $line_num_max bored-face.pose.loop 10 - -data modify storage bored-face.pose:smartphone tmp set value { \ - function: "title",\ - storage: "title", \ - page_num: 0, \ - nav_bar_player: "active", \ - nav_bar_cape: "active", \ - nav_bar_skin: "active", \ - background_color: "white", \ -} -#function bored-face.pose:reload_smartphone/add_page with storage bored-face.pose:smartphone tmp -execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data title -scoreboard players remove $loop_max bored-face.pose.loop 1 -scoreboard players set $page_num bored-face.pose.loop 0 -scoreboard players set $line_num bored-face.pose.loop 0 -scoreboard players set $loop bored-face.pose.loop 0 -function bored-face.pose:reload_smartphone/loop - -# Player Poses -data modify storage bored-face.pose:smartphone tmp set value { \ - function: "player", \ - storage: "players", \ - nav_bar_player: "active", \ - nav_bar_cape: "inactive", \ - nav_bar_skin: "inactive", \ - background_color: "#ffdddd", \ -} -execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data players -scoreboard players remove $loop_max bored-face.pose.loop 1 -scoreboard players set $page_num bored-face.pose.loop 0 -scoreboard players set $line_num bored-face.pose.loop 0 -scoreboard players set $loop bored-face.pose.loop 0 -function bored-face.pose:reload_smartphone/loop - -# Capes -data modify storage bored-face.pose:smartphone tmp set value { \ - function: "cape", \ - storage: "capes", \ - nav_bar_player: "inactive", \ - nav_bar_cape: "active", \ - nav_bar_skin: "inactive", \ - background_color: "#ddffdd", \ -} -execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data capes -scoreboard players remove $loop_max bored-face.pose.loop 1 -scoreboard players set $page_num bored-face.pose.loop 0 -scoreboard players set $line_num bored-face.pose.loop 0 -scoreboard players set $loop bored-face.pose.loop 0 -function bored-face.pose:reload_smartphone/loop - -# Skins -data modify storage bored-face.pose:smartphone tmp set value { \ - function: "skin", \ - storage: "skins", \ - nav_bar_player: "inactive", \ - nav_bar_cape: "inactive", \ - nav_bar_skin: "active", \ - background_color: "#ddddff", \ -} -execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data skins -scoreboard players remove $loop_max bored-face.pose.loop 1 -scoreboard players set $page_num bored-face.pose.loop 0 -scoreboard players set $line_num bored-face.pose.loop 0 -scoreboard players set $loop bored-face.pose.loop 0 -function bored-face.pose:reload_smartphone/loop diff --git a/data/bored-face.pose/function/reload_smartphone/add_page.mcfunction b/data/bored-face.pose/function/reload_smartphone/add_page.mcfunction deleted file mode 100644 index fd3bc8b..0000000 --- a/data/bored-face.pose/function/reload_smartphone/add_page.mcfunction +++ /dev/null @@ -1,76 +0,0 @@ -$data modify storage bored-face.pose:smartphone $(storage) append value [] - -$data modify storage bored-face.pose:smartphone pages append value { \ - text: "", \ - extra: [ \ - { \ - text: "\u0002", \ - font: "bored-face.pose:icon", \ - shadow_color: 0, \ - color: "$(background_color)", \ - extra: [ \ - { text: "\u0064\u0035", font: "bored-face.pose:space_neg" }, \ - { text: "\u0001" }, \ - { text: "\u0001", font: "bored-face.pose:space_neg" } \ - ] \ - }, \ - { \ - translate: "gui.bored-face.pose.smartphone.$(function).title", \ - fallback: "" \ - }, \ - { text: "\n" }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "$(storage)[$(page_num)][]", \ - interpret: true, \ - separator: "\n" \ - }, \ - { text: "\n " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.player.$(nav_bar_player)", \ - interpret: true \ - }, \ - { text: " " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.cape.$(nav_bar_cape)", \ - interpret: true \ - }, \ - { text: " " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.skin.$(nav_bar_skin)", \ - interpret: true \ - }, \ - { text: "\n " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.player.base", \ - interpret: true, \ - extra: [ \ - {text: "\u000b", font: "bored-face.pose:space_pos"} \ - ] \ - }, \ - { text: " " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.cape.base", \ - interpret: true, \ - extra: [ \ - {text: "\u0009\u0001", font: "bored-face.pose:space_pos"} \ - ] \ - }, \ - { text: " " }, \ - { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.skin.base", \ - interpret: true, \ - extra: [ \ - {text: "\u000e", font: "bored-face.pose:space_pos"} \ - ] \ - } \ - ] \ -} - -scoreboard players add $page_count bored-face.pose.loop 1 diff --git a/data/bored-face.pose/function/reload_smartphone/iterate.mcfunction b/data/bored-face.pose/function/reload_smartphone/iterate.mcfunction deleted file mode 100644 index 45f42bf..0000000 --- a/data/bored-face.pose/function/reload_smartphone/iterate.mcfunction +++ /dev/null @@ -1,28 +0,0 @@ -# with click -$execute if data storage bored-face.pose:data $(storage)[$(total)].id run return run \ -data modify storage bored-face.pose:smartphone $(storage)[$(page_num)] append value { \ - text: "", \ - extra: [ \ - { \ - storage: "bored-face.pose:data", \ - nbt: "$(storage)[$(total)].name", \ - interpret: true, \ - click_event: { \ - action: "run_command", \ - command: "function bored-face.pose:$(function) {id: $(id)}" \ - } \ - } \ - ] \ -} - -# without click -$data modify storage bored-face.pose:smartphone $(storage)[$(page_num)] append value { \ - text: "", \ - extra: [ \ - { \ - storage: "bored-face.pose:data", \ - nbt: "$(storage)[$(total)].name", \ - interpret: true \ - } \ - ] \ -} diff --git a/data/bored-face.pose/function/reload_smartphone/loop.mcfunction b/data/bored-face.pose/function/reload_smartphone/loop.mcfunction deleted file mode 100644 index fd74af7..0000000 --- a/data/bored-face.pose/function/reload_smartphone/loop.mcfunction +++ /dev/null @@ -1,24 +0,0 @@ -execute store result storage bored-face.pose:smartphone tmp.total int 1 run scoreboard players get $loop bored-face.pose.loop -function bored-face.pose:reload_smartphone/get_id with storage bored-face.pose:smartphone tmp - -execute store result storage bored-face.pose:smartphone tmp.page_num int 1 run scoreboard players get $page_num bored-face.pose.loop -execute if score $line_num bored-face.pose.loop matches 0 run function bored-face.pose:reload_smartphone/add_page with storage bored-face.pose:smartphone tmp -function bored-face.pose:reload_smartphone/iterate with storage bored-face.pose:smartphone tmp - -scoreboard players add $line_num bored-face.pose.loop 1 - -# Add new page and reset line -execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop if score $line_num bored-face.pose.loop > $line_num_max bored-face.pose.loop run scoreboard players add $page_num bored-face.pose.loop 1 -execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop if score $line_num bored-face.pose.loop > $line_num_max bored-face.pose.loop run scoreboard players set $line_num bored-face.pose.loop 0 - -# Loop when not all done -scoreboard players add $loop bored-face.pose.loop 1 -execute if score $loop bored-face.pose.loop <= $loop_max bored-face.pose.loop run return run function bored-face.pose:reload_smartphone/loop - -# Loop when all done, but page hasn't reached max line num (for footer alignment) -execute if score $line_num bored-face.pose.loop <= $line_num_max bored-face.pose.loop run return run function bored-face.pose:reload_smartphone/loop - -# calc start page of current section -execute store result storage bored-face.pose:smartphone tmp.page_num int 1 run scoreboard players operation $page_count bored-face.pose.loop -= $page_num bored-face.pose.loop -scoreboard players operation $page_count bored-face.pose.loop += $page_num bored-face.pose.loop -function bored-face.pose:reload_smartphone/set_footer with storage bored-face.pose:smartphone tmp diff --git a/data/bored-face.pose/function/reload_smartphone/set_footer.mcfunction b/data/bored-face.pose/function/reload_smartphone/set_footer.mcfunction deleted file mode 100644 index b5e6c06..0000000 --- a/data/bored-face.pose/function/reload_smartphone/set_footer.mcfunction +++ /dev/null @@ -1,29 +0,0 @@ -$data modify storage bored-face.pose:smartphone nav_bar.$(function).base set value { \ - text: "", \ - hover_event: {action: "show_text", value: { \ - text: "", \ - extra: [ \ - { storage: "bored-face.pose:smartphone", nbt: "nav_bar.$(function).icon", interpret: true }, \ - { text: " " }, \ - { translate: "gui.bored-face.pose.smartphone.$(function).nav_bar" }, \ - { text: "\n" } \ - ] \ - }}, \ - click_event: {action: "change_page", page: $(page_num)} \ -} -$data modify storage bored-face.pose:smartphone nav_bar.$(function).active set value { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.$(function).base", \ - interpret: true, \ - extra: [ \ - { storage: "bored-face.pose:smartphone", nbt: "nav_bar.$(function).icon", interpret: true } \ - ] \ -} -$data modify storage bored-face.pose:smartphone nav_bar.$(function).inactive set value { \ - storage: "bored-face.pose:smartphone", \ - nbt: "nav_bar.$(function).base", \ - interpret: true, \ - extra: [ \ - { storage: "bored-face.pose:smartphone", nbt: "nav_bar.$(function).icon", interpret: true, color: "gray" } \ - ] \ -} diff --git a/data/bored-face.pose/function/smartphone.mcfunction b/data/bored-face.pose/function/smartphone.mcfunction index 14d68fa..4cfbe04 100644 --- a/data/bored-face.pose/function/smartphone.mcfunction +++ b/data/bored-face.pose/function/smartphone.mcfunction @@ -1,7 +1,36 @@ scoreboard players reset @s bored-face.pose.smartphone -clear @s *[minecraft:custom_data={bored-face.pose:{smartphone:{}}}] -summon minecraft:item ~ ~ ~ {Item: {id: "minecraft:written_book"}, Tags: ["bored-face.pose.smartphone"], PickupDelay:0} - -item modify entity @n[type=minecraft:item, tag=bored-face.pose.smartphone, distance=..0.1] contents bored-face.pose:smartphone -data modify entity @n[type=minecraft:item, tag=bored-face.pose.smartphone, distance=..0.1] Item.components.minecraft:written_book_content.pages set from storage bored-face.pose:smartphone pages +$dialog show @s { \ + title: "P.O.S.E. - Player Origin Statue Engine", \ + type: "minecraft:multi_action", \ + body: [ \ + { \ + type: "minecraft:plain_message", \ + contents: { \ + text: "\n",\ + extra: [ \ + { \ + text: "\u0005", \ + font: "bored-face.pose:space_neg", \ + color: "white", \ + extra: [ \ + { text: "\u0003", font: "bored-face.pose:icon" }, \ + { text: "\u0001" }, \ + { text: "\u0004", font: "bored-face.pose:icon" } \ + ] \ + }, \ + {text: "\n\n"}, \ + { \ + text: "Version 2.0", \ + color: "#696969" \ + }, \ + ],\ + }, \ + }, \ + ], \ + actions: $(actions), \ + columns: 1, \ + exit_action: { \ + label: {translate: "gui.back"}, \ + }, \ +} diff --git a/data/bored-face.pose/function/tick.mcfunction b/data/bored-face.pose/function/tick.mcfunction index 9e4d701..a26ee47 100644 --- a/data/bored-face.pose/function/tick.mcfunction +++ b/data/bored-face.pose/function/tick.mcfunction @@ -1,2 +1,14 @@ scoreboard players enable @a bored-face.pose.smartphone -execute as @a if score @s bored-face.pose.smartphone matches 1.. at @s run function bored-face.pose:smartphone +execute as @a if score @s bored-face.pose.smartphone matches 1.. at @s run function bored-face.pose:smartphone with storage bored-face.pose:smartphone + +execute as @a if score @s bored-face.pose.registry matches 0.. at @s store result storage bored-face.pose:smartphone tmp.index int 1 run scoreboard players get @s bored-face.pose.registry +execute as @a if score @s bored-face.pose.registry matches 0.. at @s run function bored-face.pose:util/get_registry_id_from_index with storage bored-face.pose:smartphone tmp +execute as @a if score @s bored-face.pose.registry matches 0.. at @s run function bored-face.pose:engine/show_entries with storage bored-face.pose:smartphone tmp +scoreboard players enable @a bored-face.pose.registry +# set to -1 because we need to differentiate between 0 and no input (no input therefore being -1) +scoreboard players set @a bored-face.pose.registry -1 + +execute store result score $loop_max bored-face.pose.loop run data get storage bored-face.pose:data registries +scoreboard players remove $loop_max bored-face.pose.loop 1 +scoreboard players set $loop bored-face.pose.loop 0 +function bored-face.pose:engine/registry/tick diff --git a/data/bored-face.pose/function/tool/migrate_from_1.x.mcfunction b/data/bored-face.pose/function/tool/migrate_from_1.x.mcfunction new file mode 100644 index 0000000..9fe61d4 --- /dev/null +++ b/data/bored-face.pose/function/tool/migrate_from_1.x.mcfunction @@ -0,0 +1,7 @@ +data remove storage bored-face.pose:data players +data remove storage bored-face.pose:data capes +data remove storage bored-face.pose:data skins + +data remove storage bored-face.pose:smartphone pages + +function bored-face.pose:load diff --git a/data/bored-face.pose/function/tool/update_capes.mcfunction b/data/bored-face.pose/function/tool/update_capes.mcfunction deleted file mode 100644 index 4c6640a..0000000 --- a/data/bored-face.pose/function/tool/update_capes.mcfunction +++ /dev/null @@ -1,2 +0,0 @@ -#execute as @e[type=minecraft:item_display, nbt={item:{components: {"minecraft:item_model": "bored-face.pose:cape"}}}] run function bored-face.pose:misc/update_cape -execute as @n[type=minecraft:item_display, nbt={item:{components: {"minecraft:item_model": "bored-face.pose:cape"}}}] run function bored-face.pose:misc/update_cape diff --git a/data/bored-face.pose/function/reload_smartphone/get_id.mcfunction b/data/bored-face.pose/function/util/get_registry_id_from_index.mcfunction similarity index 54% rename from data/bored-face.pose/function/reload_smartphone/get_id.mcfunction rename to data/bored-face.pose/function/util/get_registry_id_from_index.mcfunction index 7906a38..ce09bd8 100644 --- a/data/bored-face.pose/function/reload_smartphone/get_id.mcfunction +++ b/data/bored-face.pose/function/util/get_registry_id_from_index.mcfunction @@ -1 +1 @@ -$data modify storage bored-face.pose:smartphone tmp.id set from storage bored-face.pose:data $(storage)[$(total)].id +$data modify storage bored-face.pose:smartphone tmp.id set from storage bored-face.pose:data registries[$(index)].id diff --git a/data/bored-face.pose/mcdoc/data.mcdoc b/data/bored-face.pose/mcdoc/data.mcdoc index 8e56426..f0feffd 100644 --- a/data/bored-face.pose/mcdoc/data.mcdoc +++ b/data/bored-face.pose/mcdoc/data.mcdoc @@ -1,21 +1,67 @@ use ::java::util::text::TextObject +use ::java::world::item::SingleItem dispatch minecraft:storage[bored-face.pose:data] to struct { - /// The title - title: [Data], - - /// List of available players poses - players: [Data], - /// List of available capes - capes: [Data], - /// List of available skins - skins: [Data], + /// The format version of the data structure + /// **DO NOT CHANGE THIS VALUE MANUALLY!** + format: int, + + /// All the P.O.S.E. registries + registries: [RegistryIndex], + /// The currently loaded registries. + /// This is used to determine which registries are removed or added after a reload. + loaded_registries: [LoadedRegistry], } -struct Data { +struct RegistryBase { + /// The unique identifier of the registry + id: #[bored_face_pose(definition=true)] #[match_regex="^(?:[a-z0-9_]+[.-])*[a-z_]+$"] string, + + /// The display name of the registry + name: TextObject, + /// The description of the registry + description: TextObject, + + /// The item template string fo previewing an entry of the registry. + /// If not set, only the name and description will be shown. + item?: SingleItem, +} + +struct LoadedRegistry { + ...RegistryBase, + + /// All the entries in the registry + entries: [RegistryEntry], +} + +struct RegistryIndex { + ...RegistryBase, + + /// The index of the registry in the registries list. + /// Gets set automatically when the registry is loaded. + index?: int, +} + +/// A single entry in a P.O.S.E. registry +struct RegistryEntry { /// The display name name: TextObject, + /// The description + description: TextObject, /// The identifier. /// Used for the resource location of the item definition and to the call the the function. - id?: string, + id: #[match_regex="^[a-z0-9_]+$"] string, + + /// The index of the entry in the registry. + /// Will be set automatically when the registry is loaded. + index?: int, + /// The registry id this entry belongs to. + /// Will be set automatically when the registry is loaded. + registry_id?: #[bored_face_pose] string, + /// The index of the registry in the registries list. + /// Will be set automatically when the registry is loaded. + registry_index?: int, + /// The name of the registry this entry belongs to. + /// Will be set automatically when the registry is loaded. + registry_name?: string, } diff --git a/data/bored-face.pose/mcdoc/smartphone.mcdoc b/data/bored-face.pose/mcdoc/smartphone.mcdoc index ff6eaed..0a89687 100644 --- a/data/bored-face.pose/mcdoc/smartphone.mcdoc +++ b/data/bored-face.pose/mcdoc/smartphone.mcdoc @@ -1,94 +1,33 @@ -use ::java::util::text::TextColor use ::java::util::text::TextObject +use ::java::data::dialog::Button -dispatch minecraft:storage[bored-face.pose:smartphone] to struct { - /// The title - title: [[TextObject]], - - /// List of available players poses - players: [[TextObject]], - /// List of available capes - capes: [[TextObject]], - /// List of available skins - skins: [[TextObject]], +use super::data::RegistryBase - /// list of pages - pages?: [TextObject], - - /// navigation footer - nav_bar?: NavBar, +dispatch minecraft:storage[bored-face.pose:smartphone] to struct { + registries: [SmartphoneRegistry], + /// The dialog buttons for each registry + actions: [Button], + /// The admin button for each registry + admin_actions: [Button], /// Temporary data tmp: Tmp, } -/// Navigation footer -struct NavBar { - /// The player navigation button - player: NavBarIcon, - /// The cape navigation button - cape: NavBarIcon, - /// The skin navigation button - skin: NavBarIcon, -} -struct NavBarIcon { - icon : TextObject, - base: TextObject, - active: TextObject, - inactive: TextObject, +struct SmartphoneRegistry { + ...RegistryBase, + + /// The dialog buttons for each entry in the registry + actions: [Button] } /// Temporary data struct Tmp { - /// The function location - function: Function, - /// The storage path - storage: Storage, - /// The current total index - total?: int, - /// The current page index - page_num?: int, - /// The current id - id?: string, - - nav_bar_player: NavBarIconMode, - nav_bar_cape: NavBarIconMode, - nav_bar_skin: NavBarIconMode, - - background_color: ( - #[color="hex_rgb"] string | - #[color="named"] TextColor | - ) -} - -/// Available functions -enum(string) Function { - /// The title page - Title = "title", - /// The player poses - Player = "player", - /// The capes - Cape = "cape", - /// The skins - Skin = "skin", -} - -/// Available storages -enum(string) Storage { - /// The title page - Title = "title", - /// The player poses - Player = "players", - /// The capes - Cape = "capes", - /// The skins - Skin = "skins", -} - -/// Available modes for the navigation bar icons -enum(string) NavBarIconMode { - /// The icon is active - Active = "active", - /// The icon is inactive - Inactive = "inactive", + /// The scoreboard objective that gets triggered when the user clicks a button + id: #[bored_face_pose] string, + /// The current index + index?: int, + + /// A single button to assemble append it to the dialog + button?: Button, } diff --git a/data/bored-face.pose/tags/function/bored-face.cape/add_entries.json b/data/bored-face.pose/tags/function/bored-face.cape/add_entries.json new file mode 100644 index 0000000..0ab8a81 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.cape/add_entries.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.cape:add_entries" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.cape/item.json b/data/bored-face.pose/tags/function/bored-face.cape/item.json new file mode 100644 index 0000000..2ed1ff6 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.cape/item.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.cape:item" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.cape/run.json b/data/bored-face.pose/tags/function/bored-face.cape/run.json new file mode 100644 index 0000000..0dd6d11 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.cape/run.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.cape:run" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.player/add_entries.json b/data/bored-face.pose/tags/function/bored-face.player/add_entries.json new file mode 100644 index 0000000..f5edcfd --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.player/add_entries.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.player:add_entries" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.player/run.json b/data/bored-face.pose/tags/function/bored-face.player/run.json new file mode 100644 index 0000000..b4d66f4 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.player/run.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.player:run" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.skin/add_entries.json b/data/bored-face.pose/tags/function/bored-face.skin/add_entries.json new file mode 100644 index 0000000..d1ebbe2 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.skin/add_entries.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.skin:add_entries" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.skin/item.json b/data/bored-face.pose/tags/function/bored-face.skin/item.json new file mode 100644 index 0000000..fe7a9be --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.skin/item.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.skin:item" + ] +} diff --git a/data/bored-face.pose/tags/function/bored-face.skin/run.json b/data/bored-face.pose/tags/function/bored-face.skin/run.json new file mode 100644 index 0000000..328fda3 --- /dev/null +++ b/data/bored-face.pose/tags/function/bored-face.skin/run.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose.skin:run" + ] +} diff --git a/data/bored-face.pose/tags/function/load.json b/data/bored-face.pose/tags/function/load.json new file mode 100644 index 0000000..5b20920 --- /dev/null +++ b/data/bored-face.pose/tags/function/load.json @@ -0,0 +1,7 @@ +{ + "values": [ + "bored-face.pose.cape:load_pose", + "bored-face.pose.player:load_pose", + "bored-face.pose.skin:load_pose" + ] +} diff --git a/data/minecraft/tags/dialog/quick_actions.json b/data/minecraft/tags/dialog/quick_actions.json new file mode 100644 index 0000000..1fb670a --- /dev/null +++ b/data/minecraft/tags/dialog/quick_actions.json @@ -0,0 +1,5 @@ +{ + "values": [ + "bored-face.pose:pose" + ] +} diff --git a/pack.mcmeta b/pack.mcmeta index 8022610..89afe7e 100644 --- a/pack.mcmeta +++ b/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 71, + "pack_format": 80, "description": "Player-Origin Statue Engine" } }