Paste #125522: Unnamed Denizen Script Paste

Date: 2024/08/12 02:38:00 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link




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>