From c6a7150041d239b387d69d70a547a77aa9f06b4f Mon Sep 17 00:00:00 2001 From: Mark Rapson Date: Sat, 17 May 2025 01:47:52 +0100 Subject: [PATCH] Added Hammer Added Unbreaking tag Renamed rayloop to loop --- .../lzstools/models/items/hammer/hammer.json | 6 +++ .../lzstools/textures/item/hammer/hammer.png | Bin 0 -> 449 bytes assets/minecraft/items/iron_pickaxe.json | 13 +++++++ data/lzstools/advancement/visible/hammer.json | 32 ++++++++++++++++ ...ayer.mcfunction => check_click.mcfunction} | 1 - .../lzstools/function/check_hammer.mcfunction | 4 ++ data/lzstools/function/give/hammer.mcfunction | 1 + data/lzstools/function/load.mcfunction | 16 +++++++- data/lzstools/function/recipes.mcfunction | 3 +- data/lzstools/function/tick.mcfunction | 5 ++- data/lzstools/predicate/hammer/mainhand.json | 17 +++++++++ data/lzstools/tags/block/unbreakable.json | 18 +++++++++ .../function/break/break.mcfunction | 22 +++++++++++ .../function/break/eastwest.mcfunction | 8 ++++ .../function/break/northsouth.mcfunction | 8 ++++ .../function/break/updown.mcfunction | 8 ++++ .../function/durability/apply.mcfunction | 1 + .../function/durability/break.mcfunction | 3 ++ .../function/durability/handle.mcfunction | 13 +++++++ .../function/durability/unbreaking.mcfunction | 4 ++ .../function/mainhand.mcfunction | 2 + .../function/raycast/hit.mcfunction | 15 ++++++++ .../function/raycast/loop.mcfunction | 7 ++++ .../function/raycast/start.mcfunction | 12 ++++++ .../function/raycast_side/loop.mcfunction | 9 +++++ .../function/raycast_side/start.mcfunction | 8 ++++ .../raycast_side/target_coords.mcfunction | 22 +++++++++++ data/lzstools_hammer/predicate/hammer.json | 17 +++++++++ data/lzstools_hammer/recipe/hammer.json | 36 ++++++++++++++++++ .../function/raycast/hit.mcfunction | 4 +- .../{rayloop.mcfunction => loop.mcfunction} | 2 +- .../function/raycast/start.mcfunction | 2 +- .../{rayloop.mcfunction => loop.mcfunction} | 2 +- .../function/raycast/start.mcfunction | 2 +- 34 files changed, 312 insertions(+), 11 deletions(-) create mode 100644 assets/lzstools/models/items/hammer/hammer.json create mode 100644 assets/lzstools/textures/item/hammer/hammer.png create mode 100644 assets/minecraft/items/iron_pickaxe.json create mode 100644 data/lzstools/advancement/visible/hammer.json rename data/lzstools/function/{player.mcfunction => check_click.mcfunction} (99%) create mode 100644 data/lzstools/function/check_hammer.mcfunction create mode 100644 data/lzstools/function/give/hammer.mcfunction create mode 100644 data/lzstools/predicate/hammer/mainhand.json create mode 100644 data/lzstools/tags/block/unbreakable.json create mode 100644 data/lzstools_hammer/function/break/break.mcfunction create mode 100644 data/lzstools_hammer/function/break/eastwest.mcfunction create mode 100644 data/lzstools_hammer/function/break/northsouth.mcfunction create mode 100644 data/lzstools_hammer/function/break/updown.mcfunction create mode 100644 data/lzstools_hammer/function/durability/apply.mcfunction create mode 100644 data/lzstools_hammer/function/durability/break.mcfunction create mode 100644 data/lzstools_hammer/function/durability/handle.mcfunction create mode 100644 data/lzstools_hammer/function/durability/unbreaking.mcfunction create mode 100644 data/lzstools_hammer/function/mainhand.mcfunction create mode 100644 data/lzstools_hammer/function/raycast/hit.mcfunction create mode 100644 data/lzstools_hammer/function/raycast/loop.mcfunction create mode 100644 data/lzstools_hammer/function/raycast/start.mcfunction create mode 100644 data/lzstools_hammer/function/raycast_side/loop.mcfunction create mode 100644 data/lzstools_hammer/function/raycast_side/start.mcfunction create mode 100644 data/lzstools_hammer/function/raycast_side/target_coords.mcfunction create mode 100644 data/lzstools_hammer/predicate/hammer.json create mode 100644 data/lzstools_hammer/recipe/hammer.json rename data/lzstools_trowel/function/raycast/{rayloop.mcfunction => loop.mcfunction} (95%) rename data/lzstools_wrench/function/raycast/{rayloop.mcfunction => loop.mcfunction} (98%) diff --git a/assets/lzstools/models/items/hammer/hammer.json b/assets/lzstools/models/items/hammer/hammer.json new file mode 100644 index 0000000..ae10905 --- /dev/null +++ b/assets/lzstools/models/items/hammer/hammer.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "lzstools:item/hammer/hammer" + } +} \ No newline at end of file diff --git a/assets/lzstools/textures/item/hammer/hammer.png b/assets/lzstools/textures/item/hammer/hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..12c6d56e1152673527da720263288e9a0a5298cf GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%z6FprVLo9le z6BL*%cC!C1FXI2z@7vcZaaM4nrop@awbs`Sl};N!z9g|+|NH@!{15SNeiI+wn;Xre zsJM_v>Cq*g`2BVHJL*p8lVp-39Zobut9l3{%*61}dx|R5zIB?nL z%l-}p_QMBn+wjCO2J+;`+a@OfLB;Q1s)y&^zAh*KjwUO#co%tj!1`t0m%9`pQrDxvZ+3=AGu`u{lH lEZ7YUdA`&L&op0O1}z|)1BgN3Qt)ID<>~6@vd$@?2>@nXzPkVb literal 0 HcmV?d00001 diff --git a/assets/minecraft/items/iron_pickaxe.json b/assets/minecraft/items/iron_pickaxe.json new file mode 100644 index 0000000..f0ba2f8 --- /dev/null +++ b/assets/minecraft/items/iron_pickaxe.json @@ -0,0 +1,13 @@ +{ + "model": { + "type": "select", + "property": "custom_model_data", + "fallback": { + "type": "minecraft:model", + "model": "minecraft:item/iron_pickaxe" + }, + "cases": [ + { "when": "lzstools:hammer", "model": { "type": "model", "model": "lzstools:items/hammer/hammer" } } + ] + } +} \ No newline at end of file diff --git a/data/lzstools/advancement/visible/hammer.json b/data/lzstools/advancement/visible/hammer.json new file mode 100644 index 0000000..eb5ec49 --- /dev/null +++ b/data/lzstools/advancement/visible/hammer.json @@ -0,0 +1,32 @@ +{ + "display": { + "icon": { + "id": "minecraft:iron_pickaxe", + "components": { + "minecraft:custom_model_data": { + "strings": [ + "lzstools:hammer" + ] + } + } + }, + "title": { + "text": "Hammering out the details" + }, + "description": { + "text": "Craft a Hammer" + }, + "show_toast": true, + "announce_to_chat": false, + "hidden": false + }, + "parent": "lzstools:visible/root", + "criteria": { + "": { + "trigger": "minecraft:recipe_crafted", + "conditions": { + "recipe_id": "lzstools_hammer:hammer" + } + } + } +} \ No newline at end of file diff --git a/data/lzstools/function/player.mcfunction b/data/lzstools/function/check_click.mcfunction similarity index 99% rename from data/lzstools/function/player.mcfunction rename to data/lzstools/function/check_click.mcfunction index 7ce8b15..dbb5cb7 100644 --- a/data/lzstools/function/player.mcfunction +++ b/data/lzstools/function/check_click.mcfunction @@ -1,6 +1,5 @@ scoreboard players set @s lzt_click_check 0 - # Wrench execute if predicate lzstools:wrench/mainhand run function lzstools_wrench:wrench/rotate execute if predicate lzstools:wrench/offhand run function lzstools_wrench:wrench/offhand diff --git a/data/lzstools/function/check_hammer.mcfunction b/data/lzstools/function/check_hammer.mcfunction new file mode 100644 index 0000000..a62bac0 --- /dev/null +++ b/data/lzstools/function/check_hammer.mcfunction @@ -0,0 +1,4 @@ +scoreboard players set @s lzt_hammer_check 0 + +# Hammer +execute if predicate lzstools:hammer/mainhand run function lzstools_hammer:mainhand \ No newline at end of file diff --git a/data/lzstools/function/give/hammer.mcfunction b/data/lzstools/function/give/hammer.mcfunction new file mode 100644 index 0000000..dcdfd67 --- /dev/null +++ b/data/lzstools/function/give/hammer.mcfunction @@ -0,0 +1 @@ +give @s minecraft:iron_pickaxe[minecraft:custom_name={"text":"Hammer","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:hammer"]},minecraft:custom_data={"lzstools":["hammer"]},minecraft:max_damage=1800] \ No newline at end of file diff --git a/data/lzstools/function/load.mcfunction b/data/lzstools/function/load.mcfunction index f38207f..6532d93 100644 --- a/data/lzstools/function/load.mcfunction +++ b/data/lzstools/function/load.mcfunction @@ -9,9 +9,21 @@ scoreboard objectives add lzt_wrench_raycast dummy scoreboard objectives add lzt_trowel_success dummy scoreboard objectives add lzt_trowel_raycast dummy scoreboard objectives add lzt_trowel_raycast_hit dummy +scoreboard objectives add lzt_trowel_block_check dummy scoreboard objectives add lzt_trowel_block_length dummy -scoreboard objectives add lzt_chosen_block_check dummy scoreboard objectives add lzt_trowel_unbreaking_check dummy scoreboard objectives add lzt_trowel_unbreaking_chance dummy scoreboard objectives add lzt_trowel_damage dummy -scoreboard objectives add lzt_trowel_max_damage dummy \ No newline at end of file +scoreboard objectives add lzt_trowel_max_damage dummy + +# Hammer +scoreboard objectives add lzt_hammer_check minecraft.used:minecraft.iron_pickaxe +scoreboard objectives add lzt_hammer_success dummy +scoreboard objectives add lzt_hammer_raycast dummy +scoreboard objectives add lzt_hammer_raycast_hit dummy +scoreboard objectives add lzt_hammer_side_raycast dummy +scoreboard objectives add lzt_hammer_side_raycast_hit dummy +scoreboard objectives add lzt_hammer_unbreaking_check dummy +scoreboard objectives add lzt_hammer_unbreaking_chance dummy +scoreboard objectives add lzt_hammer_damage dummy +scoreboard objectives add lzt_hammer_max_damage dummy \ No newline at end of file diff --git a/data/lzstools/function/recipes.mcfunction b/data/lzstools/function/recipes.mcfunction index 2a5ed95..a8f44d4 100644 --- a/data/lzstools/function/recipes.mcfunction +++ b/data/lzstools/function/recipes.mcfunction @@ -1,3 +1,4 @@ recipe give @s lzstools_wrench:wrench recipe give @s lzstools_trowel:iron -recipe give @s lzstools_trowel:diamond \ No newline at end of file +recipe give @s lzstools_trowel:diamond +recipe give @s lzstools_hammer:hammer \ No newline at end of file diff --git a/data/lzstools/function/tick.mcfunction b/data/lzstools/function/tick.mcfunction index eb971de..11ae43f 100644 --- a/data/lzstools/function/tick.mcfunction +++ b/data/lzstools/function/tick.mcfunction @@ -1,2 +1,5 @@ # Click Check -execute as @a if score @s lzt_click_check matches 1.. run function lzstools:player \ No newline at end of file +execute as @a if score @s lzt_click_check matches 1.. run function lzstools:check_click + +# Hammer Click Check +execute as @a if score @s lzt_hammer_check matches 1.. run function lzstools:check_hammer \ No newline at end of file diff --git a/data/lzstools/predicate/hammer/mainhand.json b/data/lzstools/predicate/hammer/mainhand.json new file mode 100644 index 0000000..aacc7d3 --- /dev/null +++ b/data/lzstools/predicate/hammer/mainhand.json @@ -0,0 +1,17 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "mainhand": { + "predicates": { + "minecraft:custom_data": { + "lzstools": [ + "hammer" + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/data/lzstools/tags/block/unbreakable.json b/data/lzstools/tags/block/unbreakable.json new file mode 100644 index 0000000..f449e6f --- /dev/null +++ b/data/lzstools/tags/block/unbreakable.json @@ -0,0 +1,18 @@ +{"replace":false,"values":[ + "minecraft:bedrock", + "minecraft:structure_block", + "minecraft:structure_void", + "minecraft:jigsaw", + "minecraft:command_block", + "minecraft:chain_command_block", + "minecraft:repeating_command_block", + "minecraft:test_instance_block", + "minecraft:test_block", + "minecraft:light", + "minecraft:end_portal", + "minecraft:end_portal_frame", + "minecraft:nether_portal", + "minecraft:reinforced_deepslate", + "minecraft:water", + "minecraft:lava" +]} \ No newline at end of file diff --git a/data/lzstools_hammer/function/break/break.mcfunction b/data/lzstools_hammer/function/break/break.mcfunction new file mode 100644 index 0000000..03ce843 --- /dev/null +++ b/data/lzstools_hammer/function/break/break.mcfunction @@ -0,0 +1,22 @@ +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 + + +# Break to update neighbors +clone ~ ~ ~ ~ ~ ~ ~ -64 ~ replace +setblock ~ ~ ~ minecraft:air replace + +# Break +gamerule doTileDrops false +clone ~ -64 ~ ~ -64 ~ ~ ~ ~ replace +setblock ~ -64 ~ minecraft:bedrock replace +setblock ~ ~ ~ minecraft:air destroy +gamerule doTileDrops true + +# Durability +function lzstools_hammer:durability/handle diff --git a/data/lzstools_hammer/function/break/eastwest.mcfunction b/data/lzstools_hammer/function/break/eastwest.mcfunction new file mode 100644 index 0000000..62e0db3 --- /dev/null +++ b/data/lzstools_hammer/function/break/eastwest.mcfunction @@ -0,0 +1,8 @@ +execute positioned ~ ~1 ~ run function lzstools_hammer:break/break +execute positioned ~ ~1 ~1 run function lzstools_hammer:break/break +execute positioned ~ ~1 ~-1 run function lzstools_hammer:break/break +execute positioned ~ ~ ~1 run function lzstools_hammer:break/break +execute positioned ~ ~ ~-1 run function lzstools_hammer:break/break +execute positioned ~ ~-1 ~ run function lzstools_hammer:break/break +execute positioned ~ ~-1 ~1 run function lzstools_hammer:break/break +execute positioned ~ ~-1 ~-1 run function lzstools_hammer:break/break \ No newline at end of file diff --git a/data/lzstools_hammer/function/break/northsouth.mcfunction b/data/lzstools_hammer/function/break/northsouth.mcfunction new file mode 100644 index 0000000..ccda317 --- /dev/null +++ b/data/lzstools_hammer/function/break/northsouth.mcfunction @@ -0,0 +1,8 @@ +execute positioned ~ ~1 ~ run function lzstools_hammer:break/break +execute positioned ~1 ~1 ~ run function lzstools_hammer:break/break +execute positioned ~-1 ~1 ~ run function lzstools_hammer:break/break +execute positioned ~1 ~ ~ run function lzstools_hammer:break/break +execute positioned ~-1 ~ ~ run function lzstools_hammer:break/break +execute positioned ~ ~-1 ~ run function lzstools_hammer:break/break +execute positioned ~1 ~-1 ~ run function lzstools_hammer:break/break +execute positioned ~-1 ~-1 ~ run function lzstools_hammer:break/break \ No newline at end of file diff --git a/data/lzstools_hammer/function/break/updown.mcfunction b/data/lzstools_hammer/function/break/updown.mcfunction new file mode 100644 index 0000000..3c2a015 --- /dev/null +++ b/data/lzstools_hammer/function/break/updown.mcfunction @@ -0,0 +1,8 @@ +execute positioned ~1 ~ ~1 run function lzstools_hammer:break/break +execute positioned ~1 ~ ~ run function lzstools_hammer:break/break +execute positioned ~1 ~ ~-1 run function lzstools_hammer:break/break +execute positioned ~-1 ~ ~1 run function lzstools_hammer:break/break +execute positioned ~-1 ~ ~ run function lzstools_hammer:break/break +execute positioned ~-1 ~ ~-1 run function lzstools_hammer:break/break +execute positioned ~ ~ ~1 run function lzstools_hammer:break/break +execute positioned ~ ~ ~-1 run function lzstools_hammer:break/break \ No newline at end of file diff --git a/data/lzstools_hammer/function/durability/apply.mcfunction b/data/lzstools_hammer/function/durability/apply.mcfunction new file mode 100644 index 0000000..df40173 --- /dev/null +++ b/data/lzstools_hammer/function/durability/apply.mcfunction @@ -0,0 +1 @@ +$item modify entity @s weapon.mainhand {"function":"minecraft:set_components","components":{"minecraft:damage":$(damage)}} \ No newline at end of file diff --git a/data/lzstools_hammer/function/durability/break.mcfunction b/data/lzstools_hammer/function/durability/break.mcfunction new file mode 100644 index 0000000..2725598 --- /dev/null +++ b/data/lzstools_hammer/function/durability/break.mcfunction @@ -0,0 +1,3 @@ +execute if entity @s[predicate=lzstools_hammer:hammer] at @s anchored eyes run particle minecraft:item{item:"minecraft:iron_pickaxe"} ^ ^-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 \ No newline at end of file diff --git a/data/lzstools_hammer/function/durability/handle.mcfunction b/data/lzstools_hammer/function/durability/handle.mcfunction new file mode 100644 index 0000000..76c7be1 --- /dev/null +++ b/data/lzstools_hammer/function/durability/handle.mcfunction @@ -0,0 +1,13 @@ +scoreboard players reset @s lzt_hammer_unbreaking_check +execute if entity @s[predicate=lzstools:unbreaking/all] run function lzstools_hammer:durability/unbreaking +execute if score @s lzt_hammer_unbreaking_check matches 1 run return fail + +# Handle Damage +data modify storage lzstools:hammer components set from entity @s SelectedItem.components +execute store result score @s lzt_hammer_damage run data get storage lzstools:hammer components."minecraft:damage" +execute store result score @s lzt_hammer_max_damage run data get storage lzstools:hammer components."minecraft:max_damage" +scoreboard players add @s lzt_hammer_damage 1 +execute store result storage lzstools:hammer damage int 1 run scoreboard players get @s lzt_hammer_damage + +function lzstools_hammer:durability/apply with storage lzstools:hammer +execute if score @s lzt_hammer_damage >= @s lzt_hammer_max_damage run function lzstools_hammer:durability/break \ No newline at end of file diff --git a/data/lzstools_hammer/function/durability/unbreaking.mcfunction b/data/lzstools_hammer/function/durability/unbreaking.mcfunction new file mode 100644 index 0000000..b1402a5 --- /dev/null +++ b/data/lzstools_hammer/function/durability/unbreaking.mcfunction @@ -0,0 +1,4 @@ +execute store result score @s lzt_hammer_unbreaking_chance run random value 1..100 +execute if entity @s[predicate=lzstools:unbreaking/mainhand/3] if score @s lzt_hammer_unbreaking_chance matches ..75 run return run scoreboard players set @s lzt_hammer_unbreaking_check 1 +execute if entity @s[predicate=lzstools:unbreaking/mainhand/2] if score @s lzt_hammer_unbreaking_chance matches ..66 run return run scoreboard players set @s lzt_hammer_unbreaking_check 1 +execute if entity @s[predicate=lzstools:unbreaking/mainhand/1] if score @s lzt_hammer_unbreaking_chance matches ..50 run return run scoreboard players set @s lzt_hammer_unbreaking_check 1 diff --git a/data/lzstools_hammer/function/mainhand.mcfunction b/data/lzstools_hammer/function/mainhand.mcfunction new file mode 100644 index 0000000..030d837 --- /dev/null +++ b/data/lzstools_hammer/function/mainhand.mcfunction @@ -0,0 +1,2 @@ +scoreboard players set @s lzt_hammer_check 0 +function lzstools_hammer:raycast/start \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast/hit.mcfunction b/data/lzstools_hammer/function/raycast/hit.mcfunction new file mode 100644 index 0000000..be582d0 --- /dev/null +++ b/data/lzstools_hammer/function/raycast/hit.mcfunction @@ -0,0 +1,15 @@ +## Raycast Hit + +scoreboard players set @s lzt_hammer_raycast_hit 1 + +setblock ~ ~ ~ minecraft:barrier replace +# Get Raycast Target Coords +function lzstools_hammer:raycast_side/start +setblock ~ ~ ~ minecraft:air replace + +execute if score px lzt_hammer_side_raycast matches 0 run return run function lzstools_hammer:break/eastwest +execute if score px lzt_hammer_side_raycast matches 15 run return run function lzstools_hammer:break/eastwest +execute if score pz lzt_hammer_side_raycast matches 0 run return run function lzstools_hammer:break/northsouth +execute if score pz lzt_hammer_side_raycast matches 15 run return run function lzstools_hammer:break/northsouth +execute if score py lzt_hammer_side_raycast matches 0 run return run function lzstools_hammer:break/updown +execute if score py lzt_hammer_side_raycast matches 15 run return run function lzstools_hammer:break/updown \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast/loop.mcfunction b/data/lzstools_hammer/function/raycast/loop.mcfunction new file mode 100644 index 0000000..c4b93f1 --- /dev/null +++ b/data/lzstools_hammer/function/raycast/loop.mcfunction @@ -0,0 +1,7 @@ +## Raycast Loop + +execute as @s at @n[type=item,nbt={Age:0s},distance=..0.8] run function lzstools_hammer:raycast/hit + +# Advance forward and if nothing found +scoreboard players add #distance lzt_hammer_raycast 1 +execute if score @s lzt_hammer_raycast_hit matches 0 if score #distance lzt_hammer_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_hammer:raycast/loop \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast/start.mcfunction b/data/lzstools_hammer/function/raycast/start.mcfunction new file mode 100644 index 0000000..e8b03ce --- /dev/null +++ b/data/lzstools_hammer/function/raycast/start.mcfunction @@ -0,0 +1,12 @@ +## Raycast Start +scoreboard players set #distance lzt_hammer_raycast 0 +scoreboard players set @s lzt_hammer_raycast_hit 0 + + +# Raycast +execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lzstools_hammer:raycast/loop + +# Clean Data +data remove storage lzstools:hammer damage +scoreboard players set @s lzt_hammer_damage 0 +scoreboard players set @s lzt_hammer_max_damage 1 \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast_side/loop.mcfunction b/data/lzstools_hammer/function/raycast_side/loop.mcfunction new file mode 100644 index 0000000..c1dd66b --- /dev/null +++ b/data/lzstools_hammer/function/raycast_side/loop.mcfunction @@ -0,0 +1,9 @@ +## Raycast Loop + +execute if block ~ ~ ~ minecraft:barrier run scoreboard players set @s lzt_hammer_side_raycast_hit 1 + +execute if score @s lzt_hammer_side_raycast_hit matches 1 run function lzstools_hammer:raycast_side/target_coords + +# Advance forward and if nothing found +scoreboard players add #distance lzt_hammer_side_raycast 1 +execute if score @s lzt_hammer_side_raycast_hit matches 0 if score #distance lzt_hammer_side_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_hammer:raycast_side/loop \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast_side/start.mcfunction b/data/lzstools_hammer/function/raycast_side/start.mcfunction new file mode 100644 index 0000000..6c01e74 --- /dev/null +++ b/data/lzstools_hammer/function/raycast_side/start.mcfunction @@ -0,0 +1,8 @@ +## Raycast Start +scoreboard players set #distance lzt_hammer_side_raycast 0 +scoreboard players set @s lzt_hammer_side_raycast_hit 0 + +# Raycast +execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lzstools_hammer:raycast_side/loop + +# Clean Data \ No newline at end of file diff --git a/data/lzstools_hammer/function/raycast_side/target_coords.mcfunction b/data/lzstools_hammer/function/raycast_side/target_coords.mcfunction new file mode 100644 index 0000000..076d02b --- /dev/null +++ b/data/lzstools_hammer/function/raycast_side/target_coords.mcfunction @@ -0,0 +1,22 @@ +## Get Raycast Target Coords + +# Stored Value for Calc +scoreboard players set c16 lzt_hammer_side_raycast 16 +# Summon Invisible Entity +summon area_effect_cloud ~ ~ ~ {Radius:0.01,Duration:1,Tags:["RaycastMark"]} + +# Pixel Calculations +execute store result score px lzt_hammer_side_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[0] 16 +scoreboard players operation px lzt_hammer_side_raycast %= c16 lzt_hammer_side_raycast +execute if score px lzt_hammer_side_raycast matches ..-1 run scoreboard players add px lzt_hammer_side_raycast 16 + +execute store result score py lzt_hammer_side_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[1] 16 +scoreboard players operation py lzt_hammer_side_raycast %= c16 lzt_hammer_side_raycast +execute if score py lzt_hammer_side_raycast matches ..-1 run scoreboard players add py lzt_hammer_side_raycast 16 + +execute store result score pz lzt_hammer_side_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[2] 16 +scoreboard players operation pz lzt_hammer_side_raycast %= c16 lzt_hammer_side_raycast +execute if score pz lzt_hammer_side_raycast matches ..-1 run scoreboard players add pz lzt_hammer_side_raycast 16 + +# Remove Entity +kill @e[tag=RaycastMark,sort=nearest,limit=1] \ No newline at end of file diff --git a/data/lzstools_hammer/predicate/hammer.json b/data/lzstools_hammer/predicate/hammer.json new file mode 100644 index 0000000..cdbdb97 --- /dev/null +++ b/data/lzstools_hammer/predicate/hammer.json @@ -0,0 +1,17 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "equipment": { + "mainhand": { + "predicates": { + "minecraft:custom_data": { + "lzstools": [ + "hammer" + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/data/lzstools_hammer/recipe/hammer.json b/data/lzstools_hammer/recipe/hammer.json new file mode 100644 index 0000000..dcfec5d --- /dev/null +++ b/data/lzstools_hammer/recipe/hammer.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "pattern": [ + "h ", + "s ", + "l " + ], + "key": { + "h": "minecraft:heavy_core", + "s": "minecraft:stick", + "l": "minecraft:lightning_rod" + }, + "result": { + "id": "minecraft:iron_pickaxe", + "count": 1, + "components": { + "minecraft:max_damage": 1800, + "minecraft:custom_name": { + "text": "Hammer", + "color": "aqua", + "italic": false + }, + "minecraft:custom_model_data": { + "strings": [ + "lzstools:hammer" + ] + }, + "minecraft:custom_data": { + "lzstools": [ + "hammer" + ] + } + } + } +} \ No newline at end of file diff --git a/data/lzstools_trowel/function/raycast/hit.mcfunction b/data/lzstools_trowel/function/raycast/hit.mcfunction index 550a30e..ec9446a 100644 --- a/data/lzstools_trowel/function/raycast/hit.mcfunction +++ b/data/lzstools_trowel/function/raycast/hit.mcfunction @@ -5,8 +5,8 @@ execute if entity @n[distance=..1] run return fail function lzstools_trowel:random/start # No block, don't place and end -execute store result score @s lzt_chosen_block_check run data get storage lzstools:trowel chosen_block -execute if score @s lzt_chosen_block_check matches 0 run return fail +execute store result score @s lzt_trowel_block_check run data get storage lzstools:trowel chosen_block +execute if score @s lzt_trowel_block_check matches 0 run return fail execute at @s run playsound minecraft:block.stone.place master @a ~ ~ ~ 1 1.2 execute at @s run playsound minecraft:block.azalea_leaves.place master @a ~ ~ ~ 0.3 1 diff --git a/data/lzstools_trowel/function/raycast/rayloop.mcfunction b/data/lzstools_trowel/function/raycast/loop.mcfunction similarity index 95% rename from data/lzstools_trowel/function/raycast/rayloop.mcfunction rename to data/lzstools_trowel/function/raycast/loop.mcfunction index 9b0cbf1..c323e59 100644 --- a/data/lzstools_trowel/function/raycast/rayloop.mcfunction +++ b/data/lzstools_trowel/function/raycast/loop.mcfunction @@ -11,4 +11,4 @@ execute if score @s lzt_trowel_raycast_hit matches 1 run tag @s remove lzstools_ # Advance forward and if nothing found scoreboard players add #distance lzt_trowel_raycast 1 -execute if score @s lzt_trowel_raycast_hit matches 0 if score #distance lzt_trowel_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_trowel:raycast/rayloop \ No newline at end of file +execute if score @s lzt_trowel_raycast_hit matches 0 if score #distance lzt_trowel_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_trowel:raycast/loop \ No newline at end of file diff --git a/data/lzstools_trowel/function/raycast/start.mcfunction b/data/lzstools_trowel/function/raycast/start.mcfunction index 2967f17..c876c3a 100644 --- a/data/lzstools_trowel/function/raycast/start.mcfunction +++ b/data/lzstools_trowel/function/raycast/start.mcfunction @@ -2,7 +2,7 @@ scoreboard players set #distance lzt_trowel_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_trowel:raycast/rayloop +execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lzstools_trowel:raycast/loop # Clean Data data remove storage lzstools:trowel inventory diff --git a/data/lzstools_wrench/function/raycast/rayloop.mcfunction b/data/lzstools_wrench/function/raycast/loop.mcfunction similarity index 98% rename from data/lzstools_wrench/function/raycast/rayloop.mcfunction rename to data/lzstools_wrench/function/raycast/loop.mcfunction index 2ffdf68..8921cca 100644 --- a/data/lzstools_wrench/function/raycast/rayloop.mcfunction +++ b/data/lzstools_wrench/function/raycast/loop.mcfunction @@ -23,4 +23,4 @@ execute as @s[scores={lzt_wrench_success=1..}] run playsound minecraft:entity.it # Advance forward and if nothing found scoreboard players add #distance lzt_wrench_raycast 1 -execute if score @s lzt_wrench_success matches 0 if score #distance lzt_wrench_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_wrench:raycast/rayloop \ No newline at end of file +execute if score @s lzt_wrench_success matches 0 if score #distance lzt_wrench_raycast matches ..451 positioned ^ ^ ^0.01 run function lzstools_wrench:raycast/loop \ No newline at end of file diff --git a/data/lzstools_wrench/function/raycast/start.mcfunction b/data/lzstools_wrench/function/raycast/start.mcfunction index a34df5e..054b46a 100644 --- a/data/lzstools_wrench/function/raycast/start.mcfunction +++ b/data/lzstools_wrench/function/raycast/start.mcfunction @@ -2,7 +2,7 @@ scoreboard players set #distance lzt_wrench_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_wrench:raycast/rayloop +execute as @s at @s anchored eyes positioned ^ ^ ^ anchored feet run function lzstools_wrench:raycast/loop # Clean Data data remove storage lzstools:wrench block \ No newline at end of file