customize armor stands

This commit is contained in:
Daniel Løvbrøtte Olsen 2020-03-19 15:59:23 +01:00
parent 53d88fc3be
commit a8bfeda4bd
89 changed files with 2499 additions and 0 deletions

View File

@ -0,0 +1,31 @@
{
"display": {
"icon": {
"item": "minecraft:armor_stand"
},
"title": {
"text":"enable_as_trigger"
},
"description": {
"text":""
},
"frame": "task",
"show_toast": false,
"announce_to_chat": false,
"hidden": false
},
"parent": "as:root",
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
},
"requirements": [
[
"tick"
]
],
"rewards": {
"function": "as:enable"
}
}

View File

@ -0,0 +1,12 @@
{
"criteria": {
"impossible": {
"trigger": "minecraft:impossible"
}
},
"requirements": [
[
"impossible"
]
]
}

View File

@ -0,0 +1,18 @@
#
# Description: Display admin options in chat
# Called by: Player
# Entity @s: Player
#
tellraw @s [{"text":"Customizable Armor Stands - Admin Options","color":"yellow","bold":"true"}]
tellraw @s [{"text":"Particle shrine: ","color":"aqua"},{"text":"Create","color":"green","clickEvent":{"action":"run_command","value":"/function as:shrine/create"}},{"text":" / ","color":"aqua"},{"text":"Remove","color":"green","clickEvent":{"action":"run_command","value":"/function as:shrine/remove"}}]
tellraw @s [{"text":"Get book from help: ","color":"aqua"},{"storage":"customizable_armor_stands:settings", "nbt":"as_admin.book_help", "color":"green", "clickEvent":{"action":"run_command", "value":"/function as:admin/book_from_help_toggle"}, "hoverEvent":{"action":"show_text", "value":{"text":"Click to toggle", "color":"yellow"}}}]
tellraw @s [{"text":"Craftable book: ","color":"aqua"},{"storage":"customizable_armor_stands:settings", "nbt":"as_admin.book_craft", "color":"green", "clickEvent":{"action":"run_command", "value":"/function as:admin/craft_book_toggle"}, "hoverEvent":{"action":"show_text", "value":{"text":"Click to toggle", "color":"yellow"}}}]
tellraw @s [{"text":"Delete unused invisible stands","color":"green","hoverEvent":{"action":"show_text","value":[{"text":"Deletes any invisible armor stands in loaded chunks that are not holding or wearing any items.","color":"yellow"}]},"clickEvent":{"action":"run_command","value":"/function as:admin/unused"}}]
tellraw @s [{"text":"Highlight all stands","color":"green","hoverEvent":{"action":"show_text","value":[{"text":"Gives all stands within 64 blocks the glowing effect for 15 seconds","color":"yellow"}]},"clickEvent":{"action":"run_command","value":"/effect give @e[type=armor_stand,distance=..64] minecraft:glowing 15 1 true"}}]
#tellraw @s [{"text":"Reduce local server load","color":"green","hoverEvent":{"action":"show_text","value":[{"text":"Sets the Marker tag on all locked armor stands within 128 blocks. This reduces the load on the server from ticking the entities but makes the stands unaffected by entity updates such as being pushed by pistons. The Marker tag can be reset for individual stands by unlocking them.","color":"yellow"}]},"clickEvent":{"action":"run_command","value":"/function as:admin/marker"}}]
tellraw @s [{"text":"--------------------------","color":"yellow","bold":"true"}]
#
# The "Reduce local server load" option has the unfortunate side effect of moving the stands' eye line to their base.
# If this puts it inside a block, the items held and worn by the stand turn black.
# Commented out for the time being whilst options are investigated.
#

View File

@ -0,0 +1,11 @@
#
# Description: Disable option to get the book directly from the help menu
# Called by: as:admin via chat link
# Entity @s: player
#
execute store success score #as_success as_help run data modify storage customizable_armor_stands:settings as_admin.book_help set value "Disabled"
execute unless score #as_success as_help matches 1 run data modify storage customizable_armor_stands:settings as_admin.book_help set value "Enabled"
#
tellraw @s [{"text":"Getting the book from the help menu has been ","color":"aqua"},{"storage":"customizable_armor_stands:settings", "nbt":"as_admin.book_help"}]
#
function as:admin

View File

@ -0,0 +1,11 @@
#
# Description: Enable option to get the book by crafting
# Called by: as:admin via chat link
# Entity @s: player
#
execute store success score #as_success as_help run data modify storage customizable_armor_stands:settings as_admin.book_craft set value "Disabled"
execute unless score #as_success as_help matches 1 run data modify storage customizable_armor_stands:settings as_admin.book_craft set value "Enabled"
#
tellraw @s [{"text":"Getting the book via crafting has been ","color":"aqua"},{"storage":"customizable_armor_stands:settings", "nbt":"as_admin.book_craft"}]
#
function as:admin

View File

@ -0,0 +1,24 @@
#
# This function is currently not used - see as:admin for details
#
#
# Description: Sets the Marker tag on all locked armor stands within 128 blocks
# Called by: as:admin via chat clickEvent
# Entity @s: Player
#
# Note: DisabledSlots tag is checked to exclude armor stands in tool racks
#
# Store number of affected stands for reporting
#
execute store result score @s as_pose run execute if entity @e[type=armor_stand,distance=..128,tag=as_locked,nbt=!{Marker:1b},nbt=!{DisabledSlots:4079166}]
#
# Set Marker tag on affected stands
#
execute as @e[type=armor_stand,distance=..128,tag=as_locked,nbt=!{Marker:1b},nbt=!{DisabledSlots:4079166}] run data merge entity @s {Marker:1b}
#
# Report number affected
#
tellraw @p [{"text":"Marker set on ","color":"aqua"},{"score":{"name":"@s","objective":"as_pose"},"color":"aqua"},{"text":" armor stands","color":"aqua"}]
#
scoreboard players reset @s as_pose

View File

@ -0,0 +1,20 @@
#
# Description: Removes all unused armor stands in loaded chunks
# Called by: as:admin via chat clickEvent
# Entity @s: Player
#
# Note: "Unused" stands are invisible, are not holding or wearing items, and are not part of a tool rack
#
# Store number of affected stands for reporting
#
execute store result score @s as_pose run execute if entity @e[type=armor_stand,nbt={Invisible:1b},nbt=!{HandItems:[{Count:1b}]},nbt=!{ArmorItems:[{Count:1b}]},nbt=!{DisabledSlots:4079166},nbt=!{Invulnerable:1b},nbt=!{Marker:1b}]
#
# Kill affected stands
#
execute as @e[type=armor_stand,nbt={Invisible:1b},nbt=!{HandItems:[{Count:1b}]},nbt=!{ArmorItems:[{Count:1b}]},nbt=!{DisabledSlots:4079166},nbt=!{Invulnerable:1b},nbt=!{Marker:1b}] run kill @s
#
# Report number affected
#
tellraw @p [{"score":{"name":"@s","objective":"as_pose"},"color":"aqua"},{"text":" unused armor stands deleted","color":"aqua"}]
#
scoreboard players reset @s as_pose

View File

@ -0,0 +1,16 @@
#
# Description: This is a temporary (?) workaround for bug MC-80975
# Called by: as:trigger
# Entity @s: armor_stand
#
# Pose data is not stored for parts of the armor stand that are in the "default" positions. This causes the execute store entity
# and data get entity commands to fail.
#
# This function checks for the presence of each parts' pose data and updates it with tweaked default values if not present
#
execute unless data entity @s Pose.Head run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f]}}
execute unless data entity @s Pose.Body run data merge entity @s {Pose:{Body:[0.0f,0.001f,0.0f]}}
execute unless data entity @s Pose.LeftArm run data merge entity @s {Pose:{LeftArm:[-10.0f,0.001f,-10.0f]}}
execute unless data entity @s Pose.RightArm run data merge entity @s {Pose:{RightArm:[-15.0f,0.001f,10.0f]}}
execute unless data entity @s Pose.LeftLeg run data merge entity @s {Pose:{LeftLeg:[-1.0f,0.001f,-1.0f]}}
execute unless data entity @s Pose.RightLeg run data merge entity @s {Pose:{RightLeg:[1.0f,0.001f,1.0f]}}

View File

@ -0,0 +1,34 @@
#
# Description: Enable system for the player and issue control book
# Called by: command block
# Entity @s: player
#
# Trigger values in use are: 1-12 Style settings
# 20-39 Pose presets
# 40-51 Nudge position
# 52-57 Adjust rotation
# 60-95 Pose adjustment
# 101-112 Nudge position
# 120-123 Angle step
# 124-125 Face towards or away
# 131-135 Pose mirror and flip
# 141-142 Pose presets
# 151-155 Auto alignment
# 161-162 Exchange Slots
# 999 Check target
# 1000-1003 Lock and seal
# 1004-1005 Copy and paste
# 1100-1129 Nuge position relative
# 1150 Random pose
# 1160-1171 Pointing
#
# Set trigger score for player to zero and enable
#
scoreboard players set @s as_trigger 0
scoreboard players enable @s as_trigger
scoreboard players set @s as_help 0
scoreboard players enable @s as_help
#
# Set angle step for rotation and pose adjustment to default 15 degrees
#
scoreboard players set @s as_angle 15

View File

@ -0,0 +1,25 @@
#
# Description: Issue control book
# Called by: command block
# Entity @s: player
#
# Trigger values in use are: 1-12 Style settings
# 20-39 Pose presets
# 40-51 Nudge position
# 52-57 Adjust rotation
# 60-95 Pose adjustment
# 101-112 Nudge position
# 120-123 Angle step
# 124-125 Face towards or away
# 131-135 Pose mirror and flip
# 141-142 Pose presets
# 151-155 Auto alignment
# 161-162 Exchange Slots
# 999 Check target
# 1000-1003 Lock and seal
# 1004-1005 Copy and paste
#
# Give control book
#
loot give @s loot as:book

View File

@ -0,0 +1,14 @@
#
# Description: Display help in chat
# Called by: as:tick
# Entity @s: player
#
execute if score @s as_help matches 2 if data storage customizable_armor_stands:settings as_admin{book_help:"Enabled"} run function as:help/get_book
execute if score @s as_help matches 3 run function as:help/chat_actionbar_toggle
execute if score @s as_help matches 4 run function as:help/credits
execute if score @s as_help matches 1..3 unless score @s as_help matches 2 run function as:help/main
#
# Reset trigger score
#
scoreboard players set @s as_help 0
scoreboard players enable @s as_help

View File

@ -0,0 +1,11 @@
#
# Description: Send notifications to chat
# Called by: as:help
# Entity @s: Player
#
execute store success score #as_success as_help run tag @s add as_chat
execute unless score #as_success as_help matches 1 run tag @s remove as_chat
#
execute if entity @s[tag=as_chat] run tellraw @s [{"text":"Notifications will be directed to chat","color":"aqua"}]
execute if entity @s[tag=!as_chat] run tellraw @s [{"text":"Notifications will be directed to the action bar","color":"aqua"}]

View File

@ -0,0 +1,11 @@
#
# Description: Display credits in chat
# Called by: as:help
# Entity @s: Player
#
tellraw @s [{"text":"Customizable Armor Stands - Credits","color":"yellow","bold":"true"}]
tellraw @s [{"text":"Coding and original concept: ","color":"aqua"},{"text":"Phssthpok","color":"green","bold":"true"}]
tellraw @s [{"text":"Vanilla Tweaks integration: ","color":"aqua"},{"text":"MSpaceDev","color":"green","bold":"true"}]
tellraw @s [{"text":"Additional ideas and improvements: ","color":"aqua"},{"text":"MukiTanuki","color":"green","bold":"true"}]
tellraw @s [{"text":"\nThanks to many other people for help with testing and suggestions -Phssthpok","color":"aqua"}]
tellraw @s [{"text":"--------------------------","color":"yellow","bold":"true"}]

View File

@ -0,0 +1,6 @@
#
# Description: Get book via chat link
# Called by: as:help
# Entity @s: Player
#
function as:give

View File

@ -0,0 +1,14 @@
#
# Description: Display main help options
# Called by: as:help
# Entity @s: Player
#
tellraw @s [{"text":"Customizable Armor Stands - Help","color":"yellow","bold":"true"},{"text":"\nGet the book by:","color":"aqua","bold":"false"}]
execute if data storage customizable_armor_stands:settings as_admin{book_help:"Enabled"} run tellraw @s [{"text":" - Clicking ","color":"aqua"},{"text":"here","color":"green","clickEvent":{"action":"run_command","value":"/trigger as_help set 2"}}]
execute if score #as_shrine_x as_help matches ..0 run tellraw @s [{"text":" - Going to the shrine at ","color":"aqua"},{"score":{"name":"#as_shrine_x","objective":"as_help"},"color":"aqua"},{"text":",","color":"aqua"},{"score":{"name":"#as_shrine_z","objective":"as_help"},"color":"aqua"}]
execute if score #as_shrine_x as_help matches 1.. run tellraw @s [{"text":" - Going to the shrine at ","color":"aqua"},{"score":{"name":"#as_shrine_x","objective":"as_help"},"color":"aqua"},{"text":",","color":"aqua"},{"score":{"name":"#as_shrine_z","objective":"as_help"},"color":"aqua"}]
execute if data storage customizable_armor_stands:settings as_admin{book_craft:"Enabled"} run tellraw @s [{"text":" - Crafting a written book titled \"Statues\"","color":"aqua"}]
execute if entity @s[tag=as_chat] run tellraw @s [{"text":"Send notifications to: ","color":"aqua"},{"text":"Chat","color":"green","clickEvent":{"action":"run_command","value":"/trigger as_help set 3"}, "hoverEvent":{"action":"show_text", "value":{"text":"Click to toggle between Chat and Actionbar", "color":"yellow"}}}]
execute if entity @s[tag=!as_chat] run tellraw @s [{"text":"Send notifications to: ","color":"aqua"},{"text":"Actionbar","color":"green","clickEvent":{"action":"run_command","value":"/trigger as_help set 3"}, "hoverEvent":{"action":"show_text", "value":{"text":"Click to toggle between Chat and Actionbar", "color":"yellow"}}}]
tellraw @s [{"text":"Credits","color":"green","clickEvent":{"action":"run_command","value":"/trigger as_help set 4"}}]
tellraw @s [{"text":"--------------------------","color":"yellow","bold":"true"}]

View File

@ -0,0 +1,32 @@
#
# Description: Create scoreboards
# Called by: #main:init
# Entity @s: None
#
# Create scoreboards
#
scoreboard objectives add as_trigger trigger
scoreboard objectives add as_pose dummy
scoreboard objectives add as_angle dummy
scoreboard objectives add as_help trigger
#
# Resets triggers on reload
#
scoreboard players enable * as_trigger
scoreboard players enable * as_help
#
# Variables
#
scoreboard players set #var15000 as_angle 15000
scoreboard players set #var45000 as_angle 45000
scoreboard players set #var30000 as_angle 30000
scoreboard players set #var60000 as_angle 60000
scoreboard players set #var90000 as_angle 90000
scoreboard players set #var180000 as_angle 180000
scoreboard players set #var360000 as_angle 360000
scoreboard players set #var-1 as_angle -1
#
# Sets storage settings
#
execute unless data storage customizable_armor_stands:settings as_admin.book_craft run data modify storage customizable_armor_stands:settings as_admin.book_craft set value "Disabled"
execute unless data storage customizable_armor_stands:settings as_admin.book_help run data modify storage customizable_armor_stands:settings as_admin.book_help set value "Disabled"

View File

@ -0,0 +1,10 @@
#
# Description: Locks armor stand
# Called by: as:trigger/lock
# Entity @s: armor stand
#
execute as @p[tag=as_selected,tag=!as_chat] run title @s actionbar {"text":"Armor stand locked","color":"dark_green"}
execute as @p[tag=as_selected,tag=as_chat] run tellraw @s {"text":"<Stick_God> Armor stand locked","color":"dark_green"}
effect give @s minecraft:glowing 1
data merge entity @s {DisabledSlots:4144959}
tag @s add as_locked

View File

@ -0,0 +1,10 @@
#
# Description: Unocks locked armor stand
# Called by: as:trigger/lock
# Entity @s: nearest locked armor stand
#
execute as @p[tag=as_selected,tag=!as_chat] run title @s actionbar {"text":"Armor stand unlocked","color":"dark_green"}
execute as @p[tag=as_selected,tag=as_chat] run tellraw @s {"text":"<Stick_God> Armor stand unlocked","color":"dark_green"}
effect give @s minecraft:glowing 1
data merge entity @s {DisabledSlots:0}
tag @s remove as_locked

View File

@ -0,0 +1,12 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result score #x_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"body_x" }].Amount 1000
execute store result score #y_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"body_y" }].Amount 1000
execute store result score #z_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"body_z" }].Amount 1000
function as:randomizer/body_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Body[0] float 0.001 run scoreboard players get #x_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Body[1] float 0.001 run scoreboard players get #y_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Body[2] float 0.001 run scoreboard players get #z_angle as_angle

View File

@ -0,0 +1,31 @@
#
# Description: adjusts probability
# Called by: as:randomizer/body
# Entity @s: temp armor stand
#
scoreboard players set #x_negative as_angle 0
scoreboard players set #y_negative as_angle 0
scoreboard players set #z_negative as_angle 0
scoreboard players set #random_type as_angle 0
execute if predicate as:random_chance_10 run scoreboard players set #random_type as_angle 1
execute if score #random_type as_angle matches 1 if predicate as:random_chance_30 run scoreboard players set #random_type as_angle 2
# negative modulo
execute if score #random_type as_angle matches 0..1 if score #x_angle as_angle matches ..-1 run scoreboard players set #x_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #y_angle as_angle matches ..-1 run scoreboard players set #y_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #z_angle as_angle matches ..-1 run scoreboard players set #z_negative as_angle 1
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle
# small angle #random_type=0
execute if score #random_type as_angle matches 0 run scoreboard players operation #x_angle as_angle %= #var15000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #y_angle as_angle %= #var15000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #z_angle as_angle %= #var15000 as_angle
# med angle #random_type=1
execute if score #random_type as_angle matches 1 run scoreboard players operation #x_angle as_angle %= #var30000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #y_angle as_angle %= #var30000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #z_angle as_angle %= #var30000 as_angle
# extreme angle #random_type=2 (no modulo)
# reversed negative
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle

View File

@ -0,0 +1,12 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result score #x_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"head_x" }].Amount 1000
execute store result score #y_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"head_y" }].Amount 1000
execute store result score #z_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"head_z" }].Amount 1000
function as:randomizer/head_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Head[0] float 0.001 run scoreboard players get #x_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Head[1] float 0.001 run scoreboard players get #y_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.Head[2] float 0.001 run scoreboard players get #z_angle as_angle

View File

@ -0,0 +1,31 @@
#
# Description: adjusts probability
# Called by: as:randomizer/head
# Entity @s: temp armor stand
#
scoreboard players set #x_negative as_angle 0
scoreboard players set #y_negative as_angle 0
scoreboard players set #z_negative as_angle 0
scoreboard players set #random_type as_angle 0
execute if predicate as:random_chance_20 run scoreboard players set #random_type as_angle 1
execute if score #random_type as_angle matches 1 if predicate as:random_chance_40 run scoreboard players set #random_type as_angle 2
# negative modulo
execute if score #random_type as_angle matches 0..1 if score #x_angle as_angle matches ..-1 run scoreboard players set #x_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #y_angle as_angle matches ..-1 run scoreboard players set #y_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #z_angle as_angle matches ..-1 run scoreboard players set #z_negative as_angle 1
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle
# small angle #random_type=0
execute if score #random_type as_angle matches 0 run scoreboard players operation #x_angle as_angle %= #var30000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #y_angle as_angle %= #var30000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #z_angle as_angle %= #var30000 as_angle
# med angle #random_type=1
execute if score #random_type as_angle matches 1 run scoreboard players operation #x_angle as_angle %= #var60000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #y_angle as_angle %= #var60000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #z_angle as_angle %= #var60000 as_angle
# extreme angle #random_type=2 (no modulo)
# reversed negative
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle

View File

@ -0,0 +1,8 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result storage customizable_armor_stands:pose_storage Pose.LeftArm[0] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_arm_x" }].Amount 1000
execute store result storage customizable_armor_stands:pose_storage Pose.LeftArm[1] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_arm_y" }].Amount 1000
execute store result storage customizable_armor_stands:pose_storage Pose.LeftArm[2] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_arm_z" }].Amount 1000

View File

@ -0,0 +1,12 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result score #x_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_leg_x" }].Amount 1000
execute store result score #y_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_leg_y" }].Amount 1000
execute store result score #z_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"left_leg_z" }].Amount 1000
function as:randomizer/left_leg_angle
execute store result storage customizable_armor_stands:pose_storage Pose.LeftLeg[0] float 0.001 run scoreboard players get #x_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.LeftLeg[1] float 0.001 run scoreboard players get #y_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.LeftLeg[2] float 0.001 run scoreboard players get #z_angle as_angle

View File

@ -0,0 +1,37 @@
#
# Description: adjusts probability
# Called by: as:randomizer/left_leg
# Entity @s: temp armor stand
#
scoreboard players set #x_negative as_angle 0
scoreboard players set #y_negative as_angle 0
scoreboard players set #z_negative as_angle 0
scoreboard players set #random_type as_angle 0
execute if predicate as:random_chance_30 run scoreboard players set #random_type as_angle 1
execute if score #random_type as_angle matches 1 if predicate as:random_chance_50 run scoreboard players set #random_type as_angle 2
# crossing reduction
scoreboard players set #no_crossing as_angle 0
execute if predicate as:random_chance_85 run scoreboard players set #no_crossing as_angle 1
#execute if score #no_crossing as_angle matches 1 if score #x_angle as_angle matches 10000..170000 run scoreboard players operation #x_angle as_angle -= #var180000 as_angle
execute if score #no_crossing as_angle matches 1 if score #y_angle as_angle matches 10000..170000 run scoreboard players operation #y_angle as_angle -= #var180000 as_angle
execute if score #no_crossing as_angle matches 1 if score #z_angle as_angle matches 10000..170000 run scoreboard players operation #z_angle as_angle -= #var180000 as_angle
# negative modulo
execute if score #random_type as_angle matches 0..1 if score #x_angle as_angle matches ..-1 run scoreboard players set #x_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #y_angle as_angle matches ..-1 run scoreboard players set #y_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #z_angle as_angle matches ..-1 run scoreboard players set #z_negative as_angle 1
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle
# small angle #random_type=0
execute if score #random_type as_angle matches 0 run scoreboard players operation #x_angle as_angle %= #var45000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #y_angle as_angle %= #var45000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #z_angle as_angle %= #var45000 as_angle
# med angle #random_type=1
execute if score #random_type as_angle matches 1 run scoreboard players operation #x_angle as_angle %= #var90000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #y_angle as_angle %= #var90000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #z_angle as_angle %= #var90000 as_angle
# extreme angle #random_type=2 (no modulo)
# reversed negative
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle

View File

@ -0,0 +1,8 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result storage customizable_armor_stands:pose_storage Pose.RightArm[0] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_arm_x" }].Amount 1000
execute store result storage customizable_armor_stands:pose_storage Pose.RightArm[1] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_arm_y" }].Amount 1000
execute store result storage customizable_armor_stands:pose_storage Pose.RightArm[2] float 0.001 run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_arm_z" }].Amount 1000

View File

@ -0,0 +1,12 @@
#
# Description: Randomizes appendage rotation
# Called by: as:trigger/random_pose
# Entity @s: temp armor stand
#
execute store result score #x_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_leg_x" }].Amount 1000
execute store result score #y_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_leg_y" }].Amount 1000
execute store result score #z_angle as_angle run data get entity @s ArmorItems[3].tag.AttributeModifiers[{ "Name":"right_leg_z" }].Amount 1000
function as:randomizer/right_leg_angle
execute store result storage customizable_armor_stands:pose_storage Pose.RightLeg[0] float 0.001 run scoreboard players get #x_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.RightLeg[1] float 0.001 run scoreboard players get #y_angle as_angle
execute store result storage customizable_armor_stands:pose_storage Pose.RightLeg[2] float 0.001 run scoreboard players get #z_angle as_angle

View File

@ -0,0 +1,37 @@
#
# Description: adjusts probability
# Called by: as:randomizer/right_leg
# Entity @s: temp armor stand
#
scoreboard players set #x_negative as_angle 0
scoreboard players set #y_negative as_angle 0
scoreboard players set #z_negative as_angle 0
scoreboard players set #random_type as_angle 0
execute if predicate as:random_chance_30 run scoreboard players set #random_type as_angle 1
execute if score #random_type as_angle matches 1 if predicate as:random_chance_50 run scoreboard players set #random_type as_angle 2
# crossing reduction
scoreboard players set #no_crossing as_angle 0
execute if predicate as:random_chance_85 run scoreboard players set #no_crossing as_angle 1
#execute if score #no_crossing as_angle matches 1 if score #x_angle as_angle matches -170000..-10000 run scoreboard players operation #x_angle as_angle += #var180000 as_angle
execute if score #no_crossing as_angle matches 1 if score #y_angle as_angle matches -170000..-10000 run scoreboard players operation #y_angle as_angle += #var180000 as_angle
execute if score #no_crossing as_angle matches 1 if score #z_angle as_angle matches -170000..-10000 run scoreboard players operation #z_angle as_angle += #var180000 as_angle
# negative modulo
execute if score #random_type as_angle matches 0..1 if score #x_angle as_angle matches ..-1 run scoreboard players set #x_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #y_angle as_angle matches ..-1 run scoreboard players set #y_negative as_angle 1
execute if score #random_type as_angle matches 0..1 if score #z_angle as_angle matches ..-1 run scoreboard players set #z_negative as_angle 1
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle
# small angle #random_type=0
execute if score #random_type as_angle matches 0 run scoreboard players operation #x_angle as_angle %= #var45000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #y_angle as_angle %= #var45000 as_angle
execute if score #random_type as_angle matches 0 run scoreboard players operation #z_angle as_angle %= #var45000 as_angle
# med angle #random_type=1
execute if score #random_type as_angle matches 1 run scoreboard players operation #x_angle as_angle %= #var90000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #y_angle as_angle %= #var90000 as_angle
execute if score #random_type as_angle matches 1 run scoreboard players operation #z_angle as_angle %= #var90000 as_angle
# extreme angle #random_type=2 (no modulo)
# reversed negative
execute if score #x_negative as_angle matches 1 run scoreboard players operation #x_angle as_angle *= #var-1 as_angle
execute if score #y_negative as_angle matches 1 run scoreboard players operation #y_angle as_angle *= #var-1 as_angle
execute if score #z_negative as_angle matches 1 run scoreboard players operation #z_angle as_angle *= #var-1 as_angle

View File

@ -0,0 +1,19 @@
#
# Description: Nudge postion of armor stand relative to player and aligned to the world grid
# Called by: as:trigger/position_relative
# Entity @s: armor stand
#
# X/Left/Right
execute if entity @p[tag=as_selected,scores={as_trigger=1100}] run tp @s ^-0.5 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1101}] run tp @s ^-0.1875 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1102}] run tp @s ^-0.0625 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1103}] run tp @s ^0.0625 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1104}] run tp @s ^0.1875 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1105}] run tp @s ^0.5 ^ ^
# Z/Forward/backward
execute if entity @p[tag=as_selected,scores={as_trigger=1106}] run tp @s ^ ^ ^-0.5
execute if entity @p[tag=as_selected,scores={as_trigger=1107}] run tp @s ^ ^ ^-0.1875
execute if entity @p[tag=as_selected,scores={as_trigger=1108}] run tp @s ^ ^ ^-0.0625
execute if entity @p[tag=as_selected,scores={as_trigger=1109}] run tp @s ^ ^ ^0.0625
execute if entity @p[tag=as_selected,scores={as_trigger=1110}] run tp @s ^ ^ ^0.1875
execute if entity @p[tag=as_selected,scores={as_trigger=1111}] run tp @s ^ ^ ^0.5

View File

@ -0,0 +1,26 @@
#
# Description: Nudge postion of armor stand relative to player
# Called by: as:trigger/position_relative
# Entity @s: armor stand
#
# X/Left/Right
execute if entity @p[tag=as_selected,scores={as_trigger=1112}] run tp @s ^-0.5 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1113}] run tp @s ^-0.1875 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1114}] run tp @s ^-0.0625 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1115}] run tp @s ^0.0625 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1116}] run tp @s ^0.1875 ^ ^
execute if entity @p[tag=as_selected,scores={as_trigger=1117}] run tp @s ^0.5 ^ ^
# Y/Up/Down
execute if entity @p[tag=as_selected,scores={as_trigger=1118}] run tp @s ^ ^-0.5 ^
execute if entity @p[tag=as_selected,scores={as_trigger=1119}] run tp @s ^ ^-0.1875 ^
execute if entity @p[tag=as_selected,scores={as_trigger=1120}] run tp @s ^ ^-0.0625 ^
execute if entity @p[tag=as_selected,scores={as_trigger=1121}] run tp @s ^ ^0.0625 ^
execute if entity @p[tag=as_selected,scores={as_trigger=1122}] run tp @s ^ ^0.1875 ^
execute if entity @p[tag=as_selected,scores={as_trigger=1123}] run tp @s ^ ^0.5 ^
# Z/Forward/backward
execute if entity @p[tag=as_selected,scores={as_trigger=1124}] run tp @s ^ ^ ^-0.5
execute if entity @p[tag=as_selected,scores={as_trigger=1125}] run tp @s ^ ^ ^-0.1875
execute if entity @p[tag=as_selected,scores={as_trigger=1126}] run tp @s ^ ^ ^-0.0625
execute if entity @p[tag=as_selected,scores={as_trigger=1127}] run tp @s ^ ^ ^0.0625
execute if entity @p[tag=as_selected,scores={as_trigger=1128}] run tp @s ^ ^ ^0.1875
execute if entity @p[tag=as_selected,scores={as_trigger=1129}] run tp @s ^ ^ ^0.5

View File

@ -0,0 +1,8 @@
#
# Description: Replace titled book with proper command book
# Called by: as:tick
# Entity @s: Player
#
# Replaces the written book from the players mainhand
#
loot replace entity @s weapon.mainhand loot as:book

View File

@ -0,0 +1,11 @@
#
# Description: Seals armor stand
# Called by: as:trigger/lock
# Entity @s: player - mod
#
execute if entity @s[tag=!as_chat] if entity @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run title @s actionbar {"text":"Armor stand sealed","color":"dark_green"}
execute if entity @s[tag=as_chat] if entity @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run tellraw @s {"text":"<Stick_God> Armor stand sealed","color":"dark_green"}
execute as @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run effect give @s minecraft:glowing 1
execute as @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run data merge entity @s {Invulnerable:1b,DisabledSlots:4144959}
execute as @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run tag @s add as_locked
execute as @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run tag @s add as_sealed

View File

@ -0,0 +1,11 @@
#
# Description: Unseals sealed armor stand
# Called by: as:trigger/lock
# Entity @s: player - mod
#
execute if entity @s[tag=!as_chat] if entity @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run title @s actionbar {"text":"Armor stand unsealed","color":"dark_green"}
execute if entity @s[tag=as_chat] if entity @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run tellraw @p {"text":"<Stick_God> Armor stand unsealed","color":"dark_green"}
execute as @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run effect give @s minecraft:glowing 1
execute as @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run data merge entity @s {Invulnerable:0b,DisabledSlots:0}
execute as @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run tag @s remove as_locked
execute as @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run tag @s remove as_sealed

View File

@ -0,0 +1,6 @@
#
# Description: Check for players with trigger score set
# Called by: #minecraft:tick
# Entity @s: none
#
execute as @a[scores={as_trigger=1..}] at @s run function as:trigger

View File

@ -0,0 +1,13 @@
#
# Description: Summon marker area effect cloud for shrine
# Called by: player
# Entity @s: player
#
# Summon AEC
#
execute align xyz run summon area_effect_cloud ~0.5 ~ ~0.5 {Duration:2147000000,Radius:0.0,Tags:["as_shrine"],Particle:"minecraft:underwater"}
#
# Store coordinates of shrine
#
execute store result score #as_shrine_x as_help run data get entity @e[type=minecraft:area_effect_cloud,tag=as_shrine,distance=..3,limit=1] Pos[0] 1
execute store result score #as_shrine_z as_help run data get entity @e[type=minecraft:area_effect_cloud,tag=as_shrine,distance=..3,limit=1] Pos[2] 1

View File

@ -0,0 +1,12 @@
#
# Description: Display shrine particles and give book
# Called by: as:tick
# Entity @s: Shrine marker area effect cloud
#
# Particle at shrine position
#
particle minecraft:enchant ~ ~ ~ 0.5 0.5 0.5 0.25 5
#
# Give book to nearby players if they do not have it already
#
execute as @a[distance=..1.5,nbt=!{Inventory:[{id:"minecraft:written_book",tag:{datapack:"ArmourStatuesV2"}}]}] at @s run function as:give

View File

@ -0,0 +1,13 @@
#
# Description: Remove marker area effect cloud
# Called by: player
# Entity @s: player
#
# If shrine AEC is within range, reset shrine coordinates
#
execute if entity @e[type=area_effect_cloud,tag=as_shrine,distance=..3] run scoreboard players reset #as_shrine_x as_help
execute if entity @e[type=area_effect_cloud,tag=as_shrine,distance=..3] run scoreboard players reset #as_shrine_z as_help
#
# Remove AEC
#
kill @e[type=area_effect_cloud,tag=as_shrine,distance=..3,sort=nearest,limit=1]

View File

@ -0,0 +1,9 @@
#
# Description: Copies player book from mainhand or offhand into storage
# Called by: as_statue:trigger\copy as_statue:trigger\paste
# Entity @s: player
#
# Temp storage to copy
#
execute if entity @s[nbt={SelectedItem:{id:"minecraft:written_book", tag:{datapack:"ArmourStatuesV2"}}}] run data modify storage customizable_armor_stands:book_storage SavedItem set from entity @s SelectedItem
execute if entity @s[nbt={Inventory:[{id:"minecraft:written_book", Slot:-106b, tag:{datapack:"ArmourStatuesV2" }}]}] unless entity @s[nbt={SelectedItem:{id:"minecraft:written_book", tag:{datapack:"ArmourStatuesV2"}}}] run data modify storage customizable_armor_stands:book_storage SavedItem set from entity @s Inventory[{Slot:-106b}]

View File

@ -0,0 +1,22 @@
#
# Description: Copies stored book from storage into mainhand or offhand
# Called by: as_statue:trigger\copy
# Entity @s: player
#
# Copies data to a temp pig
#
summon minecraft:pig ~ 0 ~ {DeathLootTable:"as:replace", Invulnerable:1b, NoGravity:1b, Silent:1b, ActiveEffects:[{Id:14,Amplifier:0,Duration:2147483647}], NoAI:1b, PersistenceRequired:1b, Tags:["as_temp"], HandItems:[{id:"minecraft:stone_button", Count:1b, tag:{ Enchantments:[{ lvl:1s, id:"minecraft:looting"} ]}},{}] }
#
data modify entity @e[tag=as_temp, type=minecraft:pig, sort=nearest, limit=1] HandItems[1] set from storage customizable_armor_stands:book_storage SavedItem
#
# Copies count to looting for book count
#
execute store result entity @e[tag=as_temp, type=minecraft:pig, sort=nearest, limit=1] HandItems[0].tag.Enchantments[0].lvl short 1 run data get storage customizable_armor_stands:book_storage SavedItem.Count
#
execute if entity @s[nbt={SelectedItem:{id:"minecraft:written_book", tag:{datapack:"ArmourStatuesV2"}}}] as @e[tag=as_temp, type=minecraft:pig, limit=1,sort=nearest] run loot replace entity @p[tag=as_selected] weapon.mainhand kill @s
execute if entity @s[nbt={Inventory:[{id:"minecraft:written_book", Slot:-106b, tag:{datapack:"ArmourStatuesV2"}}]}] unless entity @s[nbt={SelectedItem:{id:"minecraft:written_book", tag:{datapack:"ArmourStatuesV2"}}}] as @e[tag=as_temp, type=minecraft:pig, sort=nearest, limit=1] run loot replace entity @p[tag=as_selected] weapon.offhand kill @s
#
# Kills temp pig
#
tp @e[type=minecraft:pig, tag=as_temp] ~ -300 ~
kill @e[type=minecraft:pig, tag=as_temp]

View File

@ -0,0 +1,16 @@
#
# Description: Processing every tick
# Called by: #main:tick
# Entity @s: None
#
# Check for players at the particle shrine
#
execute as @e[tag=as_shrine] at @s run function as:shrine/main
#
# If book crafting is enabled, check for players holding a written book titled "Statues"
#
execute if data storage customizable_armor_stands:settings as_admin{book_craft:"Enabled"} as @a[nbt={SelectedItem:{id:"minecraft:written_book",tag:{title:"Statues"}}}] run function as:replace_book
#
# Display help in chat and enable for all players
#
execute as @a[scores={as_help=1..}] at @s run function as:help

View File

@ -0,0 +1,91 @@
#
# Description: Apply changes to nearest armor stand according to the player's as_trigger score
# Called by: as:second
# Entity @s: player
#
# Tag the player and the nearest armor stand within three blocks
#
tag @s add as_selected
tag @e[type=armor_stand,distance=..3,tag=!as_locked,sort=nearest,limit=1,nbt=!{Marker:1b},nbt=!{Invulnerable:1b}] add as_selected
#
# Copy the trigger score to the selected armor stand
#
scoreboard players operation @e[type=armor_stand,tag=as_selected] as_trigger = @s as_trigger
#
# Give glowing effect for three seconds if checking target
#
execute if entity @s[scores={as_trigger=999}] as @e[type=armor_stand,tag=as_selected] run effect give @s minecraft:glowing 3
#
# armor stand settings
#
execute if entity @s[scores={as_trigger=1..12}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/settings
#
# Nudge position
#
execute if entity @s[scores={as_trigger=40..51}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/position
execute if entity @s[scores={as_trigger=101..112}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/position
execute if entity @s[scores={as_trigger=1100..1129}] as @e[type=armor_stand,tag=as_selected] at @s run function as:trigger/position_relative
#
# Adjust rotation
#
execute if entity @s[scores={as_trigger=52..57}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/rotation
execute if entity @s[scores={as_trigger=124..125}] as @e[type=armor_stand,tag=as_selected] at @s run function as:trigger/facing
#
# Pointing
#
execute if entity @s[scores={as_trigger=1160..1171}] as @e[type=armor_stand,tag=as_selected,nbt={Small:0b}] at @s run function as:trigger/pointing
execute if entity @s[scores={as_trigger=1160..1171}] as @e[type=armor_stand,tag=as_selected,nbt={Small:1b}] at @s run function as:trigger/pointing_small
#
# Change angle step size
#
execute if entity @s[scores={as_trigger=120}] run scoreboard players set @s as_angle 45
execute if entity @s[scores={as_trigger=121}] run scoreboard players set @s as_angle 15
execute if entity @s[scores={as_trigger=122}] run scoreboard players set @s as_angle 5
execute if entity @s[scores={as_trigger=123}] run scoreboard players set @s as_angle 1
execute if entity @s[scores={as_trigger=120..123},tag=!as_chat] run title @s actionbar [{"text":"Angle step set to ","color":"dark_green"},{"score":{"name":"@s","objective":"as_angle"},"color":"dark_green"},{"text":"\u00b0","color":"dark_green"}]
execute if entity @s[scores={as_trigger=120..123},tag=as_chat] run tellraw @s [{"text":"<Stick_God> Angle step set to ","color":"dark_green"},{"score":{"name":"@s","objective":"as_angle"},"color":"dark_green"},{"text":"\u00b0","color":"dark_green"}]
#
# Pose presets
#
execute if entity @s[scores={as_trigger=20..39}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/presets
execute if entity @s[scores={as_trigger=141..142}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/presets
execute if entity @s[scores={as_trigger=1150}] as @e[type=armor_stand,tag=as_selected] at @s run function as:trigger/random_pose
#
# Adjust pose
#
execute if entity @s[scores={as_trigger=60..95}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/adjust
#
# Mirror and flip
#
execute if entity @s[scores={as_trigger=131..134}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/mirror
execute if entity @s[scores={as_trigger=135}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/flip
#
# Auto alignment
#
execute if entity @s[scores={as_trigger=151..154}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/align
execute if entity @s[scores={as_trigger=155..156}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/rack
#
# Exchange slots
#
execute if entity @s[scores={as_trigger=161..162}] as @e[type=armor_stand,tag=as_selected] run function as:trigger/slots
#
# Copy and paste
#
execute if entity @s[scores={as_trigger=1004},predicate=as:book] as @e[type=armor_stand,tag=as_selected] run function as:trigger/copy
execute if entity @s[scores={as_trigger=1005},predicate=as:savedpose] unless entity @s[predicate=as:bothhands, predicate=!as:savedpose_mainhand] as @e[type=armor_stand,tag=as_selected] run function as:trigger/paste
#
# Lock and seal
#
execute if entity @s[scores={as_trigger=1000..1003}] run function as:trigger/lock
#
# Reset armor stand's trigger score and remove selected tag from player and armor stand
#
scoreboard players reset @e[type=armor_stand,tag=as_selected] as_trigger
tag @s remove as_selected
tag @e[type=armor_stand,tag=as_selected] remove as_selected
#
# Reset player's trigger score and re-enable
#
scoreboard players set @s as_trigger 0
scoreboard players enable @s as_trigger

View File

@ -0,0 +1,121 @@
#
# Description: Adjust armor stand pose
# Called by: as:trigger
# Entity @s: armor stand
#
# Apply bugfix for MC-80975
#
function as:bugfix
#
# Get angle step from player and scale by 1000
#
scoreboard players operation @s as_angle = @p as_angle
scoreboard players set #as_temp as_angle 1000
scoreboard players operation @s as_angle *= #as_temp as_angle
scoreboard players reset #as_temp as_angle
#
# Head: 60-65
#
execute if entity @s[scores={as_trigger=60..61}] store result score @s as_pose run data get entity @s Pose.Head[0] 1000
execute if entity @s[scores={as_trigger=60}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=61}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=60..61}] store result entity @s Pose.Head[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=62..63}] store result score @s as_pose run data get entity @s Pose.Head[1] 1000
execute if entity @s[scores={as_trigger=62}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=63}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=62..63}] store result entity @s Pose.Head[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=64..65}] store result score @s as_pose run data get entity @s Pose.Head[2] 1000
execute if entity @s[scores={as_trigger=64}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=65}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=64..65}] store result entity @s Pose.Head[2] float 0.001 run scoreboard players get @s as_pose
#
# Body: 66-71
#
execute if entity @s[scores={as_trigger=66..67}] store result score @s as_pose run data get entity @s Pose.Body[0] 1000
execute if entity @s[scores={as_trigger=66}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=67}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=66..67}] store result entity @s Pose.Body[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=68..69}] store result score @s as_pose run data get entity @s Pose.Body[1] 1000
execute if entity @s[scores={as_trigger=68}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=69}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=68..69}] store result entity @s Pose.Body[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=70..71}] store result score @s as_pose run data get entity @s Pose.Body[2] 1000
execute if entity @s[scores={as_trigger=70}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=71}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=70..71}] store result entity @s Pose.Body[2] float 0.001 run scoreboard players get @s as_pose
#
# Right Arm: 72-77
#
execute if entity @s[scores={as_trigger=72..73}] store result score @s as_pose run data get entity @s Pose.RightArm[0] 1000
execute if entity @s[scores={as_trigger=72}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=73}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=72..73}] store result entity @s Pose.RightArm[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=74..75}] store result score @s as_pose run data get entity @s Pose.RightArm[1] 1000
execute if entity @s[scores={as_trigger=74}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=75}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=74..75}] store result entity @s Pose.RightArm[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=76..77}] store result score @s as_pose run data get entity @s Pose.RightArm[2] 1000
execute if entity @s[scores={as_trigger=76}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=77}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=76..77}] store result entity @s Pose.RightArm[2] float 0.001 run scoreboard players get @s as_pose
#
# Left Arm: 78-83
#
execute if entity @s[scores={as_trigger=78..79}] store result score @s as_pose run data get entity @s Pose.LeftArm[0] 1000
execute if entity @s[scores={as_trigger=78}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=79}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=78..79}] store result entity @s Pose.LeftArm[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=80..81}] store result score @s as_pose run data get entity @s Pose.LeftArm[1] 1000
execute if entity @s[scores={as_trigger=80}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=81}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=80..81}] store result entity @s Pose.LeftArm[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=82..83}] store result score @s as_pose run data get entity @s Pose.LeftArm[2] 1000
execute if entity @s[scores={as_trigger=82}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=83}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=82..83}] store result entity @s Pose.LeftArm[2] float 0.001 run scoreboard players get @s as_pose
#
# Right Leg: 84-89
#
execute if entity @s[scores={as_trigger=84..85}] store result score @s as_pose run data get entity @s Pose.RightLeg[0] 1000
execute if entity @s[scores={as_trigger=84}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=85}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=84..85}] store result entity @s Pose.RightLeg[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=86..87}] store result score @s as_pose run data get entity @s Pose.RightLeg[1] 1000
execute if entity @s[scores={as_trigger=86}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=87}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=86..87}] store result entity @s Pose.RightLeg[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=88..89}] store result score @s as_pose run data get entity @s Pose.RightLeg[2] 1000
execute if entity @s[scores={as_trigger=88}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=89}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=88..89}] store result entity @s Pose.RightLeg[2] float 0.001 run scoreboard players get @s as_pose
#
# Left Leg: 90-95
#
execute if entity @s[scores={as_trigger=90..91}] store result score @s as_pose run data get entity @s Pose.LeftLeg[0] 1000
execute if entity @s[scores={as_trigger=90}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=91}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=90..91}] store result entity @s Pose.LeftLeg[0] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=92..93}] store result score @s as_pose run data get entity @s Pose.LeftLeg[1] 1000
execute if entity @s[scores={as_trigger=92}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=93}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=92..93}] store result entity @s Pose.LeftLeg[1] float 0.001 run scoreboard players get @s as_pose
#
execute if entity @s[scores={as_trigger=94..95}] store result score @s as_pose run data get entity @s Pose.LeftLeg[2] 1000
execute if entity @s[scores={as_trigger=94}] run scoreboard players operation @s as_pose += @s as_angle
execute if entity @s[scores={as_trigger=95}] run scoreboard players operation @s as_pose -= @s as_angle
execute if entity @s[scores={as_trigger=94..95}] store result entity @s Pose.LeftLeg[2] float 0.001 run scoreboard players get @s as_pose
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,28 @@
#
# Description: Align held block or item with supporting surface
# Called by: as:trigger
# Entity @s: armor stand
#
# Align block to surface
#
execute if entity @s[scores={as_trigger=151}] run data merge entity @s {ShowArms:1b,NoGravity:1b,Invisible:1b,Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-15.0f,135.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=151}] at @s run tp @s ^0.5725 ^-0.655 ^0.352
#
# Align item to surface (upright)
#
execute if entity @s[scores={as_trigger=152}] run data merge entity @s {ShowArms:1b,NoGravity:1b,Invisible:1b,Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-90.0f,0.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=152}] at @s run tp @s ^0.36 ^-1.41 ^-0.5625
#
# Align item to surface (flat)
#
execute if entity @s[scores={as_trigger=153}] run data merge entity @s {ShowArms:1b,NoGravity:1b,Invisible:1b,Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[0.0f,0.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=153}] at @s run tp @s ^0.385 ^-0.78 ^-0.295
#
# Align tool to surface (flat)
#
execute if entity @s[scores={as_trigger=154}] run data merge entity @s {ShowArms:1b,NoGravity:1b,Invisible:1b,Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-10.0f,0.0f,-90.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=154}] at @s run tp @s ^-0.17 ^-1.285 ^-0.44
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,21 @@
#
# Description: Copies selected armor stand settings and pose to the book
# Called by: as_statue:trigger
# Entity @s: armor stand
#
execute as @p[tag=as_selected] run function as:storage_in
#
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose set value {Pose:{}, NoBasePlate:0b, ShowArms:0b, Small:0b, Invisible:0b, CustomNameVisible:0b}
#
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.Pose set from entity @s Pose
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.NoBasePlate set from entity @s NoBasePlate
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.ShowArms set from entity @s ShowArms
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.Small set from entity @s Small
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.Invisible set from entity @s Invisible
data modify storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.CustomNameVisible set from entity @s CustomNameVisible
#
execute as @p[tag=as_selected] run function as:storage_out
#
title @a[tag=as_selected,tag=!as_chat] actionbar {"text":"Pose and settings copied to the book","color":"dark_green"}
tellraw @a[tag=as_selected,tag=as_chat] {"text":"<Stick_God> Pose and settings copied to the book","color":"dark_green"}
effect give @s minecraft:glowing 1

View File

@ -0,0 +1,20 @@
#
# Description: Adjust rotation of armor stand
# Called by: as:trigger
# Entity @s: armor stand
#
# Note: The function is being executed at the location of the armor stand so @p is not necessarily the original player
#
# Rotate the armor stand to face the selected player
#
tp @s ~ ~ ~ facing entity @a[distance=..3,tag=as_selected,limit=1]
#
# If stand is required to face away from the player, add 180 to the rotation
#
execute if entity @s[scores={as_trigger=125}] store result score @s as_pose run data get entity @s Rotation[0] 1
execute if entity @s[scores={as_trigger=125}] run scoreboard players add @s as_pose 180
execute if entity @s[scores={as_trigger=125}] store result entity @s Rotation[0] float 1 run scoreboard players get @s as_pose
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,64 @@
#
# Description: Flip armor stand's pose left to right
# Called by: as:trigger
# Entity @s: armor stand
#
# Apply bugfix for MC-80975
#
function as:bugfix
#
# Arms
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightArm[0] 1000
execute store result score @s as_pose run data get entity @s Pose.LeftArm[0] 1000
execute store result entity @s Pose.RightArm[0] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftArm[0] float 0.001 run scoreboard players get #as_temp as_pose
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightArm[1] -1000
execute store result score @s as_pose run data get entity @s Pose.LeftArm[1] -1000
execute store result entity @s Pose.RightArm[1] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftArm[1] float 0.001 run scoreboard players get #as_temp as_pose
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightArm[2] -1000
execute store result score @s as_pose run data get entity @s Pose.LeftArm[2] -1000
execute store result entity @s Pose.RightArm[2] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftArm[2] float 0.001 run scoreboard players get #as_temp as_pose
#
# Legs
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightLeg[0] 1000
execute store result score @s as_pose run data get entity @s Pose.LeftLeg[0] 1000
execute store result entity @s Pose.RightLeg[0] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftLeg[0] float 0.001 run scoreboard players get #as_temp as_pose
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightLeg[1] -1000
execute store result score @s as_pose run data get entity @s Pose.LeftLeg[1] -1000
execute store result entity @s Pose.RightLeg[1] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftLeg[1] float 0.001 run scoreboard players get #as_temp as_pose
#
execute store result score #as_temp as_pose run data get entity @s Pose.RightLeg[2] -1000
execute store result score @s as_pose run data get entity @s Pose.LeftLeg[2] -1000
execute store result entity @s Pose.RightLeg[2] float 0.001 run scoreboard players get @s as_pose
execute store result entity @s Pose.LeftLeg[2] float 0.001 run scoreboard players get #as_temp as_pose
#
# Head
#
execute store result score @s as_pose run data get entity @s Pose.Head[1] -1000
execute store result entity @s Pose.Head[1] float 0.001 run scoreboard players get @s as_pose
execute store result score @s as_pose run data get entity @s Pose.Head[2] -1000
execute store result entity @s Pose.Head[2] float 0.001 run scoreboard players get @s as_pose
#
# Body
#
execute store result score @s as_pose run data get entity @s Pose.Body[1] -1000
execute store result entity @s Pose.Body[1] float 0.001 run scoreboard players get @s as_pose
execute store result score @s as_pose run data get entity @s Pose.Body[2] -1000
execute store result entity @s Pose.Body[2] float 0.001 run scoreboard players get @s as_pose
#
# Clear temporary dummy player
#
scoreboard players reset #as_temp as_pose
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,16 @@
#
# Description: Apply or remove as_sealed and/or as_locked tags
# Called by: as:trigger
# Entity @s: Player
#
# Locking prevents the book from being used to modify the stand and disables the equipment slots to prevent accidental interaction
#
execute if entity @s[scores={as_trigger=1000}] as @e[type=armor_stand,tag=as_selected] run function as:locking/lock
#
execute if entity @s[scores={as_trigger=1001}] as @e[type=armor_stand,distance=..3,tag=as_locked,tag=!as_sealed,sort=nearest,limit=1,nbt=!{Marker:1b},nbt=!{Invulnerable:1b}] run function as:locking/unlock
#
# Sealing can only be used in creative mode and makes the armor stand invulnerable as well as locking it
#
execute if entity @s[scores={as_trigger=1002},gamemode=creative] if entity @e[type=armor_stand,distance=..3,tag=!as_sealed,sort=nearest,limit=1] run function as:sealing/seal
#
execute if entity @s[scores={as_trigger=1003},gamemode=creative] if entity @e[type=armor_stand,distance=..3,tag=as_sealed,sort=nearest,limit=1] run function as:sealing/seal

View File

@ -0,0 +1,48 @@
#
# Description: Mirror armor stand's arms or legs
# Called by: as:trigger
# Entity @s: armor stand
#
# Apply bugfix for MC-80975
#
function as:bugfix
#
# Mirror arms left to right
#
execute if entity @s[scores={as_trigger=131}] store result score @s as_pose run data get entity @s Pose.LeftArm[0] 1000
execute if entity @s[scores={as_trigger=131}] store result entity @s Pose.RightArm[0] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=131}] store result score @s as_pose run data get entity @s Pose.LeftArm[1] -1000
execute if entity @s[scores={as_trigger=131}] store result entity @s Pose.RightArm[1] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=131}] store result score @s as_pose run data get entity @s Pose.LeftArm[2] -1000
execute if entity @s[scores={as_trigger=131}] store result entity @s Pose.RightArm[2] float 0.001 run scoreboard players get @s as_pose
#
# Mirror arms right to left
#
execute if entity @s[scores={as_trigger=132}] store result score @s as_pose run data get entity @s Pose.RightArm[0] 1000
execute if entity @s[scores={as_trigger=132}] store result entity @s Pose.LeftArm[0] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=132}] store result score @s as_pose run data get entity @s Pose.RightArm[1] -1000
execute if entity @s[scores={as_trigger=132}] store result entity @s Pose.LeftArm[1] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=132}] store result score @s as_pose run data get entity @s Pose.RightArm[2] -1000
execute if entity @s[scores={as_trigger=132}] store result entity @s Pose.LeftArm[2] float 0.001 run scoreboard players get @s as_pose
#
# Mirror legs left to right
#
execute if entity @s[scores={as_trigger=133}] store result score @s as_pose run data get entity @s Pose.LeftLeg[0] 1000
execute if entity @s[scores={as_trigger=133}] store result entity @s Pose.RightLeg[0] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=133}] store result score @s as_pose run data get entity @s Pose.LeftLeg[1] -1000
execute if entity @s[scores={as_trigger=133}] store result entity @s Pose.RightLeg[1] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=133}] store result score @s as_pose run data get entity @s Pose.LeftLeg[2] -1000
execute if entity @s[scores={as_trigger=133}] store result entity @s Pose.RightLeg[2] float 0.001 run scoreboard players get @s as_pose
#
# Mirror legs right to left
#
execute if entity @s[scores={as_trigger=134}] store result score @s as_pose run data get entity @s Pose.RightLeg[0] 1000
execute if entity @s[scores={as_trigger=134}] store result entity @s Pose.LeftLeg[0] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=134}] store result score @s as_pose run data get entity @s Pose.RightLeg[1] -1000
execute if entity @s[scores={as_trigger=134}] store result entity @s Pose.LeftLeg[1] float 0.001 run scoreboard players get @s as_pose
execute if entity @s[scores={as_trigger=134}] store result score @s as_pose run data get entity @s Pose.RightLeg[2] -1000
execute if entity @s[scores={as_trigger=134}] store result entity @s Pose.LeftLeg[2] float 0.001 run scoreboard players get @s as_pose
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,16 @@
#
# Description: Paste armor stand settings and pose from book
# Called by: as_statue:trigger
# Entity @s: armor stand
#
execute as @p[tag=as_selected] run function as:storage_in
#
data modify entity @s {} merge from storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose
data modify entity @s Pose set from storage customizable_armor_stands:book_storage SavedItem.tag.SavedPose.Pose
#
title @a[tag=as_selected,tag=!as_chat] actionbar {"text":"Settings and pose pasted from the book","color":"dark_green"}
tellraw @a[tag=as_selected,tag=as_chat] {"text":"<Stick_God> Settings and pose pasted from the book","color":"dark_green"}
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,77 @@
#
# Description: Points an appendage at the player
# Called by: as:trigger
# Entity @s: armor stand
#
# Summons temp armor stand
#
# Head
execute if score @s as_trigger matches 1160 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1166 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Body
execute if score @s as_trigger matches 1161 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1167 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Right Arm
execute if score @s as_trigger matches 1162 rotated ~ 0 run summon minecraft:armor_stand ^-0.34375 ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1168 rotated ~ 0 run summon minecraft:armor_stand ^-0.34375 ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Left Arm
execute if score @s as_trigger matches 1163 rotated ~ 0 run summon minecraft:armor_stand ^0.34375 ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1169 rotated ~ 0 run summon minecraft:armor_stand ^0.34375 ^-0.1875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Right Leg
execute if score @s as_trigger matches 1164 rotated ~ 0 run summon minecraft:armor_stand ^-0.125 ^-0.875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1170 rotated ~ 0 run summon minecraft:armor_stand ^-0.125 ^-0.875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Left Leg
execute if score @s as_trigger matches 1165 rotated ~ 0 run summon minecraft:armor_stand ^0.125 ^-0.875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1171 rotated ~ 0 run summon minecraft:armor_stand ^0.125 ^-0.875 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
#
execute if score @s as_trigger matches 1160..1165 as @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] at @s positioned ~ ~1.625 ~ run tp @s ~ ~ ~ facing entity @p[tag=as_selected] eyes
execute if score @s as_trigger matches 1166..1171 as @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] at @s positioned ~ ~1.625 ~ run tp @s ~ ~ ~ facing entity @p[tag=as_selected] feet
#
execute store result score #temp_as_x as_angle run data get entity @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] Rotation[0] 1000
execute store result score #temp_as_z as_angle run data get entity @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] Rotation[1] 1000
execute store result score #selected_as_x as_angle run data get entity @s Rotation[0] 1000
execute store result score #selected_as_z as_angle run data get entity @s Rotation[1] 1000
scoreboard players operation #temp_as_x as_angle -= #selected_as_x as_angle
# Appendage offset
scoreboard players operation #temp_as_z as_angle -= #var90000 as_angle
# Head rotation offset
execute if score @s as_trigger matches 1160 run scoreboard players operation #temp_as_z as_angle += #var180000 as_angle
execute if score @s as_trigger matches 1166 run scoreboard players operation #temp_as_z as_angle += #var180000 as_angle
#
execute if score #temp_as_x as_angle matches 180000.. run scoreboard players operation #temp_as_x as_angle -= #var360000 as_angle
execute if score #temp_as_x as_angle matches ..-180000 run scoreboard players operation #temp_as_x as_angle += #var360000 as_angle
execute if score #temp_as_x as_angle matches 90000.. run scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
execute if score #temp_as_x as_angle matches ..-90000 run scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
execute if score #temp_as_x as_angle matches 90000.. run scoreboard players operation #temp_as_x as_angle -= #var180000 as_angle
execute if score #temp_as_x as_angle matches ..-90000 run scoreboard players operation #temp_as_x as_angle += #var180000 as_angle
#scoreboard players operation #temp_as_x as_angle *= #var-1 as_angle
#scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
data modify storage customizable_armor_stands:appendage appendage set value [0f,0f,0f]
execute store result storage customizable_armor_stands:appendage appendage[1] float 0.001 run scoreboard players get #temp_as_x as_angle
execute store result storage customizable_armor_stands:appendage appendage[0] float 0.001 run scoreboard players get #temp_as_z as_angle
# Head
execute if score @s as_trigger matches 1160 run data modify entity @s Pose.Head set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1166 run data modify entity @s Pose.Head set from storage customizable_armor_stands:appendage appendage
# Body
execute if score @s as_trigger matches 1161 run data modify entity @s Pose.Body set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1167 run data modify entity @s Pose.Body set from storage customizable_armor_stands:appendage appendage
# Right Arm
execute if score @s as_trigger matches 1162 run data modify entity @s Pose.RightArm set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1168 run data modify entity @s Pose.RightArm set from storage customizable_armor_stands:appendage appendage
# Left Arm
execute if score @s as_trigger matches 1163 run data modify entity @s Pose.LeftArm set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1169 run data modify entity @s Pose.LeftArm set from storage customizable_armor_stands:appendage appendage
# Right Leg
execute if score @s as_trigger matches 1164 run data modify entity @s Pose.RightLeg set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1170 run data modify entity @s Pose.RightLeg set from storage customizable_armor_stands:appendage appendage
# Left Leg
execute if score @s as_trigger matches 1165 run data modify entity @s Pose.LeftLeg set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1171 run data modify entity @s Pose.LeftLeg set from storage customizable_armor_stands:appendage appendage
#
# Kills temp armor stand
#
kill @e[type=armor_stand,tag=as_temp_armor_stand]
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,77 @@
#
# Description: Points an appendage at the player for small armor stands
# Called by: as:trigger
# Entity @s: armor stand
#
# Summons temp armor stand
#
# Head
execute if score @s as_trigger matches 1160 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1166 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Body
execute if score @s as_trigger matches 1161 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.25 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1167 rotated ~ 0 run summon minecraft:armor_stand ^ ^-0.25 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Right Arm
execute if score @s as_trigger matches 1162 rotated ~ 0 run summon minecraft:armor_stand ^-0.171875 ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1168 rotated ~ 0 run summon minecraft:armor_stand ^-0.171875 ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Left Arm
execute if score @s as_trigger matches 1163 rotated ~ 0 run summon minecraft:armor_stand ^0.171875 ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1169 rotated ~ 0 run summon minecraft:armor_stand ^0.171875 ^-0.28125 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Right Leg
execute if score @s as_trigger matches 1164 rotated ~ 0 run summon minecraft:armor_stand ^-0.0625 ^-0.625 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1170 rotated ~ 0 run summon minecraft:armor_stand ^-0.0625 ^-0.625 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
# Left Leg
execute if score @s as_trigger matches 1165 rotated ~ 0 run summon minecraft:armor_stand ^0.0625 ^-0.625 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
execute if score @s as_trigger matches 1171 rotated ~ 0 run summon minecraft:armor_stand ^0.0625 ^-0.625 ^ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
#
execute if score @s as_trigger matches 1160..1165 as @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] at @s positioned ~ ~1 ~ run tp @s ~ ~ ~ facing entity @p[tag=as_selected] eyes
execute if score @s as_trigger matches 1166..1171 as @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] at @s positioned ~ ~1 ~ run tp @s ~ ~ ~ facing entity @p[tag=as_selected] feet
#
execute store result score #temp_as_x as_angle run data get entity @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] Rotation[0] 1000
execute store result score #temp_as_z as_angle run data get entity @e[type=minecraft:armor_stand,limit=1,tag=as_temp_armor_stand] Rotation[1] 1000
execute store result score #selected_as_x as_angle run data get entity @s Rotation[0] 1000
execute store result score #selected_as_z as_angle run data get entity @s Rotation[1] 1000
scoreboard players operation #temp_as_x as_angle -= #selected_as_x as_angle
# Appendage offset
scoreboard players operation #temp_as_z as_angle -= #var90000 as_angle
# Head rotation offset
execute if score @s as_trigger matches 1160 run scoreboard players operation #temp_as_z as_angle += #var180000 as_angle
execute if score @s as_trigger matches 1166 run scoreboard players operation #temp_as_z as_angle += #var180000 as_angle
#
execute if score #temp_as_x as_angle matches 180000.. run scoreboard players operation #temp_as_x as_angle -= #var360000 as_angle
execute if score #temp_as_x as_angle matches ..-180000 run scoreboard players operation #temp_as_x as_angle += #var360000 as_angle
execute if score #temp_as_x as_angle matches 90000.. run scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
execute if score #temp_as_x as_angle matches ..-90000 run scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
execute if score #temp_as_x as_angle matches 90000.. run scoreboard players operation #temp_as_x as_angle -= #var180000 as_angle
execute if score #temp_as_x as_angle matches ..-90000 run scoreboard players operation #temp_as_x as_angle += #var180000 as_angle
#scoreboard players operation #temp_as_x as_angle *= #var-1 as_angle
#scoreboard players operation #temp_as_z as_angle *= #var-1 as_angle
data modify storage customizable_armor_stands:appendage appendage set value [0f,0f,0f]
execute store result storage customizable_armor_stands:appendage appendage[1] float 0.001 run scoreboard players get #temp_as_x as_angle
execute store result storage customizable_armor_stands:appendage appendage[0] float 0.001 run scoreboard players get #temp_as_z as_angle
# Head
execute if score @s as_trigger matches 1160 run data modify entity @s Pose.Head set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1166 run data modify entity @s Pose.Head set from storage customizable_armor_stands:appendage appendage
# Body
execute if score @s as_trigger matches 1161 run data modify entity @s Pose.Body set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1167 run data modify entity @s Pose.Body set from storage customizable_armor_stands:appendage appendage
# Right Arm
execute if score @s as_trigger matches 1162 run data modify entity @s Pose.RightArm set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1168 run data modify entity @s Pose.RightArm set from storage customizable_armor_stands:appendage appendage
# Left Arm
execute if score @s as_trigger matches 1163 run data modify entity @s Pose.LeftArm set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1169 run data modify entity @s Pose.LeftArm set from storage customizable_armor_stands:appendage appendage
# Right Leg
execute if score @s as_trigger matches 1164 run data modify entity @s Pose.RightLeg set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1170 run data modify entity @s Pose.RightLeg set from storage customizable_armor_stands:appendage appendage
# Left Leg
execute if score @s as_trigger matches 1165 run data modify entity @s Pose.LeftLeg set from storage customizable_armor_stands:appendage appendage
execute if score @s as_trigger matches 1171 run data modify entity @s Pose.LeftLeg set from storage customizable_armor_stands:appendage appendage
#
# Kills temp armor stand
#
kill @e[type=armor_stand,tag=as_temp_armor_stand]
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,35 @@
#
# Description: Nudge postion of armor stand
# Called by: as:trigger
# Entity @s: armor stand
#
# Trigger values 41, 42, 45, 46, 49 and 50 are redundant and kept for backwards compatibility
#
execute if entity @s[scores={as_trigger=40}] at @s run tp @s ~-0.5 ~ ~
execute if entity @s[scores={as_trigger=101}] at @s run tp @s ~-0.1875 ~ ~
execute if entity @s[scores={as_trigger=41}] at @s run tp @s ~-0.1 ~ ~
execute if entity @s[scores={as_trigger=102}] at @s run tp @s ~-0.0625 ~ ~
execute if entity @s[scores={as_trigger=103}] at @s run tp @s ~0.0625 ~ ~
execute if entity @s[scores={as_trigger=42}] at @s run tp @s ~0.1 ~ ~
execute if entity @s[scores={as_trigger=104}] at @s run tp @s ~0.1875 ~ ~
execute if entity @s[scores={as_trigger=43}] at @s run tp @s ~0.5 ~ ~
execute if entity @s[scores={as_trigger=44}] at @s run tp @s ~ ~-0.5 ~
execute if entity @s[scores={as_trigger=105}] at @s run tp @s ~ ~-0.1875 ~
execute if entity @s[scores={as_trigger=45}] at @s run tp @s ~ ~-0.1 ~
execute if entity @s[scores={as_trigger=106}] at @s run tp @s ~ ~-0.0625 ~
execute if entity @s[scores={as_trigger=107}] at @s run tp @s ~ ~0.0625 ~
execute if entity @s[scores={as_trigger=46}] at @s run tp @s ~ ~0.1 ~
execute if entity @s[scores={as_trigger=108}] at @s run tp @s ~ ~0.1875 ~
execute if entity @s[scores={as_trigger=47}] at @s run tp @s ~ ~0.5 ~
execute if entity @s[scores={as_trigger=48}] at @s run tp @s ~ ~ ~-0.5
execute if entity @s[scores={as_trigger=109}] at @s run tp @s ~ ~ ~-0.1875
execute if entity @s[scores={as_trigger=49}] at @s run tp @s ~ ~ ~-0.1
execute if entity @s[scores={as_trigger=110}] at @s run tp @s ~ ~ ~-0.0625
execute if entity @s[scores={as_trigger=111}] at @s run tp @s ~ ~ ~0.0625
execute if entity @s[scores={as_trigger=50}] at @s run tp @s ~ ~ ~0.1
execute if entity @s[scores={as_trigger=112}] at @s run tp @s ~ ~ ~0.1875
execute if entity @s[scores={as_trigger=51}] at @s run tp @s ~ ~ ~0.5
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,37 @@
#
# Description: Nudge postion of armor stand relative to the player
# Called by: as:trigger
# Entity @s: armor stand
#
# Summons temp armor stand
summon minecraft:armor_stand ~ ~ ~ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
tp @e[type=armor_stand,tag=as_temp_armor_stand] ~ ~ ~ facing entity @p[tag=as_selected]
#
# stores temp armor stand angle
#
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] store result score #temp_rotation as_pose run data get entity @e[type=armor_stand,tag=as_temp_armor_stand,limit=1] Rotation[0]
# Facing south
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches -45..45 rotated 0 0 run function as:relative_position_aligned_nudge
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches 316..360 rotated 0 0 run function as:relative_position_aligned_nudge
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches -360..-316 rotated 0 0 run function as:relative_position_aligned_nudge
# Facing West
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches 46..135 rotated 90 0 run function as:relative_position_aligned_nudge
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches -315..-226 rotated 90 0 run function as:relative_position_aligned_nudge
# Facing North
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches 136..225 rotated 180 0 run function as:relative_position_aligned_nudge
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches -225..-136 rotated 180 0 run function as:relative_position_aligned_nudge
# Facing East
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches 226..315 rotated 270 0 run function as:relative_position_aligned_nudge
execute if entity @p[tag=as_selected,scores={as_trigger=1100..1111}] if score #temp_rotation as_pose matches -135..-46 rotated 270 0 run function as:relative_position_aligned_nudge
#
# Relative nudge from player function
#
execute if entity @p[tag=as_selected,scores={as_trigger=1112..1129}] rotated as @e[type=armor_stand,tag=as_temp_armor_stand] run function as:relative_position_nudge
#
# Kills temp armor stand
#
kill @e[type=armor_stand,tag=as_temp_armor_stand]
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,32 @@
#
# Description: Put armor stand into a preset pose
# Called by: as:trigger
# Entity @s: armor stand
#
execute if entity @s[scores={as_trigger=20}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[0.0f,0.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=21}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[20.0f,0.0f,10.0f],LeftArm:[-20.0f,0.0f,-10.0f],RightLeg:[-20.0f,0.0f,0.0f],LeftLeg:[20.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=22}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-40.0f,0.0f,10.0f],LeftArm:[40.0f,0.0f,-10.0f],RightLeg:[40.0f,0.0f,0.0f],LeftLeg:[-40.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=23}] run data merge entity @s {Pose:{Head:[0.0f,20.0f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-90.0f,18.0f,0.0f],LeftArm:[0.0f,0.0f,-10.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=24}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-20.0f,-20.0f,0.0f],LeftArm:[-50.0f,50.0f,0.0f],RightLeg:[-20.0f,0.0f,0.0f],LeftLeg:[20.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=25}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[15.0f,0.0f,0.0f],RightArm:[-60.0f,-10.0f,0.0f],LeftArm:[10.0f,0.0f,-10.0f],RightLeg:[-15.0f,0.0f,0.0f],LeftLeg:[30.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=26}] run data merge entity @s {Pose:{Head:[-15.0f,0.0f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-120.0f,-10.0f,0.0f],LeftArm:[10.0f,0.0f,-10.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[15.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=27}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-80.0f,20.0f,0.0f],LeftArm:[-80.0f,-20.0f,0.0f],RightLeg:[-90.0f,10.0f,0.0f],LeftLeg:[-90.0f,-10.0f,0.0f]}}
execute if entity @s[scores={as_trigger=28}] run data merge entity @s {Pose:{Head:[-15.0f,0.0f,0.0f],Body:[10.0f,0.0f,0.0f],RightArm:[-140.0f,-10.0f,0.0f],LeftArm:[70.0f,0.0f,-10.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[75.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=29}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[10.0f,0.0f,0.0f],RightArm:[-90.0f,-10.0f,0.0f],LeftArm:[-75.0f,0.0f,10.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[75.0f,0.0f,0.0f]}}
#
execute if entity @s[scores={as_trigger=30}] run data merge entity @s {Pose:{Head:[-10.0f,20.0f,0.0f],Body:[-2.0f,0.0f,0.0f],RightArm:[5.0f,0.0f,0.0f],LeftArm:[5.0f,0.0f,0.0f],RightLeg:[16.0f,2.0f,10.0f],LeftLeg:[0.0f,-10.0f,-4.0f]}}
execute if entity @s[scores={as_trigger=31}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[5.0f,0.0f,0.0f],RightArm:[-124.0f,-51.0f,-35.0f],LeftArm:[29.0f,0.0f,25.0f],RightLeg:[0.0f,-4.0f,-2.0f],LeftLeg:[0.0f,4.0f,2.0f]}}
execute if entity @s[scores={as_trigger=32}] run data merge entity @s {Pose:{Head:[-85.0f,0.0f,0.0f],Body:[-90.0f,0.0f,0.0f],RightArm:[-90.0f,10.0f,0.0f],LeftArm:[-90.0f,-10.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=33}] run data merge entity @s {Pose:{Head:[45.0f,-4.0f,1.0f],Body:[10.0f,0.0f,0.0f],RightArm:[18.0f,-14.0f,0.0f],LeftArm:[-72.0f,24.0f,47.0f],RightLeg:[25.0f,-2.0f,0.0f],LeftLeg:[-4.0f,-6.0f,-2.0f]}}
execute if entity @s[scores={as_trigger=34}] run data merge entity @s {Pose:{Head:[14.0f,-12.0f,6.0f],Body:[5.0f,0.0f,0.0f],RightArm:[-40.0f,20.0f,0.0f],LeftArm:[-4.0f,-20.0f,-10.0f],RightLeg:[-88.0f,71.0f,0.0f],LeftLeg:[-88.0f,46.0f,0.0f]}}
execute if entity @s[scores={as_trigger=35}] run data merge entity @s {Pose:{Head:[0.0f,30.0f,0f],Body:[0.0f,13.0f,0.0f],RightArm:[-22.0f,31.0f,10.0f],LeftArm:[145.0f,22.0f,-49.0f],RightLeg:[6.0f,-20.0f,0.0f],LeftLeg:[-6.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=36}] run data merge entity @s {Pose:{Head:[4.0f,0.0f,0.0f],Body:[4.0f,0.0f,0.0f],RightArm:[30.0f,22.0f,-20.0f],LeftArm:[30.0f,-20.0f,21.0f],RightLeg:[0.0f,0.0f,5.0f],LeftLeg:[0.0f,0.0f,-5.0f]}}
execute if entity @s[scores={as_trigger=37}] run data merge entity @s {Pose:{Head:[63.0f,0.0f,0.0f],Body:[10.0f,0.0f,0.0f],RightArm:[-5.0f,0.0f,5.0f],LeftArm:[-5.0f,0.0f,-5.0f],RightLeg:[-5.0f,-10.0f,5.0f],LeftLeg:[-5.0f,16.0f,-5.0f]}}
execute if entity @s[scores={as_trigger=38}] run data merge entity @s {Pose:{Head:[-11.0f,0.0f,0.0f],Body:[-4.0f,0.0f,0.0f],RightArm:[0.0f,0.0f,100.0f],LeftArm:[0.0f,0.0f,-100.0f],RightLeg:[-8.0f,0.0f,60.0f],LeftLeg:[-8.0f,0.0f,-60.0f]}}
execute if entity @s[scores={as_trigger=39}] run data merge entity @s {Pose:{Head:[-22.0f,25.0f,0.0f],Body:[-4.0f,10.0f,0.0f],RightArm:[-153.0f,34.0f,-3.0f],LeftArm:[4.0f,18.0f,0.0f],RightLeg:[-4.0f,17.0f,2.0f],LeftLeg:[6.0f,24.0f,0.0f]}}
execute if entity @s[scores={as_trigger=141}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-15.0f,-45.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
execute if entity @s[scores={as_trigger=142}] run data merge entity @s {Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-90.0f,0.0f,0.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]}}
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,46 @@
#
# Description: Align stand with tripwire hook to make a tool rack
# Called by: as:trigger
# Entity @s: armor stand
#
# Turn off gravity for armor stand
#
data merge entity @s {NoGravity:1b}
#
# Check for an tripwire hook in the blocks above the stand and, if found, move the stand into position below the hook and tag it
#
execute at @s align xyz positioned ~0.5 ~ ~0.5 if block ~ ~1 ~ minecraft:tripwire_hook run tp @s ~ ~ ~
execute at @s if block ~ ~1 ~ minecraft:tripwire_hook run tag @s add as_rack
execute if entity @s[tag=!as_rack] at @s align xyz positioned ~0.5 ~1 ~0.5 if block ~ ~1 ~ minecraft:tripwire_hook run tp @s ~ ~ ~
execute if entity @s[tag=!as_rack] at @s if block ~ ~1 ~ minecraft:tripwire_hook run tag @s add as_rack
execute if entity @s[tag=!as_rack] at @s align xyz positioned ~0.5 ~2 ~0.5 if block ~ ~1 ~ minecraft:tripwire_hook run tp @s ~ ~ ~
execute if entity @s[tag=!as_rack] at @s if block ~ ~1 ~ minecraft:tripwire_hook run tag @s add as_rack
#
# If there is a tripwire hook above the armor stand, rotate the stand to match it's orientation
#
execute at @s if block ~ ~1 ~ minecraft:tripwire_hook[facing=north] run data merge entity @s {Rotation:[180.0f,0.0f]}
execute at @s if block ~ ~1 ~ minecraft:tripwire_hook[facing=east] run data merge entity @s {Rotation:[-90.0f,0.0f]}
execute at @s if block ~ ~1 ~ minecraft:tripwire_hook[facing=south] run data merge entity @s {Rotation:[0.0f,0.0f]}
execute at @s if block ~ ~1 ~ minecraft:tripwire_hook[facing=west] run data merge entity @s {Rotation:[90.0f,0.0f]}
#
# If armor stand is not tagged, display failure message
#
execute if entity @s[tag=!as_rack] run title @a[tag=as_selected,tag=!as_chat] actionbar [{"text":"Tripwire hook not found","color":"dark_red"}]
execute if entity @s[tag=!as_rack] run tellraw @a[tag=as_selected,tag=as_chat] [{"text":"<Stick_God> ","color":"dark_green"},{"text":"Tripwire hook not found","color":"dark_red"}]
#
# Otherwise, adjust the armor stand pose and settings, disabling all slots but the main hand, and move it into place
#
execute if entity @s[tag=as_rack,scores={as_trigger=155}] run data merge entity @s {ShowArms:1b,Invisible:1b,Pose:{Head:[0.0f,0.001f,0.0f],Body:[0.0f,0.001f,0.0f],RightArm:[-100.0f,90.0f,180.0f],LeftArm:[0.0f,0.0f,0.0f],RightLeg:[0.0f,0.0f,0.0f],LeftLeg:[0.0f,0.0f,0.0f]},DisabledSlots:4079166}
execute if entity @s[tag=as_rack,scores={as_trigger=155}] at @s run tp @s ^-0.17 ^0.24 ^-0.05
#
# Tag the armor stand as modified
#
execute if entity @s[tag=as_rack] run tag @s add as_modified
#
# Also, mark as locked
#
execute if entity @s[tag=as_rack] run tag @s add as_locked
#
# Finally, remove the as_rack tag
#
execute if entity @s[tag=as_rack] run tag @s remove as_rack

View File

@ -0,0 +1,32 @@
#
# Description: Randomizes armor stand pose
# Called by: as:trigger
# Entity @s: armor stand
#
# Summons temp armor stand
summon minecraft:armor_stand ~ 0 ~ {NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,Tags:["as_temp_armor_stand"],DisabledSlots:4144959,Silent:1b}
#
data modify storage customizable_armor_stands:pose_storage Pose set value {Head:[0.0f,0.001f,0.0f], Body:[0.0f,0.001f,0.0f], LeftArm:[-10.0f,0.001f,-10.0f], RightArm:[-15.0f,0.001f,10.0f], LeftLeg:[-1.0f,0.001f,-1.0f], RightLeg:[1.0f,0.001f,1.0f]}
#
loot replace entity @e[type=minecraft:armor_stand,tag=as_temp_armor_stand] armor.head loot as:random_pose
#
# Generate randomizers
#
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/head
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/body
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/left_arm
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/right_arm
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/left_leg
execute as @e[type=minecraft:armor_stand,sort=nearest,limit=1,tag=as_temp_armor_stand] run function as:randomizer/right_leg
#
# Sets random pose
#
data modify entity @s Pose set from storage customizable_armor_stands:pose_storage Pose
#
# Kills temp armor stand
#
kill @e[type=armor_stand,tag=as_temp_armor_stand]
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,21 @@
#
# Description: Adjust rotation of armor stand
# Called by: as:trigger
# Entity @s: armor stand
#
# Note: The function is being executed at the location of the original player, not the armor stand, so @p must be the same player
#
# Trigger values 52 thru 55 are redundant and kept for backwards compatibility
#
execute if entity @s[scores={as_trigger=52..57}] store result score @s as_pose run data get entity @s Rotation[0] 1
execute if entity @s[scores={as_trigger=52}] run scoreboard players add @s as_pose 45
execute if entity @s[scores={as_trigger=53}] run scoreboard players add @s as_pose 5
execute if entity @s[scores={as_trigger=54}] run scoreboard players remove @s as_pose 5
execute if entity @s[scores={as_trigger=55}] run scoreboard players remove @s as_pose 45
execute if entity @s[scores={as_trigger=56}] run scoreboard players operation @s as_pose += @p as_angle
execute if entity @s[scores={as_trigger=57}] run scoreboard players operation @s as_pose -= @p as_angle
execute if entity @s[scores={as_trigger=52..57}] store result entity @s Rotation[0] float 1 run scoreboard players get @s as_pose
#
# Tag the armor stand as modified
#
tag @s add as_modified

View File

@ -0,0 +1,28 @@
#
# Description: Change the armor stand's basic settings
# Called by: as:trigger
# Entity @s: armor stand
#
execute if entity @s[scores={as_trigger=1}] run data merge entity @s {NoBasePlate:0b}
execute if entity @s[scores={as_trigger=2}] run data merge entity @s {NoBasePlate:1b}
execute if entity @s[scores={as_trigger=3}] run data merge entity @s {ShowArms:1b}
execute if entity @s[scores={as_trigger=4}] run data merge entity @s {ShowArms:0b}
execute if entity @s[scores={as_trigger=5}] run data merge entity @s {Small:1b}
execute if entity @s[scores={as_trigger=6}] run data merge entity @s {Small:0b}
execute if entity @s[scores={as_trigger=7}] run data merge entity @s {NoGravity:0b}
execute if entity @s[scores={as_trigger=8}] run data merge entity @s {NoGravity:1b}
execute if entity @s[scores={as_trigger=9}] run data merge entity @s {Invisible:0b}
execute if entity @s[scores={as_trigger=10}] run data merge entity @s {Invisible:1b}
execute if entity @s[scores={as_trigger=11}] run data merge entity @s {CustomNameVisible:1b}
execute if entity @s[scores={as_trigger=12}] run data merge entity @s {CustomNameVisible:0b}
#
# Tag the armor stand as modified
#
tag @s add as_modified
#
# Report changes to gravity setting as it is not visible
#
execute if entity @s[scores={as_trigger=7}] run title @a[tag=as_selected,tag=!as_chat] actionbar {"color":"dark_green","text":"Gravity is turned on"}
execute if entity @s[scores={as_trigger=7}] run tellraw @a[tag=as_selected,tag=as_chat] {"color":"dark_green","text":"<Stick_God> Gravity is turned on"}
execute if entity @s[scores={as_trigger=8}] run title @a[tag=as_selected,tag=!as_chat] actionbar {"color":"dark_green","text":"Gravity is turned off"}
execute if entity @s[scores={as_trigger=8}] run tellraw @a[tag=as_selected,tag=as_chat] {"color":"dark_green","text":"<Stick_God> Gravity is turned off"}

View File

@ -0,0 +1,22 @@
#
# Description: Exchange items between equipment slots
# Called by: as:trigger
# Entity @s: armor stand
#
# Creates temporary storage
#
#data modify storage customizable_armor_stands:slot_storage {} set value {Slots:[{}, {}]}
#
# Copy item from main hand to temporary storage
#
data modify storage customizable_armor_stands:slot_storage Slot set from entity @s HandItems[0]
#
# Copy item from off hand or head to main hand
#
execute if entity @s[scores={as_trigger=161}] run data modify entity @s HandItems[0] set from entity @s HandItems[1]
execute if entity @s[scores={as_trigger=162}] run data modify entity @s HandItems[0] set from entity @s ArmorItems[3]
#
# Copy item from temporary storage to off hand or head
#
execute if entity @s[scores={as_trigger=161}] run data modify entity @s HandItems[1] set from storage customizable_armor_stands:slot_storage Slot
execute if entity @s[scores={as_trigger=162}] run data modify entity @s ArmorItems[3] set from storage customizable_armor_stands:slot_storage Slot

View File

@ -0,0 +1,11 @@
#
# Description: Remove scoreboards
# Called by: main:#uninstall
# Entity @s: None
#
# Remove scoreboards
#
scoreboard objectives remove as_trigger
scoreboard objectives remove as_pose
scoreboard objectives remove as_angle
scoreboard objectives remove as_help

View File

@ -0,0 +1,493 @@
{
"type": "minecraft:loot",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:written_book",
"functions": [
{
"function": "minecraft:set_nbt",
"tag": "{
title:\"Statues V2.6\",
author:\"Stick God\",
datapack:\"ArmourStatuesV2\",
pages:[
\'[
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Statues V2.6\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"This book allows you to apply basic settings to an armor stand. Clicking the coloured links will adjust the closest armor stand within three blocks.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n Table of Contents\",\"color\":\"black\"},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"\\\\nStyles\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":2}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Pose Adjust\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":6}},
{\"text\":\"\\\\nNudge\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":3}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Auto Align\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":7}},
{\"text\":\"\\\\nRotation\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":4}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Swap Slots\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":7}},
{\"text\":\"\\\\nPointing\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":4}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Mirror/Flip\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":8}},
{\"text\":\"\\\\nPresets\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":5}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Utilities\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":8}},
{\"text\":\"\\\\n .\",\"color\":\"white\"},
{\"text\":\"Credits\",\"color\":\"dark_aqua\",\"clickEvent\":{\"action\":\"change_page\",\"value\":9}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Check Target\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 999\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Style Settings\",\"color\":\"dark_blue\"},
{\"text\":\"\\\\n\\\\nShow Base Plate:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 2\"}},
{\"text\":\"\\\\nShow Arms:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 3\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 4\"}},
{\"text\":\"\\\\nSmall Stand:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 5\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 6\"}},
{\"text\":\"\\\\nApply Gravity:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 7\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 8\"}},
{\"text\":\"\\\\nStand Visible:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 9\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 10\"}},
{\"text\":\"\\\\nDisplay Name:\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Yes\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 11\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"No\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 12\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Nudge Position\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Turn gravity off before nudging the Y-position.\\\\n\\\\nRelative Aligned nudging moves the armor stand relative to the player\\'s position and aligned to the block grid. (X=Left/Right, Z=Away/Towards)\\\\n\\\\nRelative Aligned nudging moves the armor stand relative to the player\\'s exact position. (X=Left/Right, Y=Above/Below, Z=Away/Towards)\\\\n\\\\nNudges are in 16ths of a block to align with the pixels of the block textures.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\nX: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 40\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 101\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 102\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 103\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 104\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 43\"}},
{\"text\":\"\\\\nY: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 44\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 105\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 106\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 107\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 108\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 47\"}},
{\"text\":\"\\\\nZ: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 48\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 109\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 110\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 111\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 112\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 51\"}},
{\"text\":\"\\\\n\\\\n Relative Aligned \",\"color\":\"black\"},
{\"text\":\"\\\\nX: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1100\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1101\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1102\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1103\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1104\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1105\"}},
{\"text\":\"\\\\nZ: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1106\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1107\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1108\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1109\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1110\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1111\"}},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"\\\\n Relative Exact \",\"color\":\"black\"},
{\"text\":\"\\\\nX: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1112\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1113\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1114\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1115\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1116\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1117\"}},
{\"text\":\"\\\\nY: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1118\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1119\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1120\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1121\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1122\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1123\"}},
{\"text\":\"\\\\nZ: \",\"color\":\"black\"},
{\"text\":\"-8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1124\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1125\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1126\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+1\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1127\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+3\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1128\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"+8\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1129\"}},
\"\"
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Adjust Rotation\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"The angle step (default 15\\\\u00b0) is used for both the stand rotation and the pose adjustments.\\\\n\\\\nToward and Away turn the armor stand to face toward or away from you.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"<<\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 56\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"45\\\\u00b0\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 120\"}},
{\"text\":\" \",\"color\":\"black\"},
{\"text\":\"15\\\\u00b0\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 121\"}},
{\"text\":\" \",\"color\":\"black\"},
{\"text\":\"5\\\\u00b0\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 122\"}},
{\"text\":\" \",\"color\":\"black\"},
{\"text\":\"1\\\\u00b0\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 123\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\">>\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 57\"}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Toward\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 124\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Away\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 125\"}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Pointing\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Points selected appendage at head or feet.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n\",\"color\":\"white\"},
{\"text\":\"Head:\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1160\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1166\"}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"Body:\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1161\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1167\"}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"R.Arm:\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1162\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1168\"}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"L.Arm:\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1163\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1169\"}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"R.Leg:\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1164\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1170\"}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"L.Leg:\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Head\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1165\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Feet\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1171\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Pose Presets\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"The Death pose is for a figure lying down and requires a separate armor stand for the legs.\\\\n\\\\nRandomized creates a completely unique randomized custom pose.\\\\n\\\\nThe Block and Item presets are designed to hold blocks and items in line with the world grid.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\nAttention\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 20\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Confident\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 30\"}},
{\"text\":\"\\\\nWalking\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 21\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Salute\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 31\"}},
{\"text\":\"\\\\nRunning\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 22\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Death\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 32\"}},
{\"text\":\"\\\\nPointing\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 23\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Facepalm\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 33\"}},
{\"text\":\"\\\\nBlocking\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 24\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Lazing\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 34\"}},
{\"text\":\"\\\\nLungeing\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 25\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Confused\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 35\"}},
{\"text\":\"\\\\nWinning\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 26\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Formal\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 36\"}},
{\"text\":\"\\\\nSitting\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 27\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Sad\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 37\"}},
{\"text\":\"\\\\nArabesque\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 28\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Joyous\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 38\"}},
{\"text\":\"\\\\nCupid\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 29\"},\"underlined\":\"true\"},
{\"text\":\" \",\"color\":\"dark_green\",\"underlined\":\"true\"},
{\"text\":\"Stargazing\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 39\"},\"underlined\":\"true\"},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"Randomized\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1150\"}},
{\"text\":\"\\\\nBlock\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 141\"}},
{\"text\":\" ..\",\"color\":\"white\"},
{\"text\":\"Item\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 142\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Pose Adjustment\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"The angle step set for adjusting the stand rotation is also used for the pose adjustments.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n .\",\"color\":\"white\"},
{\"text\":\"X\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Y\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"Z\",\"color\":\"black\"},
{\"text\":\"\\\\nHead\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 60\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 61\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 62\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 63\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 64\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 65\"}},
{\"text\":\"\\\\n\\\\nBody\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 67\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 66\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 68\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 69\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 70\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 71\"}},
{\"text\":\"\\\\n\\\\nR.Arm\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 72\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 73\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 74\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 75\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 77\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 76\"}},
{\"text\":\"\\\\n\\\\nL.Arm\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 78\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 79\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 81\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 80\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 82\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 83\"}},
{\"text\":\"\\\\n\\\\nR.Leg\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 84\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 85\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 87\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 86\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 89\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 88\"}},
{\"text\":\"\\\\n\\\\nL.Leg\",\"color\":\"black\"},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 90\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 91\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 92\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 93\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"-\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 94\"}},
{\"text\":\" .\",\"color\":\"white\"},
{\"text\":\"+\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 95\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Auto Alignment\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Pose and position an armor stand to align a held block or item with an adjacent block.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n\",\"color\":\"white\"},
{\"text\":\"Block on surface\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 151\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Align an armor stand placed on a surface so that a block held by it appears on the surface.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n\",\"color\":\"white\"},
{\"text\":\"Item on surface\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 152\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Align an armor stand placed on a surface so that an item held by it appears upright on the surface.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"Item flat on surface\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 153\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Align an armor stand placed on a surface so that a non-tool item held by it appears flat on the surface.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\",\"color\":\"white\"},
{\"text\":\"Tool flat on surface\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 154\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Align an armor stand placed on a surface so that a tool held by it appears flat on the surface.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n\",\"color\":\"white\"},
{\"text\":\"Tool rack\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 155\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Align an armor stand with a tripwire hook on the wall above it so that a tool held by it appears to be hanging up.\\\\n\\\\nAlso locks the armor stand and disables all slots except the mainhand.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Swap Slots\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Swap items between equipment slots\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n.\",\"color\":\"white\"},
{\"text\":\"Mainhand \",\"color\":\"black\"},
{\"text\":\"<->\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 161\"}},
{\"text\":\" Offhand\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Mainhand \",\"color\":\"black\"},
{\"text\":\"<->\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 162\"}},
{\"text\":\" Head\",\"color\":\"black\"}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\".\",\"color\":\"white\"},
{\"text\":\"Pose Mirror & Flip\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Mirroring copies the arm or leg pose from left to right or vice versa. Flipping reverses the armor stand\\'s pose entirely.\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Mirror Arms\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"L>R\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 131\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"R>L\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 132\"}},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Legs\",\"color\":\"black\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"L>R\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 133\"}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"R>L\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 134\"}},
{\"text\":\"\\\\n\\\\n .\",\"color\":\"white\"},
{\"text\":\"<-Flip->\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 135\"}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Utilities\",\"color\":\"dark_blue\"},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"\\\\u24be\",\"color\":\"dark_purple\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":[{\"text\":\"Copying an armor stand stores it\\'s settings and pose in the book and these can then be pasted into another armor stand. The book must be the selected item in your mainhand or offhand for this to work.\\\\n\\\\nLocking an armor stand prevents it from being changed using the book and disables interaction with the equipment slots.\\\\n\\\\nSealing an armor stand, which is only available in creative mode, does the same and in addition makes it invulnerable\",\"color\":\"yellow\"}]}},
{\"text\":\"\\\\n\\\\n .\",\"color\":\"white\"},
{\"text\":\"Copy\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1004\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"Paste\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1005\"}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Lock\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1000\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"Unlock\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/trigger as_trigger set 1001\"}},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Seal\",\"color\":\"dark_green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/function as:sealing/seal\"}},
{\"text\":\" / \",\"color\":\"black\"},
{\"text\":\"Unseal\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/function as:sealing/unseal\"}}
]\',
\'[
\"\",
{\"text\":\"\\\\u00ab\",\"color\":\"light_purple\",\"clickEvent\":{\"action\":\"change_page\",\"value\":1}},
{\"text\":\" \",\"color\":\"white\"},
{\"text\":\"Credits\",\"color\":\"dark_blue\"},
{\"text\":\"\\\\n\\\\n Original concept by\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"Phssthpok\",\"color\":\"dark_purple\",\"bold\":\"true\"},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Vanilla Tweaks\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"integration by\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"MSpaceDev\",\"color\":\"dark_purple\",\"bold\":\"true\"},
{\"text\":\"\\\\n\\\\n \",\"color\":\"white\"},
{\"text\":\"Additional ideas and\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"improvements by\",\"color\":\"black\"},
{\"text\":\"\\\\n \",\"color\":\"white\"},
{\"text\":\"MukiTanuki\",\"color\":\"dark_purple\",\"bold\":\"true\"}
]\'
]
}"
}
]
}
]
}
]
}

View File

@ -0,0 +1,201 @@
{
"type": "minecraft:entity",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:stone_button",
"functions": [
{
"function": "minecraft:set_attributes",
"modifiers": [
{
"name": "head_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "head_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "head_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "body_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "body_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "body_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_arm_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_arm_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_arm_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_arm_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_arm_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_arm_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_leg_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_leg_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "left_leg_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_leg_x",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_leg_y",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
},
{
"name": "right_leg_z",
"attribute": "generic.attackDamage",
"amount": {
"min": -180,
"max": 180
},
"slot": "mainhand",
"operation": "addition"
}
]
}
]
}
]
}
]
}

View File

@ -0,0 +1,35 @@
{
"type": "minecraft:entity",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:written_book",
"functions": [
{
"function": "minecraft:copy_nbt",
"source": "this",
"ops": [
{
"source": "HandItems[1].tag",
"target": "{}",
"op": "merge"
}
]
},
{
"function": "minecraft:set_count",
"count": 0
},
{
"function": "minecraft:looting_enchant",
"count":1
}
]
}
]
}
]
}

View File

@ -0,0 +1,29 @@
{
"condition": "minecraft:alternative",
"terms": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2}"
}
}
}
},
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2}"
}
}
}
}
]
}

View File

@ -0,0 +1,16 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2}"
},
"offhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2}"
}
}
}
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.15
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.15
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.2
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.3
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.4
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.50
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.70
}

View File

@ -0,0 +1,4 @@
{
"condition": "minecraft:random_chance",
"chance": 0.85
}

View File

@ -0,0 +1,13 @@
{
"condition": "minecraft:alternative",
"terms": [
{
"condition": "minecraft:reference",
"name": "as:savedpose_mainhand"
},
{
"condition": "minecraft:reference",
"name": "as:savedpose_offhand"
}
]
}

View File

@ -0,0 +1,12 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2, SavedPose:{} }"
}
}
}
}

View File

@ -0,0 +1,12 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"item": "minecraft:written_book",
"nbt": "{datapack:ArmourStatuesV2, SavedPose:{} }"
}
}
}
}

View File

@ -0,0 +1,28 @@
{
"display": {
"icon": {
"item": "minecraft:armor_stand"
},
"title": {
"text": "Customisable Armour Stands",
"color": "white",
"bold": false,
"italic": false
},
"description": {
"text": "Customise armour stands using a book of clickable links",
"color": "green",
"bold": false,
"italic": true
},
"show_toast": false,
"announce_to_chat": false,
"frame": "goal"
},
"parent": "main:main/root",
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
}
}

View File

@ -0,0 +1,27 @@
{
"display": {
"icon": {
"item": "minecraft:chest"
},
"title": {
"text": "Vanilla Tweaks",
"bold": true,
"color": "gold"
},
"description": {
"text": "All currently installed datapacks",
"color": "white",
"bold": false,
"italic": true
},
"background": "minecraft:textures/block/black_concrete.png",
"show_toast": false,
"announce_to_chat": false,
"frame": "challenge"
},
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
}
}

View File

@ -0,0 +1,6 @@
# Desc: Creates required global scores
#
# Called by: #main:init
scoreboard objectives add hc_tick dummy
scoreboard objectives add hc_uninstall dummy

View File

@ -0,0 +1,17 @@
# Desc: Controls all function to run on the server. Make funtions run much less
#
# Called by: #minecraft:tick
scoreboard players add #hc_tick hc_tick 1
# Every tick
function #main:tick
# Every 1 second
execute if score #hc_tick hc_tick matches 1 run function #main:second
execute if score #hc_tick hc_tick matches 21 run function #main:second
execute if score #hc_tick hc_tick matches 41 run function #main:second
execute if score #hc_tick hc_tick matches 61 run function #main:second
execute if score #hc_tick hc_tick matches 81 run function #main:second
execute if score #hc_tick hc_tick matches 100.. run scoreboard players set #hc_tick hc_tick 0

View File

@ -0,0 +1,9 @@
# Desc: Main uninstall message. Will only be displayed once.
#
# Called by: #main:uninstall
scoreboard players add @s hc_uninstall 1
tellraw @s[scores={hc_uninstall=1}] ["",{"text":"All ","color":"red"},{"text":"datapacks ","color":"yellow"},{"text":"removed. \nTo complete the process, remove all ","color":"red"},{"text":"unwanted datapacks ","color":"yellow"},{"text":"from your ","color":"red"},{"text":"datapacks ","color":"yellow"},{"text":"folder. ","color":"red"},{"text":"/reload ","color":"yellow"},{"text":"after.","color":"red"}]
scoreboard objectives remove hc_tick
scoreboard objectives remove hc_uninstall

View File

@ -0,0 +1,6 @@
{
"values": [
"main:init",
"as:init"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"as:second"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"as:tick"
]
}

View File

@ -0,0 +1,6 @@
{
"values": [
"main:uninstall_message",
"as:uninstall"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"#main:init"
]
}

View File

@ -0,0 +1,5 @@
{
"values": [
"main:tick"
]
}

View File

@ -0,0 +1,12 @@
# Everything you should know about this pack:
1. This datapack uses a book of clickable links to modify the settings and pose of armour stands.
2. Once the datapack is installed, use "/trigger as_help" to see how to obtain the book.
By default this is by clicking a link in the help text but this can be changed in the admin settings.
3. Admin settings are available using "/function as:admin" command and include:
- Creating and removing a particle shrine for obtaining the book.
- Enabling and disabling a crafting method for obtaining the book.
- Enabling and disabling the link in the help text for obtaining the book.
- Removing unused armour stands; ones that are invisible and do not hold or wear any items.
4. The help text will be amended to show the selected method(s) of obtaining the book
5. The help text also includes options to have notification messages in either the action bar or in chat.

View File

@ -0,0 +1,6 @@
{
"pack":{
"pack_format":5,
"description":"Armour Statues"
}
}