Date: 2024/08/12 02:38:00 UTC-07:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
duanzao_menu_inv:
type: inventory
inventory: chest
gui: true
title: 锻造
size: 27
openduanzao_command:
type: command
debug: false
name: duanzao
description: 打开锻造页面
usage: /duanzao
script:
- run duanzao_ui_task
duanzao_ui_task:
type: task
debug: false
definitions: inventory
script:
# 三页
- define row1_page 1
- define row2_page 1
- define row3_page 1
- if !<[inventory].exists>:
- define inventory <inventory[duanzao_menu_inv]>
- define title <&b>锻造232
- define btns <map[]>
# 添加物品
- define btns.9 <ni_item[测试物品]>
- note remove as:tess_clan_crest_gui_<player.uuid>
- define util_menu_inv <[inventory]>
- define contents <list>
- define size 54
- repeat <[size]>:
- if <[btns].contains[<[value]>]>:
- define contents:->:<[btns].get[<[value]>]>
- else:
- define contents:->:air
- adjust <[util_menu_inv]> size:<[size]>
- adjust <[util_menu_inv]> title:<[title]>
- adjust <[util_menu_inv]> contents:<[contents]>
- note <[util_menu_inv]> as:duanzao_menu_inv_<player.uuid>
- inventory open d:<inventory[duanzao_menu_inv_<player.uuid>]>
#放入物品
duanzao_i_handler:
type: world
debug: true
events:
on player clicks in duanzao_menu_inv:
- debug LOG <context.is_shift_click>
- debug LOG <context.slot_type>
- debug LOG <context.slot>
- debug LOG <context.clicked_inventory>
- debug LOG <inventory[duanzao_menu_inv_<player.uuid>]>
- if <context.clicked_inventory> == <inventory[duanzao_menu_inv_<player.uuid>]>:
- choose <context.slot>:
- case 1:
- if <context.is_shift_click>:
- define itemtemp <player.open_inventory.slot[<context.slot>]>
- inventory set o:air slot:<context.slot> d:<context.clicked_inventory>
- give <[itemtemp]> player:<player>
- else:
- define tempitem <context.cursor_item>
# 设置手持
- adjust <player> item_on_cursor:<context.item>
# 设置箱子
- inventory set o:<[tempitem]> slot:<context.slot> d:<player.open_inventory>
# 设置标签
- flag <player> duanzao_input_1:<context.cursor_item>
- case 9:
- narrate 开始锻造
- define is_ok true
# 判断是否通过
- foreach <player.open_inventory.slot[1].raw_nbt.get[材料].if_null[<map[]>]> key:key as:val:
- if <player.inventory.contains_any[<ni_item[<[key]>]>]>:
- narrate 存在-<[key]>-<[val]>
# 数量不足
- if !<player.inventory.contains_item[<ni_item[<[key]>]>].quantity[<[val].replace[int:].with[]>]>:
- define is_ok false
- foreach stop
- else:
# 不存在道具 终止
- define is_ok false
- narrate <player.inventory.contains_any[<ni_item[<[key]>]>]>
- narrate <player.inventory.contains_any[<ni_item[<[key]>]>]>
- narrate 不存在<[key]>
- foreach stop
- if <[is_ok]>:
- define tempmap <player.open_inventory.slot[1].raw_nbt.get[输出道具].if_null[<map[]>]>
# 扣除材料
- foreach <player.open_inventory.slot[1].raw_nbt.get[材料].if_null[<map[]>]> key:key as:val:
- take from:<player.inventory> item:<ni_item[<[key]>]> quantity:<[val].replace[int:].with[]>
# 设置配方为空
- inventory set d:<player.open_inventory> slot:1 o:air
- narrate <[tempmap]>
- foreach <[tempmap]> key:shuchu_name as:count:
- execute as_server "neigeitems give <player.name> <[shuchu_name]> <[count].replace[int:].with[]>"
- else:
- narrate 材料不足
- else:
- if <context.is_shift_click>:
- if <player.open_inventory.slot[1]> == i@air:
- define item <player.inventory.slot[<context.slot>]>
- inventory set o:air slot:<context.slot> d:<context.clicked_inventory>
- inventory set o:<[item]> slot:1 d:<player.open_inventory>
# 写入配方
- if <player.open_inventory.slot[1]> != <item[air]>:
- define repice_item <player.open_inventory.slot[1]>
# 循环写入条件
- foreach <[repice_item].raw_nbt.get[材料].if_null[<map[]>]> key:key as:val:
- narrate <&c><[key]><&7>--<&b><[val]>
- inventory set o:<ni_item[<[key]>]> slot:<[loop_index].add[45]> d:<player.open_inventory>
- inventory adjust slot:<[loop_index].add[45]> quantity:<[val].replace[int:].with[]> d:<player.open_inventory>
# 循环写入输出物品
- else:
- repeat 9:
- if <player.open_inventory.slot[<[value].add[45]>]> == <item[air]>:
- repeat stop
- inventory set o:air slot:<[value].add[45]> d:<player.open_inventory>
duanzao_world_close:
type: world
debug: false
events:
on player closes duanzao_menu_inv:
- if <player.open_inventory.slot[1]> != <item[air]>:
- give <player.open_inventory.slot[1]> player:<player>