Compare commits
11 Commits
1.8-1.21.4
...
2.2.1-1.21
Author | SHA1 | Date | |
---|---|---|---|
6b4033e081 | |||
329f879cd8 | |||
e2b221eed0 | |||
444e5071d4 | |||
e0ec570c68 | |||
9920a13f4f | |||
e2eb8071f7 | |||
4137e85850 | |||
0d30e4d312 | |||
48d5cf9d5e | |||
02a8a2ca97 |
@@ -1,7 +1,8 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2023 Mark Rapson (LZStealth)
|
Copyright (c) 2025 Mark Rapson (LZStealth)
|
||||||
Copyright (c) 2021 GoldenDelicios
|
Copyright (c) 2021 GoldenDelicios
|
||||||
|
Copyright (c) 2024 maybejake
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
49
README.md
@@ -1,41 +1,18 @@
|
|||||||
# LZ Wrench (Block Rotator)
|
# LZs Tools
|
||||||
Minecraft datapack: Rename a carrot on a stick to "Wrench" and right click on blocks to rotate them.
|
|
||||||
|
|
||||||
## How to use:
|
## Tools
|
||||||
* Drop the datapack into your world's datapacks folder.
|
- Wrench - Rotates blocks
|
||||||
* Type `/reload` or restart your world/server to enable the datapack.
|
- Trowels - Places random blocks from the hotbar
|
||||||
* Use an anvil to rename a carrot on a stick to *Wrench* (case sensitive).
|
|
||||||
|
|
||||||
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.
|
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`.
|
Information on how the different wrench modes work is available [here](WrenchModes.md).
|
||||||
|
|
||||||
## Options
|
## Install
|
||||||
Settings can be changed using `/function wrench:config`
|
* Drop the datapack into your world's datapacks folder.
|
||||||
|
* Type `/reload` or restart your world/server to enable the datapack.
|
||||||
|
* 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.
|
||||||
|
|
||||||
A debug mode is also available to view the ray casting `/scoreboard players set WrenchDebug WrenchConfig 1`<br>
|
Version 2.2
|
||||||
The Datapack can also be removed using `/function wrench:uninstall`, this will remove all scoreboard components.
|
|
||||||
|
|
||||||
Version 1.0
|
|
@@ -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.
|
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.
|
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
|
## Default
|
||||||
* Works on all rotatable blocks
|
* Works on all rotatable blocks
|
||||||
* End rods can only be flipped.
|
|
||||||
* Cycles through all rotations.
|
* Cycles through all rotations.
|
||||||
|
|
||||||
## Flip
|
## Flip
|
||||||
* Works on *Redstone*, *Rods*, *Slabs* and *Stairs*.
|
|
||||||
* Flips the block to the opposite rotation.
|
* Flips the block to the opposite rotation.
|
||||||
* Moves slabs between the top and bottom slab position.
|
* Moves slabs between the top and bottom slab position.
|
||||||
|
|
||||||
## Face player
|
## Face player
|
||||||
* Works on *Rails*, *Redstone*, *Pillars* and *Stairs*.
|
|
||||||
* Rotates the block based on player's rotation.
|
* Rotates the block based on player's rotation.
|
||||||
* similar to default placement of most *Redstone*.
|
* similar to default placement of most *Redstone*.
|
||||||
* e.g. if player is facing "east" a piston will face "west".
|
* 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.
|
* If block already facing the player, Wrench will flip it instead if possible.
|
||||||
|
|
||||||
## Face click
|
## Face click
|
||||||
* Works on *Rails*, *Redstone*, *Pillars* and *Stairs*.
|
|
||||||
* Rotates the block to face the side of the block aimed at.
|
* Rotates the block to face the side of the block aimed at.
|
||||||
* similar to default placement of *Pillars*.
|
* similar to default placement of *Pillars*.
|
||||||
* e.g. if player clicks the top surface of a piston, the piston will face "up".
|
* 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.
|
* 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.
|
||||||

|

|
||||||
* Special cases:
|
* Special cases:
|
||||||
* In general, if "Face click" cannot be used, the Wrench will default to "Face Player".
|
* In general, if "Face click" cannot be used, the Wrench will default to "Flip".
|
||||||
* Hoppers will only use "Face player" if the top full-width section is clicked. Otherwise it will default to "Face Player" mode.
|
|
||||||
* Repeaters and comparators will default to "Face Player" mode if the top side is clicked.
|
* 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.
|
* *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".
|
* e.g. clicking edges of a block with "Face Click".
|
||||||
* The Wrench will go with whatever rotation succeeds first.
|
* The Wrench will go with whatever rotation succeeds first.
|
||||||
|
|
||||||
Version 1.0
|
Version 2.0
|
6
assets/lzstools/models/items/trowel/diamond.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/trowel/diamond"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/trowel/iron.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/trowel/iron"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/wrench/default.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/wrench/default"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/wrench/face_click.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/wrench/face_click"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/wrench/face_player.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/wrench/face_player"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/wrench/flip.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/wrench/flip"
|
||||||
|
}
|
||||||
|
}
|
6
assets/lzstools/models/items/wrench/terracotta.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "minecraft:item/handheld",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "lzstools:item/wrench/terracotta"
|
||||||
|
}
|
||||||
|
}
|
BIN
assets/lzstools/textures/item/trowel/diamond.png
Normal file
After Width: | Height: | Size: 392 B |
BIN
assets/lzstools/textures/item/trowel/iron.png
Normal file
After Width: | Height: | Size: 346 B |
BIN
assets/lzstools/textures/item/wrench/default.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
assets/lzstools/textures/item/wrench/face_click.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
assets/lzstools/textures/item/wrench/face_player.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/lzstools/textures/item/wrench/flip.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
assets/lzstools/textures/item/wrench/terracotta.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
19
assets/minecraft/items/carrot_on_a_stick.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"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" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
10
data/lzstools/advancement/recipes.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"criteria": {
|
||||||
|
"requirement": {
|
||||||
|
"trigger": "minecraft:tick"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rewards": {
|
||||||
|
"function": "lzstools:recipes"
|
||||||
|
}
|
||||||
|
}
|
26
data/lzstools/advancement/visible/root.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
data/lzstools/advancement/visible/trowel_diamond.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
data/lzstools/advancement/visible/trowel_iron.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
data/lzstools/advancement/visible/wrench.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
1
data/lzstools/function/give/trowel_diamond.mcfunction
Normal file
@@ -0,0 +1 @@
|
|||||||
|
give @s minecraft:carrot_on_a_stick[minecraft:custom_name={"text":"Diamond Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_diamond"]},minecraft:custom_data={"lzstools":["trowel","trowel_diamond"]}]
|
1
data/lzstools/function/give/trowel_iron.mcfunction
Normal file
@@ -0,0 +1 @@
|
|||||||
|
give @s minecraft:carrot_on_a_stick[minecraft:custom_name={"text":"Iron Trowel","color":"aqua"},minecraft:custom_model_data={strings:["lzstools:trowel_iron"]},minecraft:custom_data={"lzstools":["trowel","trowel_iron"]}]
|
1
data/lzstools/function/give/wrench.mcfunction
Normal file
@@ -0,0 +1 @@
|
|||||||
|
give @s minecraft:carrot_on_a_stick[minecraft:custom_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"]}]
|
17
data/lzstools/function/load.mcfunction
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# 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_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
|
10
data/lzstools/function/player.mcfunction
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
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
|
3
data/lzstools/function/recipes.mcfunction
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
recipe give @s lzstools_wrench:wrench
|
||||||
|
recipe give @s lzstools_trowel:iron
|
||||||
|
recipe give @s lzstools_trowel:diamond
|
2
data/lzstools/function/tick.mcfunction
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Click Check
|
||||||
|
execute as @a if score @s lzt_click_check matches 1.. run function lzstools:player
|
4
data/lzstools/function/uninstall.mcfunction
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# Uninstall
|
||||||
|
scoreboard objectives remove lzt_click_check
|
||||||
|
scoreboard objectives remove lzt_wrench_success
|
||||||
|
scoreboard objectives remove lzt_wrench_raycast
|
17
data/lzstools/predicate/trowel/mainhand.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools/predicate/trowel/offhand.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/mainhand/1.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/mainhand/2.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/mainhand/3.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
data/lzstools/predicate/unbreaking/mainhand/all.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": {
|
||||||
|
"min": 1,
|
||||||
|
"max": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/offhand/1.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/offhand/2.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
data/lzstools/predicate/unbreaking/offhand/3.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
data/lzstools/predicate/unbreaking/offhand/all.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:unbreaking",
|
||||||
|
"levels": {
|
||||||
|
"min": 1,
|
||||||
|
"max": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools/predicate/wrench/mainhand.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"wrench"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools/predicate/wrench/offhand.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"wrench"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
data/lzstools/tags/block/banners.json
Normal 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
data/lzstools/tags/block/nesw.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"minecraft:furnace",
|
||||||
|
"minecraft:smoker",
|
||||||
|
"minecraft:blast_furnace",
|
||||||
|
"minecraft:carved_pumpkin",
|
||||||
|
"minecraft:jack_o_lantern"
|
||||||
|
]
|
||||||
|
}
|
9
data/lzstools/tags/block/neswud.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"minecraft:barrel",
|
||||||
|
"minecraft:dispenser",
|
||||||
|
"minecraft:dropper",
|
||||||
|
"minecraft:observer"
|
||||||
|
]
|
||||||
|
}
|
27
data/lzstools/tags/block/partialbox.json
Normal 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"
|
||||||
|
]
|
||||||
|
}
|
6
data/lzstools/tags/block/unique.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"minecraft:crafter"
|
||||||
|
]
|
||||||
|
}
|
4
data/lzstools_trowel/function/block/place.mcfunction
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
scoreboard players set @s lzt_trowel_success 0
|
||||||
|
|
||||||
|
execute if score @s lzt_trowel_success matches 0 run function lzstools_trowel:block/place_normal with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 1 run function lzstools_trowel:block/remove_item with storage lzstools:trowel
|
@@ -0,0 +1,2 @@
|
|||||||
|
# Place Leaves
|
||||||
|
$execute as @s store result score @s lzt_trowel_success setblock ~ ~ ~ $(chosen_block)[persistent=true] keep
|
@@ -0,0 +1,5 @@
|
|||||||
|
# Place NESW
|
||||||
|
$execute as @s[y_rotation=-45..45] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=north] keep
|
||||||
|
$execute as @s[y_rotation=45..135] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=east] keep
|
||||||
|
$execute as @s[y_rotation=135..-135] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=south] keep
|
||||||
|
$execute as @s[y_rotation=-135..-45] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=west] keep
|
@@ -0,0 +1,7 @@
|
|||||||
|
# Place NESWUD
|
||||||
|
$execute as @s[x_rotation=45..90] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=up] keep
|
||||||
|
$execute as @s[x_rotation=-90..-45] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=down] keep
|
||||||
|
$execute as @s[x_rotation=-45..45, y_rotation=-45..45] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=north] keep
|
||||||
|
$execute as @s[x_rotation=-45..45, y_rotation=45..135] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=east] keep
|
||||||
|
$execute as @s[x_rotation=-45..45, y_rotation=135..-135] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=south] keep
|
||||||
|
$execute as @s[x_rotation=-45..45, y_rotation=-135..-45] store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[facing=west] keep
|
@@ -0,0 +1,3 @@
|
|||||||
|
# Place Slabs
|
||||||
|
$execute as @s if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[type=top] keep
|
||||||
|
$execute as @s if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[type=bottom] keep
|
@@ -0,0 +1,9 @@
|
|||||||
|
# Place Stairs
|
||||||
|
$execute as @s[y_rotation=-45..45] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=south] keep
|
||||||
|
$execute as @s[y_rotation=45..135] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=west] keep
|
||||||
|
$execute as @s[y_rotation=135..-135] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=north] keep
|
||||||
|
$execute as @s[y_rotation=-135..-45] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=east] keep
|
||||||
|
$execute as @s[y_rotation=-45..45] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=south] keep
|
||||||
|
$execute as @s[y_rotation=45..135] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=west] keep
|
||||||
|
$execute as @s[y_rotation=135..-135] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=north] keep
|
||||||
|
$execute as @s[y_rotation=-135..-45] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=east] keep
|
@@ -0,0 +1,10 @@
|
|||||||
|
# Place Trapdoors
|
||||||
|
$execute as @s[y_rotation=-45..45] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=north] keep
|
||||||
|
$execute as @s[y_rotation=45..135] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=east] keep
|
||||||
|
$execute as @s[y_rotation=135..-135] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=south] keep
|
||||||
|
$execute as @s[y_rotation=-135..-45] if score py lzt_trowel_raycast matches ..7 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=bottom,facing=west] keep
|
||||||
|
$execute as @s[y_rotation=-45..45] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=north] keep
|
||||||
|
$execute as @s[y_rotation=45..135] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=east] keep
|
||||||
|
$execute as @s[y_rotation=135..-135] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=south] keep
|
||||||
|
$execute as @s[y_rotation=-135..-45] if score py lzt_trowel_raycast matches 8.. store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[half=top,facing=west] keep
|
||||||
|
|
7
data/lzstools_trowel/function/block/place/xyz.mcfunction
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Place XYZ
|
||||||
|
$execute as @s if score py lzt_trowel_raycast matches 0 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=y] keep
|
||||||
|
$execute as @s if score py lzt_trowel_raycast matches 15 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=y] keep
|
||||||
|
$execute as @s if score px lzt_trowel_raycast matches 0 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=x] keep
|
||||||
|
$execute as @s if score px lzt_trowel_raycast matches 15 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=x] keep
|
||||||
|
$execute as @s if score pz lzt_trowel_raycast matches 0 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=z] keep
|
||||||
|
$execute as @s if score pz lzt_trowel_raycast matches 15 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block)[axis=z] keep
|
16
data/lzstools_trowel/function/block/place_normal.mcfunction
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Get Raycast Target Coords
|
||||||
|
function lzstools_trowel:block/target_coords
|
||||||
|
|
||||||
|
$setblock ~ -64 ~ $(chosen_block)
|
||||||
|
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #lzstools:xyz run function lzstools_trowel:block/place/xyz with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #lzstools:neswud run function lzstools_trowel:block/place/neswud with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #lzstools:nesw run function lzstools_trowel:block/place/nesw with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #lzstools:glazed_terracotta run function lzstools_trowel:block/place/nesw with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #minecraft:leaves run function lzstools_trowel:block/place/leaves with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #minecraft:trapdoors run function lzstools_trowel:block/place/trapdoors with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #minecraft:stairs run function lzstools_trowel:block/place/stairs with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_success matches 0 if block ~ -64 ~ #minecraft:slabs run function lzstools_trowel:block/place/slabs with storage lzstools:trowel
|
||||||
|
$execute if score @s lzt_trowel_success matches 0 store result score @s lzt_trowel_success run setblock ~ ~ ~ $(chosen_block) keep
|
||||||
|
|
||||||
|
setblock ~ -64 ~ bedrock
|
@@ -0,0 +1 @@
|
|||||||
|
$execute if entity @s[gamemode=!creative] run clear @s $(chosen_block) 1
|
22
data/lzstools_trowel/function/block/target_coords.mcfunction
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
## Get Raycast Target Coords
|
||||||
|
|
||||||
|
# Stored Value for Calc
|
||||||
|
scoreboard players set c16 lzt_trowel_raycast 16
|
||||||
|
# Summon Invisible Entity
|
||||||
|
summon area_effect_cloud ~ ~ ~ {Radius:0.01,Duration:1,Tags:["RaycastMark"]}
|
||||||
|
|
||||||
|
# Pixel Calculations
|
||||||
|
execute store result score px lzt_trowel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[0] 16
|
||||||
|
scoreboard players operation px lzt_trowel_raycast %= c16 lzt_trowel_raycast
|
||||||
|
execute if score px lzt_trowel_raycast matches ..-1 run scoreboard players add px lzt_trowel_raycast 16
|
||||||
|
|
||||||
|
execute store result score py lzt_trowel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[1] 16
|
||||||
|
scoreboard players operation py lzt_trowel_raycast %= c16 lzt_trowel_raycast
|
||||||
|
execute if score py lzt_trowel_raycast matches ..-1 run scoreboard players add py lzt_trowel_raycast 16
|
||||||
|
|
||||||
|
execute store result score pz lzt_trowel_raycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[2] 16
|
||||||
|
scoreboard players operation pz lzt_trowel_raycast %= c16 lzt_trowel_raycast
|
||||||
|
execute if score pz lzt_trowel_raycast matches ..-1 run scoreboard players add pz lzt_trowel_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_trowel: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_trowel: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_trowel_unbreaking_check
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/mainhand/all] run function lzstools_trowel:durability/mainhand/unbreaking
|
||||||
|
execute if score @s lzt_trowel_unbreaking_check matches 1 run return fail
|
||||||
|
|
||||||
|
# Handle Damage
|
||||||
|
data modify storage lzstools:trowel components set from entity @s SelectedItem.components
|
||||||
|
execute store result score @s lzt_trowel_damage run data get storage lzstools:trowel components."minecraft:damage"
|
||||||
|
execute store result score @s lzt_trowel_max_damage run data get storage lzstools:trowel components."minecraft:max_damage"
|
||||||
|
scoreboard players add @s lzt_trowel_damage 1
|
||||||
|
execute store result storage lzstools:trowel damage int 1 run scoreboard players get @s lzt_trowel_damage
|
||||||
|
|
||||||
|
function lzstools_trowel:durability/mainhand/apply with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_damage >= @s lzt_trowel_max_damage run function lzstools_trowel:durability/mainhand/break
|
@@ -0,0 +1,4 @@
|
|||||||
|
execute store result score @s lzt_trowel_unbreaking_chance run random value 1..100
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/mainhand/3] if score @s lzt_trowel_unbreaking_chance matches ..75 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/mainhand/2] if score @s lzt_trowel_unbreaking_chance matches ..66 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/mainhand/1] if score @s lzt_trowel_unbreaking_chance matches ..50 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
@@ -0,0 +1 @@
|
|||||||
|
$item modify entity @s weapon.offhand {"function":"minecraft:set_components","components":{"minecraft:damage":$(damage)}}
|
@@ -0,0 +1,4 @@
|
|||||||
|
execute if entity @s[predicate=lzstools_trowel:offhand/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_trowel:offhand/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.offhand with minecraft:air
|
||||||
|
playsound minecraft:entity.item.break master @a ~ ~ ~ 1 1
|
@@ -0,0 +1,13 @@
|
|||||||
|
scoreboard players reset @s lzt_trowel_unbreaking_check
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/offhand/all] run function lzstools_trowel:durability/offhand/unbreaking
|
||||||
|
execute if score @s lzt_trowel_unbreaking_check matches 1 run return fail
|
||||||
|
|
||||||
|
# Handle Damage
|
||||||
|
data modify storage lzstools:trowel components set from entity @s equipment.offhand.components
|
||||||
|
execute store result score @s lzt_trowel_damage run data get storage lzstools:trowel components."minecraft:damage"
|
||||||
|
execute store result score @s lzt_trowel_max_damage run data get storage lzstools:trowel components."minecraft:max_damage"
|
||||||
|
scoreboard players add @s lzt_trowel_damage 1
|
||||||
|
execute store result storage lzstools:trowel damage int 1 run scoreboard players get @s lzt_trowel_damage
|
||||||
|
|
||||||
|
function lzstools_trowel:durability/offhand/apply with storage lzstools:trowel
|
||||||
|
execute if score @s lzt_trowel_damage >= @s lzt_trowel_max_damage run function lzstools_trowel:durability/offhand/break
|
@@ -0,0 +1,4 @@
|
|||||||
|
execute store result score @s lzt_trowel_unbreaking_chance run random value 1..100
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/offhand/3] if score @s lzt_trowel_unbreaking_chance matches ..75 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/offhand/2] if score @s lzt_trowel_unbreaking_chance matches ..66 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
||||||
|
execute if entity @s[predicate=lzstools:unbreaking/offhand/1] if score @s lzt_trowel_unbreaking_chance matches ..50 run return run scoreboard players set @s lzt_trowel_unbreaking_check 1
|
3
data/lzstools_trowel/function/mainhand.mcfunction
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
tag @s add lzstools_trowel_mainhand
|
||||||
|
# Raycast from player's position
|
||||||
|
function lzstools_trowel:raycast/start
|
3
data/lzstools_trowel/function/offhand.mcfunction
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
tag @s add lzstools_trowel_offhand
|
||||||
|
# Raycast from player's position
|
||||||
|
function lzstools_trowel:raycast/start
|
@@ -0,0 +1,7 @@
|
|||||||
|
# No Shulkers
|
||||||
|
$execute if items entity @s hotbar.$(temp_slot) #minecraft:shulker_boxes run return fail
|
||||||
|
|
||||||
|
$setblock ~ -64 ~ $(temp_id)
|
||||||
|
setblock ~ -64 ~ bedrock
|
||||||
|
$data modify storage lzstools:trowel blocks append value "$(temp_id)"
|
||||||
|
$data modify storage lzstools:trowel slots append value "$(temp_slot)"
|
@@ -0,0 +1,3 @@
|
|||||||
|
function lzstools_trowel:random/block_macro with storage lzstools:trowel
|
||||||
|
data remove storage lzstools:trowel temp_id
|
||||||
|
data remove storage lzstools:trowel temp_slot
|
35
data/lzstools_trowel/function/random/check_hotbar.mcfunction
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:0b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:0b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:1b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:1b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:2b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:2b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:3b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:3b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:4b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:4b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:5b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:5b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:6b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:6b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:7b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:7b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel temp_id set from storage lzstools:trowel inventory[{Slot:8b}].id
|
||||||
|
data modify storage lzstools:trowel temp_slot set from storage lzstools:trowel inventory[{Slot:8b}].Slot
|
||||||
|
function lzstools_trowel:random/check_block
|
@@ -0,0 +1,2 @@
|
|||||||
|
$data modify storage lzstools:trowel chosen_block set from storage lzstools:trowel blocks[$(chosen_index)]
|
||||||
|
$data modify storage lzstools:trowel chosen_slot set from storage lzstools:trowel slots[$(chosen_index)]
|
1
data/lzstools_trowel/function/random/random.mcfunction
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$return run random value 0..$(length)
|
30
data/lzstools_trowel/function/random/start.mcfunction
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Clear Storage
|
||||||
|
data remove storage lzstools:trowel slots
|
||||||
|
data remove storage lzstools:trowel blocks
|
||||||
|
data remove storage lzstools:trowel length
|
||||||
|
data remove storage lzstools:trowel temp_slot
|
||||||
|
data remove storage lzstools:trowel temp_id
|
||||||
|
data remove storage lzstools:trowel chosen_index
|
||||||
|
data remove storage lzstools:trowel chosen_block
|
||||||
|
data remove storage lzstools:trowel chosen_slot
|
||||||
|
|
||||||
|
data modify storage lzstools:trowel inventory set from entity @s Inventory
|
||||||
|
|
||||||
|
#store valid blocks
|
||||||
|
function lzstools_trowel:random/check_hotbar with storage lzstools:trowel
|
||||||
|
|
||||||
|
# Get blocks length
|
||||||
|
execute store result score @s lzt_trowel_block_length run data get storage lzstools:trowel blocks
|
||||||
|
scoreboard players remove @s lzt_trowel_block_length 1
|
||||||
|
|
||||||
|
# Stop if no blocks
|
||||||
|
execute if score @s lzt_trowel_block_length matches ..-1 run return fail
|
||||||
|
|
||||||
|
# Store result
|
||||||
|
execute store result storage lzstools:trowel length int 1 run scoreboard players get @s lzt_trowel_block_length
|
||||||
|
|
||||||
|
# Pick Block
|
||||||
|
execute store result storage lzstools:trowel chosen_index int 1 run function lzstools_trowel:random/random with storage lzstools:trowel
|
||||||
|
|
||||||
|
# Get Block
|
||||||
|
function lzstools_trowel:random/get_block with storage lzstools:trowel
|
19
data/lzstools_trowel/function/raycast/hit.mcfunction
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Cancel if intercepting entity
|
||||||
|
execute if entity @n[distance=..1] run return fail
|
||||||
|
|
||||||
|
# Choose Block
|
||||||
|
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 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
|
||||||
|
|
||||||
|
# Place block
|
||||||
|
function lzstools_trowel:block/place
|
||||||
|
|
||||||
|
# Durability
|
||||||
|
execute if entity @s[tag=lzstools_trowel_mainhand,gamemode=!creative] run function lzstools_trowel:durability/mainhand/handle
|
||||||
|
execute if entity @s[tag=lzstools_trowel_offhand,gamemode=!creative] run function lzstools_trowel:durability/offhand/handle
|
14
data/lzstools_trowel/function/raycast/rayloop.mcfunction
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
## Raycast
|
||||||
|
|
||||||
|
# Set block data
|
||||||
|
execute as @s store result score @s lzt_trowel_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_trowel_raycast_hit matches 1 positioned ^ ^ ^-0.01 run function lzstools_trowel:raycast/hit
|
||||||
|
execute if score @s lzt_trowel_raycast_hit matches 1 run tag @s remove lzstools_trowel_mainhand
|
||||||
|
execute if score @s lzt_trowel_raycast_hit matches 1 run tag @s remove lzstools_trowel_offhand
|
||||||
|
|
||||||
|
# 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
|
18
data/lzstools_trowel/function/raycast/start.mcfunction
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#Setting up the raycasting data.
|
||||||
|
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
|
||||||
|
|
||||||
|
# Clean Data
|
||||||
|
data remove storage lzstools:trowel inventory
|
||||||
|
data remove storage lzstools:trowel components
|
||||||
|
data remove storage lzstools:trowel damage
|
||||||
|
data remove storage lzstools:trowel slots
|
||||||
|
data remove storage lzstools:trowel blocks
|
||||||
|
data remove storage lzstools:trowel length
|
||||||
|
data remove storage lzstools:trowel temp_slot
|
||||||
|
data remove storage lzstools:trowel temp_id
|
||||||
|
data remove storage lzstools:trowel chosen_index
|
||||||
|
data remove storage lzstools:trowel chosen_block
|
||||||
|
data remove storage lzstools:trowel chosen_slot
|
17
data/lzstools_trowel/predicate/mainhand/diamond.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel_diamond"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools_trowel/predicate/mainhand/iron.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"mainhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel_iron"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools_trowel/predicate/offhand/diamond.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel_diamond"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
17
data/lzstools_trowel/predicate/offhand/iron.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"condition": "minecraft:entity_properties",
|
||||||
|
"entity": "this",
|
||||||
|
"predicate": {
|
||||||
|
"equipment": {
|
||||||
|
"offhand": {
|
||||||
|
"predicates": {
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel_iron"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
data/lzstools_trowel/recipe/diamond.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "equipment",
|
||||||
|
"pattern": [
|
||||||
|
" ",
|
||||||
|
"s ",
|
||||||
|
" dd"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"s": "minecraft:stick",
|
||||||
|
"d": "minecraft:diamond"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"id": "minecraft:carrot_on_a_stick",
|
||||||
|
"count": 1,
|
||||||
|
"components": {
|
||||||
|
"minecraft:max_damage": 4500,
|
||||||
|
"minecraft:custom_name": {
|
||||||
|
"text": "Diamond Trowel",
|
||||||
|
"color": "aqua",
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
"minecraft:custom_model_data": {
|
||||||
|
"strings": [
|
||||||
|
"lzstools:trowel_diamond"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel",
|
||||||
|
"trowel_diamond"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
36
data/lzstools_trowel/recipe/iron.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"category": "equipment",
|
||||||
|
"pattern": [
|
||||||
|
" ",
|
||||||
|
"s ",
|
||||||
|
" ii"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"s": "minecraft:stick",
|
||||||
|
"i": "minecraft:iron_ingot"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"id": "minecraft:carrot_on_a_stick",
|
||||||
|
"count": 1,
|
||||||
|
"components": {
|
||||||
|
"minecraft:max_damage": 750,
|
||||||
|
"minecraft:custom_name": {
|
||||||
|
"text": "Iron Trowel",
|
||||||
|
"color": "aqua",
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
"minecraft:custom_model_data": {
|
||||||
|
"strings": [
|
||||||
|
"lzstools:trowel_iron"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"minecraft:custom_data": {
|
||||||
|
"lzstools": [
|
||||||
|
"trowel",
|
||||||
|
"trowel_iron"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29
data/lzstools_wrench/function/raycast/partialbox.mcfunction
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
## Raycast Partial-box
|
||||||
|
|
||||||
|
# Get Raycast Target Coords
|
||||||
|
function lzstools_wrench:raycast/target_coords
|
||||||
|
|
||||||
|
# Partial Boxes
|
||||||
|
execute if block ~ ~ ~ #lzstools:banners run function lzstools_wrench:raycast/partialbox/banners
|
||||||
|
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
|
||||||
|
execute if block ~ ~ ~ #minecraft:stairs run function lzstools_wrench:raycast/partialbox/stairs
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates run function lzstools_wrench:raycast/partialbox/fence_gates
|
||||||
|
execute if block ~ ~ ~ #minecraft:campfires run function lzstools_wrench:raycast/partialbox/campfires
|
||||||
|
execute if block ~ ~ ~ #minecraft:all_signs run function lzstools_wrench:raycast/partialbox/signs
|
||||||
|
execute if block ~ ~ ~ #minecraft:anvil run function lzstools_wrench:raycast/partialbox/anvils
|
||||||
|
execute if block ~ ~ ~ minecraft:repeater run function lzstools_wrench:raycast/partialbox/repeater
|
||||||
|
execute if block ~ ~ ~ minecraft:comparator run function lzstools_wrench:raycast/partialbox/comparator
|
||||||
|
execute if block ~ ~ ~ minecraft:calibrated_sculk_sensor run function lzstools_wrench:raycast/partialbox/calibrated_sculk_sensor
|
||||||
|
execute if block ~ ~ ~ minecraft:piston run function lzstools_wrench:raycast/partialbox/pistons
|
||||||
|
execute if block ~ ~ ~ minecraft:sticky_piston run function lzstools_wrench:raycast/partialbox/pistons
|
||||||
|
execute if block ~ ~ ~ minecraft:hopper run function lzstools_wrench:raycast/partialbox/hopper
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod run function lzstools_wrench:raycast/partialbox/end_rod
|
||||||
|
execute if block ~ ~ ~ minecraft:lightning_rod run function lzstools_wrench:raycast/partialbox/lightning_rod
|
||||||
|
execute if block ~ ~ ~ minecraft:chain run function lzstools_wrench:raycast/partialbox/chain
|
||||||
|
execute if block ~ ~ ~ minecraft:decorated_pot run function lzstools_wrench:raycast/partialbox/decorated_pot
|
||||||
|
execute if block ~ ~ ~ minecraft:stonecutter run function lzstools_wrench:raycast/partialbox/stonecutter
|
||||||
|
execute if block ~ ~ ~ minecraft:ender_chest run function lzstools_wrench:raycast/partialbox/ender_chest
|
||||||
|
execute if block ~ ~ ~ minecraft:bell run function lzstools_wrench:raycast/partialbox/bell
|
||||||
|
execute if block ~ ~ ~ minecraft:grindstone run function lzstools_wrench:raycast/partialbox/grindstone
|
@@ -0,0 +1,20 @@
|
|||||||
|
# Anvils
|
||||||
|
execute if score px lzt_wrench_raycast matches 3..12 if score pz lzt_wrench_raycast matches 0..15 if score py lzt_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=north] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=north] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score pz lzt_wrench_raycast matches 3..12 if score py lzt_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=north] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=north] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 3..12 if score pz lzt_wrench_raycast matches 0..15 if score py lzt_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=south] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=south] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score pz lzt_wrench_raycast matches 3..12 if score py lzt_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=south] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=south] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
|
||||||
|
execute if score pz lzt_wrench_raycast matches 3..12 if score px lzt_wrench_raycast matches 0..15 if score py lzt_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=east] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=east] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score px lzt_wrench_raycast matches 3..12 if score py lzt_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=east] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 6..9 if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=east] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
|
||||||
|
execute if score pz lzt_wrench_raycast matches 3..12 if score px lzt_wrench_raycast matches 0..15 if score py lzt_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=west] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=west] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score px lzt_wrench_raycast matches 3..12 if score py lzt_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=west] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 6..9 if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=west] run function lzstools_wrench:rotate/nesw/rotate
|
@@ -0,0 +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
|
@@ -0,0 +1,5 @@
|
|||||||
|
# Bell
|
||||||
|
execute if score px lzt_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=north] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=east] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=south] run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=west] run function lzstools_wrench:rotate/nesw/rotate
|
@@ -0,0 +1,2 @@
|
|||||||
|
# Calibrated Sculk Sensor
|
||||||
|
execute if block ~ ~ ~ minecraft:calibrated_sculk_sensor if score py lzt_wrench_raycast matches ..7 run function lzstools_wrench:rotate/unique_blocks/calibrated_sculk_sensor/rotate
|
@@ -0,0 +1,2 @@
|
|||||||
|
# Campfires
|
||||||
|
execute if block ~ ~ ~ #minecraft:campfires if score py lzt_wrench_raycast matches ..7 run function lzstools_wrench:rotate/unique_blocks/campfires/rotate
|
@@ -0,0 +1,4 @@
|
|||||||
|
# Chain
|
||||||
|
execute if block ~ ~ ~ minecraft:chain[axis=x] if score py lzt_wrench_raycast matches 7..8 if score pz lzt_wrench_raycast matches 7..8 run function lzstools_wrench:rotate/xyz/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:chain[axis=y] if score px lzt_wrench_raycast matches 7..8 if score pz lzt_wrench_raycast matches 7..8 run function lzstools_wrench:rotate/xyz/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:chain[axis=z] if score px lzt_wrench_raycast matches 7..8 if score py lzt_wrench_raycast matches 7..8 run function lzstools_wrench:rotate/xyz/rotate
|
@@ -0,0 +1,2 @@
|
|||||||
|
# Redstone Comprator
|
||||||
|
execute if block ~ ~ ~ minecraft:comparator if score py lzt_wrench_raycast matches ..1 run function lzstools_wrench:rotate/unique_blocks/comparator/rotate
|
@@ -0,0 +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
|
@@ -0,0 +1,7 @@
|
|||||||
|
# End Rod
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=up] if score px lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=down] if score px lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=south] if score px lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=north] if score px lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=east] if score py lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
||||||
|
execute if block ~ ~ ~ minecraft:end_rod[facing=west] if score py lzt_wrench_raycast matches 6..9 if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/neswud/rotate
|
@@ -0,0 +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
|
@@ -0,0 +1,9 @@
|
|||||||
|
# Fence Gates
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=north] if score px lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=east] if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=south] if score px lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=west] if score pz lzt_wrench_raycast matches 6..9 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=north,in_wall=true] if score px lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches ..12 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=east,in_wall=true] if score pz lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches ..12 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=south,in_wall=true] if score px lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches ..12 run function lzstools_wrench:rotate/nesw/rotate
|
||||||
|
execute if block ~ ~ ~ #minecraft:fence_gates[facing=west,in_wall=true] if score pz lzt_wrench_raycast matches 6..9 if score py lzt_wrench_raycast matches ..12 run function lzstools_wrench:rotate/nesw/rotate
|
@@ -0,0 +1,64 @@
|
|||||||
|
# Grindstone
|
||||||
|
|
||||||
|
# Floor
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 4..15 if score pz lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 4..15 if score px lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 4..15 if score pz lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 4..15 if score px lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 7..12 if score pz lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 7..12 if score px lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 7..12 if score pz lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 7..12 if score px lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
# Wall
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 2..13 if score pz lzt_wrench_raycast matches 0..11 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 2..13 if score px lzt_wrench_raycast matches 4..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 2..13 if score pz lzt_wrench_raycast matches 4..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 2..13 if score px lzt_wrench_raycast matches 0..11 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 5..10 if score pz lzt_wrench_raycast matches 3..8 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 5..10 if score px lzt_wrench_raycast matches 7..12 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 5..10 if score pz lzt_wrench_raycast matches 7..12 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 5..10 if score px lzt_wrench_raycast matches 3..8 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 6..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score pz lzt_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 0..6 if score px lzt_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
# Ceiling
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 0..11 if score pz lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 0..11 if score px lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 0..11 if score pz lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 4..11 if score py lzt_wrench_raycast matches 0..11 if score px lzt_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 3..8 if score pz lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 3..8 if score px lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 3..8 if score pz lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..13 if score py lzt_wrench_raycast matches 3..8 if score px lzt_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 9..15 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 9..15 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 9..15 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 2..3 if score py lzt_wrench_raycast matches 9..15 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 9..15 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 9..15 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score px lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 9..15 if score pz lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|
||||||
|
execute if score pz lzt_wrench_raycast matches 12..13 if score py lzt_wrench_raycast matches 9..15 if score px lzt_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function lzstools_wrench:rotate/unique_blocks/grindstone/rotate
|