Inital commit
This commit is contained in:
commit
b5089257c5
1005 changed files with 23476 additions and 0 deletions
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"criteria": {
|
||||
"item_durability_changed": {
|
||||
"trigger": "minecraft:item_durability_changed",
|
||||
"conditions": {
|
||||
"durability": {
|
||||
"max": 1
|
||||
},
|
||||
"item": {
|
||||
"items": "minecraft:elytra",
|
||||
"predicates": {
|
||||
"minecraft:custom_data": {
|
||||
"armored_elytra": {
|
||||
"armored": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rewards": {
|
||||
"function": "armored_elytra:break_armored_elytra"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
data modify entity @s Item.components.minecraft:bundle_contents append from entity @s Item
|
||||
data modify entity @s Item.components.minecraft:bundle_contents prepend from entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] Item
|
||||
data modify entity @s PickupDelay set value 0s
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:netherite_chestplate run item modify entity @s contents armored_elytra:armor/netherite
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:diamond_chestplate run item modify entity @s contents armored_elytra:armor/diamond
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:iron_chestplate run item modify entity @s contents armored_elytra:armor/iron
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:golden_chestplate run item modify entity @s contents armored_elytra:armor/gold
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:chainmail_chestplate run item modify entity @s contents armored_elytra:armor/chain
|
||||
execute if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents minecraft:leather_chestplate run item modify entity @s contents armored_elytra:armor/leather
|
||||
execute store success score #success armEly.dummy if items entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] contents *[minecraft:custom_name]
|
||||
execute if score #success armEly.dummy matches 1 run item modify entity @s contents armored_elytra:named_lore
|
||||
execute unless score #success armEly.dummy matches 1 run item modify entity @s contents armored_elytra:lore
|
||||
execute store result score #elytraValue armEly.dummy run data get entity @s Item.components.minecraft:repair_cost
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
function armored_elytra:parse_enchantments/start with entity @s Item.components.minecraft:enchantments
|
||||
data modify storage armored_elytra:storage elytraEnch set from storage armored_elytra:storage enchantments
|
||||
execute as @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1] run function armored_elytra:store_chestplate_values
|
||||
execute store result entity @s Item.components.minecraft:repair_cost int 1 run scoreboard players operation #elytraValue armEly.dummy += #chestplateValue armEly.dummy
|
||||
function armored_elytra:merge_enchantments/start
|
||||
kill @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..2,limit=1]
|
||||
playsound minecraft:block.anvil.use block @a
|
|
@ -0,0 +1,8 @@
|
|||
advancement revoke @s only armored_elytra:break_armored_elytra
|
||||
tag @s add armored_elytra.subject
|
||||
data modify storage armored_elytra:storage item set from entity @s Inventory[{Slot:102b}]
|
||||
data modify storage armored_elytra:storage item.components.minecraft:damage set value 431
|
||||
function armored_elytra:separate_enchantments/start
|
||||
execute as @e[type=minecraft:item,tag=armored_elytra.separated] run function armored_elytra:set_owner
|
||||
item replace entity @s armor.chest with minecraft:air
|
||||
tag @s remove armored_elytra.subject
|
|
@ -0,0 +1,5 @@
|
|||
tag @s add armored_elytra.subject
|
||||
data modify storage armored_elytra:storage item set from entity @s Item
|
||||
function armored_elytra:separate_enchantments/start
|
||||
execute as @e[type=minecraft:item,tag=armored_elytra.separated] run function armored_elytra:copy_burning_elytra_tags
|
||||
kill @s
|
|
@ -0,0 +1,4 @@
|
|||
tag @s add armored_elytra.elytra
|
||||
scoreboard players set #found_chestplate armEly.dummy 0
|
||||
execute align xyz as @e[type=minecraft:item,dx=0,dy=0,dz=0,sort=nearest] if items entity @s contents #armored_elytra:chestplates run function armored_elytra:try_to_armor_elytra
|
||||
tag @s remove armored_elytra.elytra
|
|
@ -0,0 +1,2 @@
|
|||
execute if items entity @s contents minecraft:elytra[minecraft:custom_data~{armored_elytra:{armored:true}}] at @s run function armored_elytra:burn_elytra
|
||||
tag @s add armored_elytra.checked_for_elytra_on_fire
|
|
@ -0,0 +1,4 @@
|
|||
execute unless data storage armored_elytra:storage enchantments[0] run return 0
|
||||
function armored_elytra:construct_levels_compound/process_enchantment with storage armored_elytra:storage enchantments[0]
|
||||
data remove storage armored_elytra:storage enchantments[0]
|
||||
function armored_elytra:construct_levels_compound/next_enchantment
|
|
@ -0,0 +1 @@
|
|||
$data modify storage armored_elytra:storage levels."$(id)" set value $(lvl)
|
|
@ -0,0 +1,2 @@
|
|||
data modify storage armored_elytra:storage levels set value {}
|
||||
function armored_elytra:construct_levels_compound/next_enchantment
|
|
@ -0,0 +1,6 @@
|
|||
data modify storage armored_elytra:storage temp set from entity @e[type=minecraft:item,tag=armored_elytra.subject,limit=1] {}
|
||||
data modify entity @s Motion set from storage armored_elytra:storage temp.Motion
|
||||
data modify entity @s Fire set from storage armored_elytra:storage temp.Fire
|
||||
data modify entity @s PickupDelay set from storage armored_elytra:storage temp.PickupDelay
|
||||
data modify entity @s Owner set from storage armored_elytra:storage temp.Owner
|
||||
tag @s remove armored_elytra.separated
|
|
@ -0,0 +1,4 @@
|
|||
playsound minecraft:block.grindstone.use block @a
|
||||
data modify storage armored_elytra:storage item set from entity @s Item
|
||||
function armored_elytra:separate_enchantments/start
|
||||
kill @s
|
2
datapacks/armored-elytra/data/armored_elytra/function/load.mcfunction
Executable file
2
datapacks/armored-elytra/data/armored_elytra/function/load.mcfunction
Executable file
|
@ -0,0 +1,2 @@
|
|||
scoreboard objectives add armEly.dummy dummy
|
||||
advancement revoke @a only armored_elytra:break_armored_elytra
|
|
@ -0,0 +1,2 @@
|
|||
data modify storage armored_elytra:storage finalEnch append from storage armored_elytra:storage chestplateEnch[0]
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage finalEnch append from storage armored_elytra:storage elytraEnch[-1]
|
||||
data remove storage armored_elytra:storage elytraEnch[-1]
|
||||
scoreboard players remove #elytraTotal armEly.dummy 1
|
||||
execute unless score #elytraTotal armEly.dummy matches 0 run function armored_elytra:merge_enchantments/add_enchantment_from_elytra
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage temp set from storage armored_elytra:storage elytraEnch[0].id
|
||||
execute store success score #success armEly.dummy run data modify storage armored_elytra:storage temp set from storage armored_elytra:storage chestplateEnch[0].id
|
||||
execute if score #success armEly.dummy matches 0 run function armored_elytra:merge_enchantments/compare_levels
|
||||
execute if score #found armEly.dummy matches 0 run function armored_elytra:merge_enchantments/rotate_elytra_enchantment
|
|
@ -0,0 +1,8 @@
|
|||
execute store result score #elytraValue armEly.dummy run data get storage armored_elytra:storage elytraEnch[0].lvl
|
||||
execute store result score #chestplateValue armEly.dummy run data get storage armored_elytra:storage chestplateEnch[0].lvl
|
||||
execute if score #chestplateValue armEly.dummy > #elytraValue armEly.dummy run data modify storage armored_elytra:storage finalEnch append from storage armored_elytra:storage chestplateEnch[0]
|
||||
execute unless score #chestplateValue armEly.dummy > #elytraValue armEly.dummy run data modify storage armored_elytra:storage finalEnch append from storage armored_elytra:storage elytraEnch[0]
|
||||
data remove storage armored_elytra:storage elytraEnch[0]
|
||||
scoreboard players remove #elytraTotal armEly.dummy 1
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
||||
scoreboard players set #found armEly.dummy 1
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage elytraEnch append from storage armored_elytra:storage elytraEnch[0]
|
||||
data remove storage armored_elytra:storage elytraEnch[0]
|
||||
scoreboard players remove #elytraRemaining armEly.dummy 1
|
||||
execute unless score #elytraRemaining armEly.dummy matches 0 run function armored_elytra:merge_enchantments/check_elytra_enchantment
|
|
@ -0,0 +1,6 @@
|
|||
scoreboard players set #found armEly.dummy 0
|
||||
scoreboard players operation #elytraRemaining armEly.dummy = #elytraTotal armEly.dummy
|
||||
execute unless score #elytraTotal armEly.dummy matches 0 run function armored_elytra:merge_enchantments/check_elytra_enchantment
|
||||
execute if score #found armEly.dummy matches 0 run function armored_elytra:merge_enchantments/add_enchantment_from_chestplate
|
||||
scoreboard players remove #chestplateRemaining armEly.dummy 1
|
||||
execute unless score #chestplateRemaining armEly.dummy matches 0 run function armored_elytra:merge_enchantments/shift_chestplate_enchantment
|
|
@ -0,0 +1,8 @@
|
|||
data modify storage armored_elytra:storage finalEnch set value []
|
||||
execute store result score #chestplateRemaining armEly.dummy run data get storage armored_elytra:storage chestplateEnch
|
||||
execute store result score #elytraTotal armEly.dummy run data get storage armored_elytra:storage elytraEnch
|
||||
execute unless score #chestplateRemaining armEly.dummy matches 0 run function armored_elytra:merge_enchantments/shift_chestplate_enchantment
|
||||
execute unless score #elytraTotal armEly.dummy matches 0 run function armored_elytra:merge_enchantments/add_enchantment_from_elytra
|
||||
data modify storage armored_elytra:storage enchantments set from storage armored_elytra:storage finalEnch
|
||||
function armored_elytra:construct_levels_compound/start
|
||||
data modify entity @s Item.components.minecraft:enchantments.levels set from storage armored_elytra:storage levels
|
|
@ -0,0 +1 @@
|
|||
$data modify storage armored_elytra:storage id set value "$(id)$(char)"
|
|
@ -0,0 +1 @@
|
|||
$data modify storage armored_elytra:storage lvl set value $(lvl)$(char)
|
|
@ -0,0 +1,5 @@
|
|||
data modify storage armored_elytra:storage enchantments append value {}
|
||||
data modify storage armored_elytra:storage enchantments[-1].id set from storage armored_elytra:storage id
|
||||
data modify storage armored_elytra:storage enchantments[-1].lvl set from storage armored_elytra:storage lvl
|
||||
data modify storage armored_elytra:storage id set value ""
|
||||
data modify storage armored_elytra:storage lvl set value ""
|
|
@ -0,0 +1,6 @@
|
|||
data remove storage armored_elytra:storage char
|
||||
execute store success score #success armEly.dummy run data modify storage armored_elytra:storage char set string storage armored_elytra:storage levels_string 0 1
|
||||
execute unless score #success armEly.dummy matches 1 run return 0
|
||||
function armored_elytra:parse_enchantments/process_char
|
||||
data modify storage armored_elytra:storage levels_string set string storage armored_elytra:storage levels_string 1
|
||||
function armored_elytra:parse_enchantments/next_char
|
|
@ -0,0 +1,7 @@
|
|||
execute if data storage armored_elytra:storage {char:'"'} store success score #in_id armEly.dummy unless score #in_id armEly.dummy matches 1
|
||||
execute if data storage armored_elytra:storage {char:'"'} run return 0
|
||||
execute if score #in_id armEly.dummy matches 1 run return run function armored_elytra:parse_enchantments/append_char_to_id with storage armored_elytra:storage
|
||||
execute if data storage armored_elytra:storage {char:':'} run return 0
|
||||
execute if data storage armored_elytra:storage {char:','} run return run function armored_elytra:parse_enchantments/append_enchantment
|
||||
execute if data storage armored_elytra:storage {char:'}'} run return run function armored_elytra:parse_enchantments/append_enchantment
|
||||
function armored_elytra:parse_enchantments/append_digit_to_lvl with storage armored_elytra:storage
|
|
@ -0,0 +1,10 @@
|
|||
# Thanks Darukshock for drafting this algorithm!
|
||||
$data modify storage armored_elytra:storage levels_string set value '$(levels)'
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
data modify storage armored_elytra:storage id set value ""
|
||||
data modify storage armored_elytra:storage lvl set value ""
|
||||
scoreboard players set #in_id armEly.dummy 0
|
||||
function armored_elytra:parse_enchantments/next_char
|
||||
data remove storage armored_elytra:storage id
|
||||
data remove storage armored_elytra:storage lvl
|
||||
data remove storage armored_elytra:storage levels_string
|
|
@ -0,0 +1,3 @@
|
|||
schedule function armored_elytra:schedule 1s
|
||||
execute as @e[type=minecraft:item] if items entity @s contents minecraft:elytra[minecraft:damage~{durability:{min:2}},!minecraft:custom_data~{armored_elytra:{armored:true}}] at @s if block ~ ~-0.01 ~ #minecraft:anvil run function armored_elytra:check_for_chestplate
|
||||
execute as @e[type=minecraft:item] if items entity @s contents minecraft:elytra[minecraft:custom_data~{armored_elytra:{armored:true}}] at @s if block ~ ~-0.01 ~ minecraft:grindstone positioned ~ ~-0.01 ~ align xyz positioned ~0.5 ~0.5 ~0.5 run function armored_elytra:grind_elytra
|
|
@ -0,0 +1,3 @@
|
|||
data modify storage armored_elytra:storage chestplateFinalEnch append from storage armored_elytra:storage chestplateEnch[0]
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
||||
scoreboard players remove #chestplateTotal armEly.dummy 1
|
|
@ -0,0 +1,3 @@
|
|||
data modify storage armored_elytra:storage elytraFinalEnch append from storage armored_elytra:storage elytraEnch[0]
|
||||
data remove storage armored_elytra:storage elytraEnch[0]
|
||||
scoreboard players remove #elytraTotal armEly.dummy 1
|
|
@ -0,0 +1,4 @@
|
|||
scoreboard players set #found armEly.dummy 1
|
||||
data modify storage armored_elytra:storage chestplateFinalEnch append from storage armored_elytra:storage enchantments[0]
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
||||
scoreboard players remove #chestplateTotal armEly.dummy 1
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage temp set from storage armored_elytra:storage enchantments[0].id
|
||||
execute store success score #success armEly.dummy run data modify storage armored_elytra:storage temp set from storage armored_elytra:storage chestplateEnch[0].id
|
||||
execute if score #success armEly.dummy matches 0 run function armored_elytra:separate_enchantments/add_enchantment_to_chestplate
|
||||
execute if score #found armEly.dummy matches 0 run function armored_elytra:separate_enchantments/rotate_chestplate_enchantment_2
|
|
@ -0,0 +1,2 @@
|
|||
scoreboard players operation #chestplateRemaining armEly.dummy = #chestplateTotal armEly.dummy
|
||||
function armored_elytra:separate_enchantments/check_chestplate_enchantment
|
|
@ -0,0 +1,4 @@
|
|||
execute store result score #elytraValue armEly.dummy run data get storage armored_elytra:storage elytraEnch[0].lvl
|
||||
execute store result score #chestplateValue armEly.dummy run data get storage armored_elytra:storage chestplateEnch[0].lvl
|
||||
execute if score #chestplateValue armEly.dummy > #elytraValue armEly.dummy run function armored_elytra:separate_enchantments/add_elytra_enchantment
|
||||
execute unless score #chestplateValue armEly.dummy > #elytraValue armEly.dummy run function armored_elytra:separate_enchantments/add_chestplate_enchantment
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage temp set from storage armored_elytra:storage elytraEnch[0].id
|
||||
execute store success score #success armEly.dummy run data modify storage armored_elytra:storage temp set from storage armored_elytra:storage chestplateEnch[0].id
|
||||
execute if score #success armEly.dummy matches 0 run function armored_elytra:separate_enchantments/compare_levels
|
||||
execute unless score #success armEly.dummy matches 0 run function armored_elytra:separate_enchantments/rotate_chestplate_enchantment
|
|
@ -0,0 +1,3 @@
|
|||
scoreboard players operation #chestplateRemaining armEly.dummy = #chestplateTotal armEly.dummy
|
||||
function armored_elytra:separate_enchantments/iterate_chestplate_enchantments
|
||||
execute unless score #elytraTotal armEly.dummy matches 0 unless score #chestplateTotal armEly.dummy matches 0 run function armored_elytra:separate_enchantments/rotate_elytra_enchantment
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage chestplateEnch append from storage armored_elytra:storage chestplateEnch[0]
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
||||
scoreboard players remove #chestplateRemaining armEly.dummy 1
|
||||
execute unless score #chestplateRemaining armEly.dummy matches 0 run function armored_elytra:separate_enchantments/iterate_chestplate_enchantments
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage chestplateEnch append from storage armored_elytra:storage chestplateEnch[0]
|
||||
data remove storage armored_elytra:storage chestplateEnch[0]
|
||||
scoreboard players remove #chestplateRemaining armEly.dummy 1
|
||||
execute unless score #chestplateRemaining armEly.dummy matches 0 run function armored_elytra:separate_enchantments/check_chestplate_enchantment
|
|
@ -0,0 +1,4 @@
|
|||
data modify storage armored_elytra:storage elytraEnch append from storage armored_elytra:storage elytraEnch[0]
|
||||
data remove storage armored_elytra:storage elytraEnch[0]
|
||||
scoreboard players remove #elytraRemaining armEly.dummy 1
|
||||
execute unless score #elytraRemaining armEly.dummy matches 0 run function armored_elytra:separate_enchantments/iterate_elytra_enchantments
|
|
@ -0,0 +1,6 @@
|
|||
scoreboard players set #found armEly.dummy 0
|
||||
execute unless score #chestplateTotal armEly.dummy matches 0 run function armored_elytra:separate_enchantments/check_chestplate_enchantments
|
||||
execute if score #found armEly.dummy matches 0 run data modify storage armored_elytra:storage elytraFinalEnch append from storage armored_elytra:storage enchantments[0]
|
||||
data remove storage armored_elytra:storage enchantments[0]
|
||||
scoreboard players remove #remaining armEly.dummy 1
|
||||
execute unless score #remaining armEly.dummy matches 0 run function armored_elytra:separate_enchantments/shift_enchantment
|
|
@ -0,0 +1,37 @@
|
|||
summon minecraft:item ~ ~ ~ {Tags:["armored_elytra.separated","armored_elytra.elytra"],Item:{id:"minecraft:elytra"}}
|
||||
summon minecraft:item ~ ~ ~ {Tags:["armored_elytra.separated","armored_elytra.chestplate"],Item:{id:"minecraft:chainmail_chestplate"}}
|
||||
data modify storage armored_elytra:storage chestplate set from storage armored_elytra:storage item.components.minecraft:bundle_contents[0]
|
||||
data modify storage armored_elytra:storage elytra set from storage armored_elytra:storage item.components.minecraft:bundle_contents[1]
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
function armored_elytra:parse_enchantments/start with storage armored_elytra:storage elytra.components.minecraft:enchantments
|
||||
data modify storage armored_elytra:storage elytraEnch set from storage armored_elytra:storage enchantments
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
function armored_elytra:parse_enchantments/start with storage armored_elytra:storage chestplate.components.minecraft:enchantments
|
||||
data modify storage armored_elytra:storage chestplateEnch set from storage armored_elytra:storage enchantments
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
function armored_elytra:parse_enchantments/start with storage armored_elytra:storage item.components.minecraft:enchantments
|
||||
execute store result score #elytraTotal armEly.dummy run data get storage armored_elytra:storage elytraEnch
|
||||
execute store result score #chestplateTotal armEly.dummy run data get storage armored_elytra:storage chestplateEnch
|
||||
execute unless score #elytraTotal armEly.dummy matches 0 unless score #chestplateTotal armEly.dummy matches 0 run function armored_elytra:separate_enchantments/start_to_iterate
|
||||
execute store result score #remaining armEly.dummy run data get storage armored_elytra:storage enchantments
|
||||
execute unless score #remaining armEly.dummy matches 0 run function armored_elytra:separate_enchantments/shift_enchantment
|
||||
data modify storage armored_elytra:storage enchantments set from storage armored_elytra:storage elytraFinalEnch
|
||||
function armored_elytra:construct_levels_compound/start
|
||||
data modify storage armored_elytra:storage elytra.components.minecraft:enchantments.levels set from storage armored_elytra:storage levels
|
||||
data modify storage armored_elytra:storage enchantments set from storage armored_elytra:storage chestplateFinalEnch
|
||||
function armored_elytra:construct_levels_compound/start
|
||||
data modify storage armored_elytra:storage chestplate.components.minecraft:enchantments.levels set from storage armored_elytra:storage levels
|
||||
execute store success score #success armEly.dummy if data storage armored_elytra:storage item.components.minecraft:damage
|
||||
execute if score #success armEly.dummy matches 1 run data modify storage armored_elytra:storage elytra.components.minecraft:damage set from storage armored_elytra:storage item.components.minecraft:damage
|
||||
execute unless score #success armEly.dummy matches 1 run data remove storage armored_elytra:storage elytra.components.minecraft:damage
|
||||
execute store success score #success armEly.dummy if data storage armored_elytra:storage item.components.minecraft:custom_name
|
||||
execute if score #success armEly.dummy matches 1 run data modify storage armored_elytra:storage elytra.components.minecraft:custom_name set from storage armored_elytra:storage item.components.minecraft:custom_name
|
||||
execute unless score #success armEly.dummy matches 1 run data remove storage armored_elytra:storage elytra.components.minecraft:custom_name
|
||||
data modify entity @e[type=minecraft:item,tag=armored_elytra.elytra,distance=..0.01,limit=1] Item set from storage armored_elytra:storage elytra
|
||||
data modify entity @e[type=minecraft:item,tag=armored_elytra.chestplate,distance=..0.01,limit=1] Item set from storage armored_elytra:storage chestplate
|
||||
data remove storage armored_elytra:storage elytraFinalEnch
|
||||
data remove storage armored_elytra:storage chestplateFinalEnch
|
||||
data remove storage armored_elytra:storage elytra
|
||||
data remove storage armored_elytra:storage chestplate
|
||||
tag @e[type=minecraft:item,distance=..0.01] remove armored_elytra.elytra
|
||||
tag @e[type=minecraft:item,distance=..0.01] remove armored_elytra.chestplate
|
|
@ -0,0 +1,2 @@
|
|||
scoreboard players operation #elytraRemaining armEly.dummy = #elytraTotal armEly.dummy
|
||||
function armored_elytra:separate_enchantments/iterate_elytra_enchantments
|
|
@ -0,0 +1,2 @@
|
|||
data modify entity @s Owner set from entity @a[tag=armored_elytra.subject,limit=1] UUID
|
||||
tag @s remove armored_elytra.separated
|
|
@ -0,0 +1,4 @@
|
|||
execute store result score #chestplateValue armEly.dummy run data get entity @s Item.components.minecraft:repair_cost
|
||||
data modify storage armored_elytra:storage enchantments set value []
|
||||
function armored_elytra:parse_enchantments/start with entity @s Item.components.minecraft:enchantments
|
||||
data modify storage armored_elytra:storage chestplateEnch set from storage armored_elytra:storage enchantments
|
2
datapacks/armored-elytra/data/armored_elytra/function/tick.mcfunction
Executable file
2
datapacks/armored-elytra/data/armored_elytra/function/tick.mcfunction
Executable file
|
@ -0,0 +1,2 @@
|
|||
schedule function armored_elytra:tick 1t
|
||||
execute as @e[type=minecraft:item,tag=!armored_elytra.checked_for_elytra_on_fire,predicate=armored_elytra:on_fire] run function armored_elytra:check_for_elytra_on_fire
|
|
@ -0,0 +1,5 @@
|
|||
execute if score #found_chestplate armEly.dummy matches 1 run return 0
|
||||
scoreboard players set #found_chestplate armEly.dummy 1
|
||||
tag @s add armored_elytra.chestplate
|
||||
execute as @e[type=minecraft:item,tag=armored_elytra.elytra,dx=0,dy=0,dz=0,limit=1] at @s run function armored_elytra:armor_elytra
|
||||
tag @s remove armored_elytra.chestplate
|
|
@ -0,0 +1,9 @@
|
|||
schedule clear armored_elytra:tick
|
||||
scoreboard objectives remove armEly.dummy
|
||||
data remove storage armored_elytra:storage elytraEnch
|
||||
data remove storage armored_elytra:storage chestplateEnch
|
||||
data remove storage armored_elytra:storage finalEnch
|
||||
data remove storage armored_elytra:storage enchantments
|
||||
data remove storage armored_elytra:storage levels
|
||||
data remove storage armored_elytra:storage item
|
||||
data remove storage armored_elytra:storage temp
|
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/chain.json
Executable file
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/chain.json
Executable file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 5.0,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522552
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 8.0,
|
||||
"slot": "chest"
|
||||
},
|
||||
{
|
||||
"id": "armored_elytra:armor_toughness",
|
||||
"attribute": "minecraft:generic.armor_toughness",
|
||||
"operation": "add_value",
|
||||
"amount": 2.0,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522555
|
||||
}
|
||||
]
|
||||
}
|
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/gold.json
Executable file
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/gold.json
Executable file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 5.0,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522553
|
||||
}
|
||||
]
|
||||
}
|
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/iron.json
Executable file
26
datapacks/armored-elytra/data/armored_elytra/item_modifier/armor/iron.json
Executable file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 6.0,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522554
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 3.0,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522551
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"function": "minecraft:sequence",
|
||||
"functions": [
|
||||
{
|
||||
"function": "minecraft:set_custom_data",
|
||||
"tag": "{armored_elytra:{armored:true}}"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_attributes",
|
||||
"replace": false,
|
||||
"modifiers": [
|
||||
{
|
||||
"id": "armored_elytra:armor",
|
||||
"attribute": "minecraft:generic.armor",
|
||||
"operation": "add_value",
|
||||
"amount": 8.0,
|
||||
"slot": "chest"
|
||||
},
|
||||
{
|
||||
"id": "armored_elytra:armor_toughness",
|
||||
"attribute": "minecraft:generic.armor_toughness",
|
||||
"operation": "add_value",
|
||||
"amount": 3.0,
|
||||
"slot": "chest"
|
||||
},
|
||||
{
|
||||
"id": "armored_elytra:knockback_resistance",
|
||||
"attribute": "minecraft:generic.knockback_resistance",
|
||||
"operation": "add_value",
|
||||
"amount": 0.1,
|
||||
"slot": "chest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"function": "minecraft:set_custom_model_data",
|
||||
"value": 13522556
|
||||
}
|
||||
]
|
||||
}
|
8
datapacks/armored-elytra/data/armored_elytra/item_modifier/lore.json
Executable file
8
datapacks/armored-elytra/data/armored_elytra/item_modifier/lore.json
Executable file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"function": "minecraft:set_lore",
|
||||
"entity": "this",
|
||||
"mode": "append",
|
||||
"lore": [
|
||||
["",{"text":"+ ","color":"gold","italic":false},{"selector":"@e[type=minecraft:item,tag=armored_elytra.chestplate,limit=1]","color":"gold","italic":false}]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"function": "minecraft:set_lore",
|
||||
"entity": "this",
|
||||
"mode": "append",
|
||||
"lore": [
|
||||
["",{"text":"+ ","color":"gold","italic":false},{"entity":"@e[type=minecraft:item,tag=armored_elytra.chestplate,limit=1]","nbt":"Item.components.minecraft:custom_name","interpret":true,"color":"gold","italic":true}]
|
||||
]
|
||||
}
|
9
datapacks/armored-elytra/data/armored_elytra/predicate/on_fire.json
Executable file
9
datapacks/armored-elytra/data/armored_elytra/predicate/on_fire.json
Executable file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"condition": "minecraft:entity_properties",
|
||||
"entity": "this",
|
||||
"predicate": {
|
||||
"flags": {
|
||||
"is_on_fire": true
|
||||
}
|
||||
}
|
||||
}
|
10
datapacks/armored-elytra/data/armored_elytra/tags/item/chestplates.json
Executable file
10
datapacks/armored-elytra/data/armored_elytra/tags/item/chestplates.json
Executable file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"values": [
|
||||
"minecraft:leather_chestplate",
|
||||
"minecraft:chainmail_chestplate",
|
||||
"minecraft:iron_chestplate",
|
||||
"minecraft:diamond_chestplate",
|
||||
"minecraft:golden_chestplate",
|
||||
"minecraft:netherite_chestplate"
|
||||
]
|
||||
}
|
1
datapacks/armored-elytra/data/minecraft/tags/function/load.json
Executable file
1
datapacks/armored-elytra/data/minecraft/tags/function/load.json
Executable file
|
@ -0,0 +1 @@
|
|||
{"replace":false,"values":["armored_elytra:load","armored_elytra:tick","armored_elytra:schedule"]}
|
18
datapacks/armored-elytra/data/vanillatweaks/advancement/armored_elytra.json
Executable file
18
datapacks/armored-elytra/data/vanillatweaks/advancement/armored_elytra.json
Executable file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"display": {
|
||||
"icon": {
|
||||
"id": "minecraft:elytra",
|
||||
"components": {"minecraft:custom_model_data":13522556}
|
||||
},
|
||||
"title": "Armored Elytra ",
|
||||
"description": ["",{"text":"Drop","color":"green"},{"text":" elytra and a chestplate above an anvil to merge them into one item.\n","color":"gold"},{"text":"Drop","color":"green"},{"text":" the merged item above a grindstone to separate them again.\n","color":"gold"},{"text":"Enchantments","color":"green"},{"text":" are kept safely between merging and separating.\n","color":"gold"},{"text":"Burning","color":"green"},{"text":" netherite armored elytra will keep the chestplate but burn off the elytra.","color":"gold"}],
|
||||
"show_toast": false,
|
||||
"announce_to_chat": false
|
||||
},
|
||||
"parent": "vanillatweaks:root",
|
||||
"criteria": {
|
||||
"tick": {
|
||||
"trigger": "minecraft:tick"
|
||||
}
|
||||
}
|
||||
}
|
19
datapacks/armored-elytra/data/vanillatweaks/advancement/root.json
Executable file
19
datapacks/armored-elytra/data/vanillatweaks/advancement/root.json
Executable file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"display": {
|
||||
"icon": {
|
||||
"id": "minecraft:player_head",
|
||||
"components": {"profile":{"properties":[{"name":"textures","value":"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTg1YzMzNWM1MjVjZGFkY2Q4MmU4MDA4MzU1N2M2OTYzMGRmYjlhMWVkZjU5OTc0YzdmNjU4ZGI1MWEwYTFkOSJ9fX0="}]}}
|
||||
},
|
||||
"title": "Vanilla Tweaks",
|
||||
"frame": "challenge",
|
||||
"description": ["",{"text":"All loaded Vanilla Tweaks data packs\n","color":"gold"},{"text":"vanillatweaks.net","color":"yellow"}],
|
||||
"background": "minecraft:textures/block/black_concrete.png",
|
||||
"show_toast": false,
|
||||
"announce_to_chat": false
|
||||
},
|
||||
"criteria": {
|
||||
"tick": {
|
||||
"trigger": "minecraft:tick"
|
||||
}
|
||||
}
|
||||
}
|
5
datapacks/armored-elytra/data/vanillatweaks/tags/function/uninstall.json
Executable file
5
datapacks/armored-elytra/data/vanillatweaks/tags/function/uninstall.json
Executable file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"armored_elytra:uninstall"
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue