Paste #125512: Unnamed Denizen Script Paste

Date: 2024/08/11 22:38:13 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


backpack_script:
    type: inventory
    inventory: chest
    size: 9
    slots:
    - [liquid_tank] [] [] [] [] [] [] [] [liquid_tank]

liquid_tank:
    type: item
    material: bucket
    display name: <&6>Réservoir
    lore:
    - <&f>Clique droit sur:<&nl>
    - <&f>- <&9>Seau d'eau
    - <&f>- <&c>Seau de lave
    - <&f>- <&3>Seau de neige poudreuse<&nl>
    - <&f>pour remplir le réservoir
    flags:
        liquid_level:
            current: 0
            max: 5

tank_handler:
    type: world
    events:
        on player drags liquid_tank in backpack_script:
         - determine cancelled
         #fill tank
        on player right clicks *_bucket in inventory:
        - determine passively cancelled
        - define slots <context.inventory.find_all_items[liquid_tank]>
        - define current -1
        - define max 1
        - define valid_slot -1
        #find a valid slot if there is one
        - foreach <[slots]> as:slot:
            - if <context.inventory.slot[<[slot]>].has_flag[liquid_level]>:
                - define current <context.inventory.slot[<[slot]>].flag[liquid_level.current]>
                - define max <context.inventory.slot[<[slot]>].flag[liquid_level.max]>
                - if ( <[current].is_less_than[<[max]>]> && <context.inventory.slot[<[slot]>].material.name> == <context.item.material.name> ) || <[current]> == 0:
                        - define valid_slot <[slot]>
                        - foreach stop
        #valid slot found
        - if <[valid_slot]> > 0:
            - inventory flag liquid_level.current:++ slot:<[valid_slot]> destination:<context.inventory>
            - if !<context.inventory.slot[<[valid_slot]>].has_flag[title_changed]>:
                - inventory flag title_changed slot:<[valid_slot]> destination:<context.inventory>
                - define type <context.inventory.slot[<[valid_slot]>].material>
                - inventory adjust slot:<[valid_slot]> display:<script[config].parsed_key[messages.backpack.tank_title.<[type]>]> destination:<context.inventory>
            - define current <context.inventory.slot[<[valid_slot]>].flag[liquid_level.current]>
            - inventory adjust slot:<[valid_slot]> "lore:<&nl><&f>Niveau: <&7><[current]><&f>/<&6><[max]>" destination:<context.inventory>
            - inventory adjust slot:<context.slot> material:bucket destination:<context.clicked_inventory>
            - if <context.inventory.slot[<[valid_slot]>].material> != <context.item.material>:
                - inventory adjust slot:<[valid_slot]> destination:<context.inventory> material:<context.item.material>
        #no valid slot found, send info message
        - else:
            - define tank_type <script[config].parsed_key[messages.backpack.tank_title.<context.item.material.name>]>
            - define tanks <context.inventory.slot[<[slots]>].parse_tag[<[parse_value].material>]>
            - if <[tanks].contains[<context.item.material>]>:
                - narrate "<proc[get_key].context[config|prefix]> <script[config].parsed_key[messages.backpack.info_full_tank]>"
                - narrate <proc[get_message].context[backpack|info_full_tank]>
            - else:
                - narrate <proc[get_message].context[backpack|info_no_tank]>
config:
    type: data
    debug: true
    prefix: <&8>[<&c>!<&8>]
    messages:
        graves:
            error_not_owner: <&7>Ne vole pas ton semblable! Cette tombe ne t'appartient pas!
            info_destroy_not_owner: <&7>Tu as détruit la tombe de <&f>!playername!<&7>!
            info_no_grave: <&7>Ton inventaire était vide. Tu n'as pas eu de tombe!
            info_grave_removed: <&7>La tombe a été vidée et retirée!
        autotool:
            info_enabled: <&7>Mode changement d'outil automatique: <&6>Activé
            info_disabled: <&7>Mode changement d'outil automatique: <&c>Désactivé
        xpbottle:
            error_missing_xp_amount: <&7>Tu dois spécifier un montant d'xp!
            error_too_many_arguments: <&7>Tu as entré trop d'arguments!
            error_invalid_input: <&7>Argument invalide!
            error_not_enough_xp_points: <&7>Tu n'as pas assez de points d'expérience!
            error_not_enough_xp_levels: <&7>Tu n'as pas assez de niveaux d'expérience!
            info_xp_to_bottle: <&7>Tu as mis <&f>!xp!<&7> <&6>XP<&7> en bouteille!
            info_current_xp: <&7>XP restante: <&f>!xp! <&6>XP
        backpack:
            error_too_many_arguments: <&7>Cette commande s'utilise sans arguments!
            error_no_permission: <&7>Désolé, tu n'as pas la permission requise!
            info_empty_tank: <&7>Ton réservoir est vide!
            info_full_tank: <&7>Ton <[tank_type]><&7> est plein!
            info_no_tank: <&7>Pas de réservoir disponible!
            info_no_container: <&7>Tu n'as pas de contenant disponible!
            info_wrong_type: <&7>Mauvais type de liquide!
            tank_title:
                water_bucket: <&9>Réservoir d'eau
                lava_bucket: <&c>Réservoir de lave
                powder_snow_bucket: <&3>Réservoir de neige poudreuse

get_message:
    type: procedure
    debug: false
    definitions: script|key
    script:
        - determine "<proc[get_key].context[config|prefix]> <script[config].parsed_key[messages.<[script]>.<[key]>]>"

get_key:
    type: procedure
    debug: false
    definitions: script|key
    script:
        - determine <script[<[script]>].parsed_key[<[key]>]>