Compare commits

..
23 Commits
Author SHA1 Message Date
lzstealth a4ef6ca5f0 Chisel do nothing on unbreakable blocks 2025-05-21 21:47:58 +01:00
lzstealth 46a6e9ad65 Added Chisel 2025-05-21 21:26:09 +01:00
lzstealth 2b30e94381 Added durability to give command on trowels 2025-05-19 14:30:58 +01:00
lzstealth 8784b377f9 Added Skulls
Removed double checks
2025-05-18 02:15:33 +01:00
lzstealth c81a852e72 Fixed Hammer Durability not registering 2025-05-17 16:53:58 +01:00
lzstealth 723cbfc483 Data cleanup
Update uninstall command
Increased hammer durability
2025-05-17 10:48:51 +01:00
lzstealth 4f37178857 Updated Rarity of Hammer
Updated custom_name to item_name
2025-05-17 02:32:02 +01:00
lzstealth 56570f452c Update .gitea/workflows/draft_release.yaml 2025-05-17 01:10:41 +00:00
lzstealth d8f83b2777 Updated Source uses 2025-05-17 01:09:03 +00:00
lzstealth 21d45e781e Updated README 2025-05-17 01:51:35 +01:00
lzstealth b4b08bc662 Uniform Tab Size 2025-05-17 01:49:32 +01:00
lzstealth c6a7150041 Added Hammer
Added Unbreaking tag
Renamed rayloop to loop
2025-05-17 01:47:52 +01:00
lzstealth d97807baf3 Add .gitea/workflows/draft_release.yaml 2025-05-16 13:04:58 +00:00
lzstealth 6b4033e081 Fixed blocks not being removed with Trowel
Removed unneeded tags
Added clean trowel data after use
2025-05-16 02:02:01 +01:00
lzstealth 329f879cd8 updated tags and scoreboards
added sound to action
fixed damage when in offhand
2025-05-15 23:20:41 +01:00
lzstealth e2b221eed0 Added Trowel
Fixed issue with wrench
Organised tools into folders
2025-05-15 22:24:08 +01:00
lzstealth 444e5071d4 Updated Model Index to 0 2025-05-14 15:58:32 +01:00
lzstealth e0ec570c68 Updated naming for assets 2025-05-14 14:57:18 +01:00
lzstealth 9920a13f4f Prevent cycle if terracotta mode matches current rotation 2025-05-14 13:32:50 +01:00
lzstealth e2eb8071f7 Updated Namespace
Integrated Resourcepack
2025-05-14 12:09:54 +01:00
lzstealth 4137e85850 Update LICENSE.txt 2025-05-13 09:17:45 +00:00
lzstealth 0d30e4d312 Updated Readme 2025-05-13 02:36:29 +01:00
lzstealth 48d5cf9d5e Complete rewrite
Prep for addition of optional additional tools
Removed config (for now)
Added loads of blocks
2025-05-13 02:30:39 +01:00
343 changed files with 3755 additions and 6876 deletions
+26
View File
@@ -0,0 +1,26 @@
name: Draft Release
on:
push:
tags:
- '*'
jobs:
deploy-prod:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: https://git.lzstealth.com/actions/checkout@v4
- name: Zip Repository
run: zip -r "${{ gitea.workspace }}/${{ vars.FILE_NAME }} ${{ gitea.ref_name }}.zip" ./*
- name: Create Release
id: create_release
uses: https://git.lzstealth.com/actions/gitea-release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ gitea.ref_name }}
name: Release ${{ gitea.ref_name }}
draft: true
prerelease: false
files: |-
${{ gitea.workspace }}/${{ vars.FILE_NAME }} ${{ gitea.ref_name }}.zip
+2 -1
View File
@@ -1,7 +1,8 @@
MIT License
Copyright (c) 2023 Mark Rapson (LZStealth)
Copyright (c) 2025 Mark Rapson (LZStealth)
Copyright (c) 2021 GoldenDelicios
Copyright (c) 2024 maybejake
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+15 -37
View File
@@ -1,41 +1,19 @@
# LZ Wrench (Block Rotator)
Minecraft datapack: Rename a carrot on a stick to "Wrench" and right click on blocks to rotate them.
# LZs Tools
## How to use:
## Tools
- Wrench - Rotates blocks
- Trowels - Places random blocks from the hotbar
- Hammer - Break a 3x3 area
Additionally, you can change the Wrench's mode by right clicking in your offhand.
Information on how the different wrench modes work is available [here](WrenchModes.md).
## Install
* Drop the datapack into your world's datapacks folder.
* Type `/reload` or restart your world/server to enable the datapack.
* Use an anvil to rename a carrot on a stick to *Wrench* (case sensitive).
* Recepies will be given when entering the world.
*
## Uninstall
The Datapack can also be removed using `/function lzstools:uninstall`, this will remove all scoreboard components.
The wrench can currently rotate these blocks:
* Pillars and other similarly placed blocks
* All bark and logs, of all tree types, stripped or not
* Quartz and purpur pillars
* Hay bales
* Bone blocks
* The following redstone components:
* pistons
* sticky pistons
* barrel
* dispensers
* droppers
* observers
* hoppers
* repeaters
* comparators
* calibrated sculk sensor
* Glazed terracotta
* Rails
* End rods
* Stairs
* Slabs
Additionally, you can change the Wrench's mode by right clicking in your offhand.
Information on how the different modes work is available in `WrenchModes.md`.
## Options
Settings can be changed using `/function wrench:config`
A debug mode is also available to view the ray casting `/scoreboard players set WrenchDebug WrenchConfig 1`<br>
The Datapack can also be removed using `/function wrench:uninstall`, this will remove all scoreboard components.
Version 1.0
Version 2.2
+2 -16
View File
@@ -3,27 +3,15 @@
The Wrench's mode can be changed by right clicking while the Wrench is held in the player's off hand.
Various modes can make this wrench easier/quicker to use.
Rotatable blocks are divided into 5 categories:
* *Terracotta*: All 16 colors of glazed terracotta
* *Rails*: All 4 types of rails
* *Redstone*: dispensers, droppers, pistons, sticky pistons, observers, hoppers, repeaters, and comparators
* *Pillars*: All logs, stripped logs, bark, stripped bark, quartz pillars, purpur pillars, hay bales, and bone blocks
* *Slabs*: All Slabs including waterlogged
* *Stairs*: All Stairs including waterlogged
* *Rods*: End rods
## Default
* Works on all rotatable blocks
* End rods can only be flipped.
* Cycles through all rotations.
## Flip
* Works on *Redstone*, *Rods*, *Slabs* and *Stairs*.
* Flips the block to the opposite rotation.
* Moves slabs between the top and bottom slab position.
## Face player
* Works on *Rails*, *Redstone*, *Pillars* and *Stairs*.
* Rotates the block based on player's rotation.
* similar to default placement of most *Redstone*.
* e.g. if player is facing "east" a piston will face "west".
@@ -31,7 +19,6 @@ Rotatable blocks are divided into 5 categories:
* If block already facing the player, Wrench will flip it instead if possible.
## Face click
* Works on *Rails*, *Redstone*, *Pillars* and *Stairs*.
* Rotates the block to face the side of the block aimed at.
* similar to default placement of *Pillars*.
* e.g. if player clicks the top surface of a piston, the piston will face "up".
@@ -40,8 +27,7 @@ Rotatable blocks are divided into 5 categories:
* Due to a quirk, clicking on the edges where faces of a block meet (see image) can rotate the block to face one of its sides.
![](https://i.imgur.com/3NYmwIe.png)
* Special cases:
* In general, if "Face click" cannot be used, the Wrench will default to "Face Player".
* Hoppers will only use "Face player" if the top full-width section is clicked. Otherwise it will default to "Face Player" mode.
* In general, if "Face click" cannot be used, the Wrench will default to "Flip".
* Repeaters and comparators will default to "Face Player" mode if the top side is clicked.
* *Rails* behave the same as if in "Face Player" mode.
@@ -59,4 +45,4 @@ Rotatable blocks are divided into 5 categories:
* e.g. clicking edges of a block with "Face Click".
* The Wrench will go with whatever rotation succeeds first.
Version 1.0
Version 2.0
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/chisel/diamond"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/chisel/iron"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/hammer/hammer"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/trowel/diamond"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/trowel/iron"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/wrench/default"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/wrench/face_click"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/wrench/face_player"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/wrench/flip"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "lzstools:item/wrench/terracotta"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1,75 @@
{
"model": {
"type": "select",
"property": "custom_model_data",
"fallback": {
"type": "minecraft:model",
"model": "minecraft:item/carrot_on_a_stick"
},
"cases": [
{
"when": "lzstools:wrench_default",
"model": {
"type": "model",
"model": "lzstools:items/wrench/default"
}
},
{
"when": "lzstools:wrench_flip",
"model": {
"type": "model",
"model": "lzstools:items/wrench/flip"
}
},
{
"when": "lzstools:wrench_face_player",
"model": {
"type": "model",
"model": "lzstools:items/wrench/face_player"
}
},
{
"when": "lzstools:wrench_face_click",
"model": {
"type": "model",
"model": "lzstools:items/wrench/face_click"
}
},
{
"when": "lzstools:wrench_terracotta",
"model": {
"type": "model",
"model": "lzstools:items/wrench/terracotta"
}
},
{
"when": "lzstools:trowel_iron",
"model": {
"type": "model",
"model": "lzstools:items/trowel/iron"
}
},
{
"when": "lzstools:trowel_diamond",
"model": {
"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"
}
}
]
}
}
+19
View File
@@ -0,0 +1,19 @@
{
"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"
}
}
]
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"criteria": {
"requirement": {
"trigger": "minecraft:tick"
}
},
"rewards": {
"function": "lzstools:recipes"
}
}
@@ -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"
}
}
}
}
@@ -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"
}
}
}
}
@@ -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"
}
}
}
}
@@ -0,0 +1,26 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:wrench_default"
]
}
}
},
"title": "LZ's Tools",
"description": {
"text": "Tools that you may find useful!"
},
"background": "minecraft:block/deepslate_tiles",
"show_toast": false,
"announce_to_chat": false
},
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
}
}
@@ -0,0 +1,32 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:trowel_diamond"
]
}
}
},
"title": {
"text": "Trowel and error"
},
"description": {
"text": "Craft a Diamond Trowel"
},
"show_toast": true,
"announce_to_chat": false,
"hidden": false
},
"parent": "lzstools:visible/trowel_iron",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "lzstools_trowel:diamond"
}
}
}
}
@@ -0,0 +1,32 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:trowel_iron"
]
}
}
},
"title": {
"text": "It's a shovel for lil' you!"
},
"description": {
"text": "Craft a Trowel"
},
"show_toast": true,
"announce_to_chat": false,
"hidden": false
},
"parent": "lzstools:visible/root",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "lzstools_trowel:iron"
}
}
}
}
@@ -0,0 +1,32 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:wrench_default"
]
}
}
},
"title": {
"text": "Pivot, PIVOT!"
},
"description": {
"text": "Craft a Block Wrench"
},
"show_toast": true,
"announce_to_chat": false,
"hidden": false
},
"parent": "lzstools:visible/root",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "lzstools_wrench:wrench"
}
}
}
}
@@ -0,0 +1,12 @@
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
# 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
@@ -0,0 +1,4 @@
scoreboard players set @s lzt_hammer_check 0
# Hammer
execute if predicate lzstools:hammer/mainhand run function lzstools_hammer:mainhand
@@ -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]
@@ -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]
@@ -0,0 +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=2400]
@@ -0,0 +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"]},minecraft:max_damage=4500]
@@ -0,0 +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"]},minecraft:max_damage=750]
@@ -0,0 +1 @@
give @s minecraft:carrot_on_a_stick[minecraft:item_name={"text":"Rotator Wrench","color":"aqua"},minecraft:lore=["Default"],minecraft:custom_model_data={strings:["lzstools:wrench_default"]},minecraft:custom_data={"lzstools":["wrench"]},minecraft:unbreakable={},minecraft:enchantment_glint_override=false,minecraft:tooltip_display={hidden_components:["minecraft:unbreakable"]}]
+39
View File
@@ -0,0 +1,39 @@
# Click Check
scoreboard objectives add lzt_click_check minecraft.used:minecraft.carrot_on_a_stick
# Wrench
scoreboard objectives add lzt_wrench_success dummy
scoreboard objectives add lzt_wrench_raycast dummy
# Trowel
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_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
# 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_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
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
@@ -0,0 +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
+5
View File
@@ -0,0 +1,5 @@
# Click Check
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
@@ -0,0 +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
# Trowel
scoreboard objectives remove lzt_trowel_success dummy
scoreboard objectives remove lzt_trowel_raycast dummy
scoreboard objectives remove lzt_trowel_raycast_hit dummy
scoreboard objectives remove lzt_trowel_block_check dummy
scoreboard objectives remove lzt_trowel_block_length dummy
scoreboard objectives remove lzt_trowel_unbreaking_check dummy
scoreboard objectives remove lzt_trowel_unbreaking_chance dummy
scoreboard objectives remove lzt_trowel_damage dummy
scoreboard objectives remove lzt_trowel_max_damage dummy
# 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
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel"
]
}
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"hammer"
]
}
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"trowel"
]
}
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"trowel"
]
}
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 1
}
]
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 2
}
]
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 3
}
]
}
}
}
}
}
@@ -0,0 +1,21 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": {
"min": 1,
"max": 3
}
}
]
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 1
}
]
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 2
}
]
}
}
}
}
}
@@ -0,0 +1,18 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": 3
}
]
}
}
}
}
}
@@ -0,0 +1,21 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:enchantments": [
{
"enchantment": "minecraft:unbreaking",
"levels": {
"min": 1,
"max": 3
}
}
]
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"wrench"
]
}
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"wrench"
]
}
}
}
}
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"minecraft:white_banner",
"minecraft:orange_banner",
"minecraft:magenta_banner",
"minecraft:light_blue_banner",
"minecraft:yellow_banner",
"minecraft:lime_banner",
"minecraft:pink_banner",
"minecraft:gray_banner",
"minecraft:light_gray_banner",
"minecraft:cyan_banner",
"minecraft:purple_banner",
"minecraft:blue_banner",
"minecraft:brown_banner",
"minecraft:green_banner",
"minecraft:red_banner",
"minecraft:black_banner"
]
}
+10
View File
@@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:furnace",
"minecraft:smoker",
"minecraft:blast_furnace",
"minecraft:carved_pumpkin",
"minecraft:jack_o_lantern"
]
}
+9
View File
@@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:barrel",
"minecraft:dispenser",
"minecraft:dropper",
"minecraft:observer"
]
}
+27
View File
@@ -0,0 +1,27 @@
{
"replace": false,
"values": [
"#minecraft:rails",
"#minecraft:trapdoors",
"#minecraft:fence_gates",
"#minecraft:campfires",
"#minecraft:all_signs",
"#minecraft:anvil",
"minecraft:hopper",
"minecraft:repeater",
"minecraft:comparator",
"minecraft:calibrated_sculk_sensor",
"#minecraft:slabs",
"#minecraft:stairs",
"minecraft:end_rod",
"minecraft:chain",
"minecraft:piston",
"minecraft:sticky_piston",
"minecraft:decorated_pot",
"minecraft:lightning_rod",
"minecraft:stonecutter",
"minecraft:ender_chest",
"minecraft:bell",
"minecraft:grindstone"
]
}
+11
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"
]
}
+21
View File
@@ -0,0 +1,21 @@
{
"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"
]
}
+6
View File
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:crafter"
]
}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,3 @@
tag @s add lzstools_chisel_mainhand
# Raycast from player's position
function lzstools_chisel:raycast/start
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel_diamond"
]
}
}
}
}
}
}
@@ -0,0 +1,17 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": {
"lzstools": [
"chisel_iron"
]
}
}
}
}
}
}
+35
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"
]
}
}
}
}
+35
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"
]
}
}
}
}
@@ -0,0 +1,22 @@
# 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
# 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
@@ -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
@@ -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
@@ -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

Some files were not shown because too many files have changed in this diff Show More