This commit is contained in:
7
data/lzstools_chisel/function/block/place.mcfunction
Normal file
7
data/lzstools_chisel/function/block/place.mcfunction
Normal 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
|
@@ -0,0 +1,2 @@
|
||||
# Place Leaves
|
||||
$execute as @s store result score @s lzt_chisel_success setblock ~ ~ ~ $(chosen_block)[persistent=true] destroy
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
||||
|
7
data/lzstools_chisel/function/block/place/xyz.mcfunction
Normal file
7
data/lzstools_chisel/function/block/place/xyz.mcfunction
Normal 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
|
16
data/lzstools_chisel/function/block/place_normal.mcfunction
Normal file
16
data/lzstools_chisel/function/block/place_normal.mcfunction
Normal 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
|
@@ -0,0 +1 @@
|
||||
$execute if entity @s[gamemode=!creative] run clear @s $(chosen_block) 1
|
22
data/lzstools_chisel/function/block/target_coords.mcfunction
Normal file
22
data/lzstools_chisel/function/block/target_coords.mcfunction
Normal 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]
|
@@ -0,0 +1 @@
|
||||
$item modify entity @s weapon.mainhand {"function":"minecraft:set_components","components":{"minecraft:damage":$(damage)}}
|
@@ -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
|
@@ -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
|
@@ -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
|
3
data/lzstools_chisel/function/mainhand.mcfunction
Normal file
3
data/lzstools_chisel/function/mainhand.mcfunction
Normal file
@@ -0,0 +1,3 @@
|
||||
tag @s add lzstools_chisel_mainhand
|
||||
# Raycast from player's position
|
||||
function lzstools_chisel:raycast/start
|
16
data/lzstools_chisel/function/raycast/hit.mcfunction
Normal file
16
data/lzstools_chisel/function/raycast/hit.mcfunction
Normal 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
|
12
data/lzstools_chisel/function/raycast/loop.mcfunction
Normal file
12
data/lzstools_chisel/function/raycast/loop.mcfunction
Normal file
@@ -0,0 +1,12 @@
|
||||
## 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
|
||||
|
||||
# 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
|
11
data/lzstools_chisel/function/raycast/start.mcfunction
Normal file
11
data/lzstools_chisel/function/raycast/start.mcfunction
Normal file
@@ -0,0 +1,11 @@
|
||||
#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 chosen_block
|
||||
data remove storage lzstools:chisel chosen_slot
|
@@ -0,0 +1,5 @@
|
||||
# No Shulkers
|
||||
$execute if items entity @s hotbar.$(chosen_slot) #minecraft:shulker_boxes run return fail
|
||||
|
||||
$setblock ~ -64 ~ $(chosen_block)
|
||||
setblock ~ -64 ~ bedrock
|
@@ -0,0 +1,2 @@
|
||||
$data modify storage lzstools:chisel chosen_block set from entity @s Inventory[{Slot:$(chosen_slot)b}].id
|
||||
function lzstools_chisel:select/check_block with storage lzstools:chisel
|
7
data/lzstools_chisel/function/select/start.mcfunction
Normal file
7
data/lzstools_chisel/function/select/start.mcfunction
Normal 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
|
Reference in New Issue
Block a user