Compare commits

..

10 Commits

Author SHA1 Message Date
dec09d4a44 Resolved Chisel Block Place durability AGAIN
All checks were successful
Draft Release / deploy-prod (push) Successful in 4s
2025-05-22 22:46:18 +01:00
c8a6e5938f Block Check Fix for Chisel
All checks were successful
Draft Release / deploy-prod (push) Successful in 4s
2025-05-22 22:20:14 +01:00
8cb721170b Update uninstall script
All checks were successful
Draft Release / deploy-prod (push) Successful in 4s
2025-05-22 21:27:49 +01:00
ce728ebd2b Do nothing is empty slot
All checks were successful
Draft Release / deploy-prod (push) Successful in 5s
2025-05-22 21:26:34 +01:00
a4ef6ca5f0 Chisel do nothing on unbreakable blocks
All checks were successful
Draft Release / deploy-prod (push) Successful in 5s
2025-05-21 21:47:58 +01:00
46a6e9ad65 Added Chisel
All checks were successful
Draft Release / deploy-prod (push) Successful in 4s
2025-05-21 21:26:09 +01:00
2b30e94381 Added durability to give command on trowels 2025-05-19 14:30:58 +01:00
8784b377f9 Added Skulls
All checks were successful
Draft Release / deploy-prod (push) Successful in 5s
Removed double checks
2025-05-18 02:15:33 +01:00
c81a852e72 Fixed Hammer Durability not registering
All checks were successful
Draft Release / deploy-prod (push) Successful in 5s
2025-05-17 16:53:58 +01:00
723cbfc483 Data cleanup
All checks were successful
Draft Release / deploy-prod (push) Successful in 11s
Update uninstall command
Increased hammer durability
2025-05-17 10:48:51 +01:00
60 changed files with 551 additions and 13 deletions

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/chisel/diamond"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/chisel/iron"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

View File

@ -55,6 +55,20 @@
"type": "model",
"model": "lzstools:items/trowel/diamond"
}
},
{
"when": "lzstools:chisel_iron",
"model": {
"type": "model",
"model": "lzstools:items/chisel/iron"
}
},
{
"when": "lzstools:chisel_diamond",
"model": {
"type": "model",
"model": "lzstools:items/chisel/diamond"
}
}
]
}

View File

@ -0,0 +1,32 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:chisel_diamond"
]
}
}
},
"title": {
"text": "As flawless as Michelangelo"
},
"description": {
"text": "Craft a Diamond Chisel"
},
"show_toast": true,
"announce_to_chat": false,
"hidden": false
},
"parent": "lzstools:visible/chisel_iron",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "lzstools_chisel:diamond"
}
}
}
}

View File

@ -0,0 +1,32 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:chisel_iron"
]
}
}
},
"title": {
"text": "Just take a stab at it"
},
"description": {
"text": "Craft a Chisel"
},
"show_toast": true,
"announce_to_chat": false,
"hidden": false
},
"parent": "lzstools:visible/root",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "lzstools_chisel:iron"
}
}
}
}

View File

@ -7,3 +7,6 @@ execute if predicate lzstools:wrench/offhand run function lzstools_wrench:wrench
# Trowel
execute if predicate lzstools:trowel/mainhand run function lzstools_trowel:mainhand
execute if predicate lzstools:trowel/offhand run function lzstools_trowel:offhand
# Chisel
execute if predicate lzstools:chisel/mainhand run function lzstools_chisel:mainhand

View File

@ -0,0 +1 @@
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Diamond Chisel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:chisel_diamond"]},minecraft:custom_data={"lzstools":["chisel","chisel_diamond"]},minecraft:max_damage=2100]

View File

@ -0,0 +1 @@
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Iron Chisel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:chisel_iron"]},minecraft:custom_data={"lzstools":["chisel","chisel_iron"]},minecraft:max_damage=350]

View File

@ -1 +1 @@
give @s minecraft:iron_pickaxe[minecraft:item_name={"text":"Hammer","color":"light_purple"},minecraft:custom_model_data={strings:["lzstools:hammer"]},minecraft:custom_data={"lzstools":["hammer"]},minecraft:max_damage=1800]
give @s minecraft:iron_pickaxe[minecraft:item_name={"text":"Hammer","color":"light_purple"},minecraft:custom_model_data={strings:["lzstools:hammer"]},minecraft:custom_data={"lzstools":["hammer"]},minecraft:max_damage=2400]

View File

@ -1 +1 @@
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Diamond Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_diamond"]},minecraft:custom_data={"lzstools":["trowel","trowel_diamond"]}]
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Diamond Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_diamond"]},minecraft:custom_data={"lzstools":["trowel","trowel_diamond"]},minecraft:max_damage=4500]

View File

@ -1 +1 @@
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Iron Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_iron"]},minecraft:custom_data={"lzstools":["trowel","trowel_iron"]}]
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Iron Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_iron"]},minecraft:custom_data={"lzstools":["trowel","trowel_iron"]},minecraft:max_damage=750]

View File

@ -16,6 +16,17 @@ scoreboard objectives add lzt_trowel_unbreaking_chance dummy
scoreboard objectives add lzt_trowel_damage dummy
scoreboard objectives add lzt_trowel_max_damage dummy
# Chisel
scoreboard objectives add lzt_chisel_success dummy
scoreboard objectives add lzt_chisel_raycast dummy
scoreboard objectives add lzt_chisel_raycast_hit dummy
scoreboard objectives add lzt_chisel_block_check dummy
scoreboard objectives add lzt_chisel_slot dummy
scoreboard objectives add lzt_chisel_unbreaking_check dummy
scoreboard objectives add lzt_chisel_unbreaking_chance dummy
scoreboard objectives add lzt_chisel_damage dummy
scoreboard objectives add lzt_chisel_max_damage dummy
# Hammer
scoreboard objectives add lzt_hammer_check minecraft.used:minecraft.iron_pickaxe
scoreboard objectives add lzt_hammer_success dummy

View File

@ -1,4 +1,6 @@
recipe give @s lzstools_wrench:wrench
recipe give @s lzstools_trowel:iron
recipe give @s lzstools_trowel:diamond
recipe give @s lzstools_chisel:iron
recipe give @s lzstools_chisel:diamond
recipe give @s lzstools_hammer:hammer

View File

@ -1,4 +1,42 @@
# Uninstall
# Click Check
scoreboard objectives remove lzt_click_check
# Wrench
scoreboard objectives remove lzt_wrench_success
scoreboard objectives remove lzt_wrench_raycast
# Trowel
scoreboard objectives remove lzt_trowel_success
scoreboard objectives remove lzt_trowel_raycast
scoreboard objectives remove lzt_trowel_raycast_hit
scoreboard objectives remove lzt_trowel_block_check
scoreboard objectives remove lzt_trowel_block_length
scoreboard objectives remove lzt_trowel_unbreaking_check
scoreboard objectives remove lzt_trowel_unbreaking_chance
scoreboard objectives remove lzt_trowel_damage
scoreboard objectives remove lzt_trowel_max_damage
# Chisel
scoreboard objectives remove lzt_chisel_success
scoreboard objectives remove lzt_chisel_raycast
scoreboard objectives remove lzt_chisel_raycast_hit
scoreboard objectives remove lzt_chisel_block_check
scoreboard objectives remove lzt_chisel_slot
scoreboard objectives remove lzt_chisel_unbreaking_check
scoreboard objectives remove lzt_chisel_unbreaking_chance
scoreboard objectives remove lzt_chisel_damage
scoreboard objectives remove lzt_chisel_max_damage
# Hammer
scoreboard objectives remove lzt_hammer_check
scoreboard objectives remove lzt_hammer_success
scoreboard objectives remove lzt_hammer_raycast
scoreboard objectives remove lzt_hammer_raycast_hit
scoreboard objectives remove lzt_hammer_side_raycast
scoreboard objectives remove lzt_hammer_side_raycast_hit
scoreboard objectives remove lzt_hammer_unbreaking_check
scoreboard objectives remove lzt_hammer_unbreaking_chance
scoreboard objectives remove lzt_hammer_damage
scoreboard objectives remove lzt_hammer_max_damage

View File

@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel"
]
}
}
}
}
}
}

View File

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:player_head",
"minecraft:zombie_head",
"minecraft:creeper_head",
"minecraft:skeleton_skull",
"minecraft:wither_skeleton_skull",
"minecraft:dragon_head"
]
}

View File

@ -0,0 +1,7 @@
scoreboard players set @s lzt_chisel_success 0
# Don't place if same block
$execute if block ~ ~ ~ $(chosen_block) run return fail
execute if score @s lzt_chisel_success matches 0 run function lzstools_chisel:block/place_normal with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 1 run function lzstools_chisel:block/remove_item with storage lzstools:chisel

View File

@ -0,0 +1,2 @@
# Place Leaves
$execute as @s store result score @s lzt_chisel_success setblock ~ ~ ~ $(chosen_block)[persistent=true] destroy

View File

@ -0,0 +1,5 @@
# Place NESW
$execute as @s[y_rotation=-45..45] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=north] destroy
$execute as @s[y_rotation=45..135] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=east] destroy
$execute as @s[y_rotation=135..-135] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=south] destroy
$execute as @s[y_rotation=-135..-45] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=west] destroy

View File

@ -0,0 +1,7 @@
# Place NESWUD
$execute as @s[x_rotation=45..90] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=up] destroy
$execute as @s[x_rotation=-90..-45] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=down] destroy
$execute as @s[x_rotation=-45..45, y_rotation=-45..45] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=north] destroy
$execute as @s[x_rotation=-45..45, y_rotation=45..135] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=east] destroy
$execute as @s[x_rotation=-45..45, y_rotation=135..-135] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=south] destroy
$execute as @s[x_rotation=-45..45, y_rotation=-135..-45] store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[facing=west] destroy

View File

@ -0,0 +1,3 @@
# Place Slabs
$execute as @s if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[type=top] destroy
$execute as @s if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[type=bottom] destroy

View File

@ -0,0 +1,9 @@
# Place Stairs
$execute as @s[y_rotation=-45..45] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=south] destroy
$execute as @s[y_rotation=45..135] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=west] destroy
$execute as @s[y_rotation=135..-135] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=north] destroy
$execute as @s[y_rotation=-135..-45] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=east] destroy
$execute as @s[y_rotation=-45..45] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=south] destroy
$execute as @s[y_rotation=45..135] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=west] destroy
$execute as @s[y_rotation=135..-135] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=north] destroy
$execute as @s[y_rotation=-135..-45] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=east] destroy

View File

@ -0,0 +1,10 @@
# Place Trapdoors
$execute as @s[y_rotation=-45..45] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=north] destroy
$execute as @s[y_rotation=45..135] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=east] destroy
$execute as @s[y_rotation=135..-135] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=south] destroy
$execute as @s[y_rotation=-135..-45] if score py lzt_chisel_raycast matches ..7 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=west] destroy
$execute as @s[y_rotation=-45..45] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=north] destroy
$execute as @s[y_rotation=45..135] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=east] destroy
$execute as @s[y_rotation=135..-135] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=south] destroy
$execute as @s[y_rotation=-135..-45] if score py lzt_chisel_raycast matches 8.. store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=west] destroy

View File

@ -0,0 +1,7 @@
# Place XYZ
$execute as @s if score py lzt_chisel_raycast matches 0 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=y] destroy
$execute as @s if score py lzt_chisel_raycast matches 15 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=y] destroy
$execute as @s if score px lzt_chisel_raycast matches 0 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=x] destroy
$execute as @s if score px lzt_chisel_raycast matches 15 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=x] destroy
$execute as @s if score pz lzt_chisel_raycast matches 0 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=z] destroy
$execute as @s if score pz lzt_chisel_raycast matches 15 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block)[axis=z] destroy

View File

@ -0,0 +1,16 @@
# Get Raycast Target Coords
function lzstools_chisel:block/target_coords
$setblock ~ -64 ~ $(chosen_block)
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #lzstools:xyz run function lzstools_chisel:block/place/xyz with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #lzstools:neswud run function lzstools_chisel:block/place/neswud with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #lzstools:nesw run function lzstools_chisel:block/place/nesw with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #lzstools:glazed_terracotta run function lzstools_chisel:block/place/nesw with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #minecraft:leaves run function lzstools_chisel:block/place/leaves with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #minecraft:trapdoors run function lzstools_chisel:block/place/trapdoors with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #minecraft:stairs run function lzstools_chisel:block/place/stairs with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 if block ~ -64 ~ #minecraft:slabs run function lzstools_chisel:block/place/slabs with storage lzstools:chisel
$execute if score @s lzt_chisel_success matches 0 store result score @s lzt_chisel_success run setblock ~ ~ ~ $(chosen_block) destroy
setblock ~ -64 ~ bedrock

View File

@ -0,0 +1 @@
$execute if entity @s[gamemode=!creative] run clear @s $(chosen_block) 1

View File

@ -0,0 +1,22 @@
## Get Raycast Target Coords
# Stored Value for Calc
scoreboard players set c16 lzt_chisel_raycast 16
# Summon Invisible Entity
summon area_effect_cloud ~ ~ ~ {Radius:0.01,Duration:1,Tags:["RaycastMark"]}
# Pixel Calculations
execute store result score px lzt_chisel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[0] 16
scoreboard players operation px lzt_chisel_raycast %= c16 lzt_chisel_raycast
execute if score px lzt_chisel_raycast matches ..-1 run scoreboard players add px lzt_chisel_raycast 16
execute store result score py lzt_chisel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[1] 16
scoreboard players operation py lzt_chisel_raycast %= c16 lzt_chisel_raycast
execute if score py lzt_chisel_raycast matches ..-1 run scoreboard players add py lzt_chisel_raycast 16
execute store result score pz lzt_chisel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[2] 16
scoreboard players operation pz lzt_chisel_raycast %= c16 lzt_chisel_raycast
execute if score pz lzt_chisel_raycast matches ..-1 run scoreboard players add pz lzt_chisel_raycast 16
# Remove Entity
kill @e[tag=RaycastMark,sort=nearest,limit=1]

View File

@ -0,0 +1 @@
$item modify entity @s weapon.mainhand {"function":"minecraft:set_components","components":{"minecraft:damage":$(damage)}}

View File

@ -0,0 +1,4 @@
execute if entity @s[predicate=lzstools_chisel:mainhand/iron] at @s anchored eyes run particle minecraft:item{item:"minecraft:iron_sword"} ^ ^-0.35 ^0.65 0.1 0.1 0.1 0.06 10 force
execute if entity @s[predicate=lzstools_chisel:mainhand/diamond] at @s anchored eyes run particle minecraft:item{item:"minecraft:diamond_sword"} ^ ^-0.35 ^0.65 0.1 0.1 0.1 0.06 10 force
item replace entity @s weapon.mainhand with minecraft:air
playsound minecraft:entity.item.break master @a ~ ~ ~ 1 1

View File

@ -0,0 +1,13 @@
scoreboard players reset @s lzt_chisel_unbreaking_check
execute if entity @s[predicate=lzstools:unbreaking/mainhand/all] run function lzstools_chisel:durability/mainhand/unbreaking
execute if score @s lzt_chisel_unbreaking_check matches 1 run return fail
# Handle Damage
data modify storage lzstools:chisel components set from entity @s SelectedItem.components
execute store result score @s lzt_chisel_damage run data get storage lzstools:chisel components."minecraft:damage"
execute store result score @s lzt_chisel_max_damage run data get storage lzstools:chisel components."minecraft:max_damage"
scoreboard players add @s lzt_chisel_damage 1
execute store result storage lzstools:chisel damage int 1 run scoreboard players get @s lzt_chisel_damage
function lzstools_chisel:durability/mainhand/apply with storage lzstools:chisel
execute if score @s lzt_chisel_damage >= @s lzt_chisel_max_damage run function lzstools_chisel:durability/mainhand/break

View File

@ -0,0 +1,4 @@
execute store result score @s lzt_chisel_unbreaking_chance run random value 1..100
execute if entity @s[predicate=lzstools:unbreaking/mainhand/3] if score @s lzt_chisel_unbreaking_chance matches ..75 run return run scoreboard players set @s lzt_chisel_unbreaking_check 1
execute if entity @s[predicate=lzstools:unbreaking/mainhand/2] if score @s lzt_chisel_unbreaking_chance matches ..66 run return run scoreboard players set @s lzt_chisel_unbreaking_check 1
execute if entity @s[predicate=lzstools:unbreaking/mainhand/1] if score @s lzt_chisel_unbreaking_chance matches ..50 run return run scoreboard players set @s lzt_chisel_unbreaking_check 1

View File

@ -0,0 +1,3 @@
tag @s add lzstools_chisel_mainhand
# Raycast from player's position
function lzstools_chisel:raycast/start

View File

@ -0,0 +1,16 @@
# Get Slot and block
function lzstools_chisel:select/start
# No block, don't place and end
execute store result score @s lzt_chisel_block_check run data get storage lzstools:chisel chosen_block
execute if score @s lzt_chisel_block_check matches 0 run return fail
# Place block
function lzstools_chisel:block/place with storage lzstools:chisel
execute if score @s lzt_chisel_success matches 0 run return fail
execute at @s run playsound minecraft:block.azalea_leaves.place master @a ~ ~ ~ 0.3 1
# Durability
execute if entity @s[tag=lzstools_chisel_mainhand,gamemode=!creative] run function lzstools_chisel:durability/mainhand/handle
execute if entity @s[tag=lzstools_chisel_offhand,gamemode=!creative] run function lzstools_chisel:durability/offhand/handle

View File

@ -0,0 +1,15 @@
## Raycast
# Set block data
execute as @s store result score @s lzt_chisel_raycast_hit run loot spawn ~ -65 ~ mine ~ ~ ~ minecraft:netherite_pickaxe[minecraft:enchantments={"minecraft:silk_touch":1}]
execute as @s run kill @n[type=minecraft:item,distance=..0.5,y=-65]
execute as @s if score @s lzt_chisel_raycast_hit matches 1 run function lzstools_chisel:raycast/hit
execute if score @s lzt_chisel_raycast_hit matches 1 run tag @s remove lzstools_chisel_mainhand
# Do nothing is unbreakable block
execute if block ~ ~ ~ #lzstools:unbreakable run return fail
# Advance forward and if nothing found
scoreboard players add #distance lzt_chisel_raycast 1
execute if score @s lzt_chisel_raycast_hit matches 0 if score #distance lzt_chisel_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_chisel:raycast/loop

View File

@ -0,0 +1,14 @@
#Setting up the raycasting data.
scoreboard players set #distance lzt_chisel_raycast 0
#Activating the raycast. This function will call itself until it is done.
execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lzstools_chisel:raycast/loop
# Clean Data
data remove storage lzstools:chisel inventory
data remove storage lzstools:chisel damage
data remove storage lzstools:chisel components
data remove storage lzstools:chisel chosen_block
data remove storage lzstools:chisel chosen_slot
scoreboard players set @s lzt_chisel_damage 0
scoreboard players set @s lzt_chisel_max_damage 1

View File

@ -0,0 +1,6 @@
# No Shulkers
$execute if items entity @s hotbar.$(chosen_slot) #minecraft:shulker_boxes run return fail
$setblock ~ -64 ~ $(temp_id)
setblock ~ -64 ~ bedrock
$data modify storage lzstools:chisel chosen_block set value "$(temp_id)"

View File

@ -0,0 +1,2 @@
function lzstools_chisel:select/block_macro with storage lzstools:chisel
data remove storage lzstools:chisel temp_id

View File

@ -0,0 +1,4 @@
$data modify storage lzstools:chisel temp_id set from entity @s Inventory[{Slot:$(chosen_slot)b}].id
function lzstools_chisel:select/check_block with storage lzstools:chisel
setblock ~ -64 ~ bedrock

View File

@ -0,0 +1,7 @@
execute store result score @s lzt_chisel_slot run data get entity @s SelectedItemSlot
scoreboard players add @s lzt_chisel_slot 1
execute if score @s lzt_chisel_slot matches 9.. run return fail
execute store result storage lzstools:chisel chosen_slot int 1 run scoreboard players get @s lzt_chisel_slot
# Check Valid Block
function lzstools_chisel:select/get_block with storage lzstools:chisel

View File

@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel_diamond"
]
}
}
}
}
}
}

View File

@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel_iron"
]
}
}
}
}
}
}

View File

@ -0,0 +1,35 @@
{
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
"d ",
"s "
],
"key": {
"s": "minecraft:stick",
"d": "minecraft:diamond"
},
"result": {
"id": "minecraft:carrot_on_a_stick",
"count": 1,
"components": {
"minecraft:max_damage": 2100,
"minecraft:item_name": {
"text": "Diamond Chisel",
"color": "aqua",
"italic": false
},
"minecraft:custom_model_data": {
"strings": [
"lzstools:chisel_diamond"
]
},
"minecraft:custom_data": {
"lzstools": [
"chisel",
"chisel_diamond"
]
}
}
}
}

View File

@ -0,0 +1,35 @@
{
"type": "minecraft:crafting_shaped",
"category": "equipment",
"pattern": [
"i ",
"s "
],
"key": {
"s": "minecraft:stick",
"i": "minecraft:iron_ingot"
},
"result": {
"id": "minecraft:carrot_on_a_stick",
"count": 1,
"components": {
"minecraft:max_damage": 350,
"minecraft:item_name": {
"text": "Iron Chisel",
"color": "aqua",
"italic": false
},
"minecraft:custom_model_data": {
"strings": [
"lzstools:chisel_iron"
]
},
"minecraft:custom_data": {
"lzstools": [
"chisel",
"chisel_iron"
]
}
}
}
}

View File

@ -1,8 +1,8 @@
# Don't run if
execute if block ~ ~ ~ #lzstools:unbreakable run return fail
execute if block ~ ~ ~ #minecraft:air run return fail
execute if score @s lzt_hammer_damage >= @s lzt_hammer_max_damage run return fail
# Spawn item
loot spawn ~ ~ ~ mine ~ ~ ~ mainhand

View File

@ -1,5 +1,5 @@
scoreboard players reset @s lzt_hammer_unbreaking_check
execute if entity @s[predicate=lzstools:unbreaking/all] run function lzstools_hammer:durability/unbreaking
execute if entity @s[predicate=lzstools:unbreaking/mainhand/all] run function lzstools_hammer:durability/unbreaking
execute if score @s lzt_hammer_unbreaking_check matches 1 run return fail
# Handle Damage

View File

@ -8,5 +8,6 @@ execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lz
# Clean Data
data remove storage lzstools:hammer damage
data remove storage lzstools:hammer components
scoreboard players set @s lzt_hammer_damage 0
scoreboard players set @s lzt_hammer_max_damage 1

View File

@ -15,7 +15,7 @@
"id": "minecraft:iron_pickaxe",
"count": 1,
"components": {
"minecraft:max_damage": 1800,
"minecraft:max_damage": 2400,
"minecraft:item_name": {
"text": "Hammer",
"color": "light_purple",

View File

@ -8,6 +8,7 @@ execute as @s run execute as @s run kill @n[type=minecraft:item,distance=..0.5,y
# Partial Blocks
execute if block ~ ~ ~ #lzstools:partialbox run function lzstools_wrench:raycast/partialbox
execute if block ~ ~ ~ #lzstools:banners run function lzstools_wrench:raycast/partialbox
execute if block ~ ~ ~ #lzstools:skulls run function lzstools_wrench:raycast/partialbox
# Remaining Blocks
execute unless block ~ ~ ~ #lzstools:partialbox if block ~ ~ ~ #lzstools:neswud run function lzstools_wrench:rotate/neswud/rotate

View File

@ -5,6 +5,7 @@ function lzstools_wrench:raycast/target_coords
# Partial Boxes
execute if block ~ ~ ~ #lzstools:banners run function lzstools_wrench:raycast/partialbox/banners
execute if block ~ ~ ~ #lzstools:skulls run function lzstools_wrench:raycast/partialbox/skulls
execute if block ~ ~ ~ #minecraft:rails run function lzstools_wrench:raycast/partialbox/rails
execute if block ~ ~ ~ #minecraft:trapdoors run function lzstools_wrench:raycast/partialbox/trapdoors
execute if block ~ ~ ~ #minecraft:slabs run function lzstools_wrench:raycast/partialbox/slabs

View File

@ -1,2 +1,2 @@
# Banners
execute if score px lzt_wrench_raycast matches 4..11 if score pz lzt_wrench_raycast matches 4..11 if block ~ ~ ~ #lzstools:banners run function lzstools_wrench:rotate/banners/rotate
execute if score px lzt_wrench_raycast matches 4..11 if score pz lzt_wrench_raycast matches 4..11 run function lzstools_wrench:rotate/banners/rotate

View File

@ -1,2 +1,2 @@
# Decorated Pot
execute if score px lzt_wrench_raycast matches 1..14 if score pz lzt_wrench_raycast matches 1..14 if block ~ ~ ~ minecraft:decorated_pot run function lzstools_wrench:rotate/nesw/rotate
execute if score px lzt_wrench_raycast matches 1..14 if score pz lzt_wrench_raycast matches 1..14 run function lzstools_wrench:rotate/nesw/rotate

View File

@ -1,2 +1,2 @@
# Ender Chest
execute if score px lzt_wrench_raycast matches 1..14 if score pz lzt_wrench_raycast matches 1..14 if score py lzt_wrench_raycast matches ..14 if block ~ ~ ~ minecraft:ender_chest run function lzstools_wrench:rotate/nesw/rotate
execute if score px lzt_wrench_raycast matches 1..14 if score pz lzt_wrench_raycast matches 1..14 if score py lzt_wrench_raycast matches ..14 run function lzstools_wrench:rotate/nesw/rotate

View File

@ -0,0 +1,2 @@
# Skulls
execute if score px lzt_wrench_raycast matches 4..11 if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches ..7 run function lzstools_wrench:rotate/skulls/rotate

View File

@ -0,0 +1,13 @@
## Face Click Heads and Skulls
# Get Raycast Target Coords
function lzstools_wrench:raycast/target_coords
# Heads and skulls don't have full hitboxes, nothing else uses numeric rotation
$execute as @s[scores={lzt_wrench_success=0}] if score pz lzt_wrench_raycast matches 4 store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=0] replace
$execute as @s[scores={lzt_wrench_success=0}] if score px lzt_wrench_raycast matches 11 store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=4] replace
$execute as @s[scores={lzt_wrench_success=0}] if score pz lzt_wrench_raycast matches 11 store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=8] replace
$execute as @s[scores={lzt_wrench_success=0}] if score px lzt_wrench_raycast matches 4 store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=12] replace
# Otherwise, Flip
execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run function lzstools_wrench:rotate/skulls/flip with storage lzstools:wrench

View File

@ -0,0 +1,18 @@
## Cycle Heads and Skulls
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=0] run setblock ~ ~ ~ $(block)[rotation=1] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=1] run setblock ~ ~ ~ $(block)[rotation=2] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=2] run setblock ~ ~ ~ $(block)[rotation=3] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=3] run setblock ~ ~ ~ $(block)[rotation=4] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=4] run setblock ~ ~ ~ $(block)[rotation=5] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=5] run setblock ~ ~ ~ $(block)[rotation=6] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=6] run setblock ~ ~ ~ $(block)[rotation=7] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=7] run setblock ~ ~ ~ $(block)[rotation=8] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=8] run setblock ~ ~ ~ $(block)[rotation=9] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=9] run setblock ~ ~ ~ $(block)[rotation=10] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=10] run setblock ~ ~ ~ $(block)[rotation=11] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=11] run setblock ~ ~ ~ $(block)[rotation=12] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=12] run setblock ~ ~ ~ $(block)[rotation=13] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=13] run setblock ~ ~ ~ $(block)[rotation=14] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=14] run setblock ~ ~ ~ $(block)[rotation=15] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=15] run setblock ~ ~ ~ $(block)[rotation=0] replace

View File

@ -0,0 +1,18 @@
## Flip Heads and Skulls
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=0] run setblock ~ ~ ~ $(block)[rotation=8] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=1] run setblock ~ ~ ~ $(block)[rotation=9] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=2] run setblock ~ ~ ~ $(block)[rotation=10] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=3] run setblock ~ ~ ~ $(block)[rotation=11] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=4] run setblock ~ ~ ~ $(block)[rotation=12] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=5] run setblock ~ ~ ~ $(block)[rotation=13] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=6] run setblock ~ ~ ~ $(block)[rotation=14] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=7] run setblock ~ ~ ~ $(block)[rotation=15] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=8] run setblock ~ ~ ~ $(block)[rotation=0] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=9] run setblock ~ ~ ~ $(block)[rotation=1] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=10] run setblock ~ ~ ~ $(block)[rotation=2] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=11] run setblock ~ ~ ~ $(block)[rotation=3] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=12] run setblock ~ ~ ~ $(block)[rotation=4] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=13] run setblock ~ ~ ~ $(block)[rotation=5] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=14] run setblock ~ ~ ~ $(block)[rotation=6] replace
$execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block)[rotation=15] run setblock ~ ~ ~ $(block)[rotation=7] replace

View File

@ -0,0 +1,21 @@
## Face Player Heads and Skulls
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-11.25..11.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=0] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=11.25..33.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=1] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=33.75..56.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=2] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=56.25..78.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=3] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=78.75..101.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=4] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=101.25..123.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=5] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=123.75..146.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=6] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=146.25..168.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=7] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=168.75..-168.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=8] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-168.75..-146.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=9] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-146.25..-123.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=10] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-123.75..-101.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=11] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-101.25..-78.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=12] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-78.75..-56.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=13] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-56.25..-33.75] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=14] replace
$execute as @s[scores={lzt_wrench_success=0}, y_rotation=-33.75..-11.25] store result score @s lzt_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[rotation=15] replace
# Otherwise, Flip
execute as @s[scores={lzt_wrench_success=0}] store result score @s lzt_wrench_success run function lzstools_wrench:rotate/skulls/flip with storage lzstools:wrench

View File

@ -0,0 +1,7 @@
## Heads and Skulls
# Rotate Based on Wrench Mode
execute as @s[scores={lzt_wrench_success=0},nbt={SelectedItem:{components:{"minecraft:lore":["Flip"]}}}] run function lzstools_wrench:rotate/skulls/flip with storage lzstools:wrench
execute as @s[scores={lzt_wrench_success=0},nbt={SelectedItem:{components:{"minecraft:lore":["Face Player"]}}}] run function lzstools_wrench:rotate/skulls/player with storage lzstools:wrench
execute as @s[scores={lzt_wrench_success=0},nbt={SelectedItem:{components:{"minecraft:lore":["Face Click"]}}}] run function lzstools_wrench:rotate/skulls/click with storage lzstools:wrench
execute as @s[scores={lzt_wrench_success=0}] run function lzstools_wrench:rotate/skulls/cycle with storage lzstools:wrench