6 Commits

Author SHA1 Message Date
9920a13f4f Prevent cycle if terracotta mode matches current rotation 2025-05-14 13:32:50 +01:00
e2eb8071f7 Updated Namespace
Integrated Resourcepack
2025-05-14 12:09:54 +01:00
4137e85850 Update LICENSE.txt 2025-05-13 09:17:45 +00:00
0d30e4d312 Updated Readme 2025-05-13 02:36:29 +01:00
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
02a8a2ca97 Updated to 1.21.5 and added model names for resource packs. 2025-04-02 18:39:07 +01:00
208 changed files with 2118 additions and 6796 deletions

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2023 Mark Rapson (LZStealth) Copyright (c) 2025 Mark Rapson (LZStealth)
Copyright (c) 2021 GoldenDelicios Copyright (c) 2021 GoldenDelicios
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

View File

@@ -1,10 +1,9 @@
# LZ Wrench (Block Rotator) # LZ Wrench (Block Rotator)
Minecraft datapack: Rename a carrot on a stick to "Wrench" and right click on blocks to rotate them.
## How to use: ## How to use:
* Drop the datapack into your world's datapacks folder. * Drop the datapack into your world's datapacks folder.
* Type `/reload` or restart your world/server to enable the datapack. * 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). * Craft the wrench using two stick and a copper ingot.
The wrench can currently rotate these blocks: The wrench can currently rotate these blocks:
* Pillars and other similarly placed blocks * Pillars and other similarly placed blocks
@@ -28,14 +27,13 @@ The wrench can currently rotate these blocks:
* End rods * End rods
* Stairs * Stairs
* Slabs * Slabs
* Trapdoors
...and many more
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 modes work is available in `WrenchModes.md`.
## Options ## Options
Settings can be changed using `/function wrench:config` 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.0
The Datapack can also be removed using `/function wrench:uninstall`, this will remove all scoreboard components.
Version 1.0

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. 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.
![](https://i.imgur.com/3NYmwIe.png) ![](https://i.imgur.com/3NYmwIe.png)
* 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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

@@ -0,0 +1,18 @@
{
"model": {
"type": "select",
"property": "custom_model_data",
"index": 1,
"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" } }
]
}
}

View File

@@ -0,0 +1,10 @@
{
"criteria": {
"requirement": {
"trigger": "minecraft:tick"
}
},
"rewards": {
"function": "lzstools:recipes"
}
}

View File

@@ -0,0 +1,26 @@
{
"display": {
"icon": {
"id": "minecraft:warped_fungus_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:wrench"
]
}
}
},
"title": "LZ's Build Things",
"description": {
"text": "Tools that you may find useful!"
},
"background": "minecraft:block/dirt",
"show_toast": false,
"announce_to_chat": false
},
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
}
}

View File

@@ -0,0 +1,33 @@
{
"display": {
"icon": {
"id": "minecraft:carrot_on_a_stick",
"components": {
"minecraft:custom_model_data": {
"strings": [
"lzstools:wrench",
"lzstools:wrench_default"
]
}
}
},
"title": {
"text": "Pivot, PIVOT!"
},
"description": {
"text": "Craft a Block Wrench"
},
"show_toast": true,
"announce_to_chat": true,
"hidden": false
},
"parent": "lzstools:visible/root",
"criteria": {
"": {
"trigger": "minecraft:recipe_crafted",
"conditions": {
"recipe_id": "wrench:wrench"
}
}
}
}

View 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","lzstools:wrench_default"]},minecraft:custom_data={lzstools:"wrench"},minecraft:unbreakable={},minecraft:enchantment_glint_override=false,minecraft:tooltip_display={hidden_components:["minecraft:unbreakable"]}]

View File

@@ -0,0 +1,6 @@
# Click Check
scoreboard objectives add lz_click_check minecraft.used:minecraft.carrot_on_a_stick
# Wrench
scoreboard objectives add lz_wrench_success dummy
scoreboard objectives add lz_wrench_raycast dummy

View File

@@ -0,0 +1,6 @@
scoreboard players set @s lz_click_check 0
# Wrench
execute if predicate lzstools:wrench/mainhand run function wrench:wrench/rotate
execute if predicate lzstools:wrench/offhand run function wrench:wrench/offhand

View File

@@ -0,0 +1 @@
recipe give @s wrench:wrench

View File

@@ -0,0 +1,2 @@
# Click Check
execute as @a if score @s lz_click_check matches 1.. run function lzstools:player

View File

@@ -0,0 +1,4 @@
# Uninstall
scoreboard objectives remove lz_click_check
scoreboard objectives remove lz_wrench_success
scoreboard objectives remove lz_wrench_raycast

View File

@@ -0,0 +1,18 @@
{
"condition": "minecraft:any_of",
"terms": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"predicates": {
"minecraft:custom_data": "{lzstools:wrench}"
}
}
}
}
}
]
}

View File

@@ -0,0 +1,18 @@
{
"condition": "minecraft:any_of",
"terms": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"offhand": {
"predicates": {
"minecraft:custom_data": "{lzstools:wrench}"
}
}
}
}
}
]
}

View File

@@ -1 +1,6 @@
{"replace":false,"values":["wrench:load"]} {
"replace": false,
"values": [
"lzstools:load"
]
}

View File

@@ -1,6 +1,6 @@
{ {
"replace": false, "replace": false,
"values": [ "values": [
"wrench:main" "lzstools:tick"
] ]
} }

View File

@@ -1,11 +0,0 @@
# Config
tellraw @s [{"text":" ","strikethrough":true},{"text":" Rotator Wrench Config ","color":"gold","strikethrough":false,"bold":true},{"text":" ","strikethrough":true}]
tellraw @s {"text":"Which catagories should be wrenchable?"}
function wrench:config/pillars/main
function wrench:config/redstone/main
function wrench:config/rails/main
function wrench:config/terracotta/main
function wrench:config/slabs/main
function wrench:config/stairs/main
function wrench:config/rods/main
tellraw @s {"text":" ","strikethrough":true}

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchPillars WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchPillars WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchPillars WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/pillars/enable"}},{"text":" Pillars & Logs","hoverEvent":{"action":"show_text","value":"Wether Pillars & Logs should be rotated"}}]
execute if score WrenchPillars WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/pillars/disable"}},{"text":" Pillars & Logs","hoverEvent":{"action":"show_text","value":"Wether Pillars & Logs should be rotated"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRails WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRails WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchRails WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/rails/enable"}},{"text":" Rails","hoverEvent":{"action":"show_text","value":"Wether Rails should be rotated"}}]
execute if score WrenchRails WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/rails/disable"}},{"text":" Rails","hoverEvent":{"action":"show_text","value":"Wether Rails should be rotated"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRedstone WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRedstone WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchRedstone WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/redstone/enable"}},{"text":" Redstone","hoverEvent":{"action":"show_text","value":"Wether Redstone Components should be rotated"}}]
execute if score WrenchRedstone WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/redstone/disable"}},{"text":" Redstone","hoverEvent":{"action":"show_text","value":"Wether Redstone Components should be rotated"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRods WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchRods WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchRods WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/rods/enable"}},{"text":" End Rods","hoverEvent":{"action":"show_text","value":"Wether End Rods should be flippable"}}]
execute if score WrenchRods WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/rods/disable"}},{"text":" End Rods","hoverEvent":{"action":"show_text","value":"Wether End Rods should be flippable"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchSlabs WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchSlabs WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchSlabs WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/slabs/enable"}},{"text":" Slabs","hoverEvent":{"action":"show_text","value":"Wether Slabs should be rotated"}}]
execute if score WrenchSlabs WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/slabs/disable"}},{"text":" Slabs","hoverEvent":{"action":"show_text","value":"Wether Slabs should be rotated"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchStairs WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchStairs WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchStairs WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/stairs/enable"}},{"text":" Stairs","hoverEvent":{"action":"show_text","value":"Wether Stairs should be rotated"}}]
execute if score WrenchStairs WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/stairs/disable"}},{"text":" Stairs","hoverEvent":{"action":"show_text","value":"Wether Stairs should be rotated"}}]

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchTerracotta WrenchConfig 0
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 0.5
function wrench:config

View File

@@ -1,3 +0,0 @@
scoreboard players set WrenchTerracotta WrenchConfig 1
playsound minecraft:block.note_block.hat master @s ~ ~ ~ 0.1 2
function wrench:config

View File

@@ -1,6 +0,0 @@
#Enabled = 600
#Disabled = 601
execute if score WrenchTerracotta WrenchConfig matches 0 run tellraw @s ["",{"text":"[ ❌ ]","color":"red","clickEvent":{"action":"run_command","value":"/function wrench:config/terracotta/enable"}},{"text":" Terracotta","hoverEvent":{"action":"show_text","value":"Wether Terracotta should be rotated"}}]
execute if score WrenchTerracotta WrenchConfig matches 1 run tellraw @s ["",{"text":"[ ✔ ]","color":"green","clickEvent":{"action":"run_command","value":"/function wrench:config/terracotta/disable"}},{"text":" Terracotta","hoverEvent":{"action":"show_text","value":"Wether Terracotta should be rotated"}}]

View File

@@ -1,14 +0,0 @@
# Load
scoreboard objectives add WrenchInput minecraft.used:minecraft.carrot_on_a_stick
scoreboard objectives add WrenchSuccess dummy
scoreboard objectives add WrenchRaycast dummy
scoreboard objectives add WrenchConfig dummy
execute unless score WrenchPillars WrenchConfig matches 0..1 run scoreboard players set WrenchPillars WrenchConfig 1
execute unless score WrenchRails WrenchConfig matches 0..1 run scoreboard players set WrenchRails WrenchConfig 1
execute unless score WrenchRedstone WrenchConfig matches 0..1 run scoreboard players set WrenchRedstone WrenchConfig 1
execute unless score WrenchRods WrenchConfig matches 0..1 run scoreboard players set WrenchRods WrenchConfig 1
execute unless score WrenchSlabs WrenchConfig matches 0..1 run scoreboard players set WrenchSlabs WrenchConfig 1
execute unless score WrenchStairs WrenchConfig matches 0..1 run scoreboard players set WrenchStairs WrenchConfig 1
execute unless score WrenchTerracotta WrenchConfig matches 0..1 run scoreboard players set WrenchTerracotta WrenchConfig 1
execute unless score WrenchDebug WrenchConfig matches 0..1 run scoreboard players set WrenchDebug WrenchConfig 0

View File

@@ -1,2 +0,0 @@
#Check for carrot-stick input
execute as @a[scores={WrenchInput=1..}] run function wrench:use

View File

@@ -1,42 +1,29 @@
#Raycast Partial-box ## Raycast Partial-box
### Get Raycast Target Coords # Get Raycast Target Coords
function wrench:raycast/target_coords
# Stored Value for Calc # Partial Boxes
scoreboard players set c16 WrenchRaycast 16 execute if block ~ ~ ~ #wrench:banners run function wrench:raycast/partialbox/banners
# Summon Invisible Entity execute if block ~ ~ ~ #minecraft:rails run function wrench:raycast/partialbox/rails
summon area_effect_cloud ~ ~ ~ {Radius:0.01,Duration:1,Tags:["RaycastMark"]} execute if block ~ ~ ~ #minecraft:trapdoors run function wrench:raycast/partialbox/trapdoors
execute if block ~ ~ ~ #minecraft:slabs run function wrench:raycast/partialbox/slabs
# Pixel Calculations execute if block ~ ~ ~ #minecraft:stairs run function wrench:raycast/partialbox/stairs
execute store result score px WrenchRaycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[0] 16 execute if block ~ ~ ~ #minecraft:fence_gates run function wrench:raycast/partialbox/fence_gates
scoreboard players operation px WrenchRaycast %= c16 WrenchRaycast execute if block ~ ~ ~ #minecraft:campfires run function wrench:raycast/partialbox/campfires
execute if score px WrenchRaycast matches ..-1 run scoreboard players add px WrenchRaycast 16 execute if block ~ ~ ~ #minecraft:all_signs run function wrench:raycast/partialbox/signs
execute if block ~ ~ ~ #minecraft:anvil run function wrench:raycast/partialbox/anvils
execute store result score py WrenchRaycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[1] 16 execute if block ~ ~ ~ minecraft:repeater run function wrench:raycast/partialbox/repeater
scoreboard players operation py WrenchRaycast %= c16 WrenchRaycast execute if block ~ ~ ~ minecraft:comparator run function wrench:raycast/partialbox/comparator
execute if score py WrenchRaycast matches ..-1 run scoreboard players add py WrenchRaycast 16 execute if block ~ ~ ~ minecraft:calibrated_sculk_sensor run function wrench:raycast/partialbox/calibrated_sculk_sensor
execute if block ~ ~ ~ minecraft:piston run function wrench:raycast/partialbox/pistons
execute store result score pz WrenchRaycast run data get entity @e[tag=RaycastMark,sort=nearest,limit=1] Pos[2] 16 execute if block ~ ~ ~ minecraft:sticky_piston run function wrench:raycast/partialbox/pistons
scoreboard players operation pz WrenchRaycast %= c16 WrenchRaycast execute if block ~ ~ ~ minecraft:hopper run function wrench:raycast/partialbox/hopper
execute if score pz WrenchRaycast matches ..-1 run scoreboard players add pz WrenchRaycast 16 execute if block ~ ~ ~ minecraft:end_rod run function wrench:raycast/partialbox/end_rod
execute if block ~ ~ ~ minecraft:lightning_rod run function wrench:raycast/partialbox/lightning_rod
# Remove Entity execute if block ~ ~ ~ minecraft:chain run function wrench:raycast/partialbox/chain
kill @e[tag=RaycastMark,sort=nearest,limit=1] execute if block ~ ~ ~ minecraft:decorated_pot run function wrench:raycast/partialbox/decorated_pot
execute if block ~ ~ ~ minecraft:stonecutter run function wrench:raycast/partialbox/stonecutter
### Partial Boxes execute if block ~ ~ ~ minecraft:ender_chest run function wrench:raycast/partialbox/ender_chest
execute if block ~ ~ ~ minecraft:bell run function wrench:raycast/partialbox/bell
# Calculate partial-box execute if block ~ ~ ~ minecraft:grindstone run function wrench:raycast/partialbox/grindstone
#Rails
execute if block ~ ~ ~ #minecraft:rails unless score WrenchRails WrenchConfig matches 0 run function wrench:raycast/partialbox/rails
#Redstone
execute if block ~ ~ ~ minecraft:repeater unless score WrenchRedstone WrenchConfig matches 0 if score py WrenchRaycast matches ..1 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:comparator unless score WrenchRedstone WrenchConfig matches 0 if score py WrenchRaycast matches ..1 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:calibrated_sculk_sensor unless score WrenchRedstone WrenchConfig matches 0 if score py WrenchRaycast matches ..7 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:piston unless score WrenchRedstone WrenchConfig matches 0 run function wrench:raycast/partialbox/pistons
execute if block ~ ~ ~ minecraft:sticky_piston unless score WrenchRedstone WrenchConfig matches 0 run function wrench:raycast/partialbox/sticky_pistons
execute if block ~ ~ ~ minecraft:hopper unless score WrenchRedstone WrenchConfig matches 0 run function wrench:raycast/partialbox/hoppers
#Blocks
execute if block ~ ~ ~ #minecraft:slabs unless score WrenchSlabs WrenchConfig matches 0 run function wrench:raycast/partialbox/slabs
execute if block ~ ~ ~ #minecraft:stairs unless score WrenchStairs WrenchConfig matches 0 run function wrench:raycast/partialbox/stairs
execute if block ~ ~ ~ minecraft:end_rod unless score WrenchRods WrenchConfig matches 0 run function wrench:raycast/partialbox/end_rods
execute if block ~ ~ ~ minecraft:chain unless score WrenchRods WrenchConfig matches 0 run function wrench:raycast/partialbox/chain

View File

@@ -0,0 +1,20 @@
# Anvils
execute if score px lz_wrench_raycast matches 3..12 if score pz lz_wrench_raycast matches 0..15 if score py lz_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=north] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 2..13 if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=north] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 3..12 if score py lz_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=north] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=north] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 3..12 if score pz lz_wrench_raycast matches 0..15 if score py lz_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=south] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 2..13 if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=south] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 3..12 if score py lz_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=south] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=south] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 3..12 if score px lz_wrench_raycast matches 0..15 if score py lz_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=east] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=east] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score px lz_wrench_raycast matches 3..12 if score py lz_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=east] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 6..9 if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=east] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 3..12 if score px lz_wrench_raycast matches 0..15 if score py lz_wrench_raycast matches 10..15 if block ~ ~ ~ #minecraft:anvil[facing=west] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 0..3 if block ~ ~ ~ #minecraft:anvil[facing=west] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score px lz_wrench_raycast matches 3..12 if score py lz_wrench_raycast matches 4 if block ~ ~ ~ #minecraft:anvil[facing=west] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 6..9 if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 5..9 if block ~ ~ ~ #minecraft:anvil[facing=west] run function wrench:rotate/nesw/rotate

View File

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

View File

@@ -0,0 +1,5 @@
# Bell
execute if score px lz_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=north] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=east] run function wrench:rotate/nesw/rotate
execute if score px lz_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=south] run function wrench:rotate/nesw/rotate
execute if score pz lz_wrench_raycast matches 5..12 if block ~ ~ ~ minecraft:bell[attachment=floor,facing=west] run function wrench:rotate/nesw/rotate

View File

@@ -0,0 +1,2 @@
# Calibrated Sculk Sensor
execute if block ~ ~ ~ minecraft:calibrated_sculk_sensor if score py lz_wrench_raycast matches ..7 run function wrench:rotate/unique_blocks/calibrated_sculk_sensor/rotate

View File

@@ -0,0 +1,2 @@
# Campfires
execute if block ~ ~ ~ #minecraft:campfires if score py lz_wrench_raycast matches ..7 run function wrench:rotate/unique_blocks/campfires/rotate

View File

@@ -1,4 +1,4 @@
# Chain # Chain
execute if block ~ ~ ~ minecraft:chain[axis=x] if score py WrenchRaycast matches 7..8 if score pz WrenchRaycast matches 7..8 run function wrench:rotate/chain_flip execute if block ~ ~ ~ minecraft:chain[axis=x] if score py lz_wrench_raycast matches 7..8 if score pz lz_wrench_raycast matches 7..8 run function wrench:rotate/xyz/rotate
execute if block ~ ~ ~ minecraft:chain[axis=y] if score px WrenchRaycast matches 7..8 if score pz WrenchRaycast matches 7..8 run function wrench:rotate/chain_flip execute if block ~ ~ ~ minecraft:chain[axis=y] if score px lz_wrench_raycast matches 7..8 if score pz lz_wrench_raycast matches 7..8 run function wrench:rotate/xyz/rotate
execute if block ~ ~ ~ minecraft:chain[axis=z] if score px WrenchRaycast matches 7..8 if score py WrenchRaycast matches 7..8 run function wrench:rotate/chain_flip execute if block ~ ~ ~ minecraft:chain[axis=z] if score px lz_wrench_raycast matches 7..8 if score py lz_wrench_raycast matches 7..8 run function wrench:rotate/xyz/rotate

View File

@@ -0,0 +1,2 @@
# Redstone Comprator
execute if block ~ ~ ~ minecraft:comparator if score py lz_wrench_raycast matches ..1 run function wrench:rotate/unique_blocks/comparator/rotate

View File

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

View File

@@ -0,0 +1,7 @@
# End Rod
execute if block ~ ~ ~ minecraft:end_rod[facing=up] if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:end_rod[facing=down] if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:end_rod[facing=south] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:end_rod[facing=north] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:end_rod[facing=east] if score py lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:end_rod[facing=west] if score py lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate

View File

@@ -1,7 +0,0 @@
#End rods
execute if block ~ ~ ~ minecraft:end_rod[facing=up] if score px WrenchRaycast matches 6..9 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip
execute if block ~ ~ ~ minecraft:end_rod[facing=down] if score px WrenchRaycast matches 6..9 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip
execute if block ~ ~ ~ minecraft:end_rod[facing=south] if score px WrenchRaycast matches 6..9 if score py WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip
execute if block ~ ~ ~ minecraft:end_rod[facing=north] if score px WrenchRaycast matches 6..9 if score py WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip
execute if block ~ ~ ~ minecraft:end_rod[facing=east] if score py WrenchRaycast matches 6..9 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip
execute if block ~ ~ ~ minecraft:end_rod[facing=west] if score py WrenchRaycast matches 6..9 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/end_rod_flip

View File

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

View File

@@ -0,0 +1,9 @@
# Fence Gates
execute if block ~ ~ ~ #minecraft:fence_gates[facing=north] if score px lz_wrench_raycast matches 6..9 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=east] if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=south] if score px lz_wrench_raycast matches 6..9 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=west] if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=north,in_wall=true] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches ..12 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=east,in_wall=true] if score pz lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches ..12 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=south,in_wall=true] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches ..12 run function wrench:rotate/nesw/rotate
execute if block ~ ~ ~ #minecraft:fence_gates[facing=west,in_wall=true] if score pz lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches ..12 run function wrench:rotate/nesw/rotate

View File

@@ -0,0 +1,64 @@
# Grindstone
# Floor
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 4..15 if score pz lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 4..15 if score px lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 4..15 if score pz lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 4..15 if score px lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 7..12 if score pz lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 7..12 if score px lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 7..12 if score pz lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 7..12 if score px lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=floor,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
# Wall
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 2..13 if score pz lz_wrench_raycast matches 0..11 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 2..13 if score px lz_wrench_raycast matches 4..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 2..13 if score pz lz_wrench_raycast matches 4..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 2..13 if score px lz_wrench_raycast matches 0..11 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 5..10 if score pz lz_wrench_raycast matches 3..8 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 5..10 if score px lz_wrench_raycast matches 7..12 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 5..10 if score pz lz_wrench_raycast matches 7..12 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 5..10 if score px lz_wrench_raycast matches 3..8 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 6..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score pz lz_wrench_raycast matches 0..6 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 0..6 if score px lz_wrench_raycast matches 9..15 if block ~ ~ ~ minecraft:grindstone[face=wall,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
# Ceiling
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 0..11 if score pz lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 0..11 if score px lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 0..11 if score pz lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 0..11 if score px lz_wrench_raycast matches 2..13 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 3..8 if score pz lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 3..8 if score px lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 3..8 if score pz lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..13 if score py lz_wrench_raycast matches 3..8 if score px lz_wrench_raycast matches 5..10 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 9..15 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 9..15 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 9..15 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 2..3 if score py lz_wrench_raycast matches 9..15 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 9..15 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=north] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 9..15 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=east] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score px lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 9..15 if score pz lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=south] run function wrench:rotate/unique_blocks/grindstone/rotate
execute if score pz lz_wrench_raycast matches 12..13 if score py lz_wrench_raycast matches 9..15 if score px lz_wrench_raycast matches 6..9 if block ~ ~ ~ minecraft:grindstone[face=ceiling,facing=west] run function wrench:rotate/unique_blocks/grindstone/rotate

View File

@@ -0,0 +1,8 @@
# Hopper
execute if block ~ ~ ~ minecraft:hopper[facing=down] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches ..3 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper[facing=south] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 4..7 if score pz lz_wrench_raycast matches 12.. run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper[facing=north] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 4..7 if score pz lz_wrench_raycast matches ..3 run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper[facing=east] if score px lz_wrench_raycast matches 12.. if score py lz_wrench_raycast matches 4..7 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper[facing=west] if score px lz_wrench_raycast matches ..3 if score py lz_wrench_raycast matches 4..7 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper if score px lz_wrench_raycast matches 4..11 if score py lz_wrench_raycast matches 4.. if score pz lz_wrench_raycast matches 4..11 run function wrench:rotate/unique_blocks/hopper/rotate
execute if block ~ ~ ~ minecraft:hopper if score py lz_wrench_raycast matches 10.. run function wrench:rotate/unique_blocks/hopper/rotate

View File

@@ -1,8 +0,0 @@
# Hopper
execute if block ~ ~ ~ minecraft:hopper[facing=down] if score px WrenchRaycast matches 6..9 if score py WrenchRaycast matches ..3 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper[facing=south] if score px WrenchRaycast matches 6..9 if score py WrenchRaycast matches 4..7 if score pz WrenchRaycast matches 12.. run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper[facing=north] if score px WrenchRaycast matches 6..9 if score py WrenchRaycast matches 4..7 if score pz WrenchRaycast matches ..3 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper[facing=east] if score px WrenchRaycast matches 12.. if score py WrenchRaycast matches 4..7 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper[facing=west] if score px WrenchRaycast matches ..3 if score py WrenchRaycast matches 4..7 if score pz WrenchRaycast matches 6..9 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper if score px WrenchRaycast matches 4..11 if score py WrenchRaycast matches 4.. if score pz WrenchRaycast matches 4..11 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:hopper if score py WrenchRaycast matches 10.. run function wrench:rotate/redstone

View File

@@ -0,0 +1,7 @@
# Lightning Rod
execute if block ~ ~ ~ minecraft:lightning_rod[facing=up] if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:lightning_rod[facing=down] if score px lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:lightning_rod[facing=south] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:lightning_rod[facing=north] if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:lightning_rod[facing=east] if score py lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:lightning_rod[facing=west] if score py lz_wrench_raycast matches 6..9 if score pz lz_wrench_raycast matches 6..9 run function wrench:rotate/neswud/rotate

View File

@@ -1,8 +1,17 @@
# Piston # Piston
execute if block ~ ~ ~ minecraft:piston[extended=false] run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[extended=false] run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=up] if score py WrenchRaycast matches ..11 run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=up] if score py lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=down] if score py WrenchRaycast matches 4.. run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=down] if score py lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=south] if score pz WrenchRaycast matches ..11 run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=south] if score pz lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=north] if score pz WrenchRaycast matches 4.. run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=north] if score pz lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=east] if score px WrenchRaycast matches ..11 run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=east] if score px lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:piston[facing=west] if score px WrenchRaycast matches 4.. run function wrench:rotate/redstone execute if block ~ ~ ~ minecraft:piston[facing=west] if score px lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate
# Sticky Piston
execute if block ~ ~ ~ minecraft:sticky_piston[extended=false] run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=up] if score py lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=down] if score py lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=south] if score pz lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=north] if score pz lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=east] if score px lz_wrench_raycast matches ..11 run function wrench:rotate/neswud/rotate
execute if block ~ ~ ~ minecraft:sticky_piston[facing=west] if score px lz_wrench_raycast matches 4.. run function wrench:rotate/neswud/rotate

View File

@@ -1,6 +1,6 @@
# Rails # Rails
execute if block ~ ~ ~ #minecraft:rails if score py WrenchRaycast matches ..1 run function wrench:rotate/rails execute if block ~ ~ ~ #minecraft:rails if score py lz_wrench_raycast matches ..1 run function wrench:rotate/rails/rotate
execute if block ~ ~ ~ #minecraft:rails[shape=ascending_west] if score py WrenchRaycast matches ..7 run function wrench:rotate/rails execute if block ~ ~ ~ #minecraft:rails[shape=ascending_west] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/rails/rotate
execute if block ~ ~ ~ #minecraft:rails[shape=ascending_east] if score py WrenchRaycast matches ..7 run function wrench:rotate/rails execute if block ~ ~ ~ #minecraft:rails[shape=ascending_east] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/rails/rotate
execute if block ~ ~ ~ #minecraft:rails[shape=ascending_north] if score py WrenchRaycast matches ..7 run function wrench:rotate/rails execute if block ~ ~ ~ #minecraft:rails[shape=ascending_north] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/rails/rotate
execute if block ~ ~ ~ #minecraft:rails[shape=ascending_south] if score py WrenchRaycast matches ..7 run function wrench:rotate/rails execute if block ~ ~ ~ #minecraft:rails[shape=ascending_south] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/rails/rotate

View File

@@ -0,0 +1,2 @@
# Redstone Repeater
execute if block ~ ~ ~ minecraft:repeater if score py lz_wrench_raycast matches ..1 run function wrench:rotate/unique_blocks/repeater/rotate

View File

@@ -0,0 +1,31 @@
# Signs
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:standing_signs run function wrench:rotate/signs/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=1] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=2] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=3] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=5] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=6] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=7] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=9] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=10] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=11] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=13] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=14] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 4..11 if score pz lz_wrench_raycast matches 4..11 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=15] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score pz lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=0] run function wrench:rotate/signs_hanging/rotate
execute if score px lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score pz lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=8] run function wrench:rotate/signs_hanging/rotate
execute if score pz lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score px lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=4] run function wrench:rotate/signs_hanging/rotate
execute if score pz lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score px lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:ceiling_hanging_signs[rotation=12] run function wrench:rotate/signs_hanging/rotate
# Wall hanging signs can't be defined with the current method of getting the block ID so these fail as it's updated to the standard hanging sign
# execute if score px lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score pz lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=north] run function wrench:rotate/signs_wall/rotate
# execute if score pz lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score px lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=east] run function wrench:rotate/signs_wall/rotate
# execute if score px lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score pz lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=south] run function wrench:rotate/signs_wall/rotate
# execute if score pz lz_wrench_raycast matches 1..14 if score py lz_wrench_raycast matches 0..9 if score px lz_wrench_raycast matches 7..8 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=west] run function wrench:rotate/signs_wall/rotate
# execute if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 14..15 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=north] run function wrench:rotate/signs_wall/rotate
# execute if score pz lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 14..15 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=east] run function wrench:rotate/signs_wall/rotate
# execute if score px lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 14..15 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=south] run function wrench:rotate/signs_wall/rotate
# execute if score pz lz_wrench_raycast matches 6..9 if score py lz_wrench_raycast matches 14..15 if block ~ ~ ~ #minecraft:wall_hanging_signs[facing=west] run function wrench:rotate/signs_wall/rotate

View File

@@ -1,3 +1,3 @@
# Slabs # Slabs
execute if block ~ ~ ~ #minecraft:slabs[type=top] if score py WrenchRaycast matches 8.. run function wrench:rotate/slabs_flip execute if block ~ ~ ~ #minecraft:slabs[type=top] if score py lz_wrench_raycast matches 8.. run function wrench:rotate/slabs/rotate
execute if block ~ ~ ~ #minecraft:slabs[type=bottom] if score py WrenchRaycast matches ..7 run function wrench:rotate/slabs_flip execute if block ~ ~ ~ #minecraft:slabs[type=bottom] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/slabs/rotate

View File

@@ -1,19 +1,20 @@
# Stairs # Stairs
execute if block ~ ~ ~ #minecraft:stairs[half=bottom] if score py WrenchRaycast matches ..7 run function wrench:rotate/stairs
execute if block ~ ~ ~ #minecraft:stairs[half=top] if score py WrenchRaycast matches 8.. run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs[half=bottom] if score py lz_wrench_raycast matches ..7 run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs[half=top] if score py lz_wrench_raycast matches 8.. run function wrench:rotate/stairs/rotate
# -x-z # -x-z
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches ..7 unless block ~ ~ ~ #minecraft:stairs[facing=west,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=north,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=east] unless block ~ ~ ~ #minecraft:stairs[facing=south] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches ..7 unless block ~ ~ ~ #minecraft:stairs[facing=west,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=north,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=east] unless block ~ ~ ~ #minecraft:stairs[facing=south] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=east,shape=inner_left] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=east,shape=inner_left] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=south,shape=inner_right] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=south,shape=inner_right] run function wrench:rotate/stairs/rotate
# -x+z # -x+z
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches 8.. unless block ~ ~ ~ #minecraft:stairs[facing=south,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=west,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=north] unless block ~ ~ ~ #minecraft:stairs[facing=east] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches 8.. unless block ~ ~ ~ #minecraft:stairs[facing=south,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=west,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=north] unless block ~ ~ ~ #minecraft:stairs[facing=east] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=north,shape=inner_left] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=north,shape=inner_left] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches ..7 if score pz WrenchRaycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=east,shape=inner_right] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches ..7 if score pz lz_wrench_raycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=east,shape=inner_right] run function wrench:rotate/stairs/rotate
# +x+z # +x+z
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches 8.. unless block ~ ~ ~ #minecraft:stairs[facing=east,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=south,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=west] unless block ~ ~ ~ #minecraft:stairs[facing=north] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches 8.. unless block ~ ~ ~ #minecraft:stairs[facing=east,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=south,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=west] unless block ~ ~ ~ #minecraft:stairs[facing=north] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=west,shape=inner_left] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=west,shape=inner_left] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=north,shape=inner_right] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches 8.. if block ~ ~ ~ #minecraft:stairs[facing=north,shape=inner_right] run function wrench:rotate/stairs/rotate
# +x-z # +x-z
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches ..7 unless block ~ ~ ~ #minecraft:stairs[facing=north,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=east,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=south] unless block ~ ~ ~ #minecraft:stairs[facing=west] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches ..7 unless block ~ ~ ~ #minecraft:stairs[facing=north,shape=outer_left] unless block ~ ~ ~ #minecraft:stairs[facing=east,shape=outer_right] unless block ~ ~ ~ #minecraft:stairs[facing=south] unless block ~ ~ ~ #minecraft:stairs[facing=west] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=south,shape=inner_left] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=south,shape=inner_left] run function wrench:rotate/stairs/rotate
execute if block ~ ~ ~ #minecraft:stairs if score px WrenchRaycast matches 8.. if score pz WrenchRaycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=west,shape=inner_right] run function wrench:rotate/stairs execute if block ~ ~ ~ #minecraft:stairs if score px lz_wrench_raycast matches 8.. if score pz lz_wrench_raycast matches ..7 if block ~ ~ ~ #minecraft:stairs[facing=west,shape=inner_right] run function wrench:rotate/stairs/rotate

View File

@@ -1,8 +0,0 @@
#Sticky pistons
execute if block ~ ~ ~ minecraft:sticky_piston[extended=false] run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=up] if score py WrenchRaycast matches ..11 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=down] if score py WrenchRaycast matches 4.. run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=south] if score pz WrenchRaycast matches ..11 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=north] if score pz WrenchRaycast matches 4.. run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=east] if score px WrenchRaycast matches ..11 run function wrench:rotate/redstone
execute if block ~ ~ ~ minecraft:sticky_piston[facing=west] if score px WrenchRaycast matches 4.. run function wrench:rotate/redstone

View File

@@ -0,0 +1,2 @@
# Stonecutter
execute if block ~ ~ ~ minecraft:stonecutter if score py lz_wrench_raycast matches ..9 run function wrench:rotate/nesw/rotate

View File

@@ -0,0 +1,13 @@
# Trapdoors
execute if block ~ ~ ~ #minecraft:trapdoors[open=false,half=top] if score py lz_wrench_raycast matches 13.. run function wrench:rotate/trapdoors/rotate
execute if block ~ ~ ~ #minecraft:trapdoors[open=false,half=bottom] if score py lz_wrench_raycast matches ..2 run function wrench:rotate/trapdoors/rotate
# North
execute if block ~ ~ ~ #minecraft:trapdoors[open=true,facing=north] if score pz lz_wrench_raycast matches 13.. run function wrench:rotate/trapdoors/rotate
# East
execute if block ~ ~ ~ #minecraft:trapdoors[open=true,facing=east] if score px lz_wrench_raycast matches ..2 run function wrench:rotate/trapdoors/rotate
# South
execute if block ~ ~ ~ #minecraft:trapdoors[open=true,facing=south] if score pz lz_wrench_raycast matches ..2 run function wrench:rotate/trapdoors/rotate
# West
execute if block ~ ~ ~ #minecraft:trapdoors[open=true,facing=west] if score px lz_wrench_raycast matches 13.. run function wrench:rotate/trapdoors/rotate

View File

@@ -1,20 +1,26 @@
### Test Block Detected ## Raycast
# Set block data
execute as @s run loot spawn ~ -65 ~ mine ~ ~ ~ minecraft:netherite_pickaxe[minecraft:enchantments={"minecraft:silk_touch":1}]
execute as @s run data modify storage lzstools:wrench block set from entity @n[type=minecraft:item,distance=..0.5,y=-65] Item.id
execute as @s run execute as @s run kill @n[type=minecraft:item,distance=..0.5,y=-65]
# Partial Blocks # Partial Blocks
execute if block ~ ~ ~ #wrench:partialbox run function wrench:raycast/partialbox execute if block ~ ~ ~ #wrench:partialbox run function wrench:raycast/partialbox
execute if block ~ ~ ~ #wrench:banners run function wrench:raycast/partialbox
# Remaining Blocks # Remaining Blocks
execute unless block ~ ~ ~ #wrench:partialbox unless score WrenchRedstone WrenchConfig matches 0 if block ~ ~ ~ #wrench:redstone run function wrench:rotate/redstone execute unless block ~ ~ ~ #wrench:partialbox if block ~ ~ ~ #wrench:neswud run function wrench:rotate/neswud/rotate
execute unless block ~ ~ ~ #wrench:partialbox unless score WrenchPillars WrenchConfig matches 0 if block ~ ~ ~ #wrench:pillars run function wrench:rotate/pillars execute unless block ~ ~ ~ #wrench:partialbox if block ~ ~ ~ #wrench:nesw run function wrench:rotate/nesw/rotate
execute unless block ~ ~ ~ #wrench:partialbox unless score WrenchTerracotta WrenchConfig matches 0 if block ~ ~ ~ #wrench:glazed_terracotta run function wrench:rotate/glazed_terracotta execute unless block ~ ~ ~ #wrench:partialbox if block ~ ~ ~ #wrench:xyz run function wrench:rotate/xyz/rotate
execute unless block ~ ~ ~ #wrench:partialbox if block ~ ~ ~ #wrench:glazed_terracotta run function wrench:rotate/glazed_terracotta/rotate
execute unless block ~ ~ ~ #wrench:partialbox if block ~ ~ ~ #wrench:unique run function wrench:raycast/unique
execute as @s[scores={WrenchSuccess=1..}] if block ~ ~ ~ #wrench:updates run clone ~-1 ~ ~ ~1 ~ ~ ~-1 ~ ~ replace force # Force Update on block
execute as @s[scores={WrenchSuccess=1..}] if block ~ ~ ~ #wrench:updates run clone ~ ~ ~-1 ~ ~ ~1 ~ ~ ~-1 replace force execute as @s[scores={lz_wrench_success=1..}] if block ~ ~ ~ #wrench:updates run clone ~-1 ~ ~ ~1 ~ ~ ~-1 ~ ~ replace force
execute as @s[scores={WrenchSuccess=1..}] run playsound minecraft:entity.item_frame.rotate_item block @s ~ ~ ~ execute as @s[scores={lz_wrench_success=1..}] if block ~ ~ ~ #wrench:updates run clone ~ ~ ~-1 ~ ~ ~1 ~ ~ ~-1 replace force
execute as @s[scores={lz_wrench_success=1..}] run playsound minecraft:entity.item_frame.rotate_item block @s ~ ~ ~
# Raycast Debug
execute if score WrenchDebug WrenchConfig matches 1 run summon area_effect_cloud ~ ~ ~ {Particle:happy_villager,Radius:0.01,Duration:2}
# Advance forward and if nothing found # Advance forward and if nothing found
scoreboard players add #distance WrenchRaycast 1 scoreboard players add #distance lz_wrench_raycast 1
execute if score @s WrenchSuccess matches 0 if score #distance WrenchRaycast matches ..350 positioned ^ ^ ^0.01 run function wrench:raycast/rayloop execute if score @s lz_wrench_success matches 0 if score #distance lz_wrench_raycast matches ..350 positioned ^ ^ ^0.01 run function wrench:raycast/rayloop

View File

@@ -1,13 +1,10 @@
#Setting up the raycasting data. #Setting up the raycasting data.
scoreboard players set #distance lz_wrench_raycast 0
tag @s add raycast tag @s add lz_wrench_raycast
scoreboard players set #distance WrenchRaycast 0
#Activating the raycast. This function will call itself until it is done. #Activating the raycast. This function will call itself until it is done.
execute as @e[tag=lz_wrench_raycast] at @s anchored eyes positioned ^ ^ ^ run function wrench:raycast/rayloop
execute as @e[tag=raycast] at @s anchored eyes positioned ^ ^ ^ run function wrench:raycast/rayloop
tag @e[tag=raycast] add WrenchResult
tag @e[tag=raycast] add RaycastResult
#Raycasting finished, removing tag from the raycaster. #Raycasting finished, removing tag from the raycaster.
tag @s remove raycast tag @s remove lz_wrench_raycast
data remove storage lzstools:wrench block

View File

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

View File

@@ -0,0 +1,3 @@
## Unique Items
execute if block ~ ~ ~ minecraft:crafter run function wrench:rotate/unique_blocks/crafter/rotate

View File

@@ -1,10 +0,0 @@
#Reset scores
scoreboard players set @s WrenchSuccess 0
scoreboard players set @s WrenchRaycast 0
#Raycast from player's position
function wrench:raycast/start
#Reset input
tag @s remove WrenchResult
scoreboard players set @s WrenchInput 0

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +0,0 @@
### Flip Chain
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:chain[axis=z] replace minecraft:chain[axis=y]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:chain[axis=y] replace minecraft:chain[axis=x]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:chain[axis=x] replace minecraft:chain[axis=z]

View File

@@ -1,8 +0,0 @@
### Flip End Rod
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=east] replace minecraft:end_rod[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=up] replace minecraft:end_rod[facing=down]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=north] replace minecraft:end_rod[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=west] replace minecraft:end_rod[facing=east]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=down] replace minecraft:end_rod[facing=up]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:end_rod[facing=south] replace minecraft:end_rod[facing=north]

View File

@@ -1,3 +0,0 @@
### Glazed Terracotta
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":['"Terracotta"']}}}] run function wrench:rotate/glazed_terracotta_mode
execute as @s[scores={WrenchSuccess=0}] run function wrench:rotate/glazed_terracotta_cycle

View File

@@ -0,0 +1,6 @@
## Cycle Glazed Terracotta
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=north] run setblock ~ ~ ~ $(block)[facing=east] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=east] run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=south] run setblock ~ ~ ~ $(block)[facing=west] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=west] run setblock ~ ~ ~ $(block)[facing=north] replace

View File

@@ -0,0 +1,22 @@
## Mode Glazed Terracotta
# Terracotta Mode Rotation
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":["North"]}}}] run tag @s add TerracottaNORTH
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":["East"]}}}] run tag @s add TerracottaEAST
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":["South"]}}}] run tag @s add TerracottaSOUTH
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":["West"]}}}] run tag @s add TerracottaWEST
$execute as @s[scores={lz_wrench_success=0}, tag=TerracottaNORTH] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=north] replace
$execute as @s[scores={lz_wrench_success=0}, tag=TerracottaEAST] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=east] replace
$execute as @s[scores={lz_wrench_success=0}, tag=TerracottaSOUTH] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}, tag=TerracottaWEST] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=west] replace
# Advance Terracotta Mode Rotation
function wrench:wrench/terracotta
tag @s[tag=TerracottaNORTH] remove TerracottaNORTH
tag @s[tag=TerracottaEAST] remove TerracottaEAST
tag @s[tag=TerracottaSOUTH] remove TerracottaSOUTH
tag @s[tag=TerracottaWEST] remove TerracottaWEST
# Don't rotate if matches current orientation
execute as @s[scores={lz_wrench_success=0}] run scoreboard players set @s lz_wrench_success -1

View File

@@ -0,0 +1,4 @@
## Glazed Terracotta
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":["Terracotta"]}}}] run function wrench:rotate/glazed_terracotta/mode with storage lzstools:wrench
execute as @s[scores={lz_wrench_success=0}] run function wrench:rotate/glazed_terracotta/cycle with storage lzstools:wrench

View File

@@ -1,101 +0,0 @@
### Rotate glazed terracotta
## Shades
# White
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=east] replace minecraft:white_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=north] replace minecraft:white_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=west] replace minecraft:white_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=south] replace minecraft:white_glazed_terracotta[facing=east]
# Light Gray
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=east] replace minecraft:light_gray_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=north] replace minecraft:light_gray_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=west] replace minecraft:light_gray_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=south] replace minecraft:light_gray_glazed_terracotta[facing=east]
# Gray
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=east] replace minecraft:gray_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=north] replace minecraft:gray_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=west] replace minecraft:gray_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=south] replace minecraft:gray_glazed_terracotta[facing=east]
# Black
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=east] replace minecraft:black_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=north] replace minecraft:black_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=west] replace minecraft:black_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=south] replace minecraft:black_glazed_terracotta[facing=east]
## Colours
# Brown
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=east] replace minecraft:brown_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=north] replace minecraft:brown_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=west] replace minecraft:brown_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=south] replace minecraft:brown_glazed_terracotta[facing=east]
# Red
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=east] replace minecraft:red_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=north] replace minecraft:red_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=west] replace minecraft:red_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=south] replace minecraft:red_glazed_terracotta[facing=east]
# Orange
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=east] replace minecraft:orange_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=north] replace minecraft:orange_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=west] replace minecraft:orange_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=south] replace minecraft:orange_glazed_terracotta[facing=east]
# Yellow
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=east] replace minecraft:yellow_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=north] replace minecraft:yellow_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=west] replace minecraft:yellow_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=south] replace minecraft:yellow_glazed_terracotta[facing=east]
# Lime
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=east] replace minecraft:lime_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=north] replace minecraft:lime_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=west] replace minecraft:lime_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=south] replace minecraft:lime_glazed_terracotta[facing=east]
# Green
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=east] replace minecraft:green_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=north] replace minecraft:green_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=west] replace minecraft:green_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=south] replace minecraft:green_glazed_terracotta[facing=east]
# Cyan
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=east] replace minecraft:cyan_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=north] replace minecraft:cyan_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=west] replace minecraft:cyan_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=south] replace minecraft:cyan_glazed_terracotta[facing=east]
# Light Blue
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=east] replace minecraft:light_blue_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=north] replace minecraft:light_blue_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=west] replace minecraft:light_blue_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=south] replace minecraft:light_blue_glazed_terracotta[facing=east]
# Blue
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=east] replace minecraft:blue_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=north] replace minecraft:blue_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=west] replace minecraft:blue_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=south] replace minecraft:blue_glazed_terracotta[facing=east]
# Purple
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=east] replace minecraft:purple_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=north] replace minecraft:purple_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=west] replace minecraft:purple_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=south] replace minecraft:purple_glazed_terracotta[facing=east]
# Magenta
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=east] replace minecraft:magenta_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=north] replace minecraft:magenta_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=west] replace minecraft:magenta_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=south] replace minecraft:magenta_glazed_terracotta[facing=east]
# Pink
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=east] replace minecraft:pink_glazed_terracotta[facing=north]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=north] replace minecraft:pink_glazed_terracotta[facing=west]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=west] replace minecraft:pink_glazed_terracotta[facing=south]
execute as @s[scores={WrenchSuccess=0}] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=south] replace minecraft:pink_glazed_terracotta[facing=east]

View File

@@ -1,119 +0,0 @@
### Rotate Glazed Terracotta
# Terracotta Mode Rotation
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":['"North"']}}}] run tag @s add TerracottaNORTH
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":['"East"']}}}] run tag @s add TerracottaEAST
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":['"South"']}}}] run tag @s add TerracottaSOUTH
execute as @s[nbt={SelectedItem:{components:{"minecraft:lore":['"West"']}}}] run tag @s add TerracottaWEST
## Shades
# White
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=east] replace minecraft:white_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=north] replace minecraft:white_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=west] replace minecraft:white_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:white_glazed_terracotta[facing=south] replace minecraft:white_glazed_terracotta
# Light Gray
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=east] replace minecraft:light_gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=north] replace minecraft:light_gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=west] replace minecraft:light_gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_gray_glazed_terracotta[facing=south] replace minecraft:light_gray_glazed_terracotta
# Gray
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=east] replace minecraft:gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=north] replace minecraft:gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=west] replace minecraft:gray_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:gray_glazed_terracotta[facing=south] replace minecraft:gray_glazed_terracotta
# Black
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=east] replace minecraft:black_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=north] replace minecraft:black_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=west] replace minecraft:black_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:black_glazed_terracotta[facing=south] replace minecraft:black_glazed_terracotta
## Colours
# Brown
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=east] replace minecraft:brown_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=north] replace minecraft:brown_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=west] replace minecraft:brown_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:brown_glazed_terracotta[facing=south] replace minecraft:brown_glazed_terracotta
# Red
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=east] replace minecraft:red_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=north] replace minecraft:red_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=west] replace minecraft:red_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:red_glazed_terracotta[facing=south] replace minecraft:red_glazed_terracotta
# Orange
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=east] replace minecraft:orange_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=north] replace minecraft:orange_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=west] replace minecraft:orange_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:orange_glazed_terracotta[facing=south] replace minecraft:orange_glazed_terracotta
# Yellow
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=east] replace minecraft:yellow_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=north] replace minecraft:yellow_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=west] replace minecraft:yellow_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:yellow_glazed_terracotta[facing=south] replace minecraft:yellow_glazed_terracotta
# Lime
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=east] replace minecraft:lime_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=north] replace minecraft:lime_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=west] replace minecraft:lime_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:lime_glazed_terracotta[facing=south] replace minecraft:lime_glazed_terracotta
# Green
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=east] replace minecraft:green_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=north] replace minecraft:green_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=west] replace minecraft:green_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:green_glazed_terracotta[facing=south] replace minecraft:green_glazed_terracotta
# Cyan
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=east] replace minecraft:cyan_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=north] replace minecraft:cyan_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=west] replace minecraft:cyan_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:cyan_glazed_terracotta[facing=south] replace minecraft:cyan_glazed_terracotta
# Light Blue
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=east] replace minecraft:light_blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=north] replace minecraft:light_blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=west] replace minecraft:light_blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:light_blue_glazed_terracotta[facing=south] replace minecraft:light_blue_glazed_terracotta
# Blue
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=east] replace minecraft:blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=north] replace minecraft:blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=west] replace minecraft:blue_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:blue_glazed_terracotta[facing=south] replace minecraft:blue_glazed_terracotta
# Purple
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=east] replace minecraft:purple_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=north] replace minecraft:purple_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=west] replace minecraft:purple_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:purple_glazed_terracotta[facing=south] replace minecraft:purple_glazed_terracotta
# Magenta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=east] replace minecraft:magenta_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=north] replace minecraft:magenta_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=west] replace minecraft:magenta_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:magenta_glazed_terracotta[facing=south] replace minecraft:magenta_glazed_terracotta
# Pink
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaEAST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=east] replace minecraft:pink_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaNORTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=north] replace minecraft:pink_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaWEST] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=west] replace minecraft:pink_glazed_terracotta
execute as @s[scores={WrenchSuccess=0}, tag=TerracottaSOUTH] store result score @s WrenchSuccess run fill ~ ~ ~ ~ ~ ~ minecraft:pink_glazed_terracotta[facing=south] replace minecraft:pink_glazed_terracotta
## Non-processed
# Advance Terracotta Mode Rotation
function wrench:wrench/terracotta
tag @s[tag=TerracottaNORTH] remove TerracottaNORTH
tag @s[tag=TerracottaEAST] remove TerracottaEAST
tag @s[tag=TerracottaSOUTH] remove TerracottaSOUTH
tag @s[tag=TerracottaWEST] remove TerracottaWEST
# Failed
execute as @s[scores={WrenchSuccess=0}] run scoreboard players set @s WrenchSuccess -1

View File

@@ -0,0 +1,12 @@
## Click NESW
# Get Raycast Target Coords
function wrench:raycast/target_coords
$execute as @s[scores={lz_wrench_success=0}] if score pz lz_wrench_raycast matches 0 store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=north] replace
$execute as @s[scores={lz_wrench_success=0}] if score px lz_wrench_raycast matches 15 store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=east] replace
$execute as @s[scores={lz_wrench_success=0}] if score pz lz_wrench_raycast matches 15 store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}] if score px lz_wrench_raycast matches 0 store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=west] replace
# Otherwise, Flip
execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run function wrench:rotate/nesw/flip with storage lzstools:wrench

View File

@@ -0,0 +1,6 @@
## Cycle NESW
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=west] run setblock ~ ~ ~ $(block)[facing=north] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=north] run setblock ~ ~ ~ $(block)[facing=east] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=east] run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=south] run setblock ~ ~ ~ $(block)[facing=west] replace

View File

@@ -0,0 +1,6 @@
## Flip NESW
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=north] run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=south] run setblock ~ ~ ~ $(block)[facing=north] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=east] run setblock ~ ~ ~ $(block)[facing=west] replace
$execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block)[facing=west] run setblock ~ ~ ~ $(block)[facing=east] replace

View File

@@ -0,0 +1,9 @@
## Face Player NESW
$execute as @s[scores={lz_wrench_success=0}, x_rotation=-45..45, y_rotation=-45..45] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=north] replace
$execute as @s[scores={lz_wrench_success=0}, x_rotation=-45..45, y_rotation=45..135] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=east] replace
$execute as @s[scores={lz_wrench_success=0}, x_rotation=-45..45, y_rotation=135..-135] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=south] replace
$execute as @s[scores={lz_wrench_success=0}, x_rotation=-45..45, y_rotation=-135..-45] store result score @s lz_wrench_success run execute if block ~ ~ ~ $(block) run setblock ~ ~ ~ $(block)[facing=west] replace
# Otherwise, Flip
execute as @s[scores={lz_wrench_success=0}] store result score @s lz_wrench_success run function wrench:rotate/nesw/flip with storage lzstools:wrench

View File

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

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