Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions Example/data/menu/functions/dimensions/.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@

# button (gray_stained_glass_pane)
item replace block 10000 0 10000 container.0 with minecraft:gray_stained_glass_pane{display:{Name:'""'}}
data modify storage sketch: in.key set value "f"
data modify storage sketch: in.listener set value "Frame"
data modify storage sketch:data in.key set value "f"
data modify storage sketch:data in.listener set value "Frame"
function sketch:api/register_item/button

# button (barrier)
item replace block 10000 0 10000 container.0 with minecraft:barrier{display:{Name:'""'}}
data modify storage sketch: in.key set value "B"
data modify storage sketch: in.listener set value "Back"
data modify storage sketch:data in.key set value "B"
data modify storage sketch:data in.listener set value "Back"
function sketch:api/register_item/button

# variable
data modify storage sketch: in.key set value "D"
data modify storage sketch:data in.key set value "D"
function sketch:api/register_item/variable


# Set menu contents
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch: in.contents append value [f, D, D, D, -, -, -, -, f]
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, B]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, D, D, D, -, -, -, -, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, B]

# Create a menu
data modify storage sketch: in.id set value "dimensions"
data modify storage sketch:data in.id set value "dimensions"
function sketch:api/build/auto
8 changes: 4 additions & 4 deletions Example/data/menu/functions/dimensions/listener.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
#
# @within function menu_manager:handler/on_select

execute if data storage sketch: callback{listener:{id:"Overworld", canTeleport:true}} in minecraft:overworld run tp @s 10 -60 -3 180 0
execute if data storage sketch: callback{listener:{id:"TheNether", canTeleport:true}} in minecraft:the_nether run tp @s -18 57 -26 90 0
execute if data storage sketch: callback{listener:{id:"TheEnd", canTeleport:true}} in minecraft:the_end run tp @s 4 61 -7 0 0
execute if data storage sketch:data callback{listener:{id:"Overworld", canTeleport:true}} in minecraft:overworld run tp @s 10 -60 -3 180 0
execute if data storage sketch:data callback{listener:{id:"TheNether", canTeleport:true}} in minecraft:the_nether run tp @s -18 57 -26 90 0
execute if data storage sketch:data callback{listener:{id:"TheEnd", canTeleport:true}} in minecraft:the_end run tp @s 4 61 -7 0 0

execute if data storage sketch: callback{listener:"Back"} run function menu:main/
execute if data storage sketch:data callback{listener:"Back"} run function menu:main/
24 changes: 12 additions & 12 deletions Example/data/menu/functions/dimensions/variable.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@
# @within function menu_manager:callback/set_variable

# overworld
execute if data storage sketch: callback{slot:10b} if dimension minecraft:overworld run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"overworld"'}}
execute if data storage sketch: callback{slot:10b} if dimension minecraft:overworld run data modify storage sketch: in.listener set value {id:"Overworld", canTeleport:false}
execute if data storage sketch:data callback{slot:10b} if dimension minecraft:overworld run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"overworld"'}}
execute if data storage sketch:data callback{slot:10b} if dimension minecraft:overworld run data modify storage sketch:data in.listener set value {id:"Overworld", canTeleport:false}

execute if data storage sketch: callback{slot:10b} unless dimension minecraft:overworld run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"overworld"'}}
execute if data storage sketch: callback{slot:10b} unless dimension minecraft:overworld run data modify storage sketch: in.listener set value {id:"Overworld", canTeleport:true}
execute if data storage sketch:data callback{slot:10b} unless dimension minecraft:overworld run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"overworld"'}}
execute if data storage sketch:data callback{slot:10b} unless dimension minecraft:overworld run data modify storage sketch:data in.listener set value {id:"Overworld", canTeleport:true}

item modify block 10000 0 10000 container.0 sketch:register_item/button

# the nether
execute if data storage sketch: callback{slot:11b} if dimension minecraft:the_nether run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"the nether"'}}
execute if data storage sketch: callback{slot:11b} if dimension minecraft:the_nether run data modify storage sketch: in.listener set value {id:"TheNether", canTeleport:false}
execute if data storage sketch:data callback{slot:11b} if dimension minecraft:the_nether run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"the nether"'}}
execute if data storage sketch:data callback{slot:11b} if dimension minecraft:the_nether run data modify storage sketch:data in.listener set value {id:"TheNether", canTeleport:false}

execute if data storage sketch: callback{slot:11b} unless dimension minecraft:the_nether run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"the nether"'}}
execute if data storage sketch: callback{slot:11b} unless dimension minecraft:the_nether run data modify storage sketch: in.listener set value {id:"TheNether", canTeleport:true}
execute if data storage sketch:data callback{slot:11b} unless dimension minecraft:the_nether run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"the nether"'}}
execute if data storage sketch:data callback{slot:11b} unless dimension minecraft:the_nether run data modify storage sketch:data in.listener set value {id:"TheNether", canTeleport:true}

item modify block 10000 0 10000 container.0 sketch:register_item/button

# the end
execute if data storage sketch: callback{slot:12b} if dimension minecraft:the_end run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"the end"'}}
execute if data storage sketch: callback{slot:12b} if dimension minecraft:the_end run data modify storage sketch: in.listener set value {id:"TheEnd", canTeleport:false}
execute if data storage sketch:data callback{slot:12b} if dimension minecraft:the_end run item replace block 10000 0 10000 container.0 with minecraft:red_stained_glass{display:{Name:'"the end"'}}
execute if data storage sketch:data callback{slot:12b} if dimension minecraft:the_end run data modify storage sketch:data in.listener set value {id:"TheEnd", canTeleport:false}

execute if data storage sketch: callback{slot:12b} unless dimension minecraft:the_end run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"the end"'}}
execute if data storage sketch: callback{slot:12b} unless dimension minecraft:the_end run data modify storage sketch: in.listener set value {id:"TheEnd", canTeleport:true}
execute if data storage sketch:data callback{slot:12b} unless dimension minecraft:the_end run item replace block 10000 0 10000 container.0 with minecraft:lime_stained_glass{display:{Name:'"the end"'}}
execute if data storage sketch:data callback{slot:12b} unless dimension minecraft:the_end run data modify storage sketch:data in.listener set value {id:"TheEnd", canTeleport:true}

item modify block 10000 0 10000 container.0 sketch:register_item/button
16 changes: 8 additions & 8 deletions Example/data/menu/functions/main/.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@

# button (gray_stained_glass_pane)
item replace block 10000 0 10000 container.0 with minecraft:gray_stained_glass_pane{display:{Name:'""'}}
data modify storage sketch: in.key set value "f"
data modify storage sketch: in.listener set value "Frame"
data modify storage sketch:data in.key set value "f"
data modify storage sketch:data in.listener set value "Frame"
function sketch:api/register_item/button

# button (oak_door)
item replace block 10000 0 10000 container.0 with minecraft:oak_door{display:{Name:'"Teleport"'}}
data modify storage sketch: in.key set value "D"
data modify storage sketch: in.listener set value "DimensionsMenu"
data modify storage sketch:data in.key set value "D"
data modify storage sketch:data in.listener set value "DimensionsMenu"
function sketch:api/register_item/button


# Set menu contents
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch: in.contents append value [f, -, -, -, D, -, -, -, f]
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, -, -, -, D, -, -, -, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]

# Create a menu
data modify storage sketch: in.id set value "main"
data modify storage sketch:data in.id set value "main"
function sketch:api/build/auto
4 changes: 3 additions & 1 deletion Example/data/menu/functions/main/listener.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@
#
# @within function menu_manager:handler/on_select

execute if data storage sketch: callback{listener:"DimensionsMenu"} run function menu:dimensions/
execute if data storage sketch:data callback{listener:"DimensionsMenu"} run function menu:dimensions/
execute if data storage sketch:data callback{listener:"DimensionsMenu"} run data modify storage sketch:data in.sound set value "minecraft:block.chest.open"
execute if data storage sketch:data callback{listener:"DimensionsMenu"} run function sketch:api/sound
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
#
# @within tag/function sketch:set_menu/*

execute if data storage sketch: callback{id:"main"} run function menu:main/
execute if data storage sketch: callback{id:"dimensions"} run function menu:dimensions/
execute if data storage sketch:data callback{id:"main"} run function menu:main/
execute if data storage sketch:data callback{id:"dimensions"} run function menu:dimensions/
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
#
# @within tag/function sketch:set_variable/*

execute if data storage sketch: callback{id:"dimensions"} run function menu:dimensions/variable
execute if data storage sketch:data callback{id:"dimensions"} run function menu:dimensions/variable
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
#
# @within tag/function sketch:handler/on_select/*

execute if data storage sketch: callback{id:"main"} run function menu:main/listener
execute if data storage sketch: callback{id:"dimensions"} run function menu:dimensions/listener
execute if data storage sketch:data callback{id:"main"} run function menu:main/listener
execute if data storage sketch:data callback{id:"dimensions"} run function menu:dimensions/listener
4 changes: 2 additions & 2 deletions Example/data/menu_manager/functions/init.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@

# Register an item
item replace block 10000 0 10000 container.0 with minecraft:air
data modify storage sketch: in.key set value "-"
data modify storage sketch: in.isGlobal set value true
data modify storage sketch:data in.key set value "-"
data modify storage sketch:data in.isGlobal set value true
function sketch:api/register_item/normal
2 changes: 1 addition & 1 deletion Example/pack.mcmeta
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 18,
"pack_format": 26,
"description": "Example"
}
}
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,26 +33,26 @@ To use this datapack, the following datapacks must be installed
#> menu:main/

item replace block 10000 0 10000 container.0 with minecraft:gray_stained_glass_pane
data modify storage sketch: in.key set value "f"
data modify storage sketch:data in.key set value "f"
function sketch:api/register_item/button

item replace block 10000 0 10000 container.0 with minecraft:gold_block
data modify storage sketch: in.key set value "G"
data modify storage sketch: in.listener set value "give"
data modify storage sketch:data in.key set value "G"
data modify storage sketch:data in.listener set value "give"
function sketch:api/register_item/button


data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch: in.contents append value [f, -, -, -, G, -, -, -, f]
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, -, -, -, G, -, -, -, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]

data modify storage sketch: in.id set value "main"
data modify storage sketch:data in.id set value "main"
function sketch:api/build/auto
```
```mcfunction
#> menu:main/listener

execute if data storage sketch: callback{listener:"give"} run give @s minecraft:gold_block 1
execute if data storage sketch:data callback{listener:"give"} run give @s minecraft:gold_block 1
```

For detailed instructions, see [here](https://github.com/rarula/Sketch/wiki/Tutorial-%5BEN%5D)
Expand Down
16 changes: 8 additions & 8 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,26 @@
#> menu:main/

item replace block 10000 0 10000 container.0 with minecraft:gray_stained_glass_pane
data modify storage sketch: in.key set value "f"
data modify storage sketch:data in.key set value "f"
function sketch:api/register_item/button

item replace block 10000 0 10000 container.0 with minecraft:gold_block
data modify storage sketch: in.key set value "G"
data modify storage sketch: in.listener set value "give"
data modify storage sketch:data in.key set value "G"
data modify storage sketch:data in.listener set value "give"
function sketch:api/register_item/button


data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch: in.contents append value [f, -, -, -, G, -, -, -, f]
data modify storage sketch: in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]
data modify storage sketch:data in.contents append value [f, -, -, -, G, -, -, -, f]
data modify storage sketch:data in.contents append value [f, f, f, f, f, f, f, f, f]

data modify storage sketch: in.id set value "main"
data modify storage sketch:data in.id set value "main"
function sketch:api/build/auto
```
```mcfunction
#> menu:main/listener

execute if data storage sketch: callback{listener:"give"} run give @s minecraft:gold_block 1
execute if data storage sketch:data callback{listener:"give"} run give @s minecraft:gold_block 1
```

詳しい使い方は[こちら](https://github.com/rarula/Sketch/wiki/Tutorial)を参照してください
Expand Down
16 changes: 16 additions & 0 deletions data/sketch/functions/api/actionbar.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#> sketch:api/actionbar
#
# Shows an actionbar message to the executing player.
# Useful for immediate feedback when a button is clicked.
#
# @input
# storage sketch:data in
# text: string
# Message text (must not contain double-quote characters)
# color?: string
# Text color name (Default: "white")
# e.g. "red", "green", "yellow", "gold", "aqua", "gray"
#
# @api

function sketch:core/api/actionbar/_
2 changes: 1 addition & 1 deletion data/sketch/functions/api/build/auto.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Create a menu in the Minecart with Chest or Ender Chest opened by the executing player
#
# @input
# storage sketch: in
# storage sketch:data in
# id: any
# Identifier of the menu to be created
# contents: (string[] @ 9)[] @ 3
Expand Down
2 changes: 1 addition & 1 deletion data/sketch/functions/api/build/chest_minecart.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Create a menu in the executor's inventory
#
# @input
# storage sketch: in
# storage sketch:data in
# id: any
# Identifier of the menu to be created
# contents: (string[] @ 9)[] @ 3
Expand Down
2 changes: 1 addition & 1 deletion data/sketch/functions/api/build/ender_chest.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Create a menu in the executor's ender chest
#
# @input
# storage sketch: in
# storage sketch:data in
# id: any
# Identifier of the menu to be created
# contents: (string[] @ 9)[] @ 3
Expand Down
18 changes: 18 additions & 0 deletions data/sketch/functions/api/fill_border.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#> sketch:api/fill_border
#
# Appends three rows to in.contents that form a border around a 3x9 menu:
# Row 0: [key key key key key key key key key]
# Row 1: [key - - - - - - - key]
# Row 2: [key key key key key key key key key]
#
# Call before sketch:api/build/auto (or chest_minecart / ender_chest).
# The middle row's 7 inner slots are left as "-" (empty) for your content.
#
# @input
# storage sketch:data in
# key: string
# Item key to use as the border
#
# @api

function sketch:core/api/fill_border/_
20 changes: 20 additions & 0 deletions data/sketch/functions/api/fill_checker.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#> sketch:api/fill_checker
#
# Appends three rows to in.contents forming a checkerboard pattern
# with two alternating item keys:
# Row 0: [a b a b a b a b a]
# Row 1: [b a b a b a b a b]
# Row 2: [a b a b a b a b a]
#
# Call before sketch:api/build/auto (or chest_minecart / ender_chest).
#
# @input
# storage sketch:data in
# key_a: string
# First item key (slots 0, 2, 4, 6, 8 of even rows)
# key_b: string
# Second item key (slots 1, 3, 5, 7 of even rows)
#
# @api

function sketch:core/api/fill_checker/_
14 changes: 14 additions & 0 deletions data/sketch/functions/api/fill_row.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#> sketch:api/fill_row
#
# Appends a full 9-slot row to in.contents, filled with the given key.
# Call before sketch:api/build/auto (or chest_minecart / ender_chest).
# Use "-" as the key to produce an empty slot row.
#
# @input
# storage sketch:data in
# key: string
# Item key to fill the row with
#
# @api

function sketch:core/api/fill_row/_
30 changes: 30 additions & 0 deletions data/sketch/functions/api/page_controls.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#> sketch:api/page_controls
#
# Appends a 9-slot navigation row to in.contents.
# The first slot uses prev_key if has_prev is true, otherwise filler_key.
# The last slot uses next_key if has_next is true, otherwise filler_key.
# The seven middle slots are always filled with filler_key.
#
# Designed to be called after sketch:api/paginate using its out.has_prev
# and out.has_next values.
#
# @input
# storage sketch:data in
# prev_key: string
# Item key for the previous-page button
# next_key: string
# Item key for the next-page button
# filler_key: string
# Item key for inactive / filler slots
# has_prev: boolean (0b / 1b)
# Whether a previous page exists (from sketch:api/paginate out)
# has_next: boolean (0b / 1b)
# Whether a next page exists (from sketch:api/paginate out)
#
# @output
# storage sketch:data in.contents
# Appends one 9-slot navigation row
#
# @api

function sketch:core/api/page_controls/_
26 changes: 26 additions & 0 deletions data/sketch/functions/api/paginate.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#> sketch:api/paginate
#
# Slices a list of item keys to the current page window.
# Uses sketch:util/array/slice internally.
#
# @input
# storage sketch:data in
# items: string[]
# Full list of item keys
# page: int
# Current page (0-indexed)
# size?: int
# Items per page (Default: 7)
#
# @output
# storage sketch:data out
# items: string[]
# Item keys for the current page
# has_prev: boolean (0b / 1b)
# Whether a previous page exists
# has_next: boolean (0b / 1b)
# Whether a next page exists
#
# @api

function sketch:core/api/paginate/_
Loading