################################################################################ # # d R e g i o n s # # # Authors: |Anthony| # Version: 0.3 # dScript Version: 0.9.6-DEV_b140 # # # Dependencies: # # - dWorldEditor # - Integrates with region selection wand # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/dWE/dWorldEditor.yml # # - ConfigFileGenerator # - Used to build default config files and data storage. # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/ConfigFileGenerator.yml # # - Flags # - All the flags for dRegions. It will be bundled in eventually. # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/dRegions/flags.dscript # #_______________________________________________________________________________ # #--- About dRegions # # dRegions is an advanced region management and world protection system written # with the Denizen Scripting Engine. Heavily inspired by WorldGuard, the goal is # to have an extremely efficient events system supporting an exhaustive set of # region flags and configuration options. dRegions offers an intuitive command # interface and provides thorough TAB completion. # # #--- Installation & Setup # # Install Flags, ConfigFileGenerator, dWorldEditor, and dRegions to your scripts # folder and reload scripts. /denizen reload scripts # # All config and data storage files will be automatically generated in your # Denizen plugin folder. /plugins/Denizen/dRegions # # #--- Permissions & Commands # # Here's a list of all the permissions and commands with a brief description # of each. More verbose usage info can be found in game. /drg help # # dRegions provides thorough TAB completion! Use this to your benefit! # # The permissions system isn't fully realized yet. Meanwhile, we have a list of # generic permissions to get you by. # # /drg help [arg/#] dregions.help Specify a page number or command arg # /drg define dregions.define Define a region # /drg redefine dregions.redefine Update region to new selection # /drg claim dregions.claim Claim the selected region # /drg select dregions.select Select a region by id # /drg remove dregions.remove Remove a region # /drg list dregions.list List regions # /drg info dregions.info See info on a region # /drg addowner dregions.addowner Add a player or perm group as a region owner # /drg removeowner dregions.removeowner Remove a player or perm group from region owner # /drg addmember dregions.addmember Add a player or perm group as a region member # /drg removemember dregions.removemember Remove a player or perm group from region member # /drg flag dregions.flag Set region flags # /drg setpriority dregions.setpriority Set region priority # /drg setparent dregions.setparent Set region parent # /drg teleport dregions.teleport Teleport to region # /drg reload dregions.reload Reload all config files # /drg restart dregions.restart Restart dRegions for whatever reason # dregions.admin Override permission for all things dRegions # # dregions.invincible Makes the player totally invincible # dregions.invincible. Player can't be damaged by specific cause(s) # #--- Basic Usage Tutorial # # After you've gotten installed, setup, and permissions assigned (op-only mode # is fine too), you will need to give yourself a region wand. /dwe wand # # Mark your region selection using the wand as directed. # # Define your region noting any owners (player or -g group) you want # - /drg define myRegion notch herobrine -g members -g vip # # Your region is now protected! *Still indev! Not all protections implemented!* # # Set region priority # - /drg setpriority myRegion 10 # # Set any region flags you need # - /drg flag myRegion greeting Hello ! # # ################################################################################ # # dRegions World Events Script # # This should cover all dRegions related world events. # # dRegions: type: world speed: 0 debug: false events: ################################################## # # World Events # # on server start: - run locally start delay:2t on world initializes: - run locally loadYaml instantly on script reload: - run locally start instantly on command: - if { - queue clear } - define world '' - define target ' ' - if { - define FlagScript 's@dRegions_Flag_Commands' - inject s@dRegions_Flag_Commands p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Commands' - inject s@dRegions_Flag_Commands p:event # on structure grows: # - announce "Grew " # - announce "" on block ignites: - define world '' - define target '' - define readPath 'fire.' - if == flint_and_steel { - define cause 'Lighter' } else { - define cause 'Fire-Spread' } # - define cause ']:Lighter||Fire-Spread>' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_%cause%' - inject s@dRegions_Flag_%cause% p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_%cause%' - inject %FlagScript% p:event on block burns: - define world '' - define target '' - define readPath 'fire.destroyBlocks' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Fire-Destroy' - inject s@dRegions_Flag_Fire-Destroy p:event-global } - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Fire-Spread' - inject s@dRegions_Flag_Fire-Spread p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Fire-Destroy' - inject s@dRegions_Flag_Fire-Destroy p:event - define FlagScript 's@dRegions_Flag_Fire-Spread' - inject s@dRegions_Flag_Fire-Spread p:event on ice forms: - define world '' - define readPath 'blockform.ice' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Ice-Form' - inject s@dRegions_Flag_Ice-Form p:event-global - queue clear } # - define lCache ']||null>' # - if %lCache% != null { # - define orderedRegions '%lCache%' # } # else { # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - yaml set 'cache.locations.:%orderedRegions%' 'id:dRegions_%world%_cache' # } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Ice-Form' - inject s@dRegions_Flag_Ice-Form p:event on snow forms: - define world '' - define target '' - define readPath 'blockform.snow' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Snow-Fall' - inject s@dRegions_Flag_Snow-Fall p:event-global } - queue clear } # - define lCache ']||null>' # - if %lCache% != null { # - define orderedRegions '%lCache%' # } # else { # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - yaml set 'cache.locations.:%orderedRegions%' 'id:dRegions_%world%_cache' # } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Snow-Fall' - inject s@dRegions_Flag_Snow-Fall p:event on soil fades: - define world '' - define readPath 'blockfade.soil' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Soil-Dry' - inject s@dRegions_Flag_Soil-Dry p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Soil-Dry' - inject s@dRegions_Flag_Soil-Dry p:event on ice fades: - define world '' - define readPath 'blockfade.ice' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Ice-Melt' - inject s@dRegions_Flag_Ice-Melt p:event-global - queue clear } # - define lCache ']||null>' # - if %lCache% != null { # - define orderedRegions '%lCache%' # } # else { # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - yaml set 'cache.locations.:%orderedRegions%' 'id:dRegions_%world%_cache' # } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Ice-Melt' - inject s@dRegions_Flag_Ice-Melt p:event on snow fades: - define world '' - define readPath 'blockfade.snow' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Snow-Melt' - inject s@dRegions_Flag_Snow-Melt p:event-global - queue clear } # - define lCache ']||null>' # - if %lCache% != null { # - define orderedRegions '%lCache%' # } # else { # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - yaml set 'cache.locations.:%orderedRegions%' 'id:dRegions_%world%_cache' # } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Snow-Melt' - inject s@dRegions_Flag_Snow-Melt p:event on block spreads: - define mat '' - if li@grass|mycel|mushroom|vines !contains %mat% queue clear - define world '' - define readPath 'spread.%mat%' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_%mat%-Spread' - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_%mat%-Spread' - inject %FlagScript% p:event on liquid spreads: - if == queue clear - define mat '' - define target '' - define world '' - define readPath 'spread.%mat%' - inject s@dRegions p:event_PreProc_Config - if ].is_empty||true> { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_%mat%-Spread' - inject s@dRegions_Flag_%mat%-Spread p:event-global } - queue clear } # Build list of dRegions for in priority order - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' # Block liquid from crossing region borders - if != { # Build list of dRegions for in priority order - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define oldLoc '' - if %oldLoc% != { - determine cancelled } } - define FlagScript 's@dRegions_Flag_%mat%-Spread' - inject s@dRegions_Flag_%mat%-Spread p:event on lightning strikes: - define world '' - define target '' - define readPath 'lightning-strike' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Lightning-Strikes' - inject s@dRegions_Flag_Lightning-Strikes p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Lightning-Strikes' - inject s@dRegions_Flag_Lightning-Strikes p:event on leaves decay: - define world '' - define readPath 'leaf-decay' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Leaf-Decay' - inject s@dRegions_Flag_Leaf-Decay p:event-global - queue clear } # - define lCache ']||null>' # - if %lCache% != null { # - define orderedRegions '%lCache%' # } # else { # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - yaml set 'cache.locations.:%orderedRegions%' 'id:dRegions_%world%_cache' # } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Leaf-Decay' - inject s@dRegions_Flag_Leaf-Decay p:event on portal created: - define world '' - define readPath 'portal.create' - inject s@dRegions p:event_PreProc_Config-NoTarget on potion splash: # This will cancel the splash if any entity is in a protected region! - define world '' - define cuboids '' - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - run s@dRegions_Flag_Potion-Throw msg delay:1t - determine cancelled } - define FlagScript 's@dRegions_Flag_Potion-Throw' - inject s@dRegions_Flag_Potion-Throw p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Potion-Throw' - inject s@dRegions_Flag_Potion-Throw p:event on piston extends: - define world '' - define lastBlock ']:||].add[]>>' - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Pistons' - inject s@dRegions_Flag_Pistons p:event-global - queue clear } - if != { - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define pistonCuboid '' - foreach { - define cuboids - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define nextLocCuboids '' - if ]> { - determine cancelled } } } - if { - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' } - define FlagScript 's@dRegions_Flag_Pistons' - inject s@dRegions_Flag_Pistons p:event on piston retracts: - define world '' - define lastBlock ']:||].add[]>>' - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Pistons' - inject s@dRegions_Flag_Pistons p:event-global - queue clear } - if != { - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define pistonCuboid '' - foreach { - define cuboids - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define nextLocCuboids '' - if ]> { - determine cancelled } } } - if { - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' } - define FlagScript 's@dRegions_Flag_Pistons' - inject s@dRegions_Flag_Pistons p:event # # END World Events ################################################## # # Player Events # # # on player clicks block: # - narrate "item " # - narrate "mat " # - narrate "type " # - define world '' # - define cuboids '' # - inject s@dRegions p:event_PreProc_OrderRegionsGlobal # - define allFlagScripts '' # - inject s@dRegions p:use_ # - inject s@dRegions p:playerClick_ on player chats: - define world '' - if { - define FlagScript 's@dRegions_Flag_Send-Chat' - inject s@dRegions_Flag_Send-Chat p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Send-Chat' - inject s@dRegions_Flag_Send-Chat p:event on player destroys vehicle: - define world '' - if { - define FlagScript 's@dRegions_Flag_Vehicle-Destroy' - inject s@dRegions_Flag_Vehicle-Destroy p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Vehicle-Destroy' - inject s@dRegions_Flag_Vehicle-Destroy p:event on player stands on: - if || queue clear - define target '' - define sameRegion 'true' - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_Use-Switches p:msg delay:1t 'def:' - determine cancelled } } - define world '' - if { - define cache '' - if %cache% == false { - flag dRegions.rateLimit.use-switches.%target%:false d:10s - run s@dRegions_Flag_use-switches p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define flagScript 's@dRegions_Flag_Use-Switches' - inject s@dRegions_Flag_Use-Switches p:event-global } - flag dRegions.rateLimit.use-switches.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define flagScript 's@dRegions_Flag_Use-Switches' - inject s@dRegions_Flag_Use-Switches p:event on player right clicks block with boat: - define world '' - if { - define FlagScript 's@dRegions_Flag_Vehicle-Place' - inject s@dRegions_Flag_Vehicle-Place p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Vehicle-Place' - inject s@dRegions_Flag_Vehicle-Place p:event on player right clicks with potion: - if ! { - queue clear } - define world '' - if { - define FlagScript 's@dRegions_Flag_Potion-Throw' - inject s@dRegions_Flag_Potion-Throw p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Potion-Throw' - inject s@dRegions_Flag_Potion-Throw p:event on player consumes potion: - define world '' - if { - define FlagScript 's@dRegions_Flag_Potion-Drink' - inject s@dRegions_Flag_Potion-Drink p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Potion-Drink' - inject s@dRegions_Flag_Potion-Drink p:event on player right clicks block with armor_stand: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player right clicks block with monster_egg: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player throws hatching egg: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player right clicks: - if || { - queue clear } - define target '' - define item '' - if %item% == air { - define FlagScript '' } else { - define eventObj '' - if contains %item% { - define FlagScript '' } else { - define FlagScript '' } } - if %FlagScript% == null { - queue clear } - define flag '' - if == { - define sameRegion 'true' - if %flag% == Build { - define rateLimit '' } else { - define rateLimit '' } - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_%flag% p:msg delay:1t 'def:' - determine cancelled } } } else { - define sameRegion 'false' } - define world '' - define cuboids '>' - if { - if %flag% == Build { - inject %FlagScript% p:event-global - queue clear } - define cache '' - if %cache% == false { - if %sameRegion% flag dRegions.rateLimit.%flag%.%target%:false d:10s - run s@dRegions_Flag_%flag% p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - inject s@dRegions_Flag_%flag% p:event-global } - if %sameRegion% flag dRegions.rateLimit.%flag%.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - inject %FlagScript% p:event on player right clicks npc: - define world '' - if { - define FlagScript 's@dRegions_Flag_NPC-Interact' - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_NPC-Interact' - inject s@dRegions_Flag_NPC-Interact p:event on player right clicks entity: - if || || == item_frame { - queue clear } - define target '' - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_Entity-Interact p:msg delay:1t 'def:' - determine cancelled } } - define world '' - if { - define cache '' - if %cache% == false { - flag dRegions.rateLimit.entity-interact.%target%:false d:10s - run s@dRegions_Flag_Entity-Interact p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Entity-Interact' - inject s@dRegions_Flag_Entity-Interact p:event-global } - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Interact' - inject s@dRegions_Flag_Entity-Interact p:event on player enters bed: # Do we need to fire events for region enter, exit, and toggle? # This is a cheat so we don't have to mess about with firing a region entry event. - if != { - determine cancelled } - define world '' - if { - define FlagScript 's@dRegions_Flag_Sleep' - inject s@dRegions_Flag_Sleep p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Sleep' - inject s@dRegions_Flag_Sleep p:event # Looks like this isn't needed since the cuboid enter/exit event fires # on player enters vehicle: # # Should be doing a check if the cart is in a different cuboid before firing # # the regionEnter and regionToggle events. # # Do we need to fire events for regionExit as well? # # Make vehicle-enter flag for this event! # - if == { # - queue clear # } # - define world '' # - define isEnter '' # - if { # - define FlagScript 's@dRegions_Flag_Sleep' # - inject %FlagScript% p:event-global # - queue clear # } # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - foreach { # - define FlagScript '%value%' # - inject %value% p:event # } on player enters notable cuboid: # Should we fire an event when the player exits the global region? # - if { # - event 'player exits notable cuboid' 'context:cuboids||from||to|' save:exit # - if determine cancelled # } - flag dRegions.rateLimit:! - define world '' - define isEnter '' - define cuboids '' - if { - define FlagScript 's@dRegions_Flag_Entry' - inject s@dRegions_Flag_Entry p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entry' - inject s@dRegions_Flag_Entry p:event on player exits notable cuboid: - define world '' - if { - define FlagScript 's@dRegions_Flag_Exit' - inject s@dRegions_Flag_Exit p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Exit' - inject s@dRegions_Flag_Exit p:event - event 'player enters notable cuboid' 'context:cuboids||from||to|' save:enter - if == cancelled { - determine cancelled } on player breaks block: - if || queue clear - define world '' - define target '' - if == { - define sameRegion 'true' - define rateLimit '' - if %rateLimit% != null { - if !%rateLimit% { - run s@dRegions_Flag_Build p:msg delay:1t 'def:' - determine cancelled } } - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_Block-Break p:msg delay:1t 'def:' - determine cancelled } } } else { - define sameRegion 'false' } - if { - define cache '' - if %cache% == false { - if %sameRegion% flag dRegions.rateLimit.build:false d:10s - run s@dRegions_Flag_Build p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global } - if %sameRegion% flag dRegions.rateLimit.build:true d:10s - define cache '' - if %cache% == false { - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:false d:10s - run s@dRegions_Flag_block-break p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_block-break' - inject s@dRegions_Flag_block-break p:event-global } - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event - define FlagScript 's@dRegions_Flag_Block-Break' - inject s@dRegions_Flag_Block-Break p:event on player places block: - if || queue clear - define world '' - define target '' - if == { - define sameRegion 'true' - define rateLimit '' - if %rateLimit% != null { - if !%rateLimit% { - run s@dRegions_Flag_Build p:msg delay:1t 'def:' - determine cancelled } } - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_Block-Place p:msg delay:1t 'def:' - determine cancelled } } } else { - define sameRegion 'false' } - if { - define cache '' - if %cache% == false { - if %sameRegion% flag dRegions.rateLimit.build:false d:10s - run s@dRegions_Flag_Build p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global } - if %sameRegion% flag dRegions.rateLimit.build:true d:10s - define cache '' - if %cache% == false { - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:false d:10s - run s@dRegions_Flag_block-place p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_block-place' - inject s@dRegions_Flag_block-place p:event-global } - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event - define FlagScript 's@dRegions_Flag_Block-Place' - inject s@dRegions_Flag_Block-Place p:event on player empties bucket: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Bucket-Empty' - inject s@dRegions_Flag_Bucket-Empty p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Bucket-Empty' - inject s@dRegions_Flag_Bucket-Empty p:event on player fills bucket: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Bucket-Fill' - inject s@dRegions_Flag_Bucket-Fill p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Bucket-Fill' - inject s@dRegions_Flag_Bucket-Fill p:event on player drops item: - define world '' - define cuboids '].deduplicate>' - if { - define FlagScript 's@dRegions_Flag_Player-Drops' - inject s@dRegions_Flag_Player-Drops p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Player-Drops' - inject s@dRegions_Flag_Player-Drops p:event on player picks up item: - define world '' - define cuboids '].deduplicate>' - if { - define FlagScript 's@dRegions_Flag_Player-Pickup' - inject s@dRegions_Flag_Player-Pickup p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Player-Pickup' - inject s@dRegions_Flag_Player-Pickup p:event on player places hanging: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - define FlagScript 's@dRegions_Flag_Hanging-Place' - inject s@dRegions_Flag_Hanging-Place p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event - define FlagScript 's@dRegions_Flag_Hanging-Place' - inject s@dRegions_Flag_Hanging-Place p:event on player right clicks at armor_stand: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player right clicks item_frame: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player damages item_frame: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player damages player: - if || queue clear - define world '' - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - remove - run s@dRegions_Flag_PVP msg delay:1t - determine cancelled } - define FlagScript 's@dRegions_Flag_PVP' - inject s@dRegions_Flag_PVP p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_PVP' - inject s@dRegions_Flag_PVP p:event on player damages armor_stand: - if || queue clear - define world '' - define FlagScript 's@dRegions_Flag_Build' - if { - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - inject %FlagScript% p:event on player damages entity: - if li@armor_stand|player|item_frame contains { - queue clear } - if || queue clear - define target '' - if == { - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - run s@dRegions_Flag_pve p:msg delay:1t 'def:' - determine cancelled } } } - define world '' - define player '' - define puuid '' - if { - define cache '' - if %cache% == false { - flag dRegions.rateLimit.FLAG.%target%:false d:10s - run s@dRegions_Flag_pve p:msg delay:1t 'def:' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_pve' - inject s@dRegions_Flag_pve p:event-global } - flag dRegions.rateLimit.pve.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_PVE' - inject %FlagScript% p:event on player left clicks block: - if != fire { - queue clear } - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player clicks block with bone_meal: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event on player damaged: - define rateLimit ']||null>' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - determine cancelled } } - if ( || ]> ) && ! { - flag dRegions.rateLimit.player-damage.%target%:false d:5s - adjust 'fire_time:0' - determine cancelled } - define world '' - define target '' - define puuid '' - define readPath 'player-damage' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - flag dRegions.rateLimit.player-damage.%target%:false d:10s - adjust 'fire_time:0' - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Player-Damage' - inject s@dRegions_Flag_Player-Damage p:event-global } - flag dRegions.rateLimit.player-damage.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Player-Damage' - inject s@dRegions_Flag_Player-Damage p:event on player changes food level: - define world '' - if { - define FlagScript 's@dRegions_Flag_Hunger' - inject s@dRegions_Flag_Hunger p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Hunger' - inject s@dRegions_Flag_Hunger p:event on player teleports: - if != ender_pearl queue cleard - if || queue clear - define world '' - define cuboids '].deduplicate>' - if { - define FlagScript 's@dRegions_Flag_Enderpearl' - inject s@dRegions_Flag_Enderpearl p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Enderpearl' - inject s@dRegions_Flag_Enderpearl p:event on player respawns: - if { - adjust 'health:' - determine passively '>' - wait 10t - flag 'dRegions_Respawn:!' } # # END Player Events ################################################## # # Mob Events # on entity targets entity: - if == player { - queue clear } - define world '' - define attacker '' - define defender '' - define atarget '' - define dtarget '' - if { - define FlagScript 's@dRegions_Flag_Mob-Attack' - inject s@dRegions_Flag_Mob-Attack p:event-global - define FlagScript 's@dRegions_Flag_EVE' - inject s@dRegions_Flag_EVE p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Mob-Attack' - inject s@dRegions_Flag_Mob-Attack p:event - define FlagScript 's@dRegions_Flag_EVE' - inject s@dRegions_Flag_EVE p:event on entity targets player: - define target '' - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - determine cancelled } } - define player '' - define world '' - define attacker '' - if { - define cache '' - if %cache% == false { - flag dRegions.rateLimit.mob-target.%target%:false d:10s - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Mob-Target' - inject s@dRegions_Flag_Mob-Target p:event-global } - flag dRegions.rateLimit.mob-target.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Mob-Target' - inject s@dRegions_Flag_Mob-Target p:event # This needs to be rewritten cause... idk # # on entity damaged by block_explosion: # - announce "block_explosion " # - define world '' # - if { # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event-global # - queue clear # } # - define regionPri 'li@' # - foreach { # - define regionPri '%regionPri%/%value%|' # } # - define orderedRegions '' # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event on entity damages entity: - if li@| contains player { - queue clear } - define world '' - define attacker '' - define defender '' - define atarget '' - define dtarget '' - if { # - if == entity_explosion { # - define target '%atarget%' # - define cache '' # - if %cache% != null { # - if !%cache% { # - determine cancelled # } # } # else { # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event-global # } # } - define FlagScript 's@dRegions_Flag_Mob-Attack' - inject s@dRegions_Flag_Mob-Attack p:event-global - define FlagScript 's@dRegions_Flag_EVE' - inject s@dRegions_Flag_EVE p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' # - if == entity_explosion { # - define target '%atarget%' # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event # } - define FlagScript 's@dRegions_Flag_Mob-Attack' - inject s@dRegions_Flag_Mob-Attack p:event - define FlagScript 's@dRegions_Flag_EVE' - inject s@dRegions_Flag_EVE p:event on entity damages player: - if == player { - queue clear } - define target '' - define rateLimit '' - if %rateLimit% != null { - if %rateLimit% { - queue clear } else { - determine cancelled } } - define world '' - define attacker '' - define player '' - if { # - if == entity_explosion { # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event-global # } - define cache '' - if %cache% == false { - flag dRegions.rateLimit.mob-damage.%target%:false d:10s - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Mob-Damage' - inject s@dRegions_Flag_Mob-Damage p:event-global } - flag dRegions.rateLimit.mob-damage.%target%:true d:10s - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' # - if == entity_explosion { # - define FlagScript 's@dRegions_Flag_Entity-Explode' # - inject s@dRegions_Flag_Entity-Explode p:event # } - define FlagScript 's@dRegions_Flag_Mob-Damage' - inject s@dRegions_Flag_Mob-Damage p:event on player dies: - define world '' - define target '' - if { - run player: s@dRegions_Flag_Spawn p:event-global def:%world% delay:1t - define FlagScript 's@dRegions_Flag_Player-KeepItems' - inject s@dRegions_Flag_Player-KeepItems p:event-global - define FlagScript 's@dRegions_Flag_Player-Drops-OnDeath' - inject s@dRegions_Flag_Player-Drops-OnDeath p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - run player: s@dRegions_Flag_Spawn p:event def:%world%| delay:1t - define FlagScript 's@dRegions_Flag_Player-KeepItems' - inject s@dRegions_Flag_Player-KeepItems p:event - define FlagScript 's@dRegions_Flag_Player-Drops-OnDeath' - inject s@dRegions_Flag_Player-Drops-OnDeath p:event on entity dies: - if == player { - queue clear } - define world '' - define target '' - if { - define cache '' - if %cache% == false { - determine no_drops } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Entity-Drops-OnDeath' - inject s@dRegions_Flag_Entity-Drops-OnDeath p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Drops-OnDeath' - inject s@dRegions_Flag_Entity-Drops-OnDeath p:event on entity spawns: - define world '' - define target '' - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Mob-Spawn' - inject s@dRegions_Flag_Mob-Spawn p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Mob-Spawn' - inject s@dRegions_Flag_Mob-Spawn p:event on entity enters portal: - define world '' - define readPath 'portal.]:player||entity>-enter' - inject s@dRegions p:event_PreProc_Config-NoTarget on entity changes soil: - define world '' - define type '' - define readPath 'trample-crops.%type%' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Trample-Crops-%type%' - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Trample-Crops-%type%' - inject %FlagScript% p:event on falling_block changes block: - define mat '' - if li@sand|gravel !contains %mat% queue clear - define world '' - define readPath 'physics.%mat%' - define FlagScript 's@dRegions_Flag_Falling-%mat%' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Falling-%mat%' - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Falling-%mat%' - inject %FlagScript% p:event on entity changes block: - if == soil || li@falling_block|creeper|primed_tnt contains { - queue clear } - define world '' - define readPath 'entity.changeBlock' - define target '' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { # - run s@dRegions_Flag_Entity-Grief offthread delay:1t def: - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Entity-Grief' - inject s@dRegions_Flag_Entity-Grief p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Grief' - inject s@dRegions_Flag_Entity-Grief p:event on entity forms block: # - if determine cancelled - if ]> { - determine cancelled } - define world '' - define readPath 'entity.changeBlock' - define target '' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - run s@dRegions_Flag_Entity-Grief offthread delay:1t def: - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Entity-Grief' - inject s@dRegions_Flag_Entity-Grief p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Grief' - inject s@dRegions_Flag_Entity-Grief p:event on entity explodes: - define world '' - define readPath 'entity.explode' - define attacker '' - define target '' - inject s@dRegions p:event_PreProc_Config - if { - define cache '' - if %cache% == false { - determine cancelled } - if %cache% == null { - define FlagScript 's@dRegions_Flag_Entity-Explode' - inject s@dRegions_Flag_Entity-Explode p:event-global } - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Explode' - inject s@dRegions_Flag_Entity-Explode p:event on entity breaks hanging: - if == player { - queue clear } - define world '' - define type '' - define readPath 'entity-break-%type%' - inject s@dRegions p:event_PreProc_Config-NoTarget - if { - define cache '' - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define FlagScript 's@dRegions_Flag_Entity-Break-%type%' - inject %FlagScript% p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Entity-Break-%type%' - inject %FlagScript% p:event on player breaks hanging: - if || queue clear - define world '' - if { - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event-global - define FlagScript 's@dRegions_Flag_Hanging-Break' - inject s@dRegions_Flag_Hanging-Break p:event-global - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - define FlagScript 's@dRegions_Flag_Build' - inject s@dRegions_Flag_Build p:event - define FlagScript 's@dRegions_Flag_Hanging-Break' - inject s@dRegions_Flag_Hanging-Break p:event # # END Mob Events ################################################## # # Utility Subscripts # testinga: - ^define world '' - define regionPri 'li@' - foreach |__global__ { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - ^narrate %orderedRegions% testingb: - ^define world '' - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - foreach { - define FlagScript '%value%' } testingc: - if ( a == a ) && ( b == b ) && ( c == d ) { - narrate "true" } else { - narrate "false" } start: - inject locally loadYaml - define flags '' - foreach %flags% { - flag server %value%:! } - define flagScripts '' - flag server 'dRegions_Flags:!' - flag server 'dRegions_Flags:|:%flagScripts%' # - define flagMap 'li@' # - foreach '%flagScripts%' { # - define flagMap '/]>/%value%' # } - flag server 'dRegions_FlagMap:!' # - flag server 'dRegions_FlagMap:|:%flagMap%' event_PreProc_Config: # Reusable code block injected from events. # This pre-processor handles events in the global and world config files before # any regions even get a chance. World configs are processed before global. # This way worlds can deny events that global allows, but global has ultimate # control for denying events. Denying an event takes precedence over allowing. # Default is 'true' on most events for this reason. # # Events that take a block list are handled here as well. Blocklists can # operate in whitelist or blacklist modes. # # Blacklist mode. # When an event is set to 'false' and no blocks are specified in the # blocklist, it will always cancel the event. If there are blocks specified, # it will only cancel events involving those blocks listed. # # Whitelist mode. # When an event is set to 'true' and no blocks are specified in the blocklist, # it will always allow the event. If there are blocks specifed, it will only # allow events involving those blocks listed. # - define targetList '' - if { - if ! && %targetList% !contains %target% { - determine cancelled } } else { - if || %targetList% contains %target% { - determine cancelled } } - define targetList '' - if { - if ! && %targetList% !contains %target% { - determine cancelled } } else { - if || %targetList% contains %target% { - determine cancelled } } event_PreProc_Config-NoTarget: - if ! { - determine cancelled } - if ! { - determine cancelled } loadYaml: # Reloads the yaml files and generates default files if they don't exist. # Rewrites config files that do not match internal version number! - announce "<&b>dRegions<&co><&3> Loading system config files..." to_console - define world 'global' - define file 'config' - if ! { - if { - flag ConfigFileGeneratorNotify:true - inject locally createConfigFile instantly - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Created <&f><&o>%world%<&7><&o> config file!' } else { - inject locally createConfigFile } - announce "<&b>dRegions<&co> <&7><&o>Created <&f><&o>%world%<&7><&o> config file!" to_console } - if { - yaml unload 'id:dRegions_global_config' } - yaml 'load:dRegions/config.yml' 'id:dRegions_global_config' - if _config].read[config.version].is[!=].to[]||false> { - define isUpdate '' - if { - flag ConfigFileGeneratorNotify:true - inject locally createConfigFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Updated <&f><&o>%world%<&7><&o> config file!' } else { - inject locally createConfigFile } - define isUpdate:! - announce "<&b>dRegions<&co> <&7><&o>Updated <&f><&o>%world%<&7><&o> config file!" to_console } - foreach { - define world '' - define file 'worlds/%world%/config' - if ! { - if { - flag ConfigFileGeneratorNotify:true - inject locally createConfigFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Created <&f><&o>%world%<&7><&o> config file!' } else { - inject locally createConfigFile } - announce "<&b>dRegions<&co> <&7><&o>Created <&f><&o>%world%<&7><&o> config file!" to_console } - if { - yaml unload 'id:dRegions_%world%_config' } - yaml 'load:dRegions/%file%.yml' 'id:dRegions_%world%_config' - if _config].read[config.version].is[!=].to[]||false> { - define isUpdate '' - if { - flag ConfigFileGeneratorNotify:true - inject locally createConfigFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Updated <&f><&o>%world%<&7><&o> config file!' } else { - inject locally createConfigFile } - define isUpdate:! - announce "<&b>dRegions<&co> <&7><&o>Updated <&f><&o>%world%<&7><&o> config file!" to_console } - define file 'worlds/%world%/regions' - if ! { - define region '__global__' - if { - flag ConfigFileGeneratorNotify:true - inject locally createRegionFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Created <&f><&o>%world%<&7><&o> regions file!' } else { - inject locally createRegionFile } - announce "<&b>dRegions<&co> <&7><&o>Created <&f><&o>%world%<&7><&o> regions file!" to_console } - if { - yaml unload 'id:dRegions_%world%_regions' } - yaml 'load:dRegions/%file%.yml' 'id:dRegions_%world%_regions' - define file 'worlds/%world%/inventories' - if ! { - if { - flag ConfigFileGeneratorNotify:true - inject locally createInventoryFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Created <&f><&o>%world%<&7><&o> regions file!' } else { - inject locally createInventoryFile } - announce "<&b>dRegions<&co> <&7><&o>Created <&f><&o>%world%<&7><&o> inventory file!" to_console } - if { - yaml unload 'id:dRegions_%world%_inventories' } - yaml 'load:dRegions/%file%.yml' 'id:dRegions_%world%_inventories' - define file 'worlds/%world%/cache' - if ! { - if { - flag ConfigFileGeneratorNotify:true - inject locally createCacheFile - flag ConfigFileGeneratorNotify:! - run s@dRegions_Msg 'def:<&7><&o>Created <&f><&o>%world%<&7><&o> cache file!' } else { - inject locally createCacheFile } - announce "<&b>dRegions<&co> <&7><&o>Created <&f><&o>%world%<&7><&o> cache file!" to_console } - if { - yaml unload 'id:dRegions_%world%_cache' } - yaml 'load:dRegions/%file%.yml' 'id:dRegions_%world%_cache' } - announce "<&b>dRegions<&co><&a> System config files Loaded!" to_console reloadYaml: # A simpler reload - announce "<&b>dRegions<&co><&3> Reloading system config files..." to_console - run s@dRegions_Msg 'def:<&7><&o>Reloading system config files...' - if { - yaml unload 'id:dRegions_global_config' } - yaml 'load:dRegions/config.yml' 'id:dRegions_global_config' - foreach { - define world '' - if { - yaml unload 'id:dRegions_%world%_config' } - yaml 'load:dRegions/worlds/%world%/config.yml' 'id:dRegions_%world%_config' - if { - yaml unload 'id:dRegions_%world%_regions' } - yaml 'load:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - if { - yaml unload 'id:dRegions_%world%_inventories' } - yaml 'load:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - if { - yaml unload 'id:dRegions_%world%_cache' } - yaml 'load:dRegions/worlds/%world%/cache.yml' 'id:dRegions_%world%_cache' } - announce "<&b>dRegions<&co><&a> System config files Loaded!" to_console - run s@dRegions_Msg 'def:<&7><&o>System config files Loaded!' createConfigFile: - define readID 'dRegions_Configurations' - define writeID 'dRegions_%world%_config' - if ! { - yaml fix_formatting 'load:' 'id:%readID%' } - if ! { - announce to_console "Loaded " } - yaml create 'id:%writeID%' - define readPath '%readID%.config' - define writePath 'config' - if { - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|true instantly } else { - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false instantly } - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createRegionFile: - define readID 'dRegions_Configurations' - define writeID 'dRegions_%world%_regions' - if ! { - yaml fix_formatting 'load:' 'id:%readID%' } - yaml create 'id:%writeID%' - define readPath '%readID%.regions.__global__' - define writePath 'regions.%region%' - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createInventoryFile: - define readID 'dRegions_Configurations' - define writeID 'dRegions_%world%_inventories' - if ! { - yaml fix_formatting 'load:' 'id:%readID%' } - yaml create 'id:%writeID%' - define readPath '%readID%.inventories' - define writePath 'inventories' - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createCacheFile: - define readID 'dRegions_Configurations' - define writeID 'dRegions_%world%_cache' - if ! { - yaml fix_formatting 'load:' 'id:%readID%' } - yaml create 'id:%writeID%' - define readPath '%readID%.cache' - define writePath 'cache' - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createRegionEntry: - if ! { yaml 'load:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' } - yaml set 'regions.%name%.type:cuboid' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.min:' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.max:' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.priority:0' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.flags:|:' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.owners:|:' 'id:dRegions_%world%_regions' - foreach { - yaml set 'regions.%name%.owners.groups:->:%value%' 'id:dRegions_%world%_regions' } - foreach { - yaml set 'regions.%name%.owners.players:->:%value%' 'id:dRegions_%world%_regions' } - yaml set 'regions.%name%.members:|:' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - note cu@| 'as:dregions_%world%_%name%' clearCache: - define region %1% - define world %2% - define flag %3% - define type '' - if %type% == list { - define type '' } - if %region% == '__global__' { - inject locally clearCacheGlobal - queue clear } - define cuboid '' - define children '' - define overlaps '' - if li@boolean|state-withTarget contains %type% { - yaml set 'cache.%type%.%region%.%flag%:!' 'id:dRegions_%world%_cache' - foreach { - yaml set 'cache.%type%.%value%.%flag%:!' 'id:dRegions_%world%_cache' } } else if li@state-withGroup|state-withTarget-withGroup|state-withTargetString-withGroup contains %type% { - define players '' - foreach %players% { - flag dRegions.cache.%world%.%region%.%flag%:! } } clearCacheGlobal: - define allRegions '' - if li@boolean|state-withTarget contains %type% { - foreach %allRegions% { - yaml set 'cache.%type%.%value%.%flag%:!' 'id:dRegions_%world%_cache' } } else if li@state-withGroup|state-withTarget-withGroup|state-withTargetString-withGroup contains %type% { - foreach { - flag dRegions.cache.%world%.%region%.%flag%:! } } # # END Utility Subscripts ################################################## # # Message format # dRegions_Msg: type: item speed: 0 debug: false material: i@human_skull display name: "<&4> [<&6>dRegions<&4>]" lore: - <&5>Click for Help script: - ^define text '<&4>[<&6>dRegions<&4>]' - ^define hover '<&chr[007B]><&chr[007D]>' - ^define click '/dregions help' - ^define button "text:'%text%',clickEvent:<&chr[007B]>action:run_command,value:'%click%'<&chr[007D]>,hoverEvent:<&chr[007B]>action:show_item,value:'%hover%'<&chr[007d]>" - ^define spacer "text:' '" - ^define msg "text:'%1%'" - ^if { - execute as_server "tellraw <&chr[007B]>text:'',extra:[<&chr[007B]>%button%<&chr[007D]>,<&chr[007B]>%spacer%<&chr[007D]>,<&chr[007B]>%msg%<&chr[007D]>]<&chr[007D]>" } else { - announce to_console "%1%" } ################################################################################ # # dRegions Command Script Container # # This script covers all dRegions commands # # # #-------------------------------------- # # dRegions Command Script Basics # # The basic stuff required in a command script container # dRegions_Commands: type: command speed: 0 debug: false name: dregions description: Denizen Regions Manager usage: /dregions aliases: - drg allowed help: - determine true commandArgs: help: usage: '/drg help <<>arg/<&ns><>>' permissions: [] about: usage: '/drg about' permissions: [] reload: usage: '/drg reload' permissions: [] restart: usage: '/drg restart' permissions: [] define: usage: '/drg define [ID] (g:group) (player)' permissions: [] redefine: usage: '/drg redefine [ID]' permissions: [] claim: usage: '/drg claim [ID]' permissions: [] select: usage: '/drg select [ID] -w world' permissions: [] info: usage: '/drg info [ID] -w world' permissions: [] addowner: usage: '/drg addowner [ID] g:group player -w world' permissions: [] removeowner: usage: '/drg removeowner [ID] g:group player -w world' permissions: [] addmember: usage: '/drg addmember [ID] g:group player -w world' permissions: [] removemember: usage: '/drg removemember [ID] g:group player -w world' permissions: [] list: usage: '/drg list (page<&ns>) -h -r region -w world -p player' permissions: [] flag: usage: '/drg flag [ID] [flag] [value] -g group -w world' permissions: [] setpriority: usage: '/drg setpriority [ID] [<&ns>]' permissions: [] setparent: usage: '/drg setparent [ID] [parent]' permissions: [] teleport: usage: '/drg teleport [ID] -w world' permissions: [] remove: usage: '/drg remove [ID] -w world' permissions: [] tab complete: - define args '' - define arg '' - if || ! { - inject locally tab_arg_1 } else { - inject locally tab_%arg% } - determine '' script: - define command '' - define args '' - if ! { - inject locally help } else { - inject locally %command% } # # END dRegions Command Script Basics #-------------------------------------- # # dRegions Command TAB Completion # # Each of these subscripts handles TAB completion for the positional argument. # # tab_arg_1: # This Excludes args from the original args - foreach %args% { - if !> { - define args '' } } - if { - define result 'li@' } else { - define result ' ' - if { - define result '%args%' } } tab_help: - define spaces '' - if { - define result 'help [command]' } else if { - define result 'li@' - foreach %args% { - if > { - define result '' } else { - foreach next } } - if { - define result ']]||li@>' - if { - foreach %args% { - if > { - define result '' } else { - foreach next } } } } } tab_about: - define result 'li@' tab_reload: - define result 'li@' tab_restart: - define result 'li@' tab_define: # /drg define [ID] (g:group) (player) - if > { - define spaces '' - if { - define result 'define [ID]' } else if { - if { - define result '[ID] (g:group) (player)' } else { - define result ' (g:group) (player)' } } else if { - define owners '' - if { - define owners '|]||li@>' } - define owner '' - if { - define group '' - define groups '' - if { - define groups '' } - define result '' } else { - define result '' - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } tab_redefine: # /drg redefine [ID] - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else { - define result 'li@' } tab_claim: - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else { - define result 'li@' } tab_select: # /drg select [ID] -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else { - define result 'li@' } tab_info: # /drg info [ID] -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else { - define result 'li@' } tab_addowner: # /drg addowner [ID] g:group player -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else if { - define owners '' - if { - define owners '|]||li@>' } - define owner '' - if { - define group '' - define groups '' - if { - define groups '' } - define result '' } else { - define result '' - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } tab_removeowner: # /drg removeowner [ID] g:group player -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else if { - define owners '' - if { - define owners '|]||li@>' } - define owner '' - if { - define group '' - define groups '' - if { - define groups '' } - define result '' } else { - define result '' - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } tab_addmember: # /drg addmember [ID] g:group player -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else if { - define members '' - if { - define members '|]||li@>' } - define member '' - if { - define group '' - define groups '' - if { - define groups '' } - define result '' } else { - define result '' - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } tab_removemember: # /drg removemember [ID] g:group player -w world - if > { - define spaces '' - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if !> { - foreach %regions% { - if ].not> { - define regions '' } } } - if { - define result '' } else if { - define result ']]||li@>' - if { - define result '%regions%' } } else if { - define members '' - if { - define members '|]||li@>' } - define member '' - if { - define group '' - define groups '' - if { - define groups '' } - define result '' } else { - define result '' - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } tab_list: - define result 'li@' tab_flag: # TODO # /drg flag [ID] [flag] [value] -g group -w world - if > { - define spaces '' - if { - define result 'flag [ID]' } else if { - if { - define result '[ID]' } else if { - define result '' } else if { - define regions '_regions].list_keys[regions].alphanumeric||li@>' - if !> { - foreach %regions% { - if |].not> { - define regions '' } } } - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else if { - if { - if { - define result ']]||li@>' } - if { - define result '' } } else if { - define allFlags '' - if { - define world '].escaped.as_world.name.to_lowercase||>' - if { - define result ']]||li@>' } - if { - define result '' } } else if { - define result ']]||li@>' - if { - define result '' } } else { - if { - define result '' } } } } else if { - if { - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if { - define result ']]||li@>' } - if { - define result '' } } else if { - define world '].escaped.as_world.name.to_lowercase||>' - if { - define result ']].parse[replace[regex:^].with[-w ]]||li@>' } - if { - define result '' } } else if { - define result '' } } else if { - if { - define world '].escaped.as_world.name.to_lowercase||>' - define regions '' - if { - define result ']]||li@>' } - if { - define result '' } } else { - define allFlags '' - if { - define result ']]||li@>' } - if { - define result '' } } } } else { - define result 'li@' } tab_setpriority: # /drg remove [ID] -w world - if > { - define spaces '' - if { - define result 'setpriority [ID]' } else if { - if { - define result '[ID]' } else if { - define result '' } else if { - define regions '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' - if !> { - foreach %regions% { - if |].not> { - define regions '' } } - define result ']]||li@>' } else { - define result ']]||%regions%>' - if { - define result '%regions%' } } } else { - define result 'li@' } } else if { - if { - if { - define result ']]||li@>' } - if { - define result '' } } else { - if { - define result '' } else if { - define result '' } else { - define result '<&ns>' } } } else if { - if { - if { - define regions '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' } } else if { - define result '' } else { - if { - define result ']]||li@>' } else { - define result '' } - if { - define result '' } } } else if { - if || { - if { - define result '' } else { - define result '<&ns>' } } else if { - define result '' } } else { - define result 'li@' } } else { - define result 'li@' } tab_setparent: # TODO - define result 'li@' tab_teleport: # TODO - define result 'li@' tab_remove: # /drg remove [ID] -w world - if > { - define spaces '' - if { - define result 'remove [ID] -w world' } else if { - if { - define result '[ID]' } else if { - define result '' } else if { - define regions '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' - if !> { - foreach %regions% { - if |].not> { - define regions '' } } } - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result 'li@' } } else if { - if { - if { - define result ']]||li@>' } - if { - define result '' } } else { - define result '' } } else if { - if { - if { - define regions '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' - define result ']]||li@>' - if { - define result '%regions%' } } else { - define result '_regions].list_keys[regions].exclude[__global__].alphanumeric||li@>' } } else { - if { - define result ']]||li@>' } else { - define result '' } - if { - define result '' } } } else { - define result 'li@' } } else { - define result 'li@' } # # END dRegions Command TAB Completion #-------------------------------------- # # dRegions Command Arguments # # Each of these subscripts is an argument for the root command. # help: - define arg '' - if { - run s@dRegions_Msg 'def:' - queue clear } - if >> { - inject locally msgsHelpAdmin } else { - inject locally msgsHelpUser } - inject locally msgsFooter - queue clear about: - inject locally msgsHelpUser - inject locally msgsFooter - queue clear reload: - if !>> { - inject locally help - queue clear } - inject s@dRegions p:reloadYaml instantly # - run s@dRegions_Msg 'def:<&7><&o>System files loaded!' restart: - if !>> { - inject locally help - queue clear } - run s@dRegions p:start instantly define: # /drg define [ID] (g:group) (player) - inject locally prerun instantly # Check for existing region - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is already a region by this name!' - queue clear } # Check for overlapping regions - if !> { - if |%world%|]> { - run s@dRegions_Msg 'def:<&c>Region selection contains unowned regions!' - queue clear } } # Parse any declared owners - define owners '' - if { - define owners '|]||li@>' } - define ownerGroups li@ - define ownerPlayers li@ - foreach %owners% { - if { - define ownerGroups ']||%ownerGroups%>' } else { - if ! { - foreach next } - define ownerPlayers ']||%ownerPlayers%>' } } # Automatically add the player that defined the region as the owner - if { - if ].not||false> { - define ownerPlayers ']||%ownerPlayers%>' } } # Create the region - inject s@dRegions p:createRegionEntry instantly - run s@dRegions_Msg 'def:<&7><&o>Created %name% in %world%' redefine: # /drg redefine [ID] - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Don't redefine global type regions - if { - run s@dRegions_Msg 'def:<&c>You can not redefine global regions!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Check for overlapping regions - if !> { - if |%world%|]> { - run s@dRegions_Msg 'def:<&c>Region selection contains unowned regions!' - queue clear } } # Update the region - yaml set 'regions.%name%.min:' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.max:' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - note cu@| 'as:dregions_%world%_%name%' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> updated to selection' claim: # /drg claim [ID] - inject locally prerun instantly # Check Global region limits - define globalRegionLimit '' - if { - define playerGlobalRegions 'li@' - foreach { - define thisWorld '%value%' - foreach '' { - define region '%value%' - if ||]||false> { - define playerGlobalRegions ']||>' } } } - if { - run s@dRegions_Msg 'def:<&c>You already have total regions!' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } # Check World region limits - define worldRegionLimit '' - if { - define playerWorldRegions 'li@' - foreach '' { - define region '%value%' - if ||]||false> { - define playerWorldRegions ']||>' } } - if { - run s@dRegions_Msg 'def:<&c>You already have regions in this world!' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } # Check selection volume - define globalClaimVol '' - inject s@dWE_Commands p:selection_Size instantly - if { - if { - run s@dRegions_Msg 'def:<&c>Your selection exceeds the global limit!' - run s@dRegions_Msg 'def:<&7><&o>Selected <&8>(<&7><&o>%size%<&8>) <&7><&o>Limit <&8>(<&7><&o>%globalClaimVol%<&8>) <&7><&o>Over <&8>(<&7><&o><&8>)' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } - define worldClaimVol '' - if { - if { - run s@dRegions_Msg 'def:<&c>Your selection exceeds the world limit!' - run s@dRegions_Msg 'def:<&7><&o>Selected <&8>(<&7><&o>%size%<&8>) <&7><&o>Limit <&8>(<&7><&o>%worldClaimVol%<&8>) <&7><&o>Over <&8>(<&7><&o><&8>)' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } # Check inside existing/owned region - if '' { - if { - define playerWorldRegions 'li@' - foreach '' { - define region '%value%' - if ||]||false> { - define playerWorldRegions ']||>' } } } - define cuboids '' - foreach %cuboids% { - if && { - define isWithin '' - foreach stop } } - if { - run s@dRegions_Msg 'def:<&c>You may only claim regions within land you own' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } - if { - run s@dRegions_Msg 'def:<&c>You can not redefine global regions!' - queue clear } - run s@dRegions_Msg 'def:<&c>Region already exists!' - run s@dRegions_Msg 'def:<&7>You must want to update the region' - define update '' } # Check for overlapping regions - if !> { - if |%world%|]> { - run s@dRegions_Msg 'def:<&c>Region selection contains unowned regions!' - if !> { - queue clear } - run s@dRegions_Msg 'def:<&c>But you are an admin so it is ok!' } } # Update the region - if { - yaml set 'regions.%name%.min:' 'id:dRegions_%world%_regions' - yaml set 'regions.%name%.max:' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - note cu@| 'as:dregions_%world%_%name%' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> updated to selection' } else { - define ownerPlayers 'li@' - inject s@dRegions p:createRegionEntry instantly - run s@dRegions_Msg 'def:<&7><&o>Created %name% in %world%' } select: # /drg select [ID] - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Don't select global type regions - if { - run s@dRegions_Msg 'def:<&c>You can not select global regions!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } - define min '' - define max '' - flag 'dWEWand_Type:cuboid' - flag dWEWand:! - flag dWEWand:|:%min%|%max% - run s@dRegions_Msg 'def:<&7><&o>Selected <&f><&o>%name%' info: # /drg info [ID] -w world - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region named %name%!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } - inject locally regionInfo instantly - define msgsHeaderTitle '<&7>Region Info<&co> <&e>%name% <&8><&lb><&7>%world%<&8><&rb>' - inject locally msgsHeader instantly - narrate "<&5><&7>Type<&co> <&f>%type% <&8><&lb><&7><&o> <&8><&pipe> <&7><&o><&8><&rb> <&lb><&7><&o>%size%<&8><&rb>" - narrate "<&5><&7>Priority<&co> <&f><&7> Parent<&co> <&f>%parent%" - if && { - narrate "<&5><&7>Owners<&co> <&c>none" } else { - define ownerList ']]||>].comma_separated>' - define lines '|45]>' - narrate "<&5><&7><&co> <&f>" - foreach { - narrate "<&5><&f>" } } - if && { - narrate "<&5><&7>Members<&co> <&c>none" } else { - define memberList ']]||>].comma_separated>' - define lines '|45]>' - narrate "<&5><&7><&co> <&f>" - foreach { - narrate "<&5><&f>" } } - if { - narrate "<&5><&7>Flags<&co> <&c>none" } else { - narrate "<&5><&7>Flags<&co>" - foreach '' { - define flag '' - define flagVal '' - define flagValLength '' - define lines '|45]>' - narrate "<&5><&e><&co> <&f>" - foreach { - narrate "<&5><&f>" } } } - narrate "<&5>|" - inject locally msgsFooter instantly addowner: # /drg addowner [ID] g:group player - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Parse specified owners - if { - define args '].exclude[-w]>' - define owners '].replace[:].with[;]||null>' } else { - define owners '].replace[:].with[;]||null>' } - if { - run s@dRegions_Msg 'def:<&c>Must specify at least one owner' - queue clear } - foreach %owners% { - if { - define group '' - define groups '' - if { - run s@dRegions_Msg 'def:<&c>Group %group% is already an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.groups:->:%group%' 'id:dRegions_%world%_regions' } else { - if ! { - foreach next } - define players '' - if ]||false> { - run s@dRegions_Msg 'def:<&c>Player %value% is already an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.players:->:' 'id:dRegions_%world%_regions' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> owners updated' } removeowner: # /drg removeowner [ID] g:group player - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Parse specified owners - if { - define args '].exclude[-w]>' - define owners '].replace[:].with[;]||null>' } else { - define owners '].replace[:].with[;]||null>' } - if { - run s@dRegions_Msg 'def:<&c>Must specify at least one owner' - queue clear } - foreach %owners% { - if { - define group '' - define groups '' - if { - run s@dRegions_Msg 'def:<&c>Group %group% is not an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.groups:<-:%group%' 'id:dRegions_%world%_regions' } else { - if ! { - foreach next } - define players '' - if ].not||true> { - run s@dRegions_Msg 'def:<&c>Player %value% is not an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.players:<-:' 'id:dRegions_%world%_regions' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> owners updated' } else { - run s@dRegions_Msg 'def:<&6><&o>%name%<&c><&o> owners not updated!' } addmember: # /drg addmember [ID] g:group player - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Parse specified members - if { - define args '].exclude[-w]>' - define members '].replace[:].with[;]||null>' } else { - define members '].replace[:].with[;]||null>' } - if { - run s@dRegions_Msg 'def:<&c>Must specify at least one member' - queue clear } - foreach %members% { - if { - define group '' - define groups '' - if { - run s@dRegions_Msg 'def:<&c>Group %group% is already a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.groups:->:%group%' 'id:dRegions_%world%_regions' } else { - if ! { - foreach next } - define players '' - if ]||false> { - run s@dRegions_Msg 'def:<&c>Player %value% is already a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.players:->:' 'id:dRegions_%world%_regions' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> members updated' } else { - run s@dRegions_Msg 'def:<&6><&o>%name%<&c><&o> members not updated!' } removemember: # /drg reomvemember [ID] g:group player - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Parse specified members - if { - define args '].exclude[-w]>' - define members '].replace[:].with[;]||null>' } else { - define members '].replace[:].with[;]||null>' } - if { - run s@dRegions_Msg 'def:<&c>Must specify at least one member' - queue clear } - foreach %members% { - if { - define group '' - define groups '' - if { - run s@dRegions_Msg 'def:<&c>Group %group% is not a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.groups:<-:%group%' 'id:dRegions_%world%_regions' } else { - if ! { - foreach next } - define players '' - if ].not||true> { - run s@dRegions_Msg 'def:<&c>Player %value% is not a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.players:<-:' 'id:dRegions_%world%_regions' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> members updated' } else { - run s@dRegions_Msg 'def:<&6><&o>%name%<&c><&o> members not updated!' } list: # /drg list (page#) -r region -w world -p player - define args '' # Check the specified player - if { - if !> { - run s@dRegions_Msg 'def:<&c>You may not list other players regions!' - queue clear } - define player '].escaped||null>' - if ! { - run s@dRegions_Msg 'def:<&c>Invalid player specfied!' - queue clear } - define filterPlayer '' - define args '].exclude[-p]||li@>' } else { - if { - define player '' } else { - define player 'null' } } # Check the specified world - if { - define world '].as_world.name.to_lowercase.escaped||null>' - if { - run s@dRegions_Msg 'def:<&c>Invalid world specfied!' - queue clear } - define filterWorld '' - define args '].exclude[-w]||li@>' } else { - if { - define world '' } else { - define world 'null' } } # Does the player want to list the regions where he stands? - if { - define filterHere '' - define args ']||li@>' } # Do we want to show results for ALL worlds? - if { - define worlds '' - define getAll '' - define args ']||li@>' } # Check the specified region name - if { - define region '].escaped||null>' - if { - define exists '|]>' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } - if !> { - if ||].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } } else { - run s@dRegions_Msg 'def:<&c>You must specify a valid region ID!' - queue clear } - define filterRegion '' - define args '].exclude[-r]||li@>' } # OK, we've validated all the user input, let's get the regions and apply filters - define regions li@ - if { - define standingIn '' - define worldRegions '' - if { - define worldRegions 'li@__global__' } - inject locally filterRegionList } else if { - foreach %worlds% { - define world %value% - define worldRegions '' - inject locally filterRegionList } } else { - define worldRegions '' - inject locally filterRegionList } # Display the list - define page '' - if { - define page '1' } - define pages '' - if { - define page '%pages%' } - define highNumber '' - define lowNumber '' - define msgsHeaderTitle '<&e>Region List <&o>Page <&f><&o>%page% <&7><&o>of %pages%].pad_left[30]>' - inject locally msgsHeader instantly - foreach { - define color ']:&6||]:&e||&f>>' - narrate "<&5>|<&sp><&7>].as_int>.].pad_left[4].with[<&sp>]>].pad_right[5].with[<&sp>]> <%color%>" } - narrate "<&5>|" - inject locally msgsFooter instantly flag: # /drg flag [ID] [flag] [value] -g group -w world - define args '' # Check the specified world - if { - define world '].as_world.name.escaped.to_lowercase||null>' - if { - run s@dRegions_Msg 'def:<&c>Invalid world specfied!' - queue clear } - define args '].exclude[-w]||li@>' } else { - if { - define world '' } else { - define world 'null' } } # Check the specified group - if { - define group '].escaped.to_lowercase||null>' - if ! { - run s@dRegions_Msg 'def:<&c> is an invalid group!' - queue clear } - define args '].exclude[-g]||li@>' } # Check the specified region name - define region '' - if { - define exists '|]>' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } - if !> { - if ||].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } } else { - run s@dRegions_Msg 'def:<&c>You must specify a valid region ID!' - queue clear } # Check the specified flag name - define flag '' - if { - define flags '' - if ! { - run s@dRegions_Msg 'def:<&c>You must specify a valid region flag!' - queue clear } } else { - run s@dRegions_Msg 'def:<&c>You must specify a valid region flag!' - queue clear } # By this point, we know the flag is being set or cleared, so let's clear the flag # cache for this region, any child regions, and any overlapping regions including __global__ - run s@dRegions p:clearCache delay:1t 'def:%region%|%world%|%flag%' # Check the specified flag value and set or clear it. - define flagValue '].space_separated.escaped||null>' - if { - define type '' - if { - if { - define flagValue '' } } - define typeMatch '' - if ! { - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@dRegions_Msg 'def:<&c>' } - queue clear } - if && { - inject s@dRegions_Flag_%flag% p:command_handler - yaml set 'regions.%region%.flags.%flag%:!' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/cache.yml' 'id:dRegions_%world%_cache' - run s@dRegions_Msg 'def:<&c>Cleared %flag% flag for region %region%' - queue clear } - inject s@dRegions_Flag_%flag% p:command_handler - if { - if { - yaml set 'regions.%region%.flags.%flag%:/%group%' 'id:dRegions_%world%_regions' } else { - yaml set 'regions.%region%.flags.%flag%:' 'id:dRegions_%world%_regions' } } else { - yaml set 'regions.%region%.flags.%flag%:' 'id:dRegions_%world%_regions' } - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/cache.yml' 'id:dRegions_%world%_cache' - define string "<&f><&o>%region%<&7><&o> set %flag% flag to <&f><&o>%flagValue%" - define lines '|45]>' - foreach { - run s@dRegions_Msg 'def:<&f><&o>' } } else { - inject s@dRegions_Flag_%flag% p:command_handler - 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% flag for region %region%' - queue clear } setpriority: # /drg setpriority [ID] [#] - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Verify specified priority - if { - define args '].exclude[-w]>' - define priority '' } else { - define priority '' } - if { - run s@dRegions_Msg 'def:<&c>Must specify a numeric value for priority' - queue clear } # Update region - yaml set 'regions.%name%.priority:%priority%' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> set priority to <&f><&o>%priority%' setparent: # /drg setparent [ID] [parent] - inject locally prerun instantly # Check if child region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Check if parent region exists - if { - define args '].exclude[-w]>' - define parent '' } else { - define parent '' } - if %parent% == null { - define parent - if %parent% != null { - yaml set 'regions.%parent%.children:<-:%name%' 'id:dRegions_%world%_regions' } - yaml set 'regions.%name%.parent:!' 'id:dRegions_%world%_regions' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&7><&o>Unset parent for <&f><&o>%name%' - queue clear } # Check if parent region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Check if player owns parent - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Update the region - yaml set 'regions.%name%.parent:%parent%' 'id:dRegions_%world%_regions' - if contains %name% { - yaml set 'regions.%parent%.children:<-:%name%' 'id:dRegions_%world%_regions' } else { - yaml set 'regions.%parent%.children:->:%name%' 'id:dRegions_%world%_regions' } - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> set parent to <&f><&o>%parent%' teleport: - narrate "Stub" remove: # /drg remove [ID] -w world - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' - run s@dRegions_Msg 'def:<&c>Please notify an admin!' - queue clear } else if { - run s@dRegions_Msg 'def:<&c>There is no region by this name!' - queue clear } # Don't remove the __global__ region - if { - run s@dRegions_Msg 'def:<&c>You can not remove the __global__ region!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' - queue clear } } # Remove region from ancestry # This should be done smarterer now since regions know both children and parents. - define regions '' - foreach %regions% { - if == %name% { - yaml set 'regions.%value%.parent:<-:%name%' 'id:dRegions_%world%_regions' } - if contains %name% { - yaml set 'regions.%value%.children:<-:%name%' 'id:dRegions_%world%_regions' } } # Remove the region - yaml set 'regions.%name%:!' 'id:dRegions_%world%_regions' - note remove 'as:dregions_%world%_%name%' - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@dRegions_Msg 'def:<&f><&o>%name%<&7><&o> has been removed from <&f><&o>%world%' # # END dRegions Command Arguments #-------------------------------------- # # dRegions Command Utilities # # Just some commonly used code blocks # prerun: # Block of checks run before /most/ commands - if !> { - inject locally help - queue clear } - if { - define world '].escaped.as_world.name.to_lowercase||null>' - if { - run s@dRegions_Msg 'def:<&c>Invalid world specfied!' - run s@dRegions_Msg 'def:' - queue clear } - define args '].exclude[-w]>' - define name '' } else { - define world '' } - if { - define wandType '' - if { - run s@dRegions_Msg 'def:<&c>You must select a cuboid type region!' - run s@dRegions_Msg 'def:' - queue clear } - define pos1 '' - define pos2 '' - if || { - run s@dRegions_Msg 'def:<&c>No region selected!' - run s@dRegions_Msg 'def:' - queue clear } - if || { - run s@dRegions_Msg 'def:<&c>Selected region not within specified world!' - run s@dRegions_Msg 'def:' - queue clear } - define selectedCuboid '' } - define name '>' - if '' { - if { - define dRegions '' - define orderedRegions '' - if { - define name '__global__' } else { - define name '' - if { - run s@dRegions_Msg 'def:<&c><&o>There are multiple regions at this location!' - run s@dRegions_Msg 'def:<&7><&o>Getting highest priority region info.' } } } else { - run s@dRegions_Msg 'def:<&c>You must specify a region ID!' - run s@dRegions_Msg 'def:' - queue stop } } - if '' { - run s@dRegions_Msg 'def:<&c>Region ID may only contain letters, numbers,' - run s@dRegions_Msg 'def:<&c>hyphen, and underscore!' - run s@dRegions_Msg 'def:' - queue stop } # - inject s@dRegions_Commands p:selection_Size instantly # - define oldSize '%size%' filterRegionList: # Used in /drg list to apply various filters - if { - define filteredRegions 'li@' - foreach %worldRegions% { - define worldRegion '%value%' - if ]||false> { - define filteredRegions '>' } } } - if { - define worldRegions '' } - foreach %worldRegions% { - define worldRegion '%value%' - if ||]||false> { - define regions '//owner]||>' } else if ||]||false> { - define regions '//member]||>' } else if { - define regions '//nonmember]||>' } } regionInfo: # Build the data set for region info - define type '' - if { - define POS1 '' - define POS2 '' - inject s@dWE_Commands p:selection_Size instantly } else if { - define POS1 '0,0,0,%world%' - define POS2 '0,0,0,%world%' - define size 'infinite' } else { - run s@dRegions_Msg 'def:<&c>This region is misconfigured!' - run s@dRegions_Msg 'def:<&c>Notify an Admin!' - queue clear } - define priority '' - define parent 'none>' - define ownerGroups '' - define ownerPlayers '' - define memberGroups '' - define memberPlayers '' - define flagList '' - define flags 'li@' - foreach %flagList% { - define flags ']||%flags%>' } # # END dRegions dRegions Command Utilities #-------------------------------------- # # dRegions Command Messages # # Some messages used by commands. Should probably move to s@dRegions_Msg # msgsHeader: - narrate "<&5>|----------------------------------------|" - narrate "<&5>|<&sp><&sp><&sp><&6>dRegions <&7>" - narrate "<&5>|<&f>" msgsFooter: - define anthony "text<&co>'<&7>|Anthony|',clickEvent<&co><&chr[007B]>action<&co>open_url,value<&co>'http<&co>//mineconomy.org'<&chr[007D]>,hoverEvent<&co><&chr[007B]>action<&co>show_item,value<&co>'<&chr[007B]><&chr[007D]>'<&chr[007D]>" - define spacer "text<&co>' '" - define prefix "text<&co>'<&5>| <&f>Authors<&co> '" - if { - execute as_server "tellraw <&chr[007B]>text<&co>'',extra<&co>[<&chr[007B]>%prefix%<&chr[007D]>,<&chr[007B]>%anthony%<&chr[007D]>]<&chr[007D]>" } else { - announce to_console "<&5>| <&f>Authors<&co> <&7>|Anthony|" } - narrate "<&5>|-----------<&d>S<&5>-<&d>c<&5>-<&d>r<&5>-<&d>o<&5>-<&d>l<&5>-<&d>l<&5>---<&d>U<&5>-<&d>p<&5>-------------|" msgsHelpAdmin: # Filter the list of commands this player can use - define commands '' - foreach %commands% { - if !>> { - define commands '' } else { - foreach next } } # Display the list - define page '' - if { - define page '1' } - define pages '' - if { - define page '%pages%' } - define highNumber '' - define lowNumber '' - define msgsHeaderTitle '<&e>Admin Help <&o>Page <&f><&o>%page% <&7><&o>of %pages%].pad_left[30]>' - inject locally msgsHeader instantly - foreach { - narrate "<&5>|<&sp><&sp><&f><&co>" - narrate "<&5>|<&sp><&sp><&sp><&sp><&7>" } - narrate "<&5>|" msgsHelpUser: - define msgsHeaderTitle 'User Help' - inject locally msgsHeader instantly - define par1 "dRegions is an advanced region management and world protection system written with the Denizen Scripting Engine." - define par2 "Heavily inspired by WorldGuard, the goal is to have an extremely efficient events system supporting an exhaustive set of region flags and configuration options." - define par3 "dRegions offers an intuitive command interface and provides thorough TAB completion." - define strings "" - foreach { - define string "<&f><&sp>" - define lines '|44]>' - foreach { - narrate "<&5>|<&f><&sp><&sp>" } - narrate "<&5>|" } # # END dRegions Command Messages #-------------------------------------- # # I want to test moving all command arguments to their own command script so I # can have the dregions command and the alias of these scripts run the same # code. I'd like to add the flexibility for folks to type the full command # /dregions select # or the shorter alias # /.sel # and use the same code base, tab completion and all # # ----- # dRegions Select Command # # Select a region by ID and optionally world # #dRegions_Command_Sel: # type: command # debug: false # name: select # description: Select a region by ID and optionally world # usage: /.sel # aliases: # - .sel # allowed help: # - determine true # tab complete: # - define args 'li@help|reload|define|redefine|claim|select|info|addowner|removeowner|addmember|removemember|list|flag|setpriority|setparent|teleport|remove' # - define arg '' # - if # || ! { # - inject locally tab_arg_1 # } # else inject locally tab_%arg% # - determine '' # script: # # We only want to run it if the user issues the alias /.sel command # - if queue clear # - define command 'select' # - define args 'li@help|reload|select|define|redefine|remove|addowner|addmember|setparent|setpriority' # - if ! inject locally help instantly # else inject locally %command% instantly # sel: # # /drg select [ID] # - inject locally prerun instantly # # Check if region exists # - define exists '' # - if { # - run s@dRegions_Msg 'def:<&c>There is an orphaned region by this name!' # - run s@dRegions_Msg 'def:<&c>Please notify an admin!' # - queue clear # } # else if { # - run s@dRegions_Msg 'def:<&c>There is no region by this name!' # - queue clear # } # # Check if is owner # - if ! { # - if ].not> { # - run s@dRegions_Msg 'def:<&c>You are not an owner of this region!' # - queue clear # } # } # - define min '' # - define max '' # - flag 'dWEWand_Type:cuboid' # - flag dWEWand:! # - flag dWEWand:|:%min%|%max% # - run s@dRegions_Msg 'def:<&7><&o>Selected <&f><&o>%name%' # prerun: # # Block of checks run before /most/ commands # - if !> { # - inject locally help # - queue clear # } # - if { # - define world '].escaped.as_world.name||null>' # - if { # - run s@dRegions_Msg 'def:<&c>Invalid world specfied!' # - queue clear # } # - define args '].exclude[-w]>' # - define name '' # } # else define world '' # - if { # - define wandType '' # - if { # - run s@dRegions_Msg 'def:<&c>You must select a cuboid type region!' # - queue clear # } # - define pos1 '' # - define pos2 '' # - if # || { # - run s@dRegions_Msg 'def:<&c>No region selected!' # - queue clear # } # - if # || { # - run s@dRegions_Msg 'def:<&c>Selected region not within specified world!' # - queue clear # } # - define selectedCuboid '' # } # - define name '>' # - if { # - run s@dRegions_Msg 'def:<&c>You must specify a name!' # - queue stop # } # # END dRegions Command Script Basics #-------------------------------------- # # dRegions Command TAB Completion # # Each of these subscripts handles TAB completion for the positional argument. # # #-------------------------------------- # # dRegions Other Utilities # # Other Utility functions used throughout dRegions # ##dRegions_HasPerm: ## I have to think about this more... ## # A procedure script to check if a player has any of the required permissions for a command ## # ## type: procedure ## definition: command|player|region ## constants: ## define: ## - admin ## - define ## redefine: ## - admin ## - redefine ## - redefine.own.* ## - redefine.own.%region% ## - redefine.member.* ## - redefine.member.%region% ## ## script: ## - if '' determine false ## - define perms dRegions_RegionSort: type: procedure definitions: region1|region2 speed: 0 debug: false script: - define region1pri '' - define region2pri '' - if %region1pri% > %region2pri% { - determine -1 } - if %region1pri% < %region2pri% { - determine 1 } - if %region1pri% == %region2pri% { - determine 0 } dRegions_IsOwner: # A procedure script to check if a player is a region owner # type: procedure definitions: region|world|player speed: 0 debug: false script: - define playerUUID '' - if { - determine 'true' } - define playerGroups '' - if { - determine 'true' } # Regions inherit members and owners. - while { - define region '' - if %region% == null { - while stop } - if { - determine 'true' } - if { - determine 'true' } } - determine 'false' dRegions_IsMember: # A procedure script to check if a player is a region member # type: procedure definitions: region|world|player speed: 0 debug: false script: - define playerUUID '' - if { - determine 'true' } - define playerGroups '' - if { - determine 'true' } # Regions inherit members and owners. - while { - define region '' - if %region% == null { - while stop } - if { - determine 'true' } - if { - determine 'true' } } - determine 'false' dRegions_RegionExists: # A procedure script to check if a region exists # type: procedure definitions: region|world speed: 0 debug: false script: - if %region% == '__global__' { - determine true } # - define notables '' - define notables '' - define regions '' - if %notables% && %regions% { - determine false } else if %notables% || %regions% { - determine orphan } else { - determine true } dRegions_HighestPriority: # Filter a list of regions by priority in descending order # type: procedure definitions: world|regions speed: 0 debug: false script: - define regions '' - define regionPri 'li@' - foreach %regions% { - define regionPri '%regionPri%/%value%|' } - determine '' dRegions_RegionOverlaps: # A procedure script to check if a region overlaps other (un)owned regions # |%name%|%world%|]> # NOTE: If for some reason the selected cuboid overlaps an unowned region that is a lower priority than # a region that the player does own and is completely within, it will not be considered as an overlap! # - But why would there be a lower priority region inside a higher priority region... that's not # how priorities should be used! type: procedure definitions: selectedCuboid|world|player speed: 0 debug: false script: - define selectedCuboid '' - define regions '' - define notables '' - define overlaps ']].parse[replace[cu@dregions_%world%_]]||li@>' - define orderedRegions ']||li@>' - foreach { - if ].not> { - determine true } # - if |]> { - if ]> { - determine false } } # By this point, we've determined that the player either owns all the regions at this cuboid location # or that the new cuboid is completely within a region that he does own. - determine false dRegions_PlayerMatchRegionGroup: # Check if a player matches a region flag group setting. # type: procedure definitions: group|region|world|player speed: 0 debug: false script: - inject locally %group% all: - determine 'true' members: - determine '' nonmembers: - if { - determine 'false' } - if { - determine 'false' } - determine 'true' owners: - determine '' nonowners: - determine '' dRegions_CuboidIsWithinCuboid: # Checks if one cuboid is completely within another cuboid # type: procedure definitions: inner|outer speed: 0 debug: false script: - define innerCuboid '' - define outerCuboid '' - if ]> && ]> && ]> && ]> && ]> && ]> { - determine true } else { - determine false } dRegions_GetInheritedFlag: # Get a region flag value. Start at current child and ascend through parents # until a value is set or you reach the origin ancestor # type: procedure definitions: world|region|flag speed: 0 debug: false script: - define return '' - while { - define region '' - if %region% == null { - while stop } - define return '' } - determine '%return%' dRegions_CanUse_Block: # Procedure script to determine if a player can use a block at a location. # Will work for any block that can be interacted with (chests, doors, levers, etc.) # type: procedure speed: 0 debug: false definitions: player|location script: - define world '' - define target '' - define FlagScript '' - define flag '' - if %flag% == null determine false - if > determine true - define flag-targetList '' - if { - inject locally check-global - determine 'true' - queue clear } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define orderedRegions '' - inject locally check-region - determine 'true' check-global: - define flagObj '' - if %flagObj% == null { - define flagObj '' } - if %flagObj% != none { - if == allow { - if !|__global__|%world%|%player%]> { # - inject %FlagScript% p:event-cleanup - determine false } - define targetList '' - if ( %targetList% != li@null ) && ( %targetList% != li@all ) && ( %targetList% !contains %target% ) { # - inject %FlagScript% p:event-cleanup - determine false } } else { - if |__global__|%world%|%player%]> { - define targetList '' - if ( %targetList% == li@null ) || ( %targetList% == li@all ) || ( %targetList% contains %target% ) { # - inject %FlagScript% p:event-cleanup - determine false } } } } check-region: - if { - define region '' - define flagObj '' } else { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } } - if %flagObj% == null { - define flagObj '' } - if %flagObj% != none { - if == allow { - if !||%world%|%player%]> { # - inject %FlagScript% p:event-cleanup - determine false } - define targetList '' - if ( %targetList% != li@null ) && ( %targetList% != li@all ) && ( %targetList% !contains %target% ) { # - inject %FlagScript% p:event-cleanup - determine false } } else { - if ||%world%|%player%]> { - define targetList '' - if ( %targetList% == li@null ) || ( %targetList% == li@all ) || ( %targetList% contains %target% ) { # - inject %FlagScript% p:event-cleanup - determine false } } } } dRegions_getRelativeLocation: # A procedure script to get a location relative to another location. # Specify the direction as n s e w u d # type: procedure definitions: l|d|n speed: 0 debug: false n_math: sub n_coord: '0,0,' s_math: add s_coord: '0,0,' w_math: sub w_coord: ',0,0' e_math: add e_coord: ',0,0' d_math: sub d_coord: '0,,0' u_math: add u_coord: '0,,0' script: - define math '' - define coord '' - determine "" dRegions_LineWrap: # Turn a long string into a list of smaller strings type: procedure definitions: string|targetLen speed: 0 debug: false script: - define stringLen '' - if { - define lines 'li@' - while { - define low '' - define hi '].as_int||%targetLen%>' - define pass '' - if { - define lines '>' - while stop } else { - define brake '' - define increment '' - define passtrim ']:%brake%||>]>' - define lines '>' - define stringLen '' } - if { - while stop } } - determine '' } else { - determine '' } ################################################################################ # # FlagTypeMatch Procedure script # # Used to check that the player specified value matches the type required # by the flag. # # Use this to compare 2 values. Check if they are one of NUMBER, DECIMAL, # LOCATION, BOOLEAN, STATE, GROUP, LIST or any other STRING. # # usage: # - define YourValue "Some string" # - define Type "" # - define TypeMatch '' # - if { # - narrate "%YourValue% matches %type%." # } # else { # - narrate "%YourValue% is a %YourValueType% not a %type%" # } # dRegion_FlagTypeMatch: type: procedure speed: 0 debug: false definitions: YourValue|Flag script: - define Type "" - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if '' { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - if { - if { - determine 'true' } else { - determine 'false' } } - determine 'false' # # END other utilities #-------------------------------------- # # dRegions author banner items # # Banner items representing the authors # dRegions_Author_Anthony: type: item speed: 0 debug: false material: i@human_skull display name: "<&f> |Anthony|" lore: - <&7> Owner<&co> <&e>M<&6>ine<&e>C<&6>onomy <&e>N<&6>etwork - <&5>------------------------- - <&7> - <&7> I`ve been playing minecraft - <&7> and running a server since - <&7> 2010. I have fun and share - <&7> what I do. - <&7> - <&9> Click To Visit # # END dRegions author banner items #-------------------------------------- # # dRegions Interaction Mapping # # Mapping what to do when interacting with blocks and items # dRegions_Map_Interactions: type: yaml data debug: false # Used as a fallback for non-existent interaction mappings event: - queue clear event-global: - queue clear block: # Containers chest: s@dRegions_Flag_Chest-Access ender_chest: s@dRegions_Flag_Chest-Access locked_chest: s@dRegions_Flag_Chest-Access trapped_chest: s@dRegions_Flag_Chest-Access dispenser: s@dRegions_Flag_Chest-Access hopper: s@dRegions_Flag_Chest-Access dropper: s@dRegions_Flag_Chest-Access # Doors trap_door: s@dRegions_Flag_Door-Access iron_trapdoor: s@dRegions_Flag_Door-Access wooden_door: s@dRegions_Flag_Door-Access iron_door_block: s@dRegions_Flag_Door-Access spruce_door: s@dRegions_Flag_Door-Access birch_door: s@dRegions_Flag_Door-Access jungle_door: s@dRegions_Flag_Door-Access dark_oak_door: s@dRegions_Flag_Door-Access acacia_door: s@dRegions_Flag_Door-Access fence_gate: s@dRegions_Flag_Door-Access spruce_fence_gate: s@dRegions_Flag_Door-Access birch_fence_gate: s@dRegions_Flag_Door-Access jungle_fence_gate: s@dRegions_Flag_Door-Access dark_oak_fence_gate: s@dRegions_Flag_Door-Access acacia_fence_gate: s@dRegions_Flag_Door-Access # Switches lever: s@dRegions_Flag_Use-Switches wood_button: s@dRegions_Flag_Use-Switches stone_button: s@dRegions_Flag_Use-Switches wood_plate: s@dRegions_Flag_Use-Switches stone_plate: s@dRegions_Flag_Use-Switches iron_plate: s@dRegions_Flag_Use-Switches gold_plate: s@dRegions_Flag_Use-Switches # Utility Blocks workbench: s@dRegions_Flag_Use-Utilities furnace: s@dRegions_Flag_Use-Utilities burning_furnace: s@dRegions_Flag_Use-Utilities brewing_stand: s@dRegions_Flag_Use-Utilities enchantment_table: s@dRegions_Flag_Use-Utilities anvil: s@dRegions_Flag_Use-Utilities beacon: s@dRegions_Flag_Use-Utilities jukebox: s@dRegions_Flag_Use-Utilities note_block: s@dRegions_Flag_Use-Utilities # cauldron: useUtility # tnt: useUtility # Other blocks that change when clicked regardless of item in hand flower_pot: s@dRegions_Flag_Build cake_block: s@dRegions_Flag_Build diode_block_on: s@dRegions_Flag_Build diode_block_off: s@dRegions_Flag_Build redstone_comparator_off: s@dRegions_Flag_Build redstone_comparator_on: s@dRegions_Flag_Build block_withItem: # jukebox: s@dRegions_Flag_Use-Utilities/air/gold_record|green_record|record_3|record_4|record_5|record_6|record_7|record_8|record_9|record_10|record_11|record_12 cauldron: s@dRegions_Flag_Use-Utilities/bucket|water_bucket|glass_bottle tnt: s@dRegions_Flag_Use-Utilities/flint_and_steel activator_rail: s@dRegions_Flag_Vehicle-Place/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart detector_rail: s@dRegions_Flag_Vehicle-Place/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart powered_rail: s@dRegions_Flag_Vehicle-Place/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart rails: s@dRegions_Flag_Vehicle-Place/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart stationary_water: s@dRegions_Flag_Vehicle-Place/boat water: s@dRegions_Flag_Vehicle-Place/boat mob_spawner: s@dRegions_Flag_Build/monster_egg item: ink_sac: gold_record: jukebox glass_bottle: cauldron flint_and_steel: tnt # # END dRegions Interaction Mapping #-------------------------------------- ################################################################################ # # # Configuration Files # # # # These are the default config files. They will be used to build the default # # configuration and data storage files. # # # #______________________________________________________________________________# # # #______________________________DO_NOT_EDIT_THIS_DATA___________________________# #______________________________________________________________________________# dRegions_Configurations: type: yaml data config: version: 0.27 regions: enable: true invincibility-removes-mobs: false wand: dWE_Wand ownerOnDefine: false claim: max-volume: 0 only-inside-existing-regions: true max-region-count-per-player: default: 7 spread: water: true water-list: [] lava: true lava-list: [] mycel: true grass: true mushroom: true vines: true physics: gravel: true sand: true portal: create: true entity-enter: true player-enter: true fire: ender_crystal: true explosion: true fireball: true flint_and_steel: true lava: true spread: true spread-list: [] destroyBlocks: true destroyBlocks-list: [] entity: changeBlocks: true changeBlocks-list: [] explode: true explode-list: [] entity-break-item_frame: true entity-break-painting: true blockform: ice: true snow: true snow-list: [] blockfade: ice: true snow: true lightning-strike: true lightning-strike-list: [] trample-crops: player: true entity: true leaf-decay: true player-damage: true player-damage-list: [] # auto-invincible: false # protection: # item-durability: true # remove-infinite-stacks: false # disable-xp-orb-drops: false # disable-obsidian-generators: true # weather: # prevent-lightning-strike-blocks: [] # disable-lightning-strike-fire: false # disable-thunderstorm: false # disable-weather: false # disable-pig-zombification: false # disable-powered-creepers: false # always-raining: false # always-thundering: false regions: __global__: type: global priority: 0 flags: [] owners: [] members: [] inventories: info: - This is the inventory save file. - DO NOT EDIT! example: region: entry: kit: equip: [] inv: [] players: player: equip: [] inv: [] exit: players: player: equip: [] inv: [] cache: boolean: [] state-withTarget: [] info: - This is the cache file. We use this file to cache individual specific events so that we can reduce the number of flag lookups later on. - Expect it to grow to a considerable size! # ################################################################################ # # d R e g i o n s # # Flag Modules # # Authors: |Anthony| # Version: 0.2 # dScript Version: 0.9.6-DEV_b140 # # # #--- About this script # # Adding new flags /can/ be as easy as making a new module! # # # ################################################################################ dRegions_Flag_Entry: type: item speed: 0 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-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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 player - define region '' - if !> { - define flagObj '' - if %flagObj% != null { - inject s@dRegions_Flags_Processors p:state-withGroup } } - run locally entered delay:1t player: def:%world%|%region%| event-global: - define player - if !> { - define flagObj '' - if %flagObj% != null { - inject s@dRegions_Flags_Processors p:state-withGroup-Global } } - run locally entered-global delay:1t player: def:%world%|__global__ entered: - ^define world '%1%' - ^define region '%2%' - ^define orderedRegions '' - ^define player '' - ^inject s@dRegions_Flag_Notify-Enter p:event - ^inject s@dRegions_Flag_Greeting p:event - ^inject s@dRegions_Flag_Inventory p:event-enter - ^inject s@dRegions_Flag_Gamemode p:event-enter - ^inject s@dRegions_Flag_Heal-Amount p:event - ^inject s@dRegions_Flag_Feed-Amount p:event entered-global: - ^define world '%1%' - ^define region '%2%' - ^define player '' - ^inject s@dRegions_Flag_Notify-Enter p:event-global - ^inject s@dRegions_Flag_Greeting p:event-global - ^inject s@dRegions_Flag_Inventory p:event-enter - ^inject s@dRegions_Flag_Gamemode p:event-enter - ^inject s@dRegions_Flag_Heal-Amount p:event-global - ^inject s@dRegions_Flag_Feed-Amount p:event-global event-cleanup: - if { - run locally vehicle 'def:|' delay:1t } - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You do not have permission to enter this region' } vehicle: - ^if { - queue clear } else { - flag dRegions_regionKick d:5t } - ^mount cancel |%1% - ^teleport '' '' - ^wait 20t - ^adjust %1% 'velocity:l@0,0,0,' - ^teleport %1% ']:||>' dRegions_Flag_Exit: type: item speed: 0 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-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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 player - define region '' - if !> { - define flagObj '' - if %flagObj% != null { - inject s@dRegions_Flags_Processors p:state-withGroup } } - run locally exited delay:1t player: def:%world%|%region%| event-global: - define player - if !> { - define flagObj '' - if %flagObj% != null { - inject s@dRegions_Flags_Processors p:state-withGroup-Global } } - run locally exited-global delay:1t player: def:%world%|__global__ exited: - ^define world '%1%' - ^define region '%2%' - ^define orderedRegions '' - ^define player '' - ^inject s@dRegions_Flag_Notify-Exit p:event - ^inject s@dRegions_Flag_Farewell p:event - ^inject s@dRegions_Flag_Inventory p:event-exit - ^inject s@dRegions_Flag_Gamemode p:event-exit exited-global: - ^define world '%1%' - ^define region '%2%' - ^define player '' - ^inject s@dRegions_Flag_Notify-Exit p:event-global - ^inject s@dRegions_Flag_Farewell p:event-global - ^inject s@dRegions_Flag_Inventory p:event-Exit - ^inject s@dRegions_Flag_Gamemode p:event-Exit event-cleanup: - if { - define vehicle '' - run locally vehicle 'def:%vehicle%|' delay:1t } - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You do not have permission to exit this region' } vehicle: - ^if { - queue clear } else { - flag dRegions_regionKick d:5t } - ^mount cancel |%1% - ^teleport '' '' - ^wait 20t - ^adjust %1% 'velocity:l@0,0,0,' - ^teleport %1% ']:||>' dRegions_Flag_Notify-Enter: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Notify-Enter<&4>]" lore: - <&5>Send notification to marked players event_hook: regionEnter event_priority: 5 flag_type: boolean flag_takeGroup: false flag_defaultValue: false flag_help: Boolean flag controlling whether notifications are sent for entering this region. Set to true or false. Defaults to 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: # We only notify for the highest priority region, but we inherit the flag value from parents. - define flagVal '' - if %flagVal% == true { - foreach ].deduplicate> { - run player:%value% s@dRegions_Msg 'def:<&5><&o> entered %region% in %world%' } } event-global: # We only notify for the highest priority region, but we inherit the flag value from parents. - define flagVal '' - if %flagVal% = true { - foreach ].deduplicate> { - run player:%value% s@dRegions_Msg 'def:<&5><&o> entered the global region in %world%' } } dRegions_Flag_Notify-Exit: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Notify-Exit<&4>]" lore: - <&5>Send notification to marked players event_hook: regionExit event_priority: 5 flag_type: boolean flag_takeGroup: false flag_defaultValue: false flag_help: Boolean flag controlling whether notifications are sent for exiting this region. Set to true or false. Defaults to 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: # We only notify for the highest priority region, but we inherit the flag value from parents. - define flagVal '' - if %flagVal% == true { - foreach ].deduplicate> { - run player:%value% s@dRegions_Msg 'def:<&5><&o> left %region% in %world%' } } event-global: # We only notify for the highest priority region, but we inherit the flag value from parents. - define flagVal '' - if %flagVal% = true { - foreach ].deduplicate> { - run player:%value% s@dRegions_Msg 'def:<&5><&o> left the global region in %world%' } } dRegions_Flag_Greeting: type: item speed: 0 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: # We should only get a message from the highest priority region, but let's inherit from parents. - define flagVal '' - if %flagVal% != null { # - narrate "$1]> - narrate "" - adjust 'action_bar:' } event-global: # We should only get a message from the highest priority region, but let's inherit from parents. - define flagVal '' - if %flagVal% != null { # - narrate "$1]> - narrate "" - adjust 'action_bar:' } dRegions_Flag_Farewell: type: item speed: 0 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: # We should only get a message from the highest priority region, but let's inherit from parents. - define flagVal '' - if %flagVal% != null { # - narrate "$1]> - narrate "" - adjust 'action_bar:' } event-global: # We should only get a message from the highest priority region, but let's inherit from parents. - define flagVal '' - if %flagVal% != null { # - narrate "$1]> - narrate "" - adjust 'action_bar:' } dRegions_Flag_Inventory: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Inventory<&4>]" lore: - <&5>Save inventory before going into a region event_hook: regionToggle event_priority: 10 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-enter: - define flagObj '' - if %flagObj% != null { - if |%region%|%world%|]> { - inject locally -enter } } event-exit: - define flagObj '' - if %flagObj% != null { - if |%region%|%world%|]> { - inject locally -exit } } kit-enter: - yaml set 'inventories.regions.%region%.exit.players..equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players..inv:' 'id:dRegions_%world%_inventories' - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - inventory clear - inventory set 'd:' 'o:' - define equipment '' - equip 'boots:' 'legs:' 'chest:' 'head:' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your inventory has been updated.' kit-exit: - define equipment '.equip]||li@>' - inventory clear - inventory set 'd:' 'o:.inv]||li@>' - equip 'boots:' 'legs:' 'chest:' 'head:' - yaml set 'inventories.regions.%region%.exit.players.:!' 'id:dRegions_%world%_inventories' - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your inventory has been updated.' unique-enter: - yaml set 'inventories.regions.%region%.exit.players..equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.exit.players..inv:' 'id:dRegions_%world%_inventories' - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - inventory clear - inventory set 'd:' 'o:.inv]||li@>' - define equipment '.equip]||li@>' - equip 'boots:' 'legs:' 'chest:' 'head:' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your inventory has been updated.' unique-exit: - yaml set 'inventories.regions.%region%.entry.players..equip:' 'id:dRegions_%world%_inventories' - yaml set 'inventories.regions.%region%.entry.players..inv:' 'id:dRegions_%world%_inventories' - define equipment '.equip]||li@>' - inventory clear - inventory set 'd:' 'o:.inv]||li@>' - equip 'boots:' 'legs:' 'chest:' 'head:' - yaml set 'inventories.regions.%region%.exit.players.:!' 'id:dRegions_%world%_inventories' - yaml 'savefile:dRegions/worlds/%world%/inventories.yml' 'id:dRegions_%world%_inventories' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your inventory has been updated.' dRegions_Flag_Gamemode: type: item speed: 0 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-enter: - define flagObj '' - if %flagObj% != null { - if |%region%|%world%|]> { - define gm '' - if %gm% != { - flag 'dRegions_%world%_%region%_PreviousGamemode:' - adjust 'gamemode:%gm%' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your gamemode has been updated.' } } } event-exit: - define flagObj '' - if %flagObj% != null { - if |%region%|%world%|]> { - if != { - adjust 'gamemode:' - run s@dRegions_Msg delay:1t 'def:<&7><&o>Your gamemode has been updated.' } - flag 'dRegions_%world%_%region%_PreviousGamemode:!' } } dRegions_Flag_Build: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Build<&4>]" lore: - <&5>Override default build perms event_hook: build event_priority: 0 flag_type: state-withGroup flag_name: Build 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 flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: 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: # Build is handled differently than the other flags. It checks only the HIGHEST # priority region. It does inherit owners, members, and flags from parent regions. - define region '' - define flagObj '' - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup event-global: # Build is handled differently than the other flags. It checks only the HIGHEST # priority region. It does inherit owners, members, and flags from parent regions. - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } event-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You do not have permission to build in this region' } dRegions_Flag_Vehicle-Place: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Vehicle-Place<&4>]" lore: - <&5>Who can place vehicles event_hook: placeVehicle event_priority: 5 flag_type: state-withGroup flag_help: Control who can place vehicles in a region. Takes the -g group switch. flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: 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-cleanup: - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not place %1%s here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Vehicle-Destroy: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Vehicle-Destroy<&4>]" lore: - <&5>Who can destroy vehicles event_hook: destroyVehicle event_priority: 10 flag_type: state-withGroup flag_help: Control who can destroy vehicles in a region. Takes the -g group switch. flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: 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-cleanup: - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not break %1%s here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Send-Chat: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Send-Chat<&4>]" lore: - <&5>Who can chat event_hook: sendChat event_priority: 10 flag_type: state-withGroup flag_help: Control who can send chat in a region. Takes the -g group switch. flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not chat here.' } event: - if !> { - foreach %orderedRegions% { - define region '' - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Hunger: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Hunger<&4>]" lore: - <&5>Who can get hungry event_hook: changeFood event_priority: 10 flag_type: state-withGroup flag_help: Control whether players will loose hunger in this region. Takes the -g group switch. flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: 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: - foreach %orderedRegions% { - define region '%value%' - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } event-global: - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } dRegions_Flag_Mob-Target: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Target<&4>]" lore: - <&5>Can mobs target players event_hook: ENTITY_Target_Player event_priority: 0 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether mobs will be able to target players in this region. Defaults to allow all. Use mob-target 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - flag %player% dRegions.rateLimit.mob-target.%target%:true d:10s - queue clear } - flag %player% dRegions.rateLimit.mob-target.%target%:false d:10s - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag %player% dRegions.rateLimit.mob-target.%target%:true d:10s - flag %player% dRegions.cache.%world%.%value%.mob-target.%target%:none } } - if %flagObj% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag %player% dRegions.rateLimit.mob-target.%target%:true d:10s - flag %player% dRegions.cache.%world%.%thisRegion%.mob-target.%target%:true } else { - flag %player% dRegions.rateLimit.mob-target.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag %player% dRegions.rateLimit.mob-target.%target%:true d:5s - flag %player% dRegions.cache.%world%.__global__.mob-target.%target%:true } else { - flag %player% dRegions.rateLimit.mob-target.%target%:true d:5s - flag %player% dRegions.cache.%world%.__global__.mob-target.%target%:none } event-cleanup: - remove - attack %attacker% target:cancel - flag %player% dRegions.rateLimit.mob-target.%target%:false d:5s - flag %player% dRegions.cache.%world%.%thisRegion%.mob-target.%target%:false dRegions_Flag_Mob-TargetList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Target<&4>]" lore: - <&5>List of mobs used by mob-targeting flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Mob-Target 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-Damage: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Damage<&4>]" lore: - <&5>Can mobs damage players event_hook: ENTITY_Damage_Player event_priority: 10 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether mobs will be able to damage players in this region. Defaults to allow all. Use mob-damagelist 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s - queue clear } - flag %player% dRegions.rateLimit.mob-damage.%target%:false d:10s - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s - flag %player% dRegions.cache.%world%.%value%.mob-damage.%target%:none } } - if %flagObj% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s - flag %player% dRegions.cache.%world%.%thisRegion%.mob-damage.%target%:true } else { - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s - flag %player% dRegions.cache.%world%.__global__.mob-damage.%target%:true } else { - flag %player% dRegions.rateLimit.mob-damage.%target%:true d:10s - flag %player% dRegions.cache.%world%.__global__.mob-damage.%target%:none } event-cleanup: - remove - attack %attacker% target:cancel - flag %player% dRegions.rateLimit.mob-damage.%target%:false d:10s - flag %player% dRegions.cache.%world%.%thisRegion%.mob-damage.%target%:false dRegions_Flag_Mob-Damagelist: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-DamageList<&4>]" lore: - <&5>List of mobs used by mob-damage flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Mob-Damage flag_takeGroup: false flag_help: List flag used with mob-damage 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-Spawn: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Spawn<&4>]" lore: - <&5>Can mobs Spawn event_hook: ENTITY_Spawn event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether mobs will be able to spawn in this region. Defaults to allow all. Use mob-spawnlist flag to specify mob types. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.mob-spawn.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.mob-spawn.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.mob-spawn.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.mob-spawn.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.mob-spawn.%target%:false' 'id:dRegions_%world%_cache' dRegions_Flag_Mob-SpawnList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Spawnlist<&4>]" lore: - <&5>List of mobs used by mob-spawn flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Mob-Spawn flag_takeGroup: false flag_help: List flag used with mob-spawn 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_EVE: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>EVE<&4>]" lore: - <&5>Can mobs be targeted event_hook: ENTITY_Target_ENTITY event_priority: 20 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether mobs can be targeted for attack by other mobs in this region. Defaults to allow. Use eve-moblist flag to specify mob types. 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: # - foreach %orderedRegions% { # - define flagVal '' # - define region '%value%' # - if %flagVal% != null { # - foreach stop # } # } # - if %flagVal% != null { # - define targetList '' # - define target '%dtarget%' # - inject s@dRegions_Flags_Processors p:state-withTarget # } # event-global: # - define orderedRegions 'li@__global__' # - define flagVal '' # - if %flagVal% != null { # - define targetList '' # - define target '%dtarget%' # - inject s@dRegions_Flags_Processors p:state-withTarget # } # event-cleanup: # - remove # - attack %attacker% target:cancel event: - define target '%dtarget%' - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - run locally wander delay:1t def:%attacker% - remove - attack %attacker% target:cancel - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.eve.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.eve.%target%:true' 'id:dRegions_%world%_cache' } # event-global: # - define target '%dtarget%' # - define region '__global__' # - define flagVal '' # - if %flagVal% != null { # - define targetList '' # - inject s@dRegions_Flags_Processors p:state-withTarget # } # - yaml set 'cache.state-withTarget.__global__.eve.%target%:true' 'id:dRegions_%world%_cache' event-global: - define target '%dtarget%' - define cache '' - if %cache% == false { - remove - attack %attacker% target:cancel - run locally wander delay:1t def:%attacker% - determine cancelled } - if %cache% == null { - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.eve.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.eve.%target%:none' 'id:dRegions_%world%_cache' } } event-cleanup: - remove - attack %attacker% target:cancel - run locally wander delay:1t def:%attacker% - yaml set 'cache.state-withTarget.%region%.eve.%target%:false' 'id:dRegions_%world%_cache' wander: - ^if ! queue clear - ^adjust %1% toggle_ai:false - ^walk %1% ].vertical.is[less].than[3]].filter[distance[].horizontal.is[more].than[4]].random.add[0,1,0]> - ^wait 10s - ^if ! queue clear - ^adjust %1% toggle_ai:true dRegions_Flag_EVE-Moblist: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>EVE-Moblist<&4>]" lore: - <&5>List of mobs used by eve flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_EVE flag_takeGroup: false flag_help: List flag used with eve 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-Attack: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Attack<&4>]" lore: - <&5>Can mobs attack other mobs event_hook: ENTITY_Target_ENTITY event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether mobs can attack other mobs in this region. Defaults to allow. Use mob-attack-moblist flag to specify mob types. 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 target '%atarget%' - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - define flagVal 'null' - foreach stop } - run locally wander delay:1t def:%attacker% - remove - attack %attacker% target:cancel - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.mob-attack.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.mob-attack.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define target '%atarget%' - define cache '' - if %cache% == false { - remove - attack %attacker% target:cancel - run locally wander delay:1t def:%attacker% - determine cancelled } - if %cache% == null { - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.mob-attack.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.mob-attack.%target%:none' 'id:dRegions_%world%_cache' } } event-cleanup: - remove - attack %attacker% target:cancel - run locally wander delay:1t def:%attacker% - yaml set 'cache.state-withTarget.%region%.mob-attack.%target%:false' 'id:dRegions_%world%_cache' wander: - ^if ! queue clear - ^adjust %1% toggle_ai:false - ^walk %1% ].vertical.is[less].than[3]].filter[distance[].horizontal.is[more].than[4]].random.add[0,1,0]> - ^wait 10s - ^if ! queue clear - ^adjust %1% toggle_ai:true dRegions_Flag_Mob-Attack-Moblist: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mob-Attack-Moblist<&4>]" lore: - <&5>List of mobs used by mob-attack flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Mob-Attack flag_takeGroup: false flag_help: List flag used with mob-attack 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_PVE: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>PVE<&4>]" lore: - <&5>Can players damage mobs event_hook: PLAYER_Damage_Entity event_priority: 10 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether players will be able to damage mobs in this region. Defaults to allow all. Use pve-moblist 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - flag dRegions.rateLimit.pve.%target%:true d:10s - queue clear } - flag dRegions.rateLimit.pve.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.rateLimit.pve.%target%:true d:10s - flag dRegions.cache.%world%.%value%.pve.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.pve.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.pve.%target%:true } else { - flag dRegions.rateLimit.pve.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.pve.%target%:true d:10s - flag dRegions.cache.%world%.__global__.pve.%target%:true } else { - flag dRegions.rateLimit.pve.%target%:true d:10s - flag dRegions.cache.%world%.__global__.pve.%target%:none } event-cleanup: - remove - flag dRegions.rateLimit.pve.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.pve.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not attack %1%s here!' } dRegions_Flag_PVE-Moblist: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>PVE-Moblist<&4>]" lore: - <&5>List of mobs used by pve flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_PVE flag_takeGroup: false flag_help: List flag used with pve 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Npc-Interact: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>NPC Interact<&4>]" lore: - <&5>Can players interact with NPCs event_hook: npc-interact event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether players will be able to interact with NPCs in this region. Defaults to allow. 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: - if !> { - foreach %orderedRegions% { - define region '%value%' - define flagObj '' - if %flagObj% != null { - foreach stop } } - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup } } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } event-cleanup: - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not interact with NPCs here!' } dRegions_Flag_Entity-Interact: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity Interact<&4>]" lore: - <&5>Can players interact with entities event_hook: entity-interact event_priority: 10 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether players will be able to interact with entities in this region. Defaults to allow all. Use entity-interactlist flag to specify entity 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - queue clear } - flag dRegions.rateLimit.entity-interact.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - flag dRegions.cache.%world%.%value%.entity-interact.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.entity-interact.%target%:true } else { - flag dRegions.rateLimit.entity-interact.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - flag dRegions.cache.%world%.__global__.entity-interact.%target%:true } else { - flag dRegions.rateLimit.entity-interact.%target%:true d:10s - flag dRegions.cache.%world%.__global__.entity-interact.%target%:none } event-cleanup: - flag dRegions.rateLimit.entity-interact.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.entity-interact.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not interact with %1%s here!' } dRegions_Flag_Entity-Interactlist: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity Interact List<&4>]" lore: - <&5>List of entities used by entity-interact flag command_entryType: mob command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Entity-Interact flag_takeGroup: false flag_help: List flag used with entity-interact flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of entities. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-Explode: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Explode<&4>]" lore: - <&5>Can entities explode event_hook: entity-explode event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether entities will be able to explode in this region. Defaults to allow all. Use entity-explodelist flag to specify entities types. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.entity-explode.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.entity-explode.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.entity-explode.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.entity-explode.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.entity-explode.%target%:false' 'id:dRegions_%world%_cache' dRegions_Flag_Entity-ExplodeList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Explodelist<&4>]" lore: - <&5>List of mobs used by entity-explode flag command_entryType: entity command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Entity-Explode flag_takeGroup: false flag_help: List flag used with entity-explode flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of entities. Valid entities<&co> creeper, ender_crystal, ender_dragon, primed_tnt, minecart_tnt, fireball, small_fireball, wither, wither_skull 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-Grief: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Grief<&4>]" lore: - <&5>Can entities alter blocks event_hook: entity-changeBlock event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether entities will be able to alter blocks in this region. Defaults to allow all. Use entity-grieflist flag to specify entities types. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - run locally offthread delay:1t def: - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.entity-grief.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.entity-grief.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.entity-grief.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.entity-grief.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.entity-grief.%target%:false' 'id:dRegions_%world%_cache' - run locally offthread delay:1t def: offthread: - ^flag server dRegions.EntityGrief.%1% - ^wait 3s - ^flag server dRegions.EntityGrief.%1%:! dRegions_Flag_Entity-GriefList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Grieflist<&4>]" lore: - <&5>List of mobs used by entity-grief flag command_entryType: entity command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Entity-Grief flag_takeGroup: false flag_help: List flag used with entity-grief flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of entities. Valid entities<&co> sheep, enderman, zombie, squid 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-Drops-OnDeath: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Drops-OnDeath<&4>]" lore: - <&5>Can mobs drop items event_hook: EntityDies event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine no_drops } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.entity-drops-ondeath.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.entity-drops-ondeath.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.entity-drops-ondeath.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.entity-drops-ondeath.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.entity-drops-ondeath.%target%:false' 'id:dRegions_%world%_cache' - determine no_drops dRegions_Flag_Entity-Drops-OnDeathList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Drops-OnDeathlist<&4>]" lore: - <&5>List of mobs used by entity-drops-ondeath flag command_entryType: entity command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Entity-Drops-OnDeath flag_takeGroup: false flag_help: List flag used with entity-drops-ondeath flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of entities. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Fire-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Fire-Spread<&4>]" lore: - <&5>Can fire spread event_hook: fireFrom-Spread event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether fire will be able to spread in this region. Defaults to allow all. Use fire-spreadblocks flag to specify blocks to check when spreading. # flag_help: This flag is temporarily disabled. Please use the fire-destroyblocks flag. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.fire-spread.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.fire-spread.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.fire-spread.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.fire-spread.%target%:none' 'id:dRegions_%world%_cache' } dRegions_Flag_Fire-SpreadBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Fire-Spread-BlockList<&4>]" lore: - <&5>List of blocks involved in fire spread command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Fire-Spread flag_takeGroup: false flag_help: List flag used with fire-spread flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Fire-Destroy: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Fire-Destroy<&4>]" lore: - <&5>Can fire destroy blocks event_hook: fire-destroyBlocks event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether fire will be able to spread to and destroy blocks in this region. Defaults to allow all. Use fire-destroyblocks flag to specify blocks to check when spreading. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - define flagVal 'null' - foreach stop } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.fire-destroy.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.fire-destroy.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.fire-destroy.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.fire-destroy.%target%:none' 'id:dRegions_%world%_cache' } dRegions_Flag_Fire-DestroyBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Fire-Destroy-BlockList<&4>]" lore: - <&5>List of blocks involved in fire-destroy command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Fire-Destroy flag_takeGroup: false flag_help: List flag used with fire-destroy flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Lightning-Strikes: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Lightning-Strikes<&4>]" lore: - <&5>Can lightning strike event_hook: lightning-strikes event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether lightning will be able to strike in this region. Defaults to allow all. Use lightning-strikeblocks flag to specify blocks to check when striking. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.lightning-strikes.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.lightning-strikes.%target%:true' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.lightning-strikes.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.lightning-strikes.%target%:none' 'id:dRegions_%world%_cache' } dRegions_Flag_Lightning-StrikesBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Lightning-StrikesBlocks<&4>]" lore: - <&5>List of blocks involved in lightning strikes command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Lightning-Strikes flag_takeGroup: false flag_help: List flag used with lightning-strike flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Water-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Water-Spread<&4>]" lore: - <&5>Can Water spread event_hook: WaterSpread event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether water will be able to spread in this region. Defaults to allow all. Use water-spreadblocks flag to specify blocks to check when spreading. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.water-spread.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.water-spread.%target%:true' 'id:dRegions_%world%_cache' - queue clear } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.water-spread.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.water-spread.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.water-spread.%target%:false' 'id:dRegions_%world%_cache' - queue clear dRegions_Flag_Water-SpreadBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Water-Spread-BlockList<&4>]" lore: - <&5>List of blocks involved in water spread command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Water-Spread flag_takeGroup: false flag_help: List flag used with water-spread flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Lava-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Lava-Spread<&4>]" lore: - <&5>Can Lava spread event_hook: LavaSpread event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether lava will be able to spread in this region. Defaults to allow all. Use lava-spreadblocks flag to specify blocks to check when spreading. 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: # - foreach %orderedRegions% { # - define flagVal '' # - define region '%value%' # - if %flagVal% != null { # - foreach stop # } # } # - if %flagVal% != null { # - define targetList '' # - inject s@dRegions_Flags_Processors p:state-withTarget # } # event-global: # - define orderedRegions 'li@__global__' # - define flagVal '' # - if %flagVal% != null { # - define targetList '' # - inject s@dRegions_Flags_Processors p:state-withTarget # } event: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.lava-spread.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.lava-spread.%target%:true' 'id:dRegions_%world%_cache' - queue clear } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.lava-spread.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.lava-spread.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.lava-spread.%target%:false' 'id:dRegions_%world%_cache' dRegions_Flag_Lava-SpreadBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Lava-Spread-BlockList<&4>]" lore: - <&5>List of blocks involved in lava spread command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Lava-Spread flag_takeGroup: false flag_help: List flag used with lava-spread flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Snow-Fall: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Snow-Fall<&4>]" lore: - <&5>Can Snow accumulate event_hook: blockForm-snow event_priority: 10 flag_type: state-withTarget flag_takeGroup: false flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether snow will be able to accumulate on the ground in this region. Defaults to allow all. Use snow-fallblocks flag to specify blocks below the snow to check when forming. 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: - foreach %orderedRegions% { - define region '%value%' - define cache '' - if %cache% == none { - define flagVal 'null' - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - foreach stop } else { - yaml set 'cache.state-withTarget.%region%.snow-fall.%target%:none' 'id:dRegions_%world%_cache' } } - if %flagVal% != null { - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.%region%.snow-fall.%target%:true' 'id:dRegions_%world%_cache' - queue clear } event-global: - define flagVal '' - if %flagVal% != null { - define region '__global__' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget - yaml set 'cache.state-withTarget.__global__.snow-fall.%target%:true' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.state-withTarget.__global__.snow-fall.%target%:none' 'id:dRegions_%world%_cache' } event-cleanup: - yaml set 'cache.state-withTarget.%region%.snow-fall.%target%:false' 'id:dRegions_%world%_cache' dRegions_Flag_Snow-FallBlocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Snow-Fall-BlockList<&4>]" lore: - <&5>List of blocks to check under snow command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Snow-Fall flag_takeGroup: false flag_help: List flag used with snow-fall flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Ice-Form: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Ice-Form<&4>]" lore: - <&5>Can water turn into ice event_hook: blockForm-ice event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether water will be able to turn into ice in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if %flagVal% { - yaml set 'cache.boolean.%value%.ice-form:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.ice-form:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.ice-form:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.ice-form:false' 'id:dRegions_%world%_cache' - determine cancelled } } - yaml set 'cache.boolean.__global__.ice-form:true' 'id:dRegions_%world%_cache' dRegions_Flag_Ice-Melt: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Ice-Melt<&4>]" lore: - <&5>Can ice melt event_hook: blockFade-ice event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether ice can melt in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.ice-melt:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.ice-melt:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.ice-melt:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.ice-melt:false' 'id:dRegions_%world%_cache' - determine cancelled } } - yaml set 'cache.boolean.__global__.ice-melt:true' 'id:dRegions_%world%_cache' dRegions_Flag_Snow-Melt: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Snow-Melt<&4>]" lore: - <&5>Can snow melt event_hook: blockFade-snow event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether snow can melt in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.snow-melt:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.snow-melt:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.snow-melt:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.snow-melt:false' 'id:dRegions_%world%_cache' - determine cancelled } } - yaml set 'cache.boolean.__global__.snow-melt:true' 'id:dRegions_%world%_cache' dRegions_Flag_Soil-Dry: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Soil-Dry<&4>]" lore: - <&5>Can soil dry up event_hook: blockFade-soil event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether soil can dry in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.soil-dry:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.soil-dry:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.soil-dry:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.soil-dry:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.soil-dry:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Trample-Crops-Player: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Trample-Crops-Player<&4>]" lore: - <&5>Can players trample crops event_hook: trample-crops-player event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether players can trample crops in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.trample-crops-player:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.trample-crops-player:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.trample-crops-player:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.trample-crops-player:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.trample-crops-player:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Trample-Crops-Entity: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Trample-Crops-Entity<&4>]" lore: - <&5>Can entities trample crops event_hook: trample-crops-entity event_priority: 10 flag_type: boolean flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether entities can trample crops in this region. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.trample-crops-entity:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.trample-crops-entity:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.trample-crops-entity:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.trample-crops-entity:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.trample-crops-entity:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Mushroom-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mushroom-Spread<&4>]" lore: - <&5>Can Mushrooms spread event_hook: MushroomSpread event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether mushrooms will be able to spread in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.mushroom-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.mushroom-spread:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.mushroom-spread:none' 'id:dRegions_%world%_cache' } event-Global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.mushroom-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.mushroom-spread:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Grass-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Grass-Spread<&4>]" lore: - <&5>Can Grass spread event_hook: GrassSpread event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether grass will be able to spread in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.grass-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.grass-spread:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.grass-spread:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.grass-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.grass-spread:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Mycel-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Mycel-Spread<&4>]" lore: - <&5>Can Mycelium spread event_hook: MycelSpread event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether mycelium will be able to spread in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.mycel-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.mycel-spread:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.mycel-spread:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.mycel-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.mycel-spread:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Vines-Spread: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Vine-Growth<&4>]" lore: - <&5>Can Vines grow event_hook: VinesSpread event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether vines will be able to grow in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.vines-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.vines-spread:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.vines-spread:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.vines-spread:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.vines-spread:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Leaf-Decay: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Leaf-Decay<&4>]" lore: - <&5>Can leaves decay event_hook: leaf-decay event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether leaves will be able to decay in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.leaf-decay:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.leaf-decay:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.leaf-decay:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.leaf-decay:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.leaf-decay:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Falling-Sand: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Falling-Sand<&4>]" lore: - <&5>Can sand fall event_hook: physics-sand event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether sand will be able to fall in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.falling-sand:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.falling-sand:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.falling-sand:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.falling-sand:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.falling-sand:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Falling-Gravel: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Falling-Gravel<&4>]" lore: - <&5>Can gravel fall event_hook: physics-gravel event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether gravel will be able to fall in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.falling-gravel:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.falling-gravel:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.falling-gravel:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.falling-gravel:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.falling-gravel:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Pistons: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Pistons<&4>]" lore: - <&5>Can pistons be activated event_hook: pistons event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether pistons can be activated in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.pistons:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.pistons:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.pistons:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.pistons:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.pistons:true' 'id:dRegions_%world%_cache' } dRegions_Flag_Lighter: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Lighter<&4>]" lore: - <&5>Who can use the flint and steel in a region event_hook: fireFrom-Lighter event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not use a lighter in this region' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Bucket-Fill: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Bucket-Fill<&4>]" lore: - <&5>Who can fill a bucket in a region event_hook: fillBucket event_priority: 5 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not fill a bucket in this region' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Bucket-Empty: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Bucket-Empty<&4>]" lore: - <&5>Who can fill a bucket in a region event_hook: emptyBucket event_priority: 5 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not empty a bucket in this region' } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } dRegions_Flag_Hanging-Place: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Hanging-Place<&4>]" lore: - <&5>Who can place item frames and paintings event_hook: hangingPlace event_priority: 0 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not hang that in this region' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Hanging-Break: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Hanging-Break<&4>]" lore: - <&5>Who can break item frames and paintings event_hook: hangingBreak event_priority: 0 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not break that in this region' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Sleep: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Sleep<&4>]" lore: - <&5>Who can Sleep event_hook: sleep event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not sleep here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - inject s@dRegions_Flags_Processors p:state-withGroup } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Player-Drops: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-Drops<&4>]" lore: - <&5>Who can drop items event_hook: player-drop event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not drop items here.' } event: - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } event-global: - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } dRegions_Flag_Player-Drops-OnDeath: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-Drops-OnDeath<&4>]" lore: - <&5>Who can drop items when they die event_hook: PlayerDies event_priority: 20 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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-cleanup: - determine NO_DROPS event: - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } event-global: - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } dRegions_Flag_Player-KeepItems: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-KeepItems<&4>]" lore: - <&5>Can players keep items on death event_hook: PlayerDies event_priority: 10 flag_type: state flag_takeGroup: true flag_defaultValue: deny/all flag_help: State flag controlling whether players will keep their items when they die in a region. Default is to deny all. 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: - foreach %orderedRegions% { - define flagObj '' - if %flagObj% != null { - if == allow { - if |%value%|%world%|]> { - run locally returnItems 'def:|' delay:2t - determine NO_DROPS_NO_XP - foreach stop } } else { - if !|%value%|%world%|]> { - run locally returnItems 'def:|' delay:2t - determine NO_DROPS_NO_XP - foreach stop } } } } event-global: - define flagObj '' - if %flagObj% != null { - if == allow { - if |__global__|%world%|]> { - run locally returnItems 'def:|' delay:2t - determine NO_DROPS_NO_XP } } else { - if !|__global__|%world%|]> { - run locally returnItems 'def:|' delay:2t - determine NO_DROPS_NO_XP } } } returnItems: - inventory clear - run s@dRegions_Msg delay:1t 'def:<&9>You died, but your inventory is safe!' - inventory set 'd:' 'o:' - define equipment '' - equip 'boots:' 'legs:' 'chest:' 'head:' dRegions_Flag_Spawn: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Spawn<&4>]" lore: - <&5>Region spawn point. event_hook: playerDies event_priority: 5 flag_type: location flag_takeGroup: true flag_help: Set the location players will respawn at if they die in this region. Default is to have no effect so normal respawn mechanics will apply. Takes the -g group switch. Specify the value as `here` to use your current location, or specify a valid location in the `x,y,z,world` format. 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 !> { - if /|%world%|]> { - run s@dRegions_Msg delay:1t 'def:<&c>You can not use that location!' - queue clear } } event: - ^foreach { - define flagObj '' - if ( %flagObj% != null ) && |%value%|%1%|]> { # - adjust 'location:' - flag 'dRegions_Respawn:' - foreach stop } } event-global: - ^define flagObj '' - ^if ( %flagObj% != null ) && |__global__|%1%|]> { # - adjust 'location:' - flag 'dRegions_Respawn:' } dRegions_Flag_Player-Pickup: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-Pickup<&4>]" lore: - <&5>Who can pickup items event_hook: player-pickup event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not pick up items here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Entity-Break-Painting: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Break-Painting<&4>]" lore: - <&5>Can Entities break paintings event_hook: entity-break-painting event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether mobs will be able to destroy paintings in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.entity-break-painting:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.entity-break-painting:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.entity-break-painting:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.entity-break-painting:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.entity-break-painting:none' 'id:dRegions_%world%_cache' } dRegions_Flag_Entity-Break-ItemFrame: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Entity-Break-ItemFrame<&4>]" lore: - <&5>Can Entities break item frames event_hook: entity-break-itemframe event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether mobs will be able to destroy item frames in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.entity-break-itemframe:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.entity-break-itemframe:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.entity-break-itemframe:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.entity-break-itemframe:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.entity-break-itemframe:true' 'id:dRegions_%world%_cache' } dRegions_Flag_PVP: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>PVP<&4>]" lore: - <&5>Can players damage each other event_hook: player_damage_player event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether players can attack eachother in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - remove - run locally msg delay:1t - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.%value%.pvp:false' 'id:dRegions_%world%_cache' - remove - run locally msg delay:1t - determine cancelled } - yaml set 'cache.boolean.%value%.pvp:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.pvp:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - yaml set 'cache.boolean.__global__.pvp:false' 'id:dRegions_%world%_cache' - remove - run locally msg delay:1t - determine cancelled } - yaml set 'cache.boolean.__global__.pvp:true' 'id:dRegions_%world%_cache' } msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You are in a no PVP zone.' } dRegions_Flag_Potion-Throw: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Potion-Throw<&4>]" lore: - <&5>Can potions be thrown in this region event_hook: throwPotion event_priority: 10 flag_type: boolean flag_takeGroup: false flag_defaultValue: true flag_globalDefault: true flag_help: Boolean flag controlling whether potions can be thrown and broken in this region. Set to true or false. Defaults to 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: - foreach %orderedRegions% { - define cache '' - if %cache% == none { - foreach next } - if %cache% != null { - if %cache% { - queue clear } - if { - run locally msg delay:1t } - determine cancelled } - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - if { - run locally msg delay:1t } - yaml set 'cache.boolean.%value%.potion-throw:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.%value%.potion-throw:true' 'id:dRegions_%world%_cache' - foreach stop } - yaml set 'cache.boolean.%value%.potion-throw:none' 'id:dRegions_%world%_cache' } event-global: - define flagVal '' - if %flagVal% != null { - if !%flagVal% { - if { - run locally msg delay:1t } - yaml set 'cache.boolean.__global__.potion-throw:false' 'id:dRegions_%world%_cache' - determine cancelled } - yaml set 'cache.boolean.__global__.potion-throw:true' 'id:dRegions_%world%_cache' } msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not throw potions here.' } dRegions_Flag_Potion-Drink: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Potion-Drink<&4>]" lore: - <&5>Who can drink potions event_hook: drinkPotion event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not drink potions here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Enderpearl: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Enderpearl<&4>]" lore: - <&5>Who can use enderpearls event_hook: enderPearl event_priority: 10 flag_type: state-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none 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-cleanup: - run locally msg delay:1t msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not use enderpearls here.' } event: - if !> { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup - foreach stop } } } event-global: - if !> { - define flagObj '' - if %flagObj% != null { - define player - inject s@dRegions_Flags_Processors p:state-withGroup-global } } dRegions_Flag_Block-Place: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Block-Place<&4>]" lore: - <&5>Can players place blocks. event_hook: blockPlace event_priority: 5 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: true flag_help: State flag controlling whether players will be able to place blocks in this region. Defaults to allow all. Use block-placelist flag to specify block 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - flag dRegions.cache.%world%.%value%.block-place.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.block-place.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - flag dRegions.cache.%world%.__global__.block-place.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:true d:10s - flag dRegions.cache.%world%.__global__.block-place.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.block-place.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.block-place.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not place %1% in this region!' } dRegions_Flag_Block-PlaceList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Block-PlaceList<&4>]" lore: - <&5>List of blocks used by block-place flag command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Block-Place flag_takeGroup: false flag_help: List flag used with block-place flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Block-Break: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Block-Break<&4>]" lore: - <&5>Can players break blocks. event_hook: blockBreak event_priority: 5 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: true flag_help: State flag controlling whether players will be able to break blocks in this region. Defaults to allow all. Use block-breaklist flag to specify block 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - flag dRegions.cache.%world%.%value%.block-break.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.block-break.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - flag dRegions.cache.%world%.__global__.block-break.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:true d:10s - flag dRegions.cache.%world%.__global__.block-break.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.block-break.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.block-break.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not break %1% in this region!' } dRegions_Flag_Block-BreakList: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Block-BreakList<&4>]" lore: - <&5>List of blocks used by block-break flag command_entryType: block command_verifyEntry: flag_type: list flag_parent: dRegions_Flag_Block-Break flag_takeGroup: false flag_help: List flag used with block-break flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Chest-Access: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Chest-Access<&4>]" lore: - <&5>Can players open containers. event_hook: openContainer event_priority: 10 flag_type: state-withTarget-withGroup flag_name: chest-access flag_targetList: chest-access-blocks flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: true flag_help: State flag controlling whether players will be able to open containers in this region. Defaults to deny nonmembers. Use chest-access-blocks flag to specify container blocks 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.chest-access.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.chest-access.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.cache.%world%.%value%.chest-access.%target%:none } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.chest-access.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.chest-access.%target%:true event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.chest-access.%target%:true d:10s - flag dRegions.cache.%world%.__global__.chest-access.%target%:true } else { - flag dRegions.cache.%world%.__global__.chest-access.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.chest-access.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.chest-access.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not open %1%s in this region!' } dRegions_Flag_Chest-Access-Blocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Chest-Access-Blocks<&4>]" lore: - <&5>List of blocks used by chest-access flag command_entryType: container command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Chest-Access flag_takeGroup: false flag_help: List flag used with chest-access flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. Valid container blocks<&co> chest, ender_chest, locked_chest, trapped_chest, dispenser, hopper, and dropper. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Door-Access: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Door-Access<&4>]" lore: - <&5>Can players open doors. event_hook: openDoor event_priority: 10 flag_type: state-withTarget-withGroup flag_name: Door-Access flag_targetList: Door-Access-Doors flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none flag_help: State flag controlling whether players will be able to open doors in this region. Defaults to allow all. Use door-access-doors flag to specify door blocks 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s - flag dRegions.cache.%world%.%value%.door-access.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.door-access.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s - flag dRegions.cache.%world%.__global__.door-access.%target%:true } else { - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:true d:10s - flag dRegions.cache.%world%.__global__.door-access.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.door-access.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.door-access.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not open %1%s in this region!' } dRegions_Flag_Door-Access-Doors: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Door-Access-Doors<&4>]" lore: - <&5>List of doors used by doors-access flag command_entryType: door command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Door-Access flag_takeGroup: false flag_help: List flag used with door-access flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. Valid door blocks<&co> trap_door, iron_trapdoor, wooden_door, iron_door_block, spruce_door, birch_door, jungle_door, dark_oak_door, acacia_door, fence_gate, spruce_fence_gate, birch_fence_gate, jungle_fence_gate, dark_oak_fence_gate, and acacia_fence_gate. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Use-Switches: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Use-Switches<&4>]" lore: - <&5>Can players interact with switches. event_hook: useSwitch event_priority: 10 flag_type: state-withTarget-withGroup flag_name: Use-Switches flag_targetList: Use-Switches-List flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: true flag_help: State flag controlling whether players will be able to use switches in this region. Defaults to deny nonmembers. Use use-switches-list flag to specify switch block 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.use-switches.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.use-switches.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.cache.%world%.%value%.use-switches.%target%:none } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.use-switches.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.use-switches.%target%:true event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.use-switches.%target%:true d:10s - flag dRegions.cache.%world%.__global__.use-switches.%target%:true } else { - flag dRegions.cache.%world%.__global__.use-switches.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.use-switches.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.use-switches.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not use %1%s in this region!' } dRegions_Flag_Use-Switches-List: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Use-Switches-List<&4>]" lore: - <&5>List of switches used by use-switches flag command_entryType: switch command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Use-Switches flag_takeGroup: false flag_help: List flag used with use-switches flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. Valid switch blocks<&co> lever, wood_button, stone_button, wood_plate, stone_plate, iron_plate, and gold_plate. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Use-Utilities: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Use-Utilities<&4>]" lore: - <&5>Can players use utility blocks. event_hook: useUtility event_priority: 10 flag_type: state-withTarget-withGroup flag_name: Use-Utilities flag_targetList: Use-Utilities-Blocks flag_takeGroup: true flag_defaultValue: deny/nonmembers flag_globalDefault: none region_highestOnly: true flag_help: State flag controlling whether players will be able to use utility blocks in this region. Defaults to deny nonmembers. Use use-utilities-blocks flag to specify utility blocks. 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - if %sameRegion% flag dRegions.rateLimit.use-utilities.%target%:true d:10s - queue clear } - if %sameRegion% flag dRegions.rateLimit.use-utilities.%target%:false d:10s - run locally msg delay:1t 'def:' - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.cache.%world%.%value%.use-utilities.%target%:none } } - if %flagObj% == null { - define flagObj 'deny/nonmembers' } - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.use-utilities.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.use-utilities.%target%:true event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - if %sameRegion% flag dRegions.rateLimit.use-utilities.%target%:true d:10s - flag dRegions.cache.%world%.__global__.use-utilities.%target%:true } else { - flag dRegions.cache.%world%.__global__.use-utilities.%target%:none } event-cleanup: - if %sameRegion% flag dRegions.rateLimit.use-utilities.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.use-utilities.%target%:false - run locally msg delay:1t 'def:' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - run s@dRegions_Msg delay:1t 'def:<&c><&o>You can not use %1%s in this region!' } dRegions_Flag_Use-Utilities-Blocks: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Use-Utilities-Blocks<&4>]" lore: - <&5>List of blocks used by use-utilities flag command_entryType: utility command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Use-Utilities flag_takeGroup: false flag_help: List flag used with use-utilities flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of blocks. Valid utility blocks<&co> workbench, furnace, burning_furnace, anvil, brewing_stand, cauldron, enchantment_table, note_block, jukebox, and beacon. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Player-Damage: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-Damage<&4>]" lore: - <&5>Can players take damage. event_hook: playerDamaged event_priority: 10 flag_type: state-withTarget-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: false flag_help: State flag controlling whether players will take damage in this region. Defaults to allow all. Use player-damage-types flag to specify damage 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 thisRegion '' - foreach %orderedRegions% { - define cache '' - if %cache% == none { - define flagObj 'null' - foreach next } - if %cache% != null { - if %cache% { - flag dRegions.rateLimit.player-damage.%target%:true d:10s - queue clear } - adjust 'fire_time:0' - flag dRegions.rateLimit.player-damage.%target%:false d:10s - determine cancelled } - define flagObj '' - if %flagObj% != null { - define region '%value%' - foreach stop } else { - flag dRegions.rateLimit.player-damage.%target%:true d:10s - flag dRegions.cache.%world%.%value%.player-damage.%target%:none } } - if %flagObj% != null { - define player - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.player-damage.%target%:true d:10s - flag dRegions.cache.%world%.%thisRegion%.player-damage.%target%:true } else { - flag dRegions.rateLimit.player-damage.%target%:true d:10s } event-global: - define thisRegion '__global__' - define flagObj '' - if %flagObj% != null { - define orderedRegions 'li@__global__' - define player '' - define targetList '' - inject s@dRegions_Flags_Processors p:state-withTarget-withGroup - flag dRegions.rateLimit.player-damage.%target%:true d:10s - flag dRegions.cache.%world%.__global__.player-damage.%target%:true } else { - flag dRegions.rateLimit.player-damage.%target%:true d:10s - flag dRegions.cache.%world%.__global__.player-damage.%target%:none } event-cleanup: - flag dRegions.rateLimit.player-damage.%target%:false d:10s - flag dRegions.cache.%world%.%thisRegion%.player-damage.%target%:false - adjust 'fire_time:0' dRegions_Flag_Player-Damage-Types: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Player-Damage-Types<&4>]" lore: - <&5>List of damage types used by player-damage flag command_entryType: cause command_verifyEntry: ].not> flag_type: list flag_parent: dRegions_Flag_Player-Damage flag_takeGroup: false flag_help: List flag used with player-damage flag. To add to the list, use the -a switch. To remove from list use the -r switch. Provide a space separated list of damage types. Valid damage types<&co> block_explosion, contact, custom, drowning, entity_attack, entity_explosion, fall, falling_block, fire, fire_tick, lava, lightning, magic, melting, poison, projectile, starvation, suffocation, suicide, thorns, void, and wither. 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: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Commands: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Commands<&4>]" lore: - <&5>Can players use commands. event_hook: playerCommand event_priority: 10 flag_type: state-withTargetString-withGroup flag_takeGroup: true flag_defaultValue: none flag_globalDefault: none region_highestOnly: false flag_help: State flag controlling whether players can use commands in this region. Defaults to allow all. Use commands-list flag to specify commands. 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: - if !> { - define player - define flag 'commands' - define flag-targetList 'commands-list' - define delimiter ' ; ' - inject s@dRegions_Flags_Processors p:state-withTargetString-withGroup } event-global: - if !> { - define player - define flag 'commands' - define flag-targetList 'commands-list' - define delimiter ' ; ' - inject s@dRegions_Flags_Processors p:state-withTargetString-withGroup-Global } event-cleanup: - run locally msg delay:1t 'def:]].as_string>' msg: - ^if { - flag dRegions_Message_Cooldown duration:3s - define lines 'command in this region!|45]>' - foreach %lines% { - run s@dRegions_Msg delay:1t 'def:<&c>%value%' } } dRegions_Flag_Commands-List: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Commands-List<&4>]" lore: - <&5>List of commands used by commands flag command_entryType: cause flag_type: list flag_parent: dRegions_Flag_Commands flag_takeGroup: false flag_help: List flag used with commands flag. To add to the list, use the -a switch. To remove from list use the -r switch. Add/remove one command at a time! 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: - inject s@dRegions_Flags_CommandProcessors p:command_stringList dRegions_Flag_Heal-Amount: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Heal-Amount<&4>]" lore: - <&5>The amount to heal or harm. event_hook: regionEnter event_priority: 10 flag_type: number flag_help: Set the amount to heal or hurt a player while inside a region. Defaults to no effect. Positive number will heal players, negative numbers will damage players. 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 healAmount '' - if %healAmount% != null { - define healDelay '' - if %healDelay% == null { - define healDelay '5' } - define healMax '' - if %healMax% == null { - define healMax '20' } - define healMax ']>]:||%healMax%>' - define healMin '' - if %healMin% == null { - define healMin '0' } - if ]> { - queue q@dRegions_Heal_ clear } - run locally healTask delay:1t 'def:%world%|%region%|%healAmount%|%healDelay%|%healMax%|%healMin%' id:dRegions_Heal_ } event-global: - define healAmount '' - if %healAmount% != null { - define healDelay '' - if %healDelay% == null { - define healDelay '5' } - define healMax '' - if %healMax% == null { - define healMax '20' } - define healMax ']>]:||%healMax%>' - define healMin '' - if %healMin% == null { - define healMin '0' } - if ]> { - queue q@dRegions_Heal_ clear } - run locally healTask delay:1t 'def:%world%|__global__|%healAmount%|%healDelay%|%healMax%|%healMin%' id:dRegions_Heal_ } healTask: - while { - define world '' - if %world% != %1% { - while stop } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - if != %2% { - while stop } - if == 1 { - wait 1s - while next } - if %4% OR_LESS 0 { - if %3% MORE 0 { - if LESS %5% { - adjust 'health:%5%' } } else { - if MORE %6% { - animate animation:hurt - adjust 'health:%6%' } } - wait 1s - while next } - if %3% MORE 0 { - if LESS %5% { - define newHealth '' - adjust 'health:]:%5%||%newHealth%>' } } else { - if MORE %6% { - animate animation:hurt - define newHealth '' - adjust 'health:]:%6%||%newHealth%>' } } - wait } dRegions_Flag_Heal-Delay: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Heal-Delay<&4>]" lore: - <&5>The duration between heal intervals flag_type: number flag_takeGroup: false flag_help: Set the time in seconds between heal intervals. Defaults to 5 seconds. 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 { - run s@dRegions_Msg delay:1t 'def:<&c>Can not specify negative time!' - queue clear } dRegions_Flag_Heal-Max: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Heal-Max<&4>]" lore: - <&5>Max health for heal flag. flag_type: number flag_takeGroup: false flag_help: Set the max health that the heal flag will heal a player to. Defaults to 20. 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 ! { - run s@dRegions_Msg delay:1t 'def:<&c>Must be a value greater than 0!' - queue clear } dRegions_Flag_Heal-Min: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Heal-Min<&4>]" lore: - <&5>Minimum health for heal flag flag_type: number flag_takeGroup: false flag_help: Set the min health that the heal flag will heal a player to. Defaults to 0. 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 { - run s@dRegions_Msg delay:1t 'def:<&c>Can not set to a negative number!' - queue clear } dRegions_Flag_Feed-Amount: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Feed-Amount<&4>]" lore: - <&5>The amount to feed or starve. event_hook: regionEnter event_priority: 10 flag_type: number flag_help: Set the amount to feed or starve a player while inside a region. Defaults to no effect. Positive numbers will feed players, negative numbers will starve players. 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 feedAmount '' - if %feedAmount% != null { - define feedDelay '' - if %feedDelay% == null { - define feedDelay '5' } - define feedMax '' - if %feedMax% == null { - define feedMax '20' } - define feedMin '' - if %feedMin% == null { - define feedMin '0' } - if ]> { - queue q@dRegions_Feed_ clear } - run locally feedTask delay:1t 'def:%world%|%region%|%feedAmount%|%feedDelay%|%feedMax%|%feedMin%' id:dRegions_Feed_ } event-global: - define feedAmount '' - if %feedAmount% != null { - define feedDelay '' - if %feedDelay% == null { - define feedDelay '5' } - define feedMax '' - if %feedMax% == null { - define feedMax '20' } - define feedMin '' - if %feedMin% == null { - define feedMin '0' } - if ]> { - queue q@dRegions_Feed_ clear } - run locally feedTask delay:1t 'def:%world%|__global__|%feedAmount%|%feedDelay%|%feedMax%|%feedMin%' id:dRegions_Feed_ } feedTask: - while { - define world '' - if %world% != %1% { - while stop } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - define region '' - if != %2% { - while stop } - if == 1 { - wait 1s - while next } - if %4% OR_LESS 0 { - if %3% MORE 0 { - if LESS %5% { - adjust 'food_level:%5%' - adjust 'saturation:' } } else { - if MORE %6% { - animate animation:hurt - adjust 'food_level:%6%' - adjust 'saturation:' } } - wait 1s - while next } - if %3% MORE 0 { - if LESS %5% { - define newFood '' - adjust 'food_level:]:%5%||%newFood%>' - adjust 'saturation:' } } else { - if MORE %6% { - define newFood '' - adjust 'food_level:]:%6%||%newFood%>' - adjust 'saturation:' - animate animation:hurt } } - wait } dRegions_Flag_Feed-Delay: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Feed-Delay<&4>]" lore: - <&5>The duration between feed intervals flag_type: number flag_takeGroup: false flag_help: Set the time in seconds between feed intervals. Defaults to 5 seconds. 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 { - run s@dRegions_Msg delay:1t 'def:<&c>Can not specify negative time!' - queue clear } dRegions_Flag_Feed-Max: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Feed-Max<&4>]" lore: - <&5>Max health for feed flag. flag_type: number flag_takeGroup: false flag_help: Set the max food level that the feed-amount flag will bring a player to. Defaults to 20. 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 ! { - run s@dRegions_Msg delay:1t 'def:<&c>Must be a value greater than 0!' - queue clear } dRegions_Flag_Feed-Min: type: item speed: 0 debug: false material: i@paper display name: "<&4>[<&6>Feed-Min<&4>]" lore: - <&5>Minimum food level for feed-amount flag flag_type: number flag_takeGroup: false flag_help: Set the min food level that the feed-amount flag will bring a player to. Defaults to 0. 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 { - run s@dRegions_Msg delay:1t 'def:<&c>Can not set to a negative number!' - queue clear } ################################################################################ dRegions_Flags_Processors: type: task speed: 0 debug: false #--------------------------------------- # Region flag pre-processors # state-withGroup: # Requires each flag to build the flag object. # Allows for iterating over %orderedRegions% from within the flag # Membership is checked against the highest priority region while flag value # can be set in any region in %orderedRegions% - if == allow { - if !||%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } } else { - if ||%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } } state-withTarget: - if %flagVal% == allow { - if %targetList% != li@null && %targetList% != li@all && %targetList% !contains %target% { - inject %FlagScript% p:event-cleanup - determine cancelled } } else { - if %targetList% == li@null || %targetList% == li@all || %targetList% contains %target% { - inject %FlagScript% p:event-cleanup - determine cancelled } } state-withTarget-withGroup: - if == allow { - if !|%thisRegion%|%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } - if %targetList% != li@null && %targetList% != li@all && %targetList% !contains %target% { - inject %FlagScript% p:event-cleanup - determine cancelled } } else { - if |%thisRegion%|%world%|%player%]> { - if %targetList% == li@null || %targetList% == li@all || %targetList% contains %target% { - inject %FlagScript% p:event-cleanup - determine cancelled } } } state-withTargetString-withGroup: - if { - define region '' - define flagObj '' } else { - foreach %orderedRegions% { - define flagObj '' - define region '%value%' - if %flagObj% != null { - foreach stop } } } - if %flagObj% == null { - define flagObj '' } - if %flagObj% != none { - if == allow { - if !||%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } - define targetList '].with[|].as_list>' - if ( %targetList% != li@null ) && ( %targetList% != li@all ) { - foreach %targetList% { - if { - inject %FlagScript% p:event-cleanup - determine cancelled } } } } else { - if ||%world%|%player%]> { - define targetList '].with[|].as_list>' - if ( %targetList% == li@null ) || ( %targetList% == li@all ) { - inject %FlagScript% p:event-cleanup - determine cancelled } - foreach %targetList% { - if { - inject %FlagScript% p:event-cleanup - determine cancelled } } } } } ############################## # Abstract methods # # state-withTarget: # - if { # - define orderedRegions '' # } # - foreach %orderedRegions% { # - define flagVal '' # - if %flagVal% == null { # - foreach next # } # - define region '%value%' # - foreach stop # } # - inject locally state-process-WithTargetNoGroup_%flagVal% # - queue clear # state-withGroup: # - if { # - define orderedRegions '' # } # - foreach %orderedRegions% { # - define flagObj '' # - if %flagObj% == null { # - foreach next # } # - define region '%value%' # - foreach stop # } # - inject locally state-process-WithGroup_ # - queue clear # state-withTarget-withGroup: # - if { # - define orderedRegions '' # } # - foreach %orderedRegions% { # - define flagObj '' # - if %flagObj% == null { # - foreach next # } # - define region '%value%' # - foreach stop # } # - inject locally state-process-WithTargetWithGroup_ # - queue clear #--------------------------------------- # Global flag pre-processors # boolean-Global: - define flagVal '' - if %flagVal% == null { - define flagVal '' } - if !%flagVal% { - inject %FlagScript% p:event-cleanup - determine cancelled } state-withGroup-Global: - if == allow { - if !|__global__|%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } } else { - if |__global__|%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } } state-withTargetString-withGroup-Global: - define flagObj '' - if %flagObj% == null { - define flagObj '' } - if %flagObj% != none { - if == allow { - if !|__global__|%world%|%player%]> { - inject %FlagScript% p:event-cleanup - determine cancelled } - define targetList '].with[|].as_list>' - if ( %targetList% != li@null ) && ( %targetList% != li@all ) { - foreach %targetList% { - if { - inject %FlagScript% p:event-cleanup - determine cancelled } } } } else { - if |__global__|%world%|%player%]> { - define targetList '].with[|].as_list>' - if ( %targetList% == li@null ) || ( %targetList% == li@all ) { - inject %FlagScript% p:event-cleanup - determine cancelled } - foreach %targetList% { - if { - inject %FlagScript% p:event-cleanup - determine cancelled } } } } } ############################## # Abstract methods # # state-withGroup-Global: # - define flagObj '' # - inject locally state-process-Global-WithGroup_ # - queue clear # state-withTarget-Global: # - inject locally state-process-Global-WithTargetNoGroup_ # - queue clear # state-withTarget-withGroup-Global: # - define flagObj '' # - inject locally state-process-Global-WithTargetWithGroup_ # - queue clear #------------------- # Global WithGroup Flag Processors # # state-process-Global-WithGroup_null: # - define flagObj '' # - inject locally state-process-Global-WithGroup_ # state-process-Global-WithGroup_none: # - foreach next # - queue clear # state-process-Global-WithGroup_allow: # - define group '' # - inject locally state-process-Global-WithGroup_deny- # state-process-Global-WithGroup_deny: # - define group '' # - inject locally state-process-Global-WithGroup_deny- # state-process-Global-WithGroup_deny-true: # - inject %FlagScript% p:event-cleanup # - determine cancelled #------------------- # Global WithTargetWithGroup Flag Processors # # state-process-Global-WithTargetWithGroup_null: # - define flagObj '' # - inject locally state-process-Global-WithTargetWithGroup_ # state-process-Global-WithTargetWithGroup_none: # - foreach next # - queue clear # state-process-Global-WithTargetWithGroup_allow: # - define group '' # - inject locally state-process-Global-WithTargetWithGroup_allow- # state-process-Global-WithTargetWithGroup_allow-true: # - define targetList '' # - if %targetList% == li@null { # - queue clear # } # - if %targetList% != li@all { # - if %targetList% !contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # } # state-process-Global-WithTargetWithGroup_allow-false: # - inject %FlagScript% p:event-cleanup # - determine cancelled # state-process-Global-WithTargetWithGroup_deny: # - define group '' # - inject locally state-process-Global-WithTargetWithGroup_deny- # state-process-Global-WithTargetWithGroup_deny-true: # - define targetList '' # - if %targetList% == li@null { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% == li@all { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } #------------------- # Global WithTargetNoGroup Flag Processors # # state-process-Global-WithTargetNoGroup_null: # - inject locally state-process-Global-WithTargetNoGroup_ # state-process-Global-WithTargetNoGroup_none: # - foreach next # - queue clear # state-process-Global-WithTargetNoGroup_allow: # - define targetList '' # - if %targetList% == 'li@null' { # - queue clear # } # - if %targetList% != li@all { # - if %targetList% !contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # } # state-process-Global-WithTargetNoGroup_deny: # - define targetList '' # - if %targetList% == li@null { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% == li@all { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } #------------------- # Region WithGroup Flag Processors # # state-process-WithGroup_null: # - define flagObj '' # - inject locally state-process-WithGroup_ # state-process-WithGroup_none: # - foreach next # - queue clear # state-process-WithGroup_allow: # - define group '' # - inject locally state-process-WithGroup_deny-|%world%|%player%].not> # state-process-WithGroup_deny: # - define group '' # - inject locally state-process-WithGroup_deny-|%world%|%player%]> # state-process-WithGroup_deny-true: # - inject %FlagScript% p:event-cleanup # - determine cancelled #------------------- # Region WithTargetWithGroup Flag Processors # # state-process-WithTargetWithGroup_null: # - define flagObj '' # - inject locally state-process-WithTargetWithGroup_ # state-process-WithTargetWithGroup_none: # - foreach next # - queue clear # state-process-WithTargetWithGroup_allow: # - define group '' # - inject locally state-process-WithTargetWithGroup_allow-|%world%|%player%]> # state-process-WithTargetWithGroup_allow-true: # - define targetList '' # - if %targetList% == li@null { # - queue clear # } # - if %targetList% != li@all { # - if %targetList% !contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # } # state-process-WithTargetWithGroup_allow-false: # - inject %FlagScript% p:event-cleanup # - determine cancelled # state-process-WithTargetWithGroup_deny: # - define group '' # - inject locally state-process-WithTargetWithGroup_deny-|%world%|%player%]> # state-process-WithTargetWithGroup_deny-true: # - define targetList '' # - if %targetList% == li@null { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% == li@all { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } #------------------- # Region WithTargetNoGroup Flag Processors # # state-process-WithTargetNoGroup_null: # - inject locally state-process-WithTargetNoGroup_ # state-process-WithTargetNoGroup_none: # - foreach next # - queue clear # state-process-WithTargetNoGroup_allow: # - define targetList '' # - if %targetList% == 'li@null' { # - queue clear # } # - if %targetList% != li@all { # - if %targetList% !contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # } # state-process-WithTargetNoGroup_deny: # - define targetList '' # - if %targetList% == li@null { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% == li@all { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } # - if %targetList% contains %target% { # - inject %FlagScript% p:event-cleanup # - determine cancelled # } #------------------------------------------------------------------------------- dRegions_Flags_CommandProcessors: type: task speed: 0 debug: false command_verifiedList: - 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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } else { - define entries '].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 delay:1t '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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } } - foreach %entries% { - if > { - define entries '' - run s@dRegions_Msg 'def:<&c><&o>%value% is not a valid !' } } - if { - run s@dRegions_Msg 'def:<&c><&o>No valid s specified!' - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@dRegions_Msg delay:1t 'def:<&c>' } - queue clear } - define currentEntries '' - 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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } - define flagValue '' } command_stringList: - 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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } - define action '' - define string ']>' - 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 delay:1t '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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } } - if { - run s@dRegions_Msg 'def:<&c><&o>No valid s specified!' - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@dRegions_Msg delay:1t 'def:<&c>' } - queue clear } - define currentEntries '' - 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 delay:1t 'def:<&c>Cleared %flag% list for region %region%' - queue clear } - define flagValue '' #