Paste #71981: Untitled Paste

Date: 2020/07/06 07:38:47 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


enchantHandler:
    type: world
    events:
        on player prepares anvil craft item:
        - if <player.has_flag[anvil_stuff]>:
            - determine <player.flag[anvil_stuff]>
        - if <context.repair_cost> >= 40 && <player.gamemode> == SURIVIVAL:
            - stop
        - narrate <context.repair_cost>
        - define item1 <context.inventory.slot[1]>
        - define item2 <context.inventory.slot[2]>
        - if <[item1].material.name> != air && <[item2].material.name> != air:
            - define max_levels <map[ice_aspect/3|lifesteal/2|wither/3|godly_blow/2|molten/4]>
            - define sword_enchants <list[ice_aspect|lifesteal|wither|godly_blow]>
            - define nbt <map[]>
            - if ( <context.item.enchantments.contains[luck_of_the_sea]> && <context.item.material.name> != fishing_rod && <context.item.material.name> != enchanted_book ) || ( <context.item.enchantments.contains[power]> && <context.item.material.name> != bow && <context.item.material.name> != enchanted_book ):
                - if <[item1].enchantments.contains[luck_of_the_sea]>:
                    - foreach <[item2].enchantments>:
                        - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<context.item.enchantments.level[<[value]>]>]>
                - else if <[item2].enchantments.contains[luck_of_the_sea]>:
                    - foreach <[item1].enchantments>:
                        - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<context.item.enchantments.level[<[value]>]>]>
                - else:
                    - define enchantments <list[]>
            - else if <[item1].enchantments.size> > 0 && <context.item.material.name> == air && <[item1].material.name> != enchanted_book && <[item2].material.name> == enchanted_book:
                - foreach <[item1].enchantments>:
                    - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[item1].enchantments.level[<[value]>]>]>

            - else:
                - foreach <context.item.enchantments>:
                    - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<context.item.enchantments.level[<[value]>]>]>
            - if <[item1].material.name> == enchanted_book && <[item2].material.name> == enchanted_book:
                - if <[item1].nbt_keys.size> > 0 && <[item2].nbt_keys.size> > 0:
                    - if <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>].size> > 0:
                        - define dupe <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>]>
                        - foreach <[dupe]>:
                            - inject maxCheck
                - else if <[item1].nbt_keys.size> > 0:
                    - define nbt <[nbt].include[<[item1].nbt>]>
                - else if <[item2].nbt_keys.size> > 0:
                    - define nbt <[nbt].include[<[item2].nbt>]>
                - flag player anvil_stuff:<context.item.with[nbt=<[nbt].to_list>;lore=<[enchantments].alphabetical>;hides=ITEM_DATA]> d:2t
                - determine <context.item.with[nbt=<[nbt].to_list>;lore=<[enchantments].alphabetical>;hides=ITEM_DATA]>
            - if <[item1].material.name.ends_with[_sword]> && <[item2].material.name> == enchanted_book:
                - if <[item2].nbt_keys.size> != 0 && <[item1].nbt_keys.size> > 0:
                    - if <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>].size> > 0:
                        - define dupe <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>]>
                        - foreach <[dupe]>:
                            - inject maxCheck
                        - define nbt <[nbt].include[<[item1].nbt.to_map.exclude[<[dupe]>].include[<[item2].nbt.to_map.exclude[<[dupe]>]>]>]>
                        - foreach <[item1].nbt.to_map.exclude[<[dupe]>].include[<[item2].nbt.to_map.exclude[<[dupe]>]>].keys>:
                            - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[nbt].get[<[value]>]>]>
                    - else:
                        - foreach <[item1].nbt.to_map.keys.include[<[item2].nbt.to_map.keys>]>:
                            - define nbt <[nbt].include[<[value]>/<[item1].nbt[<[value]>]||<[item2].nbt[<[value]>]>>]>
                            - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[nbt].get[<[value]>]>]>

                - else if <[item2].nbt_keys.size> != 0:
                    - foreach <[item2].nbt.to_map.keys>:
                        - if <[item1].nbt.to_map.keys.contains[<[value]>]||false>:
                            - inject maxCheck
                        - else:
                            - define nbt <[nbt].include[<[value]>/<[item2].nbt[<[value]>]>]>
                            - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[nbt].get[<[value]>]>]>
                - else if <[item1].nbt_keys.size> > 0:
                    - foreach <[item1].nbt.to_map.keys>:
                        - define nbt <[nbt].include[<[value]>/<[item1].nbt[<[value]>]>]>
                        - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[nbt].get[<[value]>]>]>

            - if <[item1].material.name.ends_with[_sword]> && <[item2].material.name.ends_with[_sword]>:
                - if <[item1].nbt_keys.size> > 0 && <[item2].nbt_keys.size> > 0:
                    - if <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>].size> > 0:
                        - define dupe <[item1].nbt.to_map.keys.shared_contents[<[item2].nbt.to_map.keys>]>
                        - foreach <[dupe]>:
                            - inject maxCheck
                    - define nbt <[nbt].include[<[item1].nbt.to_map.exclude[<[dupe]>].include[<[item2].nbt.to_map.exclude[<[dupe]>]>]>]>
                    - foreach <[item1].nbt.to_map.exclude[<[dupe]>].include[<[item2].nbt.to_map.exclude[<[dupe]>]>].keys>:
                        - define enchantments:|:<&7><[value].replace_text[_].with[<&sp>].to_titlecase><&sp><proc[romanNumeral].context[<[nbt].get[<[value]>]>]>
                - else if <[item1].nbt_keys.size> > 0:
                    - define nbt <[nbt].include[<[item1].nbt>]>
                - else if <[item2].nbt_keys.size> > 0:
                    - define nbt <[nbt].include[<[item2].nbt>]>

            - if <context.item.material.name> == air && <[item2].nbt_keys.size> > 0:
                - if <context.inventory.slot[1].material.name> == fishing_rod:
                    - flag player anvil_stuff:<item[<context.inventory.slot[1].material.name>].with[nbt=<[item2].nbt>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;enchantments=power,1]> d:2t
                    - determine <item[<context.inventory.slot[1].material.name>].with[nbt=<[item2].nbt>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;enchantments=power,1]>
                - else:
                    - flag player anvil_stuff:<item[<context.inventory.slot[1].material.name>].with[nbt=<[item2].nbt>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;enchantments=luck,1]> d:2t
                    - determine <item[<context.inventory.slot[1].material.name>].with[nbt=<[item2].nbt>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;enchantments=luck,1]>

            - else if <context.item.material.name> != air:
                - if <definition[nbt].exists>:
                    - if <context.item.material.name> != fishing_rod && <context.item.enchantments.contains[luck_of_the_sea]>:
                        - if <context.item.enchantments.exclude[luck_of_the_sea].size> == 0:
                            - flag player anvil_stuff:<context.item.with[hides=ENCHANTS;nbt=<[nbt].to_list>;lore=<[enchantments].alphabetical>]> d:2t
                            - determine <context.item.with[hides=ENCHANTS;nbt=<[nbt].to_list>;lore=<[enchantments].alphabetical.remove[<[enchantments].find_partial[Luck<&sp>Of<&sp>The<&sp>Sea]>]>]>
                        - flag player anvil_stuff:<context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;remove_enchantments=luck_of_the_sea]> d:2t
                        - determine <context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;remove_enchantments=luck_of_the_sea]>
                    - else if <context.item.material.name> != bow && <context.item.enchantments.contains[power]>:
                        - flag player anvil_stuff:<context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;remove_enchantments=power]> d:2t
                        - determine <context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>;remove_enchantments=power]>
                    - else:
                        - flag player anvil_stuff:<context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>]> d:2t
                        - determine <context.item.with[nbt=<[nbt].to_list>;hides=ENCHANTS;lore=<[enchantments].alphabetical>]>
                - else:
                    - flag player anvil_stuff:<context.item.with[hides=ENCHANTS;lore=<[enchantments].alphabetical>]> d:2t
                    - determine <context.item.with[hides=ENCHANTS;lore=<[enchantments].alphabetical>]>