################################################################################ # # d R e g i o n s # # Flag Modules # # Authors: |Anthony| # Version: 0.1 # dScript Version: 0.9.6-DEV_b146 # # # #--- About this script # # Adding new flags /can/ be as easy as making a new module! # # # ################################################################################ dRegions_Flag_Entry: type: item debug: false material: i@paper display name: "<&4>[<&6>Entry<&4>]" lore: - <&5>Who can enter a region event_hook: regionEnter event_priority: 0 flag_type: state flag_takeGroup: true script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>entry<&rb>||null<>>' - define entryList ']].parse[replace[regex:()$].with[]]>>' # - define entryList 'yaml<&lb>dRegions_%world%_regions<&rb>.read<&lb>regions.]].parse[replace[regex:()$].with[.flags.entry<&rb>||null<>>]]>>' - foreach %entryList% { - if { - define group '' - define isOwner '|%world%|]>' - define isMember '|%world%|]>' - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You do not have permission to enter this region' } - determine cancelled - queue clear } } } dRegions_Flag_Greeting: type: item debug: false material: i@paper display name: "<&4>[<&6>Greeting<&4>]" lore: - <&5>Message on enter region event_hook: regionEnter event_priority: 10 flag_type: string flag_takeGroup: false script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: # Now using GetInheritedFlag procedure # I split the tag up into 3 parts so folks could maybe possibly better understand it # The original msgList is left commented out. No touchy - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>greeting<&rb>||null<>>' - define msgList ']].parse[replace[regex:()$].with[]]>>' # - define msgList 'yaml<&lb>dRegions_%world%_regions<&rb>.read<&lb>regions.]].parse[replace[regex:()$].with[.flags.greeting<&rb>||null<>>]]>>' - foreach %msgList% { - if { - narrate "" - foreach stop } } dRegions_Flag_Exit: type: item debug: false material: i@paper display name: "<&4>[<&6>Exit<&4>]" lore: - <&5>Who can exit a region event_hook: regionExit event_priority: 0 flag_type: state flag_takeGroup: true script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>exit<&rb>||null<>>' - define exitList ']].parse[replace[regex:()$].with[]]>>' # - define exitList 'yaml<&lb>dRegions_%world%_regions<&rb>.read<&lb>regions.]].parse[replace[regex:()$].with[.flags.exit<&rb>||null<>>]]>>' - foreach %exitList% { - if { - define group '' - define isOwner '|%world%|]>' - define isMember '|%world%|]>' - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You do not have permission to exit this region' } - determine cancelled - queue clear } } } dRegions_Flag_Farewell: type: item debug: false material: i@paper display name: "<&4>[<&6>Farewell<&4>]" lore: - <&5>Message on exit region event_hook: regionExit event_priority: 10 flag_type: string flag_takeGroup: false script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>farewell<&rb>||null<>>' - define msgList ']].parse[replace[regex:()$].with[]]>>' # - define msgList 'yaml<&lb>dRegions_%world%_regions<&rb>.read<&lb>regions.]].parse[replace[regex:()$].with[.flags.farewell<&rb>||null<>>]]>>' - foreach %msgList% { - if { - narrate "" - foreach stop } } dRegions_Flag_Gamemode: type: item debug: false material: i@paper display name: "<&4>[<&6>Gamemode<&4>]" lore: - <&5>Change gamemode inside a region event_hook: regionToggle event_priority: 20 flag_type: custom flag_type_customVal: creative|survival|adventure flag_help: Gamemode flag can be set to creative, survival, or adventure flag_takeGroup: true script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>gamemode<&rb>||null<>>' - define gmList ']].parse[replace[regex:()$].with[]]>>' - foreach %gmList% { - if { - define gm '' - define group '' - define isOwner '|%world%|]>' - define isMember '|%world%|]>' - if { - if { - if ]||false> { - adjust 'gamemode:' - run s@dRegions_Msg 'def:<&7><&o>Your gamemode has been updated.' } - flag 'dRegions_PreviousGamemode:!' } else if { - if ]> { - flag 'dRegions_PreviousGamemode:' - adjust 'gamemode:%gm%' - run s@dRegions_Msg 'def:<&7><&o>Your gamemode has been updated.' } } else { - adjust 'gamemode:survival' - run s@dRegions_Msg 'def:<&7><&o>Your gamemode has been updated.' } - foreach stop } } } dRegions_Flag_Inventory: type: item debug: true material: i@paper display name: "<&4>[<&6>Inventory<&4>]" lore: - <&5>Save inventory before going into a region event_hook: regionToggle event_priority: 20 flag_type: custom flag_type_customVal: unique|kit flag_help: Inventory flag can be set to unique or kit. Unique inventories start empty. Kit inventories use your current inventory. flag_takeGroup: true script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." command_handler: - if { - yaml set 'inventories.regions.%region%.entry.kit.equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.entry.kit.inv:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players:|:' 'id:dRegions_%world%_inventories' } - if { - yaml set 'inventories.regions.%region%.entry.players:|:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players:|:' 'id:dRegions_%world%_inventories' } - if { - yaml set 'inventories.regions.%region%:!' 'id:dRegions_%world%_inventories' } - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>inventory<&rb>||null<>>' - define invList ']].parse[replace[regex:()$].with[]]>>' - foreach %invList% { - define region '' - if { - define inv '' - define group '' - define isOwner ']>' - define isMember ']>' - if { - if { - if { - define equipment '' - yaml set 'inventories.regions.%region%.exit.players..equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players..inv:' 'id:dRegions_%world%_inventories' - inventory set 'd:' 'o:' - equip 'boots:' 'legs:' 'chest:' 'head:' } else if { - define equipment '.equip]||li@>' - yaml set 'inventories.regions.%region%.exit.players..equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players..inv:' 'id:dRegions_%world%_inventories' - inventory set 'd:' 'o:.inv]||li@>' - equip 'boots:' 'legs:' 'chest:' 'head:' } - run s@dRegions_Msg 'def:<&7><&o>Your inventory has been updated.' } else if { - define equipment '.equip]||li@>' - inventory set 'd:' 'o:.inv]||li@>' - equip 'boots:' 'legs:' 'chest:' 'head:' - yaml set 'inventories.regions.%region%.exit.players.:!' 'id:dRegions_%world%_inventories' - run s@dRegions_Msg 'def:<&7><&o>Your inventory has been updated.' } else { - run s@dRegions_Msg 'def:<&7><&o>THIS SHOULD NOT RUN EVER!' } - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - foreach stop } } } dRegions_Flag_Build: type: item debug: true material: i@paper display name: "<&4>[<&6>Build<&4>]" lore: - <&5>Override default build perms event_hook: build event_priority: 0 flag_type: state flag_help: By default, all members and owners can build in their regions. Setting this flag can over ride that behavior. Can be set to allow, deny, or none and accepts the -g group switch. flag_takeGroup: true script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define region '' - define flagVal '' - if { - define flagVal 'deny/nonmembers' } - define flag '' - define group '' - define isOwner '|%world%|]>' - define isMember '|%world%|]>' - if { - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You do not have permission to build in this region' } - determine cancelled - queue clear } } - if { - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You do not have permission to build in this region' } - determine cancelled - queue clear } } dRegions_Flag_Mob-Targeting: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Targeting<&4>]" lore: - <&5>Can mobs target players event_hook: ENTITY_Target_Player event_priority: 0 flag_type: state flag_takeGroup: true flag_help: State flag controlling whether mobs will be able to target players in this region. Defaults to allow all. Use mob-targeting flag to specify mob types. Takes the -g group switch. script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." event: - define prefix '<<>proc<&lb>dRegions_GetInheritedFlag<&rb>.context<&lb>%world%<&pipe>' - define suffix '<&pipe>mob-target<&rb>||null<>>' - define InheritedMobs ']].parse[replace[regex:()$].with[]]>>' - define suffix '<&pipe>mob-targeting<&rb>||null<>>' - define InheritedFlags ']].parse[replace[regex:()$].with[]]>>' - foreach %InheritedFlags% { - define mobList '' - if || ]||false> { - define flagVal '' - if { - define flagVal 'allow/all' } - define flag '' - define group '' - define region '' - define isOwner ']>' - define isMember ']>' - if { - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You have been ignored by a mob!' } - determine cancelled - queue clear } } - if { - if { - if { - flag player dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg 'def:<&c><&o>You have been ignored by a mob!' } - determine cancelled - queue clear } } } } dRegions_Flag_Mob-Target: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Target<&4>]" lore: - <&5>List of mobs used by mob-targeting flag flag_type: list flag_takeGroup: false flag_help: List flag used with mob-targeting flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of mobs. script: - narrate "A handy container for region flags." - narrate "We<&sq>ll have subscripts for various tasks." button_click: - narrate "This will be useful when it comes time to make the GUI for region management." command_handler: - if { - yaml set 'regions.%region%.flags.%flag%:!' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&c>Cleared %flag% list for region %region%' - queue clear } else { - define mobs '].parse[to_lowercase].deduplicate||li@>' - if { - if '' { - yaml set 'regions.%region%.flags.%flag%:all' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%region%<&7><&o> set %flag% flag to <&f><&o>%flagValue%' - queue clear } - if '' { - yaml set 'regions.%region%.flags.%flag%:!' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&c>Cleared %flag% list for region %region%' - queue clear } } - foreach %mobs% { - if { - define mobs '' - run s@dRegions_Msg 'def:<&c><&o>%value% is not a valid a mob!' } } - if { - run s@dRegions_Msg 'def:<&c><&o>No valid mobs specified!' - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@dRegions_Msg 'def:<&c>' } - queue clear } - define currentMobs '' - if '' { - define flagValue '].deduplicate||li@>' } - if '' { - define flagValue '].deduplicate||li@>' } - if { - yaml set 'regions.%region%.flags.%flag%:!' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&c>Cleared %flag% list for region %region%' - queue clear } - define flagValue '' } #