################################################################################ # # d R e g i o n s # # # Authors: |Anthony| # Version: 0.40 # dScript Version: 0.9.8-DEV_b646 # # # Dependencies: # # - dWorldEditor # - Integrates with region selection wand # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/dWE/dWorldEditor.yml # # - MessageConstructorLibrary # - Library for messaging system. # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/MessageConstructors.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 is bundled in the repo releases. # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/dRegions/flags.yml # # - Commands # - All the commands for dRegions. It is bundled in the repo releases. # - https://github.com/AnthonyAMC/Public-Denizen-Scripts/blob/master/dRegions/commands.yml # # Has my work helped you in some way? Show your support by clicking the # Like button. # Feeling generous? Get me a coffee :D # https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NPXKHCNMTGSUG #_______________________________________________________________________________ # #--- 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. # # Command Permission Description # # /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! # # Set region priority # - /drg setpriority myRegion 10 # # Set any region flags you need # - /drg flag myRegion greeting Hello ! # #--- TODO # # - Make sure players can't exit a vehicle if they do not have permission to # get back into it. # - Add vehicle-enter and vehicle-exit flags and respective list flags. # - Add vehicle-placelist flag. # - Make all minecarts work with entity-interactlist flag. # - Make the player-damage flag cover the hurt command # - Fix eating in regions with the hunger flag set # # # ################################################################################ # # dRegions Version # # Handles dRegions Versioning Checks # dRegions_Version: type: version author: Anthony name: dRegions version: 0.40 description: Denizen Region Management and Protection id: 23 # # END dRegions Version #-------------------------------------- # dRegions: type: world debug: false events: on server prestart: - inject locally loadGlobalConfig - run locally start instantly - flag server 'dRegions.loadworlds:|:' on server start: - foreach '': - define world '' - inject locally loadWorldConfig instantly - flag server 'dRegions.loadworlds:!' on shutdown: - define globalCache '' - foreach { - if %globalCache% || '' { - if { - run instantly s@msgPrefixed 'dRegions|<&3>Removing %value% cache.yml' - adjust server 'delete_file:dRegions/worlds/%value%/cache.yml' } } else { - yaml 'savefile:dRegions/worlds/%value%/cache.yml' 'id:dRegions_%value%_cache' } } on world loads: - if { - queue clear } - define world '' - inject locally loadWorldConfig instantly on script reload: - inject locally loadGlobalConfig - run locally start instantly - foreach '': - define world '' - inject locally loadWorldConfig instantly on player joins: - flag dRegions.cache:! - flag dRegions.rateLimit:! on player respawns: - if { - determine passively '>' - adjust 'health:' - wait 10t - flag 'dRegions.Respawn:!' } on entity enters portal: - define world '' - define readPath 'portal.]:player||entity>-enter' - inject s@dRegions p:event_PreProc_Config-NoTarget on portal created: - define world '' - define readPath 'portal.create' - inject s@dRegions p:event_PreProc_Config-NoTarget on system time hourly: - wait 1t - if ! { - queue clear } - if !contains 'q@dRegions_UpdateCheck' { - run locally delay:1t updateCheck 'id:dRegions_UpdateCheck' } - if !contains 'q@dRegions_SendMetrics' { - run locally delay:1t sendMetrics 'id:dRegions_SendMetrics' } start: - if !contains 'q@dRegions_UpdateCheck' { - run locally delay:1t updateCheck 'id:dRegions_UpdateCheck' } - foreach '': - flag server '%value%:!' - define flags '' - flag server 'dRegions.Flags:|:%flags%' - if { - yaml unload 'id:dRegions_eventmap' } - yaml create 'id:dRegions_eventmap' - foreach '%flags%': - define flag '%value%' - foreach '': - yaml set '%value%:->:/%flag%' 'id:dRegions_eventmap' - yaml set 'none:!' 'id:dRegions_eventmap' - foreach '': - define e '' - yaml set '%value%:!' 'id:dRegions_eventmap' - yaml set '%value%:|:' 'id:dRegions_eventmap' - if { - queue q@dRegions_saveCache stop } - run locally saveCache delay:5s id:dRegions_saveCache updateCheck: - ^if ! { - ~webget "http://one.denizenscript.com/denizen/repo/version/" save:page - ^flag server "dRegions.Version.Repo:" d:1h } - ^define repoVersion '' - ^define currentVersion '' - ^if '%repoVersion%' == 'unknown' { - run s@msgPrefixed instantly 'def:dRegions|<&7>Unable to check for update! <&7><&o>%currentVersion%<&7> is installed!' } else if '%repoVersion%' > '%currentVersion%' { - run s@msgPrefixed instantly 'def:dRegions|<&7>Update from version <&o>%currentVersion%<&7> to <&o>%repoVersion%<&7>!' } else if '%repoVersion%' != '%currentVersion%' { - run s@msgPrefixed instantly 'def:dRegions|<&7>What happened? You are on version <&o>%currentVersion%<&7> and the repo says <&o>%repoVersion%<&7>!' } sendMetrics: # - run s@msgPrefixed 'def:dRegions|<&3>Sending usage metrics...' - ~webget "http://morphanone.space/webizen.aspx/tracker?script=&version=&players=&denizen_version=&jenkins_build=&bukkit_version=" 'save:send' - if ! { - run s@msgPrefixed instantly 'def:dRegions|<&c>Metrics failed!' } loadGlobalConfig: # Reloads the global config file and generates default files if they don't exist. # Rewrites config file that does not match internal version number! - run s@msgPrefixed instantly 'def:dRegions|<&3>Loading system config file...' - define version '' - define world 'global' - define file 'config' - define hasFile '' - if %hasFile% { - yaml 'load:dRegions/config.yml' 'id:dRegions_global_config' - define isUpdate '' } else { - define isUpdate 'false' } - if !%hasFile% || %isUpdate% { - inject locally createConfigFile - run s@msgPrefixed instantly 'def:dRegions|<&7><&o> <&f><&o>%world%<&7><&o> config file!' } - if { - yaml unload 'id:dRegions_global_config' } - yaml 'load:dRegions/config.yml' 'id:dRegions_global_config' loadWorldConfig: - run s@msgPrefixed instantly 'def:dRegions|<&7>Preparing <&f><&o>%world%<&7> files...' - define version '' - foreach 'li@config|regions|inventories|cache': - define this '%value%' - define file 'worlds/%world%/%this%' - define hasFile '' - if %hasFile% { - yaml 'load:dRegions/worlds/%world%/%this%.yml' 'id:dRegions_%world%_%this%' - define isUpdate '' } else { - define isUpdate 'false' } - if !%hasFile% || %isUpdate% { - inject locally create%this%File - run s@msgPrefixed instantly 'def:dRegions|<&7><&o> <&f><&o>%world%<&7><&o> %this% file!' } - if { - yaml unload 'id:dRegions_%world%_%this%' } - yaml 'load:dRegions/worlds/%world%/%this%.yml' 'id:dRegions_%world%_%this%' # Recreate notables if they don't exist for some reason - define notables '' - foreach '': - define region '%value%' - if '%notables%' !contains 'cu@dregions_%world%_%region%' { - note 'cu@|' 'as:dregions_%world%_%region%' } reloadYaml: # A simpler reload - run s@msgPrefixed instantly 'def:dRegions|<&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 '' - foreach 'li@config|regions|inventories|cache' { - if { - yaml unload 'id:dRegions_%world%_%value%' } - yaml 'load:dRegions/worlds/%world%/%value%.yml' 'id:dRegions_%world%_%value%' } } - run s@msgPrefixed instantly 'def:dRegions|<&7><&o>System config files reloaded!' createConfigFile: - define readID 'dRegions_Configurations' - define writeID 'dRegions_%world%_config' - if ! { - yaml fix_formatting 'load:' 'id:%readID%' } - yaml create 'id:%writeID%' - define readPath '%readID%.config' - define writePath 'config' - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false| instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createRegionsFile: - 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.' - run s@ConfigFileGenerator def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' createInventoriesFile: - 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%' 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%' 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| instantly - yaml unload 'id:%readID%' - yaml 'savefile:dRegions/%file%.yml' 'id:%writeID%' clearCache: - ^define region '%1%' - ^define world '%2%' - ^define flag '%3%' - ^define type '' - ^if '%type%' == 'list' { - define type '' - define flag '' } - ^define children '' - ^foreach '': - yaml set 'cache.%type%.%value%.%flag%:!' 'id:dRegions_%world%_cache' - if { - yaml set 'cache.%type%.%value%.:!' 'id:dRegions_%world%_cache' } else { - yaml set 'cache.%type%.%value%.%flag%-overRide:!' 'id:dRegions_%world%_cache' } - ^yaml 'savefile:dRegions/worlds/%world%/cache.yml' 'id:dRegions_%world%_cache' - ^if '%region%' == '__global__' { - define plist '' } else { - define plist '' } - ^foreach '%plist%': - flag %value% 'dRegions.%world%.%region%.%flag%:!' - flag %value% 'dRegions.rateLimit.%flag%:!' - if { - flag %value% 'dRegions.%world%.%region%.:!' - flag %value% 'dRegions.rateLimit.:!' } else { - flag %value% 'dRegions.%world%.%region%.%flag%-overRide:!' - flag %value% 'dRegions.rateLimit.%flag%-overRide:!' } saveCache: - while 'true': - wait 5m - foreach '': - if ! { - yaml 'load:dRegions/worlds/%value%/cache.yml' 'id:dRegions_%value%_cache' } - yaml 'savefile:dRegions/worlds/%value%/cache.yml' 'id:dRegions_%value%_cache' # Event Preprocessors # # 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. # event_PreProc_Config: - define targetList '' # - if ']:]>||]>>' { # - determine cancelled # } - if '' { - if '' && '%targetList%' !contains '%target%' { - determine cancelled } } else { - if '' || '%targetList%' contains '%target%' { - determine cancelled } } - define targetList '' # - if ']:]>||]>>' { # - determine cancelled # } - if '' { - if '' && '%targetList%' !contains '%target%' { - determine cancelled } } else { - if '' || '%targetList%' contains '%target%' { - determine cancelled } } event_PreProc_Config-NoTarget: - if || { - determine cancelled } # # # # ################################################################################ # # Player/Entity Events # dRegions_Events_Player_Interact_Entity: type: world debug: false eventHooks: player_interact_entity events: on player right clicks entity: - if || || == item_frame { - queue clear } - if || { - queue clear } - define player '' - define object '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Interact_NPC: type: world debug: false eventHooks: player_interact_npc events: on player right clicks npc: - if || { - queue clear } - define player '' - define object '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Enters_Region: type: world debug: false eventHooks: player_teleports_toRegion|player_enters_region events: on player enters notable cuboid: - if || { - define overRide '' } - define player '' - define eLoc '' - define world '' - define oldworld '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - define oldRegions 'li@/__global__' - foreach '': - define oldRegions '%oldRegions%|/%value%' - define oldRegions '' # Ignore crossing into lower priority region and non-dRegion cuboids - if '%world%_' == '%oldworld%_' { - queue clear } # Should we fire an event when the player exits the global region? - if '' == '__global__' { - if '' != '__global__' { - event 'player exits notable cuboid' 'player:%player%' 'context:cuboids||from||to||cause|' save:exit - if == cancelled { - determine cancelled } } } - define events 'li@' - if '' == 'TELEPORT' { - define events ']>' } - define events ']>' - foreach '%events%': - define flag '%value%' - if .%flag%-override]> { - define overRide '' } - inject 's@dRegions_Flags_Processors_' - define overRide:! - event 'player entered dregion' 'player:%player%' 'context:orderedregions||to||from|' dRegions_Events_Player_Entered_dRegion: type: world debug: false eventHooks: player_entered_dregion events: on player entered dregion: - define player '' - define eLoc '' - define world '' - define orderedRegions '' - define noCancel '' - define isEnter 'true' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Exits_Region: type: world debug: false eventHooks: player_teleports_fromRegion|player_exits_region events: on player exits notable cuboid: - if || { - define overRide '' } - define player '' - define eLoc '' - define world '' - define newworld '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - define newRegions 'li@/__global__' - foreach '': - define newRegions '%newRegions%|/%value%' - define newRegions '' # Ignore crossing into lower priority region and non-dRegion cuboids - if '%world%_' == '%newworld%_' { - queue clear } - define events 'li@' - if '' == 'TELEPORT' { - define events ']>' } - define events ']>' - foreach '%events%': - define flag '%value%' - if .%flag%-overRide]> { - define overRide '' } - inject 's@dRegions_Flags_Processors_' - define overRide:! # Should we fire an event when the player enters the global region? - if '' == '__global__' { - if '' != '__global__' { - event 'player enters notable cuboid' 'player:%player%' 'context:cuboids||from||to||cause|' save:enter - if == cancelled { - determine cancelled } } } - event 'player exited dregion' 'player:%player%' 'context:orderedregions||to||from|' dRegions_Events_Player_Exited_dRegion: type: world debug: false eventHooks: player_exited_dregion events: on player exited dregion: - define player '' - define eLoc '' - define world '' - define orderedRegions '' - define noCancel '' - define isEnter 'false' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Place_Block: type: world debug: false eventHooks: player_place_block events: on player places block: - if || { - queue clear } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Break_Block: type: world debug: false eventHooks: player_break_block events: on player breaks block: - if || { - queue clear } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Right_Click: type: world debug: false # eventHooks: These are mapped in s@dRegions_Map_Interactions events: on player right clicks: - if || { - queue clear } - define target '' - define item '' - define eventObj '' # - define event ']:||>' - if '' contains '%item%' { - define event '' } else { - define event '' } - if '%event%' == 'null' { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Damaged: type: world debug: false eventHooks: player_damaged events: on player damaged: - if ( || ]||false> ) && ! { - adjust 'fire_time:0' - determine cancelled } - if '' == 'FALL' && { - flag 'dRegions.fly.noFallDamage:!' - determine cancelled } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Chat: type: world debug: false eventHooks: player_chats events: on player chats: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Break_Vehicle: type: world debug: false eventHooks: player_break_vehicle events: on player destroys vehicle: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Place_Boat: type: world debug: false eventHooks: player_place_vehicle events: on player right clicks block with boat: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Stands_On: type: world debug: false eventHooks: player_interact_switches events: on player stands on: - if || { - queue clear } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Throws_Potion: type: world debug: false eventHooks: player_throw_potion events: on player right clicks with potion: - if ! || || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Drinks_Potion: type: world debug: false eventHooks: player_throw_potion events: on player consumes potion: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Place_Armorstand: type: world debug: false eventHooks: player_place_armorstand events: on player right clicks block with armor_stand: - if || { - queue clear } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Use_Monsteregg: type: world debug: false eventHooks: player_use_spawnegg events: on player right clicks block with monster_egg: - if || { - queue clear } - define player '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Throw_Egg: type: world debug: false eventHooks: player_throw_hatchingegg|player_throw_egg events: on player throws egg: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - if { - define type 'hatchingegg' } else { - define type 'egg' } - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' # - foreach ']:hatchingegg||egg>]||li@>': - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Enters_Bed: type: world debug: false eventHooks: player_enters_bed events: on player enters bed: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Empties_Bucket: type: world debug: false eventHooks: player_empty_bucket|build events: on player empties bucket: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Fills_Bucket: type: world debug: false eventHooks: player_fill_bucket|build events: on player fills bucket: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Drops_Item: type: world debug: false eventHooks: player_drops_item events: on player drops item: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Pickup_Item: type: world debug: false eventHooks: player_pickup_item events: on player picks up item: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Place_Hanging: type: world debug: false eventHooks: player_place_hanging events: on player places hanging: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Break_Hanging: type: world debug: false eventHooks: player_break_hanging events: on player breaks hanging: - if || { - queue clear } - define player '' - define object '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Interact_Armorstand: type: world debug: false eventHooks: player_interact_armorstand events: on player right clicks at armor_stand: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Interact_Itemframe: type: world debug: false eventHooks: player_interact_itemframe events: on player right clicks item_frame: - if || { - queue clear } - define player '' - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Extinguish_BlockFire: type: world debug: false eventHooks: player_extinguish_blockfire events: on player left clicks block: - if != fire { - queue clear } - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Use_Bonemeal: type: world debug: false eventHooks: player_use_bonemeal events: on player clicks block with bone_meal: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_Changes_Foodlevel: type: world debug: false eventHooks: player_change_foodlevel events: on player changes food level: - if >= queue clear - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Player_ChangeWorld: # This is here to catch teleports between global regions as there's no other event for it. type: world debug: false eventHooks: player_changeworld events: on player teleports: - if '' == '' || '' == 'UNKNOWN' || || ( ! || ! ) { - queue clear } - flag 'dRegions.rateLimit.changeworld' d:10t - event 'player exits notable cuboid' 'context:cuboids|li&at|from||to||cause|teleport' save:exit - if == cancelled { - determine cancelled } - flag dRegions.cache:! - flag dRegions.rateLimit:! - event 'player enters notable cuboid' 'context:cuboids|li&at|from||to||cause|teleport' save:enter - if == cancelled { - determine cancelled } dRegions_Events_Player_Teleports: # %cause% can be any of the known bukkit causes. Be sure to remove the '_'. # CHORUSFRUIT|COMMAND|ENDGATEWAY|ENDPORTAL|ENDERPEARL|NETHERPORTAL|PLUGIN|SPECTATE|UNKNOWN type: world debug: false eventHooks: player_teleports|player_teleport_via_%cause% events: on player teleports: - if || { - queue clear } - define player '' - define eLoc '' - define world '' - define cuboids '].deduplicate>' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - define events '' - define events ']||li@>]>' - foreach '%events%': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Spawn: type: world debug: false eventHooks: entity_spawn events: on entity spawns: - define object '' - define target '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Damage_Entity: type: world debug: false eventHooks: player_damage_player|player_damage_entity|player_damage_npc|player_damage_armorstand|player_damage_itemframe|entity_damage_entity|entity_damage_player|entity_damage_npc|entity_damage_armorstand|entity_damage_itemframe|npc_damage_npc|npc_damage_player|npc_damage_entity|npc_damage_itemframe|npc_damage_armorstand events: on entity damages entity: - if ! || ! { - queue clear } # - define atype ']:npc||>' - if { - define atype 'npc' } else { - define atype '' } # - define dtype ']:npc||]>]:||>>' - if { - define dtype 'npc' } else if == armor_stand { - define dtype 'armorstand' } else if == item_frame { - define dtype 'itemframe' } else { - define dtype '' } - define attacker '' - define defender '' - define world '' - define orderedRegions 'li@/__global__' - foreach '].deduplicate.filter[starts_with[cu@dregions_%world%]].parse[after[cu@dregions_%world%_]]>': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - define object ']>' - define player ']>' - define target '' - define eLoc '' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Target_Entity: type: world debug: false eventHooks: entity_target_entity|entity_target_player|entity_target_npc|entity_target_armorstand|entity_target_itemframe|npc_target_npc|npc_target_player|npc_target_entity|npc_target_itemframe|npc_target_armorstand events: on entity targets entity: # - define atype ']:npc||>' - if ! || ! { - queue clear } - if { - define atype 'npc' } else { - define atype '' } # - define dtype ']:npc||]>]:||>>' - if { - define dtype 'npc' } else if == armor_stand { - define dtype 'armorstand' } else if == item_frame { - define dtype 'itemframe' } else { - define dtype '' } - define attacker '' - define defender '' - define world '' - define orderedRegions 'li@/__global__' - foreach '].deduplicate.filter[starts_with[cu@dregions_%world%]].parse[after[cu@dregions_%world%_]]>': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - define object ']>' - define player ']>' - define target '' - define eLoc '' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Explode: type: world debug: false events: on entity explodes: - define readPath 'entity.explode' - define target '' - define eLoc '' - define world '' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Change_Block: type: world debug: false events: on entity changes block: # Maybe we want to check block changes here for explosions? # It's currently disabled because even if the explosion is cancelled, the block # change event(s) still fire (yes, one explosion can have multiple block changes) - if == soil || li@player|falling_block|creeper|primed_tnt|unknown contains { - queue clear } # This is generic rateLimiter and does not run a full allow/deny flag process. It is required due to the high frequency of snowmen. - if queue clear - if { - if { - queue clear } - determine cancelled } - define object '' - define target '' - define eLoc '' - define world '' - define readPath 'entity.changeBlock' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Fallingblock_Change_Block: type: world debug: false eventHooks: falling_sand|falling_gravel events: on falling_block changes block: - if queue clear - if { - if { - queue clear } - determine cancelled } - define mat '' # - if li@sand|gravel !contains %mat% queue clear - define eLoc '' - define world '' - define readPath 'physics.%mat%' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - flag 'pl:' - flag 'pr:' - run locally delay:1t instantly track 'def:||%world%|%mat%' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' track: - define or 'li@/__global__' - while '': - if '' == '' { - wait 1t - while next } - define orderedRegions '%or%' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - if '' != '' { - modifyblock %4% no_physics - remove %1% - queue clear } - flag %1% 'pl:' - wait 1t dRegions_Events_Entity_Form_Block: type: world debug: false events: on entity forms block: - if { - if { - queue clear } - determine cancelled } - define readPath 'entity.changeBlock' - define object '' - define target '' - define eLoc '' - define world '' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' # Handles 3 events: npc_dies entity_dies player_dies dRegions_Events_Entity_Dies: type: world debug: false eventHooks: npc_dies|entity_dies|player_dies events: on entity dies: # - define target ']:npc||>' - if { - define target 'npc' } else { - define target '' } # - define player ']:||null>' - if '%target%' == 'Player' { - define player '' } else { - define player 'null' } - define object '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Trample_Crops: type: world debug: false eventHooks: entity_trample_crops|player_trample_crops events: on entity changes soil: - define eLoc '' - define world '' - define type '' - define readPath 'trample-crops.%type%' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Entity_Break_Hanging: type: world debug: false eventHooks: entity_break_itemframe|entity_break_painting events: on entity breaks hanging: - if == player { - queue clear } - define eLoc '' - define world '' - define type '' - define readPath 'entity-break-%type%' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' # ################################################################################ # # World Events # dRegions_Events_Block_Ignites: type: world debug: false eventHooks: lava_fire|fire_spread events: on block ignites: - define eLoc '' - define world '' - define target '' - define readPath 'fire.' - choose '': - case 'ENDER_CRYSTAL': - define entity '' - inject s@dRegions p:event_PreProc_Config-NoTarget - case 'EXPLOSION': - define entity '' - inject s@dRegions p:event_PreProc_Config-NoTarget - case 'FIREBALL': - define entity '' - inject s@dRegions p:event_PreProc_Config-NoTarget - case 'FLINT_AND_STEEL': - define player '' - if || { - queue clear } - inject s@dRegions p:event_PreProc_Config-NoTarget - case 'LAVA': - inject s@dRegions p:event_PreProc_Config - case 'SPREAD': - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach ']||li@>': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Block_Burns: type: world debug: false eventHooks: block_burns events: on block burns: - define eLoc '' - define world '' - define target '' - define readPath 'fire.destroyBlocks' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Ice_Forms: type: world debug: false eventHooks: blockform_ice events: on ice forms: - define eLoc '' - define world '' - define readPath 'blockform.ice' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Snow_Form: type: world debug: false eventHooks: blockform_snow events: on snow forms: # This tries to account for snowmen but can result in snow forming on restricted blocks as the entity grief flag is effectively responsible for the event. - define cub 'cu@|' - if ! { - queue clear } - define eLoc '' - define world '' - define target '' - define readPath 'blockform.snow' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Soil_Fades: type: world debug: false eventHooks: blockfade_soil events: on soil fades: - define eLoc '' - define world '' - define readPath 'blockfade.soil' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Ice_Fades: type: world debug: false eventHooks: blockfade_ice events: on ice fades: - define eLoc '' - define world '' - define readPath 'blockfade.ice' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Snow_Fades: type: world debug: false eventHooks: blockfade_snow events: on snow fades: - define eLoc '' - define world '' - define readPath 'blockfade.snow' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Block_Spread: type: world debug: false eventHooks: blockspread_grass|blockspread_mycel|blockspread_mushroom|blockspread_vines events: on block spreads: - define mat '' - if li@grass|mycel|mushroom|vines !contains %mat% queue clear - define eLoc '' - define world '' - define readPath 'spread.%mat%' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Liquid_Spread: type: world debug: false eventHooks: water_spreads|lava_spreads events: on liquid spreads: - if '' == '' queue clear - define mat '' - if li@water|lava !contains %mat% queue clear - define eLoc '' - define target '' - define world '' - define readPath 'spread.%mat%' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' # Block liquid from crossing region borders - if '' != '' { - define regionPri 'li@/__global__' - foreach '' { - define regionPri '%regionPri%|/%value%' } - if '' != '' { - determine cancelled } } - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Lightning_Strikes: type: world debug: false eventHooks: lightning_strikes events: on lightning strikes: - define eLoc '' - define world '' - define target '' - define readPath 'lightning-strike' - inject s@dRegions p:event_PreProc_Config - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Leaf_Decay: type: world debug: false eventHooks: blockfade_leaves events: on leaves decay: - define eLoc '' - define world '' - define readPath 'blockfade.leaves' - inject s@dRegions p:event_PreProc_Config-NoTarget - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Item_Spawn: type: world debug: false eventHooks: '%item%_spawn' events: on item spawns: - define eLoc '' - define world '' - define target '' - define object '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - define events '' - define events ']>' - foreach '%events%': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Potion_Splash: type: world debug: false eventHooks: potion_splash events: on potion splash: - define player 'null' - define eLoc '' - define cuboids '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Pistons: type: world debug: false eventHooks: piston_extend|piston_retract events: on piston extends: # - define lastBlock ']:||].add[]>>' - if == 0 { - define lastBlock } else { - define lastBlock ].add[]> } - define eLoc '' - define world '' - define originRegions 'li@/__global__' - foreach '': - define originRegions '%originRegions%|/%value%' - define originRegions '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' # Block piston blocks from crossing region borders - if '' != '' { - determine cancelled } - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' on piston retracts: # - define lastBlock ']:||].add[]>>' - if == 0 { - define lastBlock } else { - define lastBlock ].add[]> } - define eLoc '' - define world '' - define originRegions 'li@/__global__' - foreach '': - define originRegions '%originRegions%|/%value%' - define originRegions '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' # Block piston blocks from crossing region borders - if '' != '' { - determine cancelled } - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' dRegions_Events_Issue_Command: type: world debug: false eventHooks: player_command|server_command events: on command: # - define type ']:server||player>' - define target ' ' - define target '' - define delimiter ' ; ' - if { - define type 'server' - goto 'FLAGS' } - define type 'player' - define player '' - define eLoc '' - define world '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - mark 'FLAGS' - foreach '': - define flag '%value%' - inject 's@dRegions_Flags_Processors_' # ################################################################################ # # dRegions Other Utilities # # Other Utility functions used throughout dRegions # #-------------------------------------- # 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. # Since this method is shared by highestOnly and orderedRegions lookups we can not return the default flag value. # Doing so would interfere with the orderedRegions lookup. Flag processors are responsible for looking up defaults # after they have traversed all applicable regions. # type: procedure definitions: world|region|flag debug: false script: - define return '' - while '': - if { - define region '' - define return '' - while next } - while stop - determine '%return%' # - determine ']:%return%||]:global||region>Default]||none>>' # - if %return% == 'none' { # - if %region% == '__global__' { # - determine '' # } # - determine '' # } #-------------------------------------- # dRegions_FlagLookup_H: # Get a flag value at a location. For use with flags that set highestOnly. # If the location does not set the flag value, lookup the default set in the flagscript. # type: procedure definitions: flag|loc debug: false script: - define w '' # - define orderedRegions '/__global__]>' # - define orderedRegions '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - define region '' - define return '' - define child '%region%' - while '': - if { - define child '' - define return '' } else { - while stop } - if '%return%' == 'none' { - if '%region%' == '__global__' { - determine '/%region%' } - determine '/%region%' } - determine '%return%/%region%' # #--------------------------------------- # dRegions_FlagLookup_O: # Get a flag value at a location. For use with flags that traverse orderedRegions. # If the location does not set the flag value, lookup the default set in the flagscript. # type: procedure definitions: flag|loc debug: false script: - define w '' # - define orderedRegions '/__global__]>' # - define orderedRegions '' - define orderedRegions 'li@/__global__' - foreach '': - define orderedRegions '%orderedRegions%|/%value%' - define orderedRegions '' - foreach '%orderedRegions%': - define region '%value%' - define return '' - define child '%region%' - while '': - if { - define child '' - define return '' } else { - while stop } - if '%return%' != 'none' { - foreach stop } - if '%return%' == 'none' { - if '%region%' == '__global__' { - determine '/%region%' } - determine '/%region%' } - determine '%return%/%region%' # #--------------------------------------- # dRegions_PlayerMatchRegionGroup: # Check if a player matches a region flag group setting. # type: procedure definitions: group|region|world|player debug: false script: - define playerUUID '' - define playerGroups '' - choose '%group%': - case 'all': - determine 'true' - case 'members': # - determine '' - if || { - determine 'true' } - while '_regions].contains[regions..parent]>': - define region '' - if || { - determine 'true' } - determine 'false' - case 'nonmembers': # - determine '].not>' - if || || || { - determine 'false' } - while '_regions].contains[regions..parent]>': - define region '' - if || || || { - determine 'false' } - determine 'true' - case 'owners': # - determine '' - if || { - determine 'true' } - while '_regions].contains[regions..parent]>': - define region '' - if || { - determine 'true' } - determine 'false' - case 'nonowners': # - determine '' - if || { - determine 'false' } - while '_regions].contains[regions..parent]>': - define region '' - if || { - determine 'false' } - determine 'true' # #--------------------------------------- # dRegions_IsOwner: # A procedure script to check if a player is a region owner # type: procedure definitions: region|world|player debug: false script: - define playerUUID '' - define playerGroups '' - if || { - determine 'true' } # Regions inherit members and owners. - while '_regions].contains[regions..parent]>': - define region '' - 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 debug: false script: - define playerUUID '' - define playerGroups '' - if || { - determine 'true' } # Regions inherit members and owners. - while '_regions].contains[regions..parent]>': - define region '' - if || { - determine 'true' } - determine 'false' # #-------------------------------------- # # Command Permission Check Procedure script # # Used to check if a player has permission to use a command. # # I have to think about this more... # # A procedure script to check if a player has any of the required permissions for a command # # # dRegions_HasPerm_Command: type: procedure debug: false definitions: command|player|region|option script: - if == null { - if { - determine true } else { - determine false } } - if %option% == null { - inject locally permCheck } else { - inject locally permCheck-%command% } permCheck: - narrate "permCheck " - if || { - determine true } - define perms "" - foreach %perms% { - define perm '' - if { - determine true } } - determine false permCheck-flag: - define flag '%option%' - narrate "permCheck-flag >" - if || { - determine true } - define perms "" - foreach %perms% { - define perm '' - narrate " %perm%" - if { - determine true } } - determine false # #--------------------------------------- # # Simple Instancing API Hook # # Support for simple instancing API by BlackCoyote # - http://one.denizenscript.com/denizen/repo/entry/94 # # Instanced worlds will be an exact replica of the blueprint world. # Completely configure your blueprint world with any world configs, regions, # and flags, and every instance cloned from the blueprint will have all of the # same settings. dRegions data will be removed when the instance is destroyed. # dRegions_SIAPI_Hook: type: world debug: false events: on instance created: - run instantly s@dRegions_CopyWorld 'def:|' on instance closed: - run instantly s@dRegions_DestroyWorld 'def:' # #--------------------------------------- # # Copy all dRG world data from one world to another and create notable cuboids. # # Usage: # - run instantly s@dRegions_CopyWorld 'def:original|copy' # dRegions_CopyWorld: type: task debug: false definitions: orig|world script: - if ! { - run s@msgPrefixed instantly delay:1t 'def:dRegions|<&c>%orig% is an unknown world!' - queue clear } - foreach 'li@config|regions|inventories|cache': - define this '%value%' - define file 'worlds/%orig%/%this%' - if { - define readID 'dRegions_%orig%_%this%' - if ! { - yaml 'load:dRegions/%file%.yml' 'id:%readID%' } - define writeID 'dRegions_%world%_%this%' - define readPath '%this%' - define writePath '%this%' - yaml create 'id:%writeID%' - run s@ConfigFileGenerator instantly 'def:%readID%|%writeID%|%readPath%|%writePath%|false|false|false' - yaml 'savefile:dRegions/worlds/%world%/%this%.yml' 'id:%writeID%' } else { - inject s@dRegions create%this%File } - if { - yaml unload 'id:%writeID%' } - yaml 'load:dRegions/worlds/%world%/%this%.yml' 'id:%writeID%' - foreach '': - note 'cu@|' 'as:dregions_%world%_%value%' # #--------------------------------------- # # Destroy all dRG data for a world # # Usage: # - run instantly s@dRegions_DestroyWorld 'def:world' # dRegions_DestroyWorld: type: task debug: false definitions: world script: - if ! { - run s@msgPrefixed instantly delay:1t 'def:dRegions|<&c>%world% is an unknown world!' - queue clear } - foreach '': - note remove 'as:dregions_%world%_%value%' - foreach 'li@config|regions|inventories|cache': - define this '%value%' - define file 'dRegions/worlds/%world%/%this%' - define readID 'dRegions_%world%_%this%' - if { - yaml unload 'id:%readID%' } - if { - adjust server 'delete_file:%file%.yml' } # #--------------------------------------- # dRegions_RegionSort: # An attempt to sort regions by priority. The existing method is faster. # Keeping for reference and lulz. type: procedure definitions: region1|region2 debug: false script: - define region1pri '' - define region2pri '' - if %region1pri% > %region2pri% { - determine -1 } - if %region1pri% < %region2pri% { - determine 1 } - if %region1pri% == %region2pri% { - determine 0 } # #--------------------------------------- # dRegions_RegionExists: # A procedure script to check if a region exists # type: procedure definitions: region|world 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: # Used sparingly in some commands. Events implement this method directly. # Filter a list of regions by priority in descending order # type: procedure definitions: world|regions 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 debug: false script: - define selectedCuboid '' - define regions '' - define notables '' - define overlaps ']].parse[replace[cu@dregions_%world%_]]||li@>' - define orderedRegions ']||li@>' - foreach '%orderedRegions%': - if ].not> { - determine true } - 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_CuboidIsWithinCuboid: # Not used anywhere since Denizen implemented its own which is faster. # Keeping for reference. # Checks if one cuboid is completely within another cuboid # type: procedure definitions: inner|outer debug: false script: - define innerCuboid '' - define outerCuboid '' - if ]> && ]> && ]> && ]> && ]> && ]> { - determine true } else { - determine false } # #--------------------------------------- # dRegions_CanUse_Block: # Not used internally. It's intended as part of an API for external scripts. # 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 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: # Not used anywhere, but still fun to look at, though totally bonkers. # 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 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: # This should mostly be unused since # exists in MessageConstructorLibrary # Turn a long string into a list of smaller strings type: procedure definitions: string|targetLen 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 brake '' - define increment '' - define passtrim ']:%brake%||>]>' - define lines '>' - define stringLen '' } - if { - while stop } } - determine '' } else { - determine '' } # # END other utilities #-------------------------------------- # # dRegions author banner items # # Banner items representing the authors # dRegions_Author_Anthony: type: item debug: false material: i@human_skull display name: "<&f> &pipeAnthony&pipe" text_name: '|Anthony|' url: 'http://mineconomy.org' lore: - <&7> Owner<&co> <&e>M<&6>ine<&e>C<&6>onomy <&e>N<&6>etwork - <&5>------------------------- - <&7> - <&7> I<&sq>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 eventHooks to right clicks # dRegions_Map_Interactions: type: yaml data debug: false block: # Containers chest: player_interact_container ender_chest: player_interact_container locked_chest: player_interact_container trapped_chest: player_interact_container dispenser: player_interact_container hopper: player_interact_container dropper: player_interact_container # Doors trap_door: player_interact_door iron_trapdoor: player_interact_door wooden_door: player_interact_door iron_door_block: player_interact_door spruce_door: player_interact_door birch_door: player_interact_door jungle_door: player_interact_door dark_oak_door: player_interact_door acacia_door: player_interact_door fence_gate: player_interact_door spruce_fence_gate: player_interact_door birch_fence_gate: player_interact_door jungle_fence_gate: player_interact_door dark_oak_fence_gate: player_interact_door acacia_fence_gate: player_interact_door # Switches lever: player_interact_switches wood_button: player_interact_switches stone_button: player_interact_switches wood_plate: player_interact_switches stone_plate: player_interact_switches iron_plate: player_interact_switches gold_plate: player_interact_switches # Utility Blocks workbench: player_interact_utilityBlocks furnace: player_interact_utilityBlocks burning_furnace: player_interact_utilityBlocks brewing_stand: player_interact_utilityBlocks enchantment_table: player_interact_utilityBlocks anvil: player_interact_utilityBlocks beacon: player_interact_utilityBlocks jukebox: player_interact_utilityBlocks note_block: player_interact_utilityBlocks # cauldron: useUtility # tnt: useUtility # Other blocks that change when clicked regardless of item in hand flower_pot: player_interact_blocks cake_block: player_interact_blocks diode_block_on: player_interact_blocks diode_block_off: player_interact_blocks redstone_comparator_off: player_interact_blocks redstone_comparator_on: player_interact_blocks block_withItem: # jukebox: player_interact_utilityBlocks/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: player_interact_utilityBlocks/bucket|water_bucket|glass_bottle tnt: player_interact_utilityBlocks/flint_and_steel activator_rail: player_place_vehicle/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart detector_rail: player_place_vehicle/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart powered_rail: player_place_vehicle/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart rails: player_place_vehicle/minecart|storage_minecart|powered_minecart|explosive_minecart|hopper_minecart|command_minecart stationary_water: player_place_vehicle/boat water: player_place_vehicle/boat mob_spawner: player_interact_blocks/monster_egg item: gold_record: jukebox glass_bottle: cauldron flint_and_steel: tnt dye_colors: black: 0 red: 1 green: 2 brown: 3 blue: 4 purple: 5 cyan: 6 silver: 7 gray: 8 pink: 9 lime: 10 yellow: 11 light_blue: 12 magenta: 13 orange: 14 white: 15 # # 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.29 clear_cache_on_restart: false stats: About: This allows sending basic dRegions usage info to the Script Tracker system created by BlackCoyote. Doing this helps me focus my development efforts. Please enable webget in the Denizen config.yml file and here to participate. useStats: true regions: enable: true invincibility-removes-mobs: false invincibility-confuses-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 leaves: true lightning-strike: true lightning-strike-list: [] trample-crops: player: true entity: 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: b: [] sg: [] st: [] stg: [] stsg: [] 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! ################################################################################# # # Region flag pre-processors # # * NOTES * # - Entity flags exist in denizen now and can be used as rate limiters # - NIGHTMARE flag - enter bed transport to nightmare. Creates a pseudorandom instance. Hunt for a bed to get out. # #--------------------------------------- # # State-withTarget-withGroup # dRegions_Flags_Processors_stg: type: task debug: false script: - define thisRegion '' # This is a rate limiter implemented BEFORE caching. The idea here is that if the player and event are in # the same region (even Global) we can safely expect that the values will be consistent (because we clear # rateLimit values on region enter/exit). Normal processing will follow if the rateLimit value is stale. # rateLimit value is stored as a boolean. # Rate limiter - if '' == '' { - define sameRegion 'true' - if { - define a '' - goto 'b' } } else { - define sameRegion 'false' } # Cache values can be none, true, or false. If the cache is set that means we have already done a flag # lookup once before and can skip the lookup. Cache values are cleared when regions are modified, and # optionally on server restart. # A cache value of none is treated as true, but will allow the lookup process to continue. A cache value # of true or false stops the lookup process and goes to the determination. # Return format for %flagObj% is action/group actions: allow deny none group: all members nonmembers owners nonowners # The /all is added on to the end of the flag object just in case someone doesn't specify the group. It is safely ignored if it is set. # The uuid and prefix are used to help create a yaml friendly node structure for the cache - define uuid '' - define prefix '' - define listflag '' # First we check the flag if it only wants the highest priority region. - if '' { - if { - define a '' - goto 'a' } - define flagObj '/all' - define targetList '' # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList '' } - define c '|%thisRegion%|%world%|%player%]>]>' # - if '' && '|%thisRegion%|%world%|%player%]>' { # - define c 'true' # } # else { # - define c 'false' # } # - define a ']:||%c%>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.stg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - goto 'a' } # Parse %orderedRegions% until the %flagObj% has a value. Not sure if %targetList% should be filled independently, only in # relation to %thisRegion%, or as it is now where it settles on the first none empty value. - define targetlist 'li@none' - define s '' - foreach '%orderedRegions%': - define thisRegion '%value%' - if { - define a '' - if '%a%' == 'none' { - define a 'true' - foreach next } - goto 'a' } # - define targetList ']:||%targetList%>' - if '%targetList%' == 'li@none' { - define targetList '' } - define flagObj '/all' - if %loop_index% != %s% { - if { - define a 'true' - yaml set 'cache.stg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:none' 'id:dRegions_%world%_cache' - foreach next } } # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList '' } - define c '|%thisRegion%|%world%|%player%]>]>' # - if '' && '|%thisRegion%|%world%|%player%]>' { # - define c 'true' # } # else { # - define c 'false' # } # - define a ']:||%c%>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.stg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - foreach stop # Set the rateLimit if applicable - mark 'a' - if %sameRegion% { - flag %player% 'dRegions.rateLimit.%flag%.%target%:%a%' } # Process determinations - mark 'b' - if '%a%' || { - if '' contains 'event-allowed' { - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' } - foreach next - queue clear } - if '' contains 'msg_cancelled' { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' } } - if '' contains 'event-cancelled' { - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' } - if { - foreach next - queue clear } - determine cancelled # # END stg #--------------------------------------- # # State-withTarget # dRegions_Flags_Processors_st: type: task debug: false script: - define thisRegion '' - define listflag '' - if '' { - if { - define a '' - goto 'a' } - define flagObj '' - define targetList '' # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList '' } - define c '' - if '%flagObj%' == 'deny' { - define a '' } else { - define a '%c%' } - yaml set 'cache.st.%thisRegion%.%flag%.%target%:%a%' 'id:dRegions_%world%_cache' - goto 'a' } - define targetlist 'li@none' - define s '' - foreach '%orderedRegions%': - define thisRegion '%value%' - if { - define a '' - if '%a%' == 'none' { - define a 'true' - foreach next } - goto 'a' } - if '%targetList%' == 'li@none' { - define targetList '' } - define flagObj '' - if %loop_index% != %s% { - if '%flagObj%' == 'none' { - define a 'true' - yaml set 'cache.st.%thisRegion%.%flag%.%target%:none' 'id:dRegions_%world%_cache' - foreach next } } # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList '' } - define c '' - if '%flagObj%' == 'deny' { - define a '' } else { - define a '%c%' } - yaml set 'cache.st.%thisRegion%.%flag%.%target%:%a%' 'id:dRegions_%world%_cache' - foreach stop - mark 'a' - if '%a%' || { - if '' contains 'event-allowed' { - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' } - foreach next - queue clear } - if '' contains 'msg_cancelled' { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' } } - if '' contains 'event-cancelled' { - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' } - if { - foreach next - queue clear } - determine cancelled # # END st #--------------------------------------- # # State-withGroup # dRegions_Flags_Processors_sg: type: task debug: false script: - define thisRegion '' - if '' == '' { - define sameRegion 'true' - if { - define a '' - goto 'b' } } else { - define sameRegion 'false' } - define uuid '' - define prefix '' - if '' { - if { - define a '' - goto 'a' } - define flagObj '/all' - if { - if '%thisRegion%' == '__global__' { - define flagObj '/all' } else { - define flagObj '/all' } } - define c '|%thisRegion%|%world%|%player%]>' # - define a ']:||%c%>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.sg.%thisRegion%.%flag%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - goto 'a' } - define s '' - foreach '%orderedRegions%': - define thisRegion '%value%' - if { - define a '' - if '%a%' == 'none' { - define a 'true' - foreach next } - goto 'a' } - define flagObj '/all' - if %loop_index% != %s% { - if { - define a 'true' - yaml set 'cache.sg.%thisRegion%.%flag%.%prefix%.%uuid%:none' 'id:dRegions_%world%_cache' - foreach next } } - if { - if '%thisRegion%' == '__global__' { - define flagObj '/all' } else { - define flagObj '/all' } } - define c '|%thisRegion%|%world%|%player%]>' # - define a ']:||%c%>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.sg.%thisRegion%.%flag%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - foreach stop - mark 'a' - if %sameRegion% { - flag %player% 'dRegions.rateLimit.%flag%:%a%' } - mark 'b' - if '%a%' || { - if '' contains 'event-allowed' { - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' } - foreach next - queue clear } - if '' contains 'msg_cancelled' { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' } } - if '' contains 'event-cancelled' { - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' } - if { - foreach next - queue clear } - determine cancelled # # END sg #--------------------------------------- # # State-withTargetString-withGroup # dRegions_Flags_Processors_stsg: type: task debug: false script: - define thisRegion '' - if '' == '' { - define sameRegion 'true' - if { - define a '' - goto 'b' } } else { - define sameRegion 'false' } - define uuid '' - define prefix '' - define listflag '' - if '' { - if { - define a '' - goto 'a' } - define flagObj '/all' - define targetList ']>' # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList ']||none>' } - define c '|%thisRegion%|%world%|%player%]>]>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.stsg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - goto 'a' } - define targetlist 'li@none' - define s '' - foreach '%orderedRegions%': - define thisRegion '%value%' - if { - define a '' - if '%a%' == 'none' { - define a 'true' - foreach next } - goto 'a' } - if '%targetList%' == 'li@none' { - define targetList ']>' } - define flagObj '/all' - if %loop_index% != %s% { - if { - define a 'true' - yaml set 'cache.stsg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:none' 'id:dRegions_%world%_cache' - foreach next } } # - define default ']:globalDefault||regionDefault>' - if '%thisRegion%' == '__global__' { - define default 'globalDefault' } else { - define default 'regionDefault' } - if { - define flagObj '/all' } - if '%targetList%' == 'li@none' { - define targetList ']||none>' } - define c '|%thisRegion%|%world%|%player%]>]>' - if { - define a '' } else { - define a '%c%' } - yaml set 'cache.stsg.%thisRegion%.%flag%.%target%.%prefix%.%uuid%:%a%' 'id:dRegions_%world%_cache' - foreach stop - mark 'a' - if %sameRegion% { - flag %player% 'dRegions.rateLimit.%flag%.%target%:%a%' } - mark 'b' - if '%a%' || { - if '' contains 'event-allowed' { - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' } - foreach next - queue clear } - if '' contains 'msg_cancelled' { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' } } - if '' contains 'event-cancelled' { - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' } - if { - foreach next - queue clear } - determine cancelled # # END stsg #--------------------------------------- # # Testing an alternate method. This process took an average of 1ms longer AND lackd the ability to set a cache at every level. # test_boolean: # - if '' { # - define f '' # } # else { # - define f '' # } # - define a '' # - define thisRegion '' # - if '%a%' == 'false' { # - yaml set 'cache.test_boolean.%thisRegion%.%flag%:false' 'id:dRegions_%world%_cache' # - if '' contains 'event-cancelled' { # - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' # } # - if { # - foreach next # - queue clear # } # - determine cancelled # } # - yaml set 'cache.test_boolean.%thisRegion%.%flag%:true' 'id:dRegions_%world%_cache' # - if '' contains 'event-allowed' { # - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' # } # #dRegions_Flags_Processors_b: # type: task # debug: false # script: # - if '' { # - define thisRegion '' # - if { # - define a '' # - goto 'a' # } # - define flagObj '' # - if '%flagObj%' == 'none' { # - if '%thisRegion%' == '__global__' { # - define flagObj '' # } # else { # - define flagObj '' # } # } # - if '%flagObj%' == 'false' { # - define a 'false' # } # else { # - define a 'true' # } # - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' # - goto 'a' # } # - define s '' # - foreach '%orderedRegions%': # - define thisRegion '%value%' # - if { # - define a '' # - if '%a%' == 'none' { # - define a 'true' # - foreach next # } # - goto 'a' # } # - define flagObj '' # - if '%loop_index%' != '%s%' { # - if '%flagObj%' == 'none' { # - define a 'true' # - yaml set 'cache.b.%thisRegion%.%flag%:none' 'id:dRegions_%world%_cache' # - foreach next # } # - define a '%flagObj%' # - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' # - goto 'a' # } # - if '%flagObj%' == 'none' { # - if '%thisRegion%' == '__global__' { # - define flagObj '' # } # else { # - define flagObj '' # } # } # - if '%flagObj%' == 'false' { # - define a 'false' # } # else { # - define a 'true' # } # - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' # - mark 'a' # - if '%a%' { # - if '' contains 'event-allowed' { # - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' # } # - foreach next # - queue clear # } # - if '' contains 'msg_cancelled' { # - if { # - flag %player% dRegions.Message_Cooldown duration:3s # - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' # } # } # - if '' contains 'event-cancelled' { # - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' # } # - if { # - foreach next # - queue clear # } # - determine cancelled #--------------------------------------- # # Boolean # dRegions_Flags_Processors_b: type: task debug: false script: - define thisRegion '' - if '' { - define a '' - goto '%a%' - mark 'a' - define a '' - if '%a%' == 'none' { - if '%thisRegion%' == '__global__' { - define a '' } else { - define a '' } } - if '%a%' != 'false' { - define a 'true' } - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' - goto '%a%' } - define s '' - foreach '%orderedRegions%': - define thisRegion '%value%' - define a '' - goto '%a%' - mark 'none' - define a 'true' - foreach next - mark 'b' - define a '' - if '%loop_index%' != '%s%' { - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' - goto '%a%' - mark 'none' - define a 'true' - foreach next } - if '%a%' == 'none' { - if '%thisRegion%' == '__global__' { - define a '' } else { - define a '' } } - if '%a%' != 'false' { - define a 'true' } - yaml set 'cache.b.%thisRegion%.%flag%:%a%' 'id:dRegions_%world%_cache' - goto '%a%' - mark 'false' - if { - goto 'true' } - if '' contains 'msg_cancelled' { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t 'player:%player%' 'def:dRegions|<&c><&o>>' } } - if '' contains 'event-cancelled' { - inject 's@dRegions_Flag_%flag%' 'p:event-cancelled' } - if { - foreach next - queue clear } - determine cancelled - mark 'true' - if '' contains 'event-allowed' { - inject 's@dRegions_Flag_%flag%' 'p:event-allowed' } # # END boolean #--------------------------------------- # dRegions_Flags_Processors_string: type: task debug: false script: # It is possible to send messages for /any/ dRegions event. Just make a new string flag. - define thisRegion '' - if '' { - define val '' - if '%val%' != 'none' { - goto 'DISPLAY' } - goto 'END' } - foreach '%orderedRegions%' { - define thisRegion '%value%' - define val '' - if '%val%' != 'none' { - goto 'DISPLAY' } } - if '%val%' == 'none' { - goto 'END' } - mark 'DISPLAY' - define val 'name<&pc>].with[].parse_color.replace[<<>].replace[<>>]>' - choose '': - case 'narrate': - run s@msgPrefixed 'def:dRegions|%val%' - case 'bossbar': - adjust %player% 'action_bar:%val%' - case 'console': - announce to_console '<&4>[<&6>dRegions<&4>] %val%' - case 'title': - define title '' - define sub '' - title 'title:' 'subtitle:' - mark 'END' # # END string #--------------------------------------- # dRegions_Flags_Processors_custom: type: task debug: false script: - inject 's@dRegions_Flag_%flag%' 'p:event' # # # END custom #--------------------------------------- # dRegions_Flags_Processors_number: type: task debug: false script: - inject 's@dRegions_Flag_%flag%' 'p:event' # # # END number #--------------------------------------- # dRegions_Flags_Processors_location: type: task debug: false script: - inject 's@dRegions_Flag_%flag%' 'p:event' # # # END location #--------------------------------------- # # # # END Region Flag Processors #--------------------------------------- # ################################################################################ # # stg Flag Scripts # dRegions_Flag_PVE: type: item debug: false material: i@paper display name: "<&4>[<&6>PVE<&4>]" lore: - <&5>Can players damage mobs event_hooks: player_damage_entity event_priority: 10 event_player: attacker event_target: defender region_highestOnly: true flag_type: stg flag_name: PVE flag_targetList: PVE-Moblist flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. msg_cancelled: 'You can not attack s here!' event-cancelled: - remove dRegions_Flag_Mob-Damage: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Damage<&4>]" lore: - <&5>Can mobs damage players event_hooks: entity_damage_player event_priority: 10 event_player: defender event_target: attacker region_highestOnly: true flag_type: stg flag_name: Mob-Damage flag_targetList: Mob-DamageList flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. event-cancelled: - remove - attack %object% target:cancel - if && { - run delay:1t locally wander 'def:%object%|%world%' } else if && { - remove %object% } wander: - ^adjust %1% has_ai:false - ^repeat 5 { - ^if ! { - queue clear } - ~walk %1% '].horizontal.is[more].than[5]].random.add[0,1,0]>' } - ^if ! queue clear - ^if && { - remove %object% } else { - adjust %1% has_ai:false } dRegions_Flag_Mob-Target: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Target<&4>]" lore: - <&5>Can mobs target players event_hooks: entity_target_player event_priority: 0 event_target: attacker event_player: defender region_highestOnly: true flag_type: stg flag_name: Mob-Target flag_targetList: Mob-TargetList flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. event-cancelled: - attack %object% target:cancel - if && { - run delay:1t locally wander 'def:%object%|%world%' } else if && { - remove %object% } wander: - ^adjust %1% has_ai:false - ^repeat 5 { - ^if ! { - queue clear } - ~walk %1% '].horizontal.is[more].than[5]].random.add[0,1,0]>' } - ^if ! queue clear - ^if && { - remove %object% } else { - adjust %1% has_ai:false } dRegions_Flag_Entity-Interact: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity Interact<&4>]" lore: - <&5>Can players interact with entities event_hooks: player_interact_entity event_priority: 10 region_highestOnly: true flag_type: stg flag_name: Entity-Interact flag_targetList: Entity-Interactlist flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not interact with s here!' dRegions_Flag_Block-Place: type: item debug: false material: i@paper display name: "<&4>[<&6>Block-Place<&4>]" lore: - <&5>Can players place blocks. event_hooks: player_place_block event_priority: 5 region_highestOnly: true flag_type: stg flag_name: Block-Place flag_targetList: Block-PlaceList flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not place in this region!' dRegions_Flag_Block-Break: type: item debug: false material: i@paper display name: "<&4>[<&6>Block-Break<&4>]" lore: - <&5>Can players break blocks. event_hooks: player_break_block event_priority: 5 region_highestOnly: true flag_type: stg flag_name: Block-Break flag_targetList: Block-BreakList flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not break in this region!' dRegions_Flag_Chest-Access: type: item debug: false material: i@paper display name: "<&4>[<&6>Chest-Access<&4>]" lore: - <&5>Can players open containers. event_hooks: player_interact_container event_priority: 10 region_highestOnly: true flag_type: stg flag_name: Chest-Access flag_targetList: chest-access-blocks flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not open s in this region!' dRegions_Flag_Door-Access: type: item debug: false material: i@paper display name: "<&4>[<&6>Door-Access<&4>]" lore: - <&5>Can players open doors. event_hooks: player_interact_door event_priority: 10 region_highestOnly: true flag_type: stg flag_name: Door-Access flag_targetList: Door-Access-Doors flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. msg_cancelled: 'You can not open s in this region!' dRegions_Flag_Use-Switches: type: item debug: false material: i@paper display name: "<&4>[<&6>Use-Switches<&4>]" lore: - <&5>Can players interact with switches. event_hooks: player_interact_switches event_priority: 10 region_highestOnly: true flag_type: stg flag_name: Use-Switches flag_targetList: Use-Switches-List flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not use s in this region!' dRegions_Flag_Use-Utilities: type: item debug: false material: i@paper display name: "<&4>[<&6>Use-Utilities<&4>]" lore: - <&5>Can players use utility blocks. event_hooks: player_interact_utilityBlocks event_priority: 10 region_highestOnly: true flag_type: stg flag_name: Use-Utilities flag_targetList: Use-Utilities-Blocks flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You can not use s in this region!' dRegions_Flag_Player-Damage: type: item debug: false material: i@paper display name: "<&4>[<&6>Player-Damage<&4>]" lore: - <&5>Can players take damage. event_hooks: player_damaged event_priority: 10 region_highestOnly: false flag_type: stg flag_name: Player-Damage flag_targetList: Player-Damage-Types flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. event-cancelled: - adjust %player% 'fire_time:0' # # END stg #--------------------------------------- # ################################################################################ # # st Flag Scripts # dRegions_Flag_Mob-Spawn: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Spawn<&4>]" lore: - <&5>Can mobs Spawn event_hooks: entity_spawn event_priority: 10 region_highestOnly: false flag_type: st flag_name: Mob-Spawn flag_targetList: Mob-SpawnList flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. dRegions_Flag_EVE: type: item debug: false material: i@paper display name: "<&4>[<&6>EVE<&4>]" lore: - <&5>Can mobs be targeted event_hooks: entity_target_entity|entity_damage_entity|entity_damage_armorstand event_priority: 10 event_target: defender region_highestOnly: false flag_type: st flag_name: EVE flag_targetList: EVE-Moblist flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. event-cancelled: - remove - attack %attacker% target:cancel - if && { - run delay:1t locally wander 'def:%object%|%world%' } else if && { - remove %object% } wander: - ^adjust %1% has_ai:false - ^repeat 5 { - ^if ! { - queue clear } - ~walk %1% '].horizontal.is[more].than[5]].random.add[0,1,0]>' } - ^if ! queue clear - ^if && { - remove %object% } else { - adjust %1% has_ai:false } dRegions_Flag_Mob-Attack: type: item debug: false material: i@paper display name: "<&4>[<&6>Mob-Attack<&4>]" lore: - <&5>Can mobs attack other mobs event_hooks: entity_target_entity|entity_damage_entity|entity_damage_armorstand event_priority: 20 event_target: attacker region_highestOnly: false flag_type: st flag_name: Mob-Attack flag_targetList: Mob-Attack-Moblist flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. event-cancelled: - remove - attack %attacker% target:cancel - if && { - run delay:1t locally wander 'def:%object%|%world%' } else if && { - remove %object% } wander: - ^adjust %1% has_ai:false - ^repeat 5 { - ^if ! { - queue clear } - ~walk %1% '].horizontal.is[more].than[5]].random.add[0,1,0]>' } - ^if ! queue clear - ^if && { - remove %object% } else { - adjust %1% has_ai:false } dRegions_Flag_Entity-Explode: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity-Explode<&4>]" lore: - <&5>Can entities explode event_hooks: entity_explode event_priority: 10 region_highestOnly: false flag_type: st flag_name: Entity-Explode flag_targetList: Entity-ExplodeList flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. event-allowed: # Block explosions from effecting neighboring dregions # - define blocks ']]>' - define cuboids '' - define thisR '' - define global '/__global__' - define final 'li@' - foreach '': - define l '%value%' - if '%cuboids%' != '' { - define r 'li@%global%' - foreach '' { - define r '%r%|/%value%' } - if '%thisR%' != '' { - foreach next } } - define final '' - determine '%final%' dRegions_Flag_Entity-Grief: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity-Grief<&4>]" lore: - <&5>Can entities alter blocks event_hooks: entity_change_block|entity_form_block event_priority: 10 region_highestOnly: false flag_type: st flag_name: Entity-Grief flag_targetList: Entity-GriefList flag_takeGroup: false flag_regionDefault: deny flag_globalDefault: allow 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. event-allowed: - if { - flag %object% 'dRegions.EntityGrief:true' d:5s } event-cancelled: - if { - flag %object% 'dRegions.EntityGrief:false' d:5s } dRegions_Flag_Entity-Drops-OnDeath: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity-Drops-OnDeath<&4>]" lore: - <&5>Can mobs drop items event_hooks: entity_dies event_priority: 10 region_highestOnly: false flag_type: st flag_name: Entity-Drops-OnDeath flag_targetList: Entity-Drops-OnDeathList flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow event-cancelled: - determine NO_DROPS dRegions_Flag_Fire-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Fire-Spread<&4>]" lore: - <&5>Can fire spread event_hooks: firefrom_spread event_priority: 10 region_highestOnly: false flag_type: st flag_name: Fire-Spread flag_targetList: Fire-SpreadBlocks flag_takeGroup: false flag_regionDefault: none flag_globalDefault: allow 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. dRegions_Flag_Fire-Destroy: type: item debug: false material: i@paper display name: "<&4>[<&6>Fire-Destroy<&4>]" lore: - <&5>Can fire destroy blocks event_hooks: block_burns event_priority: 10 region_highestOnly: false flag_type: st flag_name: Fire-Destroy flag_targetList: Fire-DestroyBlocks flag_takeGroup: false flag_regionDefault: none flag_globalDefault: allow 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. dRegions_Flag_Lightning-Strikes: type: item debug: false material: i@paper display name: "<&4>[<&6>Lightning-Strikes<&4>]" lore: - <&5>Can lightning strike event_hooks: lightning_strikes event_priority: 10 region_highestOnly: false flag_type: st flag_name: Lightning-Strikes flag_targetList: Lightning-StrikesBlocks flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. dRegions_Flag_Water-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Water-Spread<&4>]" lore: - <&5>Can Water spread event_hooks: water_spread event_priority: 10 region_highestOnly: false flag_type: st flag_name: Water-Spread flag_targetList: Water-SpreadBlocks flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. dRegions_Flag_Lava-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Lava-Spread<&4>]" lore: - <&5>Can Lava spread event_hooks: lava_spread event_priority: 10 region_highestOnly: false flag_type: st flag_name: Lava-Spread flag_targetList: Lava-SpreadBlocks flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. dRegions_Flag_Snow-Fall: type: item debug: false material: i@paper display name: "<&4>[<&6>Snow-Fall<&4>]" lore: - <&5>Can Snow accumulate event_hooks: blockform_snow event_priority: 10 region_highestOnly: false flag_type: st flag_name: Snow-Fall flag_targetList: Snow-FallBlocks flag_takeGroup: false flag_regionDefault: allow flag_globalDefault: allow 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. # # END st #--------------------------------------- # ################################################################################ # # sg Flag Scripts # dRegions_Flag_Entry: type: item debug: false material: i@paper display name: "<&4>[<&6>Entry<&4>]" lore: - <&5>Who can enter a region event_hooks: player_enters_region event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Entry flag_help: State flag controlling who can enter a region. Can be set to allow, deny, or none and accepts the -g group switch. flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all msg_cancelled: 'You may not enter this area!' event-allowed: - flag %player% 'dRegions.rateLimit:!' - flag %player% 'dRegions.%world%.%thisRegion%.entry-overRide:!' event-cancelled: - if { - run locally vehicle 'def:|' delay:1t } vehicle: - ^if { - queue clear } - ^flag %player% dRegions.rateLimit.regionKick d:5t - ^mount cancel %player%|%1% - ^teleport '%player%' '' - ^wait 20t - ^adjust %1% 'velocity:l@0,0,0,' - ^teleport %1% ']:||>' dRegions_Flag_Exit: type: item debug: false material: i@paper display name: "<&4>[<&6>Exit<&4>]" lore: - <&5>Who can exit a region event_hooks: player_exits_region event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Exit flag_help: State flag controlling who can exit a region. Can be set to allow, deny, or none and accepts the -g group switch. flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all msg_cancelled: 'You may not exit this area!' event-allowed: - flag %player% 'dRegions.rateLimit:!' - flag %player% 'dRegions.%world%.%thisRegion%.exit-overRide:!' event-cancelled: - if { - run locally vehicle 'def:|' delay:1t } vehicle: - ^if { - queue clear } - ^flag %player% dRegions.rateLimit.regionKick d:5t - ^mount cancel %player%|%1% - ^teleport '%player%' '' - ^wait 20t - ^adjust %1% 'velocity:l@0,0,0,' - ^teleport %1% ']:||>' dRegions_Flag_Exit-Via-Teleport: type: item debug: false material: i@paper display name: "<&4>[<&6>Exit-Via-Teleport<&4>]" lore: - <&5>Who can exit a region via teleport event_hooks: player_teleports_fromRegion event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Exit-Via-Teleport flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to teleport out of a region. Defaults to allow all. Takes the -g group switch. msg_cancelled: 'You can not teleport from this region!' dRegions_Flag_Enter-Via-Teleport: type: item debug: false material: i@paper display name: "<&4>[<&6>Enter-Via-Teleport<&4>]" lore: - <&5>Who can exit a region via teleport event_hooks: player_teleports_toRegion event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Enter-Via-Teleport flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to teleport into a region. Defaults to allow all. Takes the -g group switch. msg_cancelled: 'You can not teleport to this region!' dRegions_Flag_Exit-Override: type: item debug: false material: i@paper display name: "<&4>[<&6>Exit-Override<&4>]" lore: - <&5> event_hooks: player_exits_region event_priority: -1 region_highestOnly: true flag_type: sg flag_name: Exit-Override flag_takeGroup: true flag_regionDefault: deny/all flag_globalDefault: deny/all flag_help: State flag controling who can override exit deny. Defaults to deny all. Takes the -g group switch. event-allowed: - if ! { - flag %player% 'dRegions.%world%.%thisRegion%.exit-overRide' } event-cancelled: - foreach next - queue clear dRegions_Flag_Entry-Override: type: item debug: false material: i@paper display name: "<&4>[<&6>Entry-Override<&4>]" lore: - <&5> event_hooks: player_enters_region event_priority: -1 region_highestOnly: true flag_type: sg flag_name: Entry-Override flag_takeGroup: true flag_regionDefault: deny/all flag_globalDefault: deny/all flag_help: State flag controling who can override entry deny. Defaults to deny all. Takes the -g group switch. event-allowed: - if ! { - flag %player% 'dRegions.%world%.%thisRegion%.entry-overRide' d:2s } event-cancelled: - foreach next - queue clear dRegions_Flag_Build: type: item debug: false material: i@paper display name: "<&4>[<&6>Build<&4>]" lore: - <&5>Override default build perms event_hooks: player_place_block|player_break_block|player_place_hanging|player_break_hanging|player_interact_blocks|player_interact_itemframe|player_damage_itemframe|player_use_spawnegg|player_place_armorstand|player_interact_armorstand|player_damage_armorstand|player_throw_hatchingegg|player_empty_bucket|player_fill_bucket|player_extinguish_blockfire|player_use_bonemeal event_priority: 0 event_player: attacker event_target: defender region_highestOnly: true flag_type: sg flag_name: Build flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all 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. msg_cancelled: 'You do not have permission to build in this region!' dRegions_Flag_Receive-Chat: type: item debug: false material: i@paper display name: "<&4>[<&6>Receive-Chat<&4>]" lore: - <&5>Who can hear chat event_hooks: player_entered_dregion|player_exited_dregion event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Receive-Chat flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: Control who can hear chat in a region. Takes the -g group switch. event-cancelled: - if %isEnter% { - if ! { - flag server 'dRegions.Chat.Deaf:->:%player%' } } else { - flag server 'dRegions.Chat.Deaf:<-:%player%' } dRegions_Flag_Send-Chat: type: item debug: false material: i@paper display name: "<&4>[<&6>Send-Chat<&4>]" lore: - <&5>Who can chat event_hooks: player_chats event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Send-Chat flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: Control who can send chat in a region. Takes the -g group switch. msg_cancelled: 'You can not chat here.' event-allowed: - determine 'recipients:]>' dRegions_Flag_Hunger: type: item debug: false material: i@paper display name: "<&4>[<&6>Hunger<&4>]" lore: - <&5>Who can get hungry event_hooks: player_change_foodlevel event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Hunger flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: Control whether players will loose hunger in this region. Takes the -g group switch. dRegions_Flag_Npc-Interact: type: item debug: false material: i@paper display name: "<&4>[<&6>NPC Interact<&4>]" lore: - <&5>Can players interact with NPCs event_hooks: player_interact_npc event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Npc-Interact flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. msg_cancelled: 'You can not interact with NPCs here!' dRegions_Flag_Lighter: type: item debug: false material: i@paper display name: "<&4>[<&6>Lighter<&4>]" lore: - <&5>Who can use the flint and steel in a region # event_hooks: player_use_lighter event_hooks: fireFrom_flint_and_steel event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Lighter flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to use lighters in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not use a lighter in this region!' dRegions_Flag_Bucket-Fill: type: item debug: false material: i@paper display name: "<&4>[<&6>Bucket-Fill<&4>]" lore: - <&5>Who can fill a bucket in a region event_hooks: player_fill_bucket event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Bucket-Fill flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to fill buckets in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not fill a bucket in this region!' dRegions_Flag_Bucket-Empty: type: item debug: false material: i@paper display name: "<&4>[<&6>Bucket-Empty<&4>]" lore: - <&5>Who can empty a bucket in a region event_hooks: player_empty_bucket event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Bucket-Empty flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to empty buckets in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not empty a bucket in this region!' dRegions_Flag_Hanging-Place: type: item debug: false material: i@paper display name: "<&4>[<&6>Hanging-Place<&4>]" lore: - <&5>Who can place item frames and paintings event_hooks: player_place_hanging event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Hanging-Place flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to place item frames and paintings in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not hang that in this region!' dRegions_Flag_Hanging-Break: type: item debug: false material: i@paper display name: "<&4>[<&6>Hanging-Break<&4>]" lore: - <&5>Who can break item frames and paintings event_hooks: player_break_hanging event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Hanging-Break flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to break item frames and paintings in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not break that in this region!' dRegions_Flag_Sleep: type: item debug: false material: i@paper display name: "<&4>[<&6>Sleep<&4>]" lore: - <&5>Who can Sleep event_hooks: player_enters_bed event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Sleep flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to enter beds in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not sleep here!' dRegions_Flag_Player-Drops: type: item debug: false material: i@paper display name: "<&4>[<&6>Player-Drops<&4>]" lore: - <&5>Who can drop items event_hooks: player_drops_item event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Player-Drops flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to drop items from their inventory in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not drop items in this region!' dRegions_Flag_Player-Drops-OnDeath: type: item debug: false material: i@paper display name: "<&4>[<&6>Player-Drops-OnDeath<&4>]" lore: - <&5>Who can drop items when they die event_hooks: player_dies event_priority: 10 region_highestOnly: true flag_type: sg flag_name: Player-Drops-OnDeath flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will drop items when they die in this region. Defaults to allow. Takes the -g group switch. event-cancelled: - determine NO_DROPS dRegions_Flag_Player-KeepItems: type: item debug: false material: i@paper display name: "<&4>[<&6>Player-KeepItems<&4>]" lore: - <&5>Can players keep items on death event_hooks: player_dies event_priority: 5 region_highestOnly: true flag_type: sg flag_name: Player-KeepItems flag_takeGroup: true flag_regionDefault: deny/all flag_globalDefault: 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. event-allowed: - run locally returnItems 'player:%player%' 'def:|' delay:2t - determine NO_DROPS_NO_XP event-cancelled: # Temporary fix! We should be setting noCancel so the flag processor knows # not to try to determine cancelled, which funny enough in the entity dies # event changes the player death message. WHOOPS! - foreach next - queue clear returnItems: - inventory clear - run s@msgPrefixed delay:1t 'def:dRegions|<&9>You died, but your inventory is safe!' - inventory set 'd:' 'o:' - define equipment '' - equip 'boots:' 'legs:' 'chest:' 'head:' dRegions_Flag_Player-Pickup: type: item debug: false material: i@paper display name: "<&4>[<&6>Player-Pickup<&4>]" lore: - <&5>Who can pickup items event_hooks: player_pickup_item event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Player-Pickup flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to pickup items in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not pick up items in this region!' dRegions_Flag_Potion-Drink: type: item debug: false material: i@paper display name: "<&4>[<&6>Potion-Drink<&4>]" lore: - <&5>Who can drink potions event_hooks: player_drink_potion event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Potion-Drink flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to drink potions in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not drink potions here!' dRegions_Flag_Enderpearl: type: item debug: false material: i@paper display name: "<&4>[<&6>Enderpearl<&4>]" lore: - <&5>Who can use enderpearls event_hooks: player_teleport_via_enderpearl event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Enderpearl flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to teleport with enderpearls in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not use enderpearls here!' dRegions_Flag_Chorusfruit: type: item debug: false material: i@paper display name: "<&4>[<&6>Chorusfruit<&4>]" lore: - <&5>Who can use Chorusfruit event_hooks: player_teleport_via_chorusfruit event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Chorusfruit flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to teleport with chorus_fruit in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not use chorus fruit here!' dRegions_Flag_Vehicle-Place: type: item debug: false material: i@paper display name: "<&4>[<&6>Vehicle-Place<&4>]" lore: - <&5>Who can place vehicles event_hooks: player_place_vehicle event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Vehicle-Place flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to place vehicles in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not place vehicles here!' dRegions_Flag_Vehicle-Destroy: type: item debug: false material: i@paper display name: "<&4>[<&6>Vehicle-Destroy<&4>]" lore: - <&5>Who can destroy vehicles event_hooks: player_break_vehicle event_priority: 0 region_highestOnly: true flag_type: sg flag_name: Vehicle-Destroy flag_takeGroup: true flag_regionDefault: deny/nonmembers flag_globalDefault: allow/all flag_help: State flag controlling whether players will be able to break vehicles in this region. Defaults to allow. Takes the -g group switch. msg_cancelled: 'You can not break vehicles here!' dRegions_Flag_Fly: type: item debug: false material: i@paper display name: "<&4>[<&6>Fly<&4>]" lore: - <&5>Who can can fly event_hooks: player_entered_dregion|player_exited_dregion event_priority: 40 region_highestOnly: true flag_type: sg flag_name: Fly flag_takeGroup: true flag_regionDefault: deny/all flag_globalDefault: deny/all flag_help: Enable flight in a region. Takes the -g group switch. # entered and exited dregion events are already set to noCancel # event-cancelled: # - foreach next # - queue clear event-allowed: - if %isEnter% { - if ! { - flag 'dRegions.%world%.%region%.can_fly' - adjust 'can_fly:true' - if { - flag dRegions.Message_Cooldown duration:3s - run s@msgPrefixed instantly 'def:dRegions|<&a>You are able to fly in this region!' } } } else { - if { - flag 'dRegions.%world%.%region%.can_fly:!' - flag 'dRegions.fly.noFallDamage' - adjust 'can_fly:false' - if { - flag dRegions.Message_Cooldown duration:3s - run s@msgPrefixed instantly 'def:dRegions|<&a>Flight has been disabled!' } } } # # END sg #--------------------------------------- # ################################################################################ # # stsg Flag Scripts # dRegions_Flag_Commands: type: item debug: false material: i@paper display name: "<&4>[<&6>Commands<&4>]" lore: - <&5>Can players use commands. event_hooks: player_command event_priority: 0 region_highestOnly: false flag_type: stsg flag_name: Commands flag_targetList: Commands-List flag_takeGroup: true flag_regionDefault: allow/all flag_globalDefault: allow/all 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. msg_cancelled: 'You can not use the %1% <&c>command in this region!' # # END stsg #--------------------------------------- # ################################################################################ # # Boolean Flag Scripts # dRegions_Flag_Notify-Enter: type: item debug: false material: i@paper display name: "<&4>[<&6>Notify-Enter<&4>]" lore: - <&5>Send notification to marked players event_hooks: player_entered_dregion event_priority: 5 flag_type: b 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. event-allowed: - foreach ].deduplicate> { - run s@msgPrefixed player:%value% 'def:dRegions|<&5><&o> entered %thisRegion% in %world%' } dRegions_Flag_Notify-Exit: type: item debug: false material: i@paper display name: "<&4>[<&6>Notify-Exit<&4>]" lore: - <&5>Send notification to marked players event_hooks: player_exited_dregion event_priority: 5 region_highestOnly: false flag_type: b flag_name: Notify-Exit flag_takeGroup: false flag_regionDefault: false flag_globalDefault: false flag_help: Boolean flag controlling whether notifications are sent for exiting this region. Set to true or false. Defaults to false. event-allowed: - foreach ].deduplicate> { - run s@msgPrefixed player:%value% 'def:dRegions|<&5><&o> exited %thisRegion% in %world%' } dRegions_Flag_Ice-Form: type: item debug: false material: i@paper display name: "<&4>[<&6>Ice-Form<&4>]" lore: - <&5>Can water turn into ice event_hooks: blockform_ice event_priority: 5 region_highestOnly: false flag_type: b flag_name: Ice-Form flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether ice can form in this region. Set to true or false. Defaults to true. dRegions_Flag_Lava-Fire: type: item debug: false material: i@paper display name: "<&4>[<&6>Lava-Fire<&4>]" lore: - <&5>Can lava cause fires event_hooks: firefrom_lava event_priority: 5 region_highestOnly: false flag_type: b flag_name: Lava-Fire flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether lava can cause fires in this region. Set to true or false. Defaults to true. dRegions_Flag_Ice-Melt: type: item debug: false material: i@paper display name: "<&4>[<&6>Ice-Melt<&4>]" lore: - <&5>Can ice melt event_hooks: blockfade_ice event_priority: 5 region_highestOnly: false flag_type: b flag_name: Ice-Melt flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether ice can melt in this region. Set to true or false. Defaults to true. dRegions_Flag_Snow-Melt: type: item debug: false material: i@paper display name: "<&4>[<&6>Snow-Melt<&4>]" lore: - <&5>Can snow melt event_hooks: blockfade_snow event_priority: 5 region_highestOnly: false flag_type: b flag_name: Snow-Melt flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether snow can melt in this region. Set to true or false. Defaults to true. dRegions_Flag_Soil-Dry: type: item debug: false material: i@paper display name: "<&4>[<&6>Soil-Dry<&4>]" lore: - <&5>Can soil dry up event_hooks: blockfade_soil event_priority: 5 region_highestOnly: false flag_type: b flag_name: Soil-Dry flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether soil can dry in this region. Set to true or false. Defaults to true. dRegions_Flag_Trample-Crops-Player: type: item debug: false material: i@paper display name: "<&4>[<&6>Trample-Crops-Player<&4>]" lore: - <&5>Can players trample crops event_hooks: player_trample_crops event_priority: 5 region_highestOnly: false flag_type: b flag_name: Trample-Crops-Player flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether players can trample crops in this region. Set to true or false. Defaults to true. dRegions_Flag_Trample-Crops-Entity: type: item debug: false material: i@paper display name: "<&4>[<&6>Trample-Crops-Entity<&4>]" lore: - <&5>Can entities trample crops event_hooks: entity_trample_crops event_priority: 5 region_highestOnly: false flag_type: b flag_name: Trample-Crops-Entity flag_takeGroup: false flag_regionDefault: true flag_globalDefault: true flag_help: Boolean flag controlling whether entities can trample crops in this region. Set to true or false. Defaults to true. dRegions_Flag_Mushroom-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Mushroom-Spread<&4>]" lore: - <&5>Can Mushrooms spread event_hooks: blockspread_mushroom event_priority: 5 region_highestOnly: false flag_type: b flag_name: Mushroom-Spread flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Grass-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Grass-Spread<&4>]" lore: - <&5>Can Grass spread event_hooks: blockspread_grass event_priority: 5 region_highestOnly: false flag_type: b flag_name: Grass-Spread flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Mycel-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Mycel-Spread<&4>]" lore: - <&5>Can Mycelium spread event_hooks: blockspread_mycel event_priority: 5 region_highestOnly: false flag_type: b flag_name: Mycel-Spread flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Vines-Spread: type: item debug: false material: i@paper display name: "<&4>[<&6>Vine-Growth<&4>]" lore: - <&5>Can Vines grow event_hooks: blockspread_vine event_priority: 5 region_highestOnly: false flag_type: b flag_name: Vine-Growth flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Leaf-Decay: type: item debug: false material: i@paper display name: "<&4>[<&6>Leaf-Decay<&4>]" lore: - <&5>Can leaves decay event_hooks: blockfade_leaves event_priority: 5 region_highestOnly: false flag_type: b flag_name: Leaf-Decay flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Falling-Sand: type: item debug: false material: i@paper display name: "<&4>[<&6>Falling-Sand<&4>]" lore: - <&5>Can sand fall event_hooks: falling_sand event_priority: 5 region_highestOnly: false flag_type: b flag_name: Falling-Sand flag_takeGroup: false flag_regionDefault: 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. event-allowed: - flag 'dRegions.EntityGrief:true' d:1s event-cancelled: - modifyblock %eLoc% sand no_physics - remove dRegions_Flag_Falling-Gravel: type: item debug: false material: i@paper display name: "<&4>[<&6>Falling-Gravel<&4>]" lore: - <&5>Can gravel fall event_hooks: falling_gravel event_priority: 5 region_highestOnly: false flag_type: b flag_name: Falling-Gravel flag_takeGroup: false flag_regionDefault: 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. event-allowed: - flag 'dRegions.EntityGrief:true' d:1s event-cancelled: - modifyblock %eLoc% gravel no_physics - remove dRegions_Flag_Pistons: type: item debug: false material: i@paper display name: "<&4>[<&6>Pistons<&4>]" lore: - <&5>Can pistons be activated event_hooks: piston_extend|piston_retract event_priority: 5 region_highestOnly: false flag_type: b flag_name: Pistons flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Entity-Break-Painting: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity-Break-Painting<&4>]" lore: - <&5>Can Entities break paintings event_hooks: entity_break_painting event_priority: 5 region_highestOnly: false flag_type: b flag_name: Entity-Break-Painting flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_Entity-Break-ItemFrame: type: item debug: false material: i@paper display name: "<&4>[<&6>Entity-Break-ItemFrame<&4>]" lore: - <&5>Can Entities break item frames event_hooks: entity_damage_itemframe event_target: attacker event_priority: 5 region_highestOnly: false flag_type: b flag_name: Entity-Break-ItemFrame flag_takeGroup: false flag_regionDefault: 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. dRegions_Flag_PVP: type: item debug: false material: i@paper display name: "<&4>[<&6>PVP<&4>]" lore: - <&5>Can players damage each other event_hooks: player_damage_player event_priority: 5 event_player: attacker event_target: defender region_highestOnly: false flag_type: b flag_name: PVP flag_takeGroup: false flag_regionDefault: 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. msg_cancelled: 'You are in a no PVP zone.' dRegions_Flag_Potion-Throw: type: item debug: false material: i@paper display name: "<&4>[<&6>Potion-Throw<&4>]" lore: - <&5>Can potions be thrown in this region event_hooks: potion_splash|player_throw_potion event_priority: 5 region_highestOnly: false flag_type: b flag_name: Potion-Throw flag_takeGroup: false flag_regionDefault: 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. event-cancelled: # This flag handles players and non-players alike so we need to find out if it is a player before we send a message. - if { - if { - flag %player% dRegions.Message_Cooldown duration:3s - run s@msgPrefixed delay:1t player:%player% 'def:dRegions|<&c><&o>You can not throw potions here!' } } # # END Boolean #--------------------------------------- # ################################################################################ # # String Flag Scripts # dRegions_Flag_Greeting: type: item debug: false material: i@paper display name: "<&4>[<&6>Greeting<&4>]" lore: - <&5>Message on enter region event_hooks: player_entered_dregion event_priority: 10 region_highestOnly: true flag_type: string string_type: narrate flag_name: Greeting flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the greeting message for region entry. dRegions_Flag_Farewell: type: item debug: false material: i@paper display name: "<&4>[<&6>Farewell<&4>]" lore: - <&5>Message on exit region event_hooks: player_exited_dregion event_priority: 10 region_highestOnly: true flag_type: string string_type: narrate flag_name: Farewell flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the farewell message for region exit. # # END String #--------------------------------------- # ################################################################################ # # Custom Flag Scripts # - Custom flags get a mostly raw event to work with # dRegions_Flag_Inventory: type: item debug: false material: i@paper display name: "<&4>[<&6>Inventory<&4>]" lore: - <&5>Save inventory before going into a region event_hooks: player_entered_dregion|player_exited_dregion event_priority: 20 region_highestOnly: true flag_type: custom flag_type_customVal: unique|kit flag_name: Inventory flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none flag_help: Inventory flag can be set to unique or kit. Unique inventories start empty. Kit inventories use your current inventory. 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: - if == '0' { - goto 'end' } - define action '' - define region '' - define flagObj '' - if { - if |%region%|%world%|%player%]> { - inject locally -%action% } } - mark 'end' 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 %player% 'boots:' 'legs:' 'chest:' 'head:' - run s@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Your inventory has been updated.' kit-exit: - define equipment '.equip]||li@>' - inventory clear - inventory set 'd:' 'o:.inv]||li@>' - equip %player% '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@msgPrefixed delay:1t 'def:dRegions|<&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 %player% 'boots:' 'legs:' 'chest:' 'head:' - run s@msgPrefixed delay:1t 'def:dRegions|<&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 %player% '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@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Your inventory has been updated.' dRegions_Flag_Gamemode: type: item debug: false material: i@paper display name: "<&4>[<&6>Gamemode<&4>]" lore: - <&5>Change gamemode inside a region event_hooks: player_entered_dregion|player_exited_dregion event_priority: 10 region_highestOnly: true flag_type: custom flag_type_customVal: creative|survival|adventure|spectator flag_name: Gamemode flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none flag_help: Gamemode flag can be set to creative, survival, adventure, or spectator event: - define region '' - define flagObj '' - if && |%region%|%world%|%player%]> { - if %isEnter% { - define gm '' - flag %player% 'dRegions.%world%.%region%.PreviousGamemode:' - if %gm% != { - adjust %player% 'gamemode:%gm%' - run s@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Your gamemode has been updated.' } } else { - if != { - adjust %player% 'gamemode:' - run s@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Your gamemode has been updated.' } - flag %player% 'dRegions.%world%.%region%.PreviousGamemode:!' } } dRegions_Flag_Weather-Lock: type: item debug: false material: i@paper display name: "<&4>[<&6>Weather-Lock<&4>]" lore: - <&5>Set the weather event_hooks: player_entered_dregion|player_exited_dregion event_priority: 30 region_highestOnly: true flag_type: custom flag_type_customVal: clear|downfall flag_name: Weather-Lock flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none flag_help: Control what players see the weather as. Can be set to clear or downfall. Takes the -g group switch. event: - define region '' - define flagObj '' - if && |%region%|%world%|%player%]> { - if '%isEnter%' { - adjust %player% 'weather:' } else { - adjust %player% 'reset_weather' } } dRegions_Flag_Spawn: type: item debug: false material: i@paper display name: "<&4>[<&6>Spawn<&4>]" lore: - <&5>Region spawn point. event_hooks: player_dies event_priority: 0 region_highestOnly: false flag_type: location flag_name: Spawn flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none 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. command_handler: - if !> { - if /|%world%|]> { - run s@dRegions_Msg delay:1t 'def:<&c>You can not use that location!' - queue clear } } event: - ^foreach %orderedRegions% { - define flagObj '' - if && |%value%|%world%|%player%]> { - flag 'dRegions.Respawn:' - foreach stop } } # # END Custom #--------------------------------------- # ################################################################################ # # Number Flag Scripts # dRegions_Flag_Time-Lock: type: item debug: false material: i@paper display name: "<&4>[<&6>Time-Lock<&4>]" lore: - <&5>Set the Time event_hooks: player_entered_dregion|player_exited_dregion event_priority: 30 region_highestOnly: true flag_type: number flag_name: Time-Lock flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none flag_help: Control what players see the time as. Valid range is 0-23999. Use + or - to adjust the time relative to the current world time. Takes the -g group switch. command_handler: - if || { - define d '' - define time '' } else { - define time '%flagValue%' } - if %time% !matches number || %time% < 0 || %time% > 23999 { - run s@msgPrefixed 'def:dRegions|<&c>Valid time range is 0 - 23999!' - queue clear } event: - define region '' - define flagObj '' - if && |%region%|%world%|%player%]> { - define flagValue '' - define d '' - define time '' - define time ']:]>||%time%>' - adjust %player% '%time%||reset_time>' } dRegions_Flag_Heal-Amount: type: item debug: false material: i@paper display name: "<&4>[<&6>Heal-Amount<&4>]" lore: - <&5>The amount to heal or harm. event_hooks: player_entered_dregion event_priority: 30 region_highestOnly: true flag_type: number flag_name: Heal-Amount flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none 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. event: - define region '' - define flagObj '' - if && |%region%|%world%|%player%]> { - if ]> { - queue 'q@dRegions_Heal_' clear } - run locally healTask delay:1t 'player:%player%' 'def:%world%|%region%|' id:dRegions_Heal_ } healTask: - define player '' - define world '%1%' - define region '%2%' - define healAmount '%3%' - define healDelay '' - define healDelay ']:5||%healDelay%>].as_int.as_duration>' - define healMax '' - define healMax ']:20||%healMax%>]>' - define healMin '' - define healMin ']:0||%healMin%>' - while '': - if { - while stop } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - if { - while stop } - if { - wait 1s - while next } # Instant heal/harm setting - if %healDelay% == 0 { - if %healAmount% MORE 0 { - if LESS %healMax% { - define newHealth '' - adjust %player% 'health:]:%healMax%||%newHealth%>' } } else { - if MORE %healMin% { - animate %player% animation:hurt - define newHealth '' - adjust %player% 'health:]:%healMin%||%newHealth%>' } } - wait 20t - while next } # Normal delayed setting - if %healAmount% MORE 0 { - if LESS %healMax% { - define newHealth ']>' - adjust %player% 'health:]:%healMax%||%newHealth%>' } } else { - if MORE %healMin% { - animate %player% animation:hurt - define newHealth '' - adjust %player% 'health:]:%healMin%||%newHealth%>' } } - wait %healDelay% dRegions_Flag_Heal-Delay: type: item debug: false material: i@paper display name: "<&4>[<&6>Heal-Delay<&4>]" lore: - <&5>The duration between heal intervals event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Heal-Delay flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the time in seconds between heal intervals. Defaults to 5 seconds. command_handler: - if { - run s@msgPrefixed 'def:dRegions|<&c>Can not specify negative time!' - queue clear } dRegions_Flag_Heal-Max: type: item debug: false material: i@paper display name: "<&4>[<&6>Heal-Max<&4>]" lore: - <&5>Max health for heal flag. event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Heal-Max flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the max health that the heal flag will heal a player to. Defaults to 20. command_handler: - if ! { - run s@msgPrefixed 'def:dRegions|<&c>Must be a value greater than 0!' - queue clear } dRegions_Flag_Heal-Min: type: item debug: false material: i@paper display name: "<&4>[<&6>Heal-Min<&4>]" lore: - <&5>Minimum health for heal flag event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Heal-Min flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the min health that the heal flag will heal a player to. Defaults to 0. command_handler: - if { - run s@msgPrefixed 'def:dRegions|<&c>Can not set to a negative number!' - queue clear } dRegions_Flag_Feed-Amount: type: item debug: false material: i@paper display name: "<&4>[<&6>Feed-Amount<&4>]" lore: - <&5>The amount to feed or starve. event_hooks: player_entered_dregion event_priority: 30 region_highestOnly: true flag_type: number flag_name: Feed-Amount flag_takeGroup: true flag_regionDefault: none flag_globalDefault: none 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. event: - define region '' - define flagObj '' - if && |%region%|%world%|%player%]> { - if ]> { - queue 'q@dRegions_Feed_' clear } - run locally feedTask delay:1t 'player:%player%' 'def:%world%|%region%|' id:dRegions_Feed_ } feedTask: - define player '' - define world '%1%' - define region '%2%' - define feedAmount '%3%' - define feedDelay '' - define feedDelay ']:5||%feedDelay%>' - define feedMax '' - define feedMax ']:20||%feedMax%>' - define feedMin '' - define feedMin ']:0||%feedMin%>' - while '': - if { - while stop } - define regionPri 'li@' - foreach { - define regionPri '%regionPri%/%value%|' } - if { - while stop } - if { - wait 1s - while next } # Instant feed/starve setting - if %feedDelay% == 0 { - if %feedAmount% MORE 0 { - if LESS %feedMax% { - define newFood '' - adjust %player% 'food_level:]:%feedMax%||%newFood%>' - adjust %player% 'saturation:' } } else { - if MORE %feedMin% { - animate %player% animation:hurt - define newFood '' - adjust %player% 'food_level:]:%feedMin%||%newFood%>' - adjust %player% 'saturation:' } } - wait 20t - while next } # Normal delayed setting - if %feedAmount% MORE 0 { - if LESS %feedMax% { - define newFood '' - adjust %player% 'food_level:]:%feedMax%||%newFood%>' - adjust %player% 'saturation:' } } else { - if MORE %feedMin% { - animate %player% animation:hurt - define newFood '' - adjust %player% 'food_level:]:%feedMin%||%newFood%>' - adjust %player% 'saturation:' } } - wait %feedDelay% dRegions_Flag_Feed-Delay: type: item debug: false material: i@paper display name: "<&4>[<&6>Feed-Delay<&4>]" lore: - <&5>The duration between feed intervals event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Feed-Delay flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the time in seconds between feed intervals. Defaults to 5 seconds. command_handler: - if { - run s@msgPrefixed 'def:dRegions|<&c>Can not specify negative time!' - queue clear } dRegions_Flag_Feed-Max: type: item debug: false material: i@paper display name: "<&4>[<&6>Feed-Max<&4>]" lore: - <&5>Max food level event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Feed-Max flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the max food level that the feed-amount flag will bring a player to. Defaults to 20. command_handler: - if ! { - run s@msgPrefixed 'def:dRegions|<&c>Must be a value greater than 0!' - queue clear } dRegions_Flag_Feed-Min: type: item debug: false material: i@paper display name: "<&4>[<&6>Feed-Min<&4>]" lore: - <&5>Minimum food level event_hooks: none event_priority: 0 region_highestOnly: true flag_type: number flag_name: Feed-Min flag_takeGroup: false flag_regionDefault: none flag_globalDefault: none flag_help: Set the min food level that the feed-amount flag will bring a player to. Defaults to 0. command_handler: - if { - run s@msgPrefixed 'def:dRegions|<&c>Can not set to a negative number!' - queue clear } # # END Number #--------------------------------------- # ################################################################################ # # List Flag Scripts # dRegions_Flag_Mob-TargetList: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-Damagelist: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-SpawnList: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_EVE-Moblist: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Mob-Attack-Moblist: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_PVE-Moblist: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-Interactlist: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-ExplodeList: type: item 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_regionDefault: none flag_globalDefault: none 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 command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-GriefList: type: item 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_regionDefault: none flag_globalDefault: none 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 command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Entity-Drops-OnDeathList: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Fire-SpreadBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Fire-DestroyBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Lightning-StrikesBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Water-SpreadBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Lava-SpreadBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Snow-FallBlocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Block-PlaceList: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Block-BreakList: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Chest-Access-Blocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Door-Access-Doors: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Use-Switches-List: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Use-Utilities-Blocks: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Player-Damage-Types: type: item 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_regionDefault: none flag_globalDefault: none 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. command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_verifiedList dRegions_Flag_Commands-List: type: item 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_regionDefault: none flag_globalDefault: none 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! command_handler: - inject s@dRegions_Flags_CommandProcessors p:command_stringList # END List #--------------------------------------- # ################################################################################ # # THIS Flag Scripts # # END THIS #--------------------------------------- ################################################################################# # # dRegions Command Script Container # # This script covers all dRegions commands # # I haven't examined this in great detail since dRegions 0.2x. It's probably # due for some revisions # #-------------------------------------- # # dRegions Command Script Basics # # The basic stuff required in a command script container # dRegions_Commands: type: command 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: - dregions.reload restart: usage: '/drg restart' permissions: - dregions.restart define: usage: '/drg define [ID] (g:group) (player)' permissions: - dregions.define redefine: usage: '/drg redefine [ID]' permissions: - dregions.redefine - dregions.redefine.own.* - dregions.redefine.own.%region% - dregions.redefine.member.* - dregions.redefine.member.%region% claim: usage: '/drg claim [ID]' permissions: [] select: usage: '/drg select [ID] -w world' permissions: [] info: usage: '/drg info [ID] -w world' permissions: - dregions.info - dregions.info.own.* - dregions.info.own.%region% - dregions.info.member.* - dregions.info.member.%region% addowner: usage: '/drg addowner [ID] g:group player -w world' permissions: - dregions.addowner - dregions.addowner.own.* - dregions.addowner.own.%region% - dregions.addowner.member.* - dregions.addowner.member.%region% removeowner: usage: '/drg removeowner [ID] g:group player -w world' permissions: - dregions.removeowner - dregions.removeowner.own.* - dregions.removeowner.own.%region% - dregions.removeowner.member.* - dregions.removeowner.member.%region% addmember: usage: '/drg addmember [ID] g:group player -w world' permissions: - dregions.addmember - dregions.addmember.own.* - dregions.addmember.own.%region% - dregions.addmember.member.* - dregions.addmember.member.%region% removemember: usage: '/drg removemember [ID] g:group player -w world' permissions: - dregions.removemember - dregions.removemember.own.* - dregions.removemember.own.%region% - dregions.removemember.member.* - dregions.removemember.member.%region% list: usage: '/drg list (page<&ns>) -h -r region -w world -p player' permissions: - dregions.list - dregions.list.own.* - dregions.list.own.%region% - dregions.list.member.* - dregions.list.member.%region% flag: usage: '/drg flag [ID] [flag] [value] -g group -w world' permissions: - dregions.flags.* - dregions.flags. - dregions.flag - dregions.flag.flags.* - dregions.flag.flags. - dregions.flag.own.* - dregions.flag.own. - dregions.flag.member.* - dregions.flag.member. setpriority: usage: '/drg setpriority [ID] [<&ns>]' permissions: - dregions.setpriority - dregions.setpriority.own.* - dregions.setpriority.own.%region% - dregions.setpriority.member.* - dregions.setpriority.member.%region% setparent: usage: '/drg setparent [ID] [parent]' permissions: - dregions.setparent - dregions.setparent.own.* - dregions.setparent.own.%region% - dregions.setparent.member.* - dregions.setparent.member.%region% teleport: usage: '/drg teleport [ID] -w world' permissions: - dregions.teleport - dregions.teleport.own.* - dregions.teleport.own.%region% - dregions.teleport.member.* - dregions.teleport.member.%region% remove: usage: '/drg remove [ID] -w world' permissions: - dregions.remove - dregions.remove.own.* - dregions.remove.own.%region% - dregions.remove.member.* - dregions.remove.member.%region% wgimport: usage: '/drg wgimport [world(s)] (-a)' permissions: - dregions.wgimport 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 # /drg teleport [ID] -w world - 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@' } tab_wgimport: # TODO # /drg wgimport [world(s)] -a - 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@msgPrefixed delay:1t 'def:dRegions|>' - 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@msgPrefixed delay:1t 'def:dRegions|<&7><&o>System files loaded!' restart: - if !>> { - inject locally help - queue clear } - run s@dRegions p:start instantly wgimport: - define args '' - if { - if == 0 { - run s@msgPrefixed 'def:dRegions|<&c>Must specify world(s) to import!' - queue clear } } else { - if ! && ! { - queue clear } } - if > 0 { - if contains '-a' { - define worlds '' } else { - define worlds '' } } else { - define worlds ']>' { } - foreach '%worlds%': - run s@dRegions_WG_Importer 'def:%value%' define: # /drg define [ID] (g:group) (player) - inject locally prerun instantly # Check for existing region - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is already a region by this name!' - queue clear } # Check for overlapping regions - if !> { - if |%world%|]> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Created %name% in %world%' redefine: # /drg redefine [ID] - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Don't redefine global type regions - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You can not redefine global regions!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } } # Check for overlapping regions - if !> { - if |%world%|]> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>You already have total regions!' - if !> { - queue clear } - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>You already have regions in this world!' - if !> { - queue clear } - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Your selection exceeds the global limit!' - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>But you are an admin so it is ok!' } } - define worldClaimVol '' - if { - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Your selection exceeds the world limit!' - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>You may only claim regions within land you own' - if !> { - queue clear } - run s@msgPrefixed delay:1t 'def:dRegions|<&c>But you are an admin so it is ok!' } } # Check if region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You can not redefine global regions!' - queue clear } - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Region already exists!' - run s@msgPrefixed delay:1t 'def:dRegions|<&7>You must want to update the region' - define update '' } # Check for overlapping regions # The perm check here is redundant - if !> { - if |%world%|]> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Region selection contains unowned regions!' - if !> { - queue clear } - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&f><&o>%name%<&7><&o> updated to selection' } else { - define ownerPlayers 'li@' - inject s@dRegions p:createRegionEntry instantly - run s@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Created %name% in %world%' } select: # /drg select [ID] - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Don't select global type regions - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You can not select global regions!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region named %name%!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } } - inject locally regionInfo instantly - define title 'dRegions|drg help|<&a>Go back to main help]>' - define subTitle '<&e>Region Info' - define command 'drg info %name%' - define entries 'li@<&7>Region<&co> <&e> <&7>World<&co> <&e>' - define entries 'Type<&co> <&f>%type% <&7>Volume<&co> <&8><&lb><&f><&o>%size%<&8><&rb>]>' - define entries 'Area<&co> <&8><&lb><&f><&o> <&f><&o><&8><&rb>]>' - define entries 'Priority<&co> <&f><&7> Parent<&co> <&f>%parent%]>' - if && { - define entries 'Owners<&co> <&c>none]>' } else { - define entries 'Owners<&co> <&f>]]||>].comma_separated>]>' } - if && { - define entries 'Members<&co> <&c>none]>' } else { - define entries 'Members<&co> <&f>]]||>].comma_separated>]>' } - if { - define entries 'Flags<&co> <&c>none]>' } else { - define entries 'Flags<&co>]>' - foreach '' { - define flag '' - define flagVal '' - define entries '%flag%<&co> <&f>]>' } } - run s@msgBoxed 'def:dRegions|%title%|%subTitle%|%command%|%page%|52|14|' addowner: # /drg addowner [ID] g:group player - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Must specify at least one owner' - queue clear } - foreach %owners% { - if { - define group '' - if !contains %group% { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>%group% is not a valid group' - foreach next } - define groups '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Player %value% is already an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.players:->:' 'id:dRegions_%world%_regions' - flag 'dRegions.cache.%world%.%name%:!' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Must specify at least one owner' - queue clear } - foreach %owners% { - if { - define group '' - if !contains %group% { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>%group% is not a valid group' - foreach next } - define groups '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Player %value% is not an owner' - foreach next } - define pass true - yaml set 'regions.%name%.owners.players:<-:' 'id:dRegions_%world%_regions' - flag 'dRegions.cache.%world%.%name%:!' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@msgPrefixed delay:1t 'def:dRegions|<&f><&o>%name%<&7><&o> owners updated' } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Must specify at least one member' - queue clear } - foreach %members% { - if { - define group '' - if !contains %group% { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>%group% is not a valid group' - foreach next } - define groups '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Player %value% is already a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.players:->:' 'id:dRegions_%world%_regions' - flag 'dRegions.cache.%world%.%name%:!' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@msgPrefixed delay:1t 'def:dRegions|<&f><&o>%name%<&7><&o> members updated' } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Must specify at least one member' - queue clear } - foreach %members% { - if { - define group '' - if !contains %group% { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>%group% is not a valid group' - foreach next } - define groups '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Player %value% is not a member' - foreach next } - define pass true - yaml set 'regions.%name%.members.players:<-:' 'id:dRegions_%world%_regions' - flag 'dRegions.cache.%world%.%name%:!' } } - if { - yaml 'savefile:dRegions/worlds/%world%/regions.yml' 'id:dRegions_%world%_regions' - run s@msgPrefixed delay:1t 'def:dRegions|<&f><&o>%name%<&7><&o> members updated' } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>You may not list other players regions!' - queue clear } - define player '].escaped||null>' - if ! { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } - if !> { - if ||].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } } } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&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 '' - define entries 'li@' - foreach '': - define color ']:&6||]:&e||&f>>' - define entry ']><&dot.pad_right[2].with[<&sp>]> |drg info |<&d>Click for region info]>' - define entries '' - run s@msgBoxed 'def:dRegions|dRegions|drg help|<&a>Go back to main help]>|<&e>Region List|drg list|%page%|52|10|' 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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } - if !> { - if ||].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } } } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You must specify a valid region ID!' - queue clear } # Check the specified flag name - define flag '' - if { - define flags '' - if ! { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You must specify a valid region flag!' - queue clear } } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&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 instantly delay:1t s@dRegions p:clearCache '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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Cleared %flag% flag for region %region%' - queue clear } - inject s@dRegions_Flag_%flag% p:command_handler - if && { - yaml set 'regions.%region%.flags.%flag%:/%group%' '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' - define string "<&f><&o>%region%<&7><&o> set %flag% flag to <&f><&o>%flagValue%" - define lines '|45]>' - foreach { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Unset parent for <&f><&o>%name%' - queue clear } # Check if parent region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if player owns parent - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&f><&o>%name%<&7><&o> set parent to <&f><&o>%parent%' teleport: # /drg teleport [ID] -w world - narrate "Stub" - inject locally prerun instantly # Check if region exists - define exists '' - if == orphan { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if !%exists% { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Check if is owner - if ! && ! { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You are not an owner of this region!' - queue clear } } # Check for teleport perms - if ! && ! && ! { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You do not have permission!' - queue clear } remove: # /drg remove [ID] -w world - inject locally prerun instantly # Check if region exists - define exists '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is an orphaned region by this name!' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Please notify an admin!' - queue clear } else if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>There is no region by this name!' - queue clear } # Don't remove the __global__ region - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You can not remove the __global__ region!' - queue clear } # Check if is owner - if !> { - if ].not> { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Invalid world specfied!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue clear } - define args '].exclude[-w]>' - define name '' } else { - define world '' } - if { - define wandType '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You must select a cuboid type region!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue clear } - define pos1 '' - define pos2 '' - if || { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>No region selected!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue clear } - if || { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Selected region not within specified world!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue clear } - define selectedCuboid '' } - define name '>' - if '' { - if { - define dRegions '' - define orderedRegions '' - if { - define name '__global__' } else { - define name '' - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c><&o>There are multiple regions at this location!' - run s@msgPrefixed delay:1t 'def:dRegions|<&7><&o>Getting highest priority region info.' } } } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>You must specify a region ID!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue stop } } - if '' { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>Region ID may only contain letters, numbers,' - run s@msgPrefixed delay:1t 'def:dRegions|<&c>hyphen, and underscore!' - run s@msgPrefixed delay:1t 'def:dRegions|' - queue stop } - define page "]:||1>" # - 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 '' - define size '' } else if { - define POS1 '0,0,0,%world%' - define POS2 '0,0,0,%world%' - define size 'infinite' } else { - run s@msgPrefixed delay:1t 'def:dRegions|<&c>This region is misconfigured!' - run s@msgPrefixed delay:1t 'def:dRegions|<&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 { # JSON is broken in denizen. Just narrate for now. - narrate "<&5>| <&f>Authors<&co> <&7>|Anthony|" # - 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 '' } } # 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 # #-------------------------------------- # # Used to process input for some flags # dRegions_Flags_CommandProcessors: type: task 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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Cleared %flag% list for region %region%' - queue clear } } - foreach %entries% { - if > { - define entries '' - run s@msgPrefixed delay:1t 'def:dRegions|<&c><&o>%value% is not a valid !' } } - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c><&o>No valid s specified!' - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Cleared %flag% list for region %region%' - queue clear } } - if { - run s@msgPrefixed delay:1t 'def:dRegions|<&c><&o>No valid s specified!' - define lines '%flag% flag requires a %type% value!>|45]>' - foreach { - run s@msgPrefixed delay:1t 'def:dRegions|<&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@msgPrefixed delay:1t 'def:dRegions|<&c>Cleared %flag% list for region %region%' - queue clear } - define flagValue '' ################################################################################ # # 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 not a %type%" # } # dRegion_FlagTypeMatch: # Used to check if the value supplied when setting a flag is valid for the flag type. type: procedure debug: false definitions: YourValue|Flag script: - choose '': - case 'number': - determine '' - case 'decimal': - determine '.and[]>' - case 'b': - determine '' - case 'location': - determine '' - case 'stg': - determine '' - case 'st': - determine '' - case 'sg': - determine '' - case 'stsg': - determine '' - case 'group': - determine '' - case 'list': - determine '' - case 'custom': - determine '' - case 'string': - determine '' - default: - determine 'false' # ################################################################################ # # dRegions WorldGuard Importer # # Import WorldGuard regions to dRegions in one fell swoop. # Also covers popular WG extensions like WorldGuard Custom Flags and WorldRegions # A vast majority of flags are handled in this importer, though some have been # left out. If there is something you need, just ask. # # Usage: # - run s@dRegions_WG_Importer 'def:%worldname%' #-------------------------------------- dRegions_WG_Importer: type: task debug: false speed: 0 script: - define world '' - define sender '' - if contains 's@dWM_VW' { - define v '' - if '%v%' != '0' { - run instantly delay:1t 's@dWM_Error' 'def:world|%v%|%sender%|%world%' - queue clear } } else { - if !contains '%world%' { - run s@msgPrefixed 'def:dRegions|<&4>Unknown world<&co> %world%! Is it loaded?' - queue clear } } - if { - if ! { - yaml fix_formatting 'load:../WorldGuard/worlds/%world%/regions.yml' 'id:dRegions_WGImport_%world%' } - if !/regions.yml]||false> { - yaml create 'id:dRegions__regions' } - if !_regions]> { - yaml 'load:dRegions/worlds//regions.yml' 'id:dRegions__regions' } } else { - run s@msgPrefixed 'def:dRegions|<&4>/WorldGuard/worlds/%world%/regions.yml does not exist!' - queue clear } - run s@msgPrefixed 'def:dRegions|<&3>Starting World Import for<&co> %world%' - log "<&ns.pad_right[80].with[-]>" type:none 'file:/plugins/Denizen/dRegions/worlds//import.txt' - log "STARTING WORLD IMPORT FOR<&co> %world%" type:info 'file:/plugins/Denizen/dRegions/worlds//import.txt' - foreach '': - define region '%value%' - log "Importing %region%..." type:info 'file:/plugins/Denizen/dRegions/worlds//import.txt' - inject locally importRegion instantly - yaml 'savefile:dRegions/worlds//regions.yml' 'id:dRegions__regions' - yaml unload 'id:dRegions_WGImport_%world%' - log "%world% IMPORT COMPLETE!" type:info 'file:/plugins/Denizen/dRegions/worlds//import.txt' - log "<&ns>" type:none 'file:/plugins/Denizen/dRegions/worlds//import.txt' - run s@msgPrefixed 'def:dRegions|<&3>%world% IMPORT COMPLETE!' importRegion: # Set the region type and coordinates and note the cuboid - define type '' - yaml set 'regions.%region%.type:%type%' 'id:dRegions__regions' - if '%type%' == 'cuboid' { - define min ',,,%world%' - define max ',,,%world%' - define cuboid '|].as_cuboid>' - yaml set 'regions.%region%.min:' 'id:dRegions__regions' - yaml set 'regions.%region%.max:' 'id:dRegions__regions' - note 'cu@|' 'as:dregions__%region%' } else { - log "Unknown region type<&co> %type%" type:warning 'file:/plugins/Denizen/dRegions/worlds//import.txt' } # Set priority - yaml set 'regions.%region%.priority:' 'id:dRegions__regions' # Set parent/child associations - define parent '' - if %parent% != null { - yaml set 'regions.%region%.parent:%parent%' 'id:dRegions__regions' - if _regions].read[regions.%parent%.children].as_list||li@> !contains %region% { - yaml set 'regions.%parent%.children:->:%region%' 'id:dRegions__regions' } } # Import members and owners - define members-players '_regions].read[regions.%region%.members.players]||li@>]||li@>' - foreach %members-players% { - yaml set 'regions.%region%.members.players:->:%value%' 'id:dRegions__regions' } - define members-groups '_regions].read[regions.%region%.members.groups]||li@>]||li@>' - foreach %members-groups% { - yaml set 'regions.%region%.members.groups:->:%value%' 'id:dRegions__regions' } - define owners-players '_regions].read[regions.%region%.owners.players]||li@>]||li@>' - foreach %owners-players% { - yaml set 'regions.%region%.owners.players:->:%value%' 'id:dRegions__regions' } - define owners-groups '_regions].read[regions.%region%.owners.groups]||li@>]||li@>' - foreach %owners-groups% { - yaml set 'regions.%region%.owners.groups:->:%value%' 'id:dRegions__regions' } # Import flags - define flags '' - foreach %flags% { - define flag '%value%' - define mapping '' - if %mapping% == null { - log "%flag% flag does not exist in dRegions!" type:warning 'file:/plugins/Denizen/dRegions/worlds//import.txt' - foreach next } - inject s@dRegions_WG_Importer 'p:' } flag_allowed-cmds: - define commands '' - yaml set 'regions.%region%.flags.commands:allow' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.commands-list:' 'id:dRegions__regions' flag_blocked-cmds: - define commands '' - yaml set 'regions.%region%.flags.commands:deny' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.commands-list:' 'id:dRegions__regions' flag_allowed-break: - define blocks '' - yaml set 'regions.%region%.flags.block-break:allow' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.block-breaklist:].before[<&rb>]>' 'id:dRegions__regions' flag_blocked-break: - define blocks '' - yaml set 'regions.%region%.flags.block-break:deny' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.block-breaklist:].before[<&rb>]>' 'id:dRegions__regions' flag_allowed-place: - define blocks '' - yaml set 'regions.%region%.flags.block-place:allow' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.block-placelist:].before[<&rb>]>' 'id:dRegions__regions' flag_blocked-place: - define blocks '' - yaml set 'regions.%region%.flags.block-place:deny' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.block-placelist:].before[<&rb>]>' 'id:dRegions__regions' flag_interact: - define group '' - define interact '' - if '%group%' == 'null' { - define set '%interact%' } else { - define set '%interact%/%group%' } - yaml set 'regions.%region%.flags.npc-interact:%set%' 'id:dRegions__regions' - if !_regions].contains[regions.%region%.flags.entity-interact]> { - yaml set 'regions.%region%.flags.entity-interact:%set%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.entity-interactlist:all' 'id:dRegions__regions' } - if !_regions].contains[regions.%region%.flags.use-switches]> { - yaml set 'regions.%region%.flags.use-switches:%set%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.use-switches-list:all' 'id:dRegions__regions' } - if !_regions].contains[regions.%region%.flags.use-utilities]> { - yaml set 'regions.%region%.flags.use-utilities:%set%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.use-utilities-blocks:all' 'id:dRegions__regions' } - if !_regions].contains[regions.%region%.flags.chest-access]> { - yaml set 'regions.%region%.flags.chest-access:%set%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.chest-access-blocks:all' 'id:dRegions__regions' } - if !_regions].contains[regions.%region%.flags.access-access]> { - yaml set 'regions.%region%.flags.door-access:%set%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.door-access-doors:all' 'id:dRegions__regions' } flag_entity-explode: - define currentState '_regions].read[regions.%region%.flags.entity-explode]||null>' - define currentList '_regions].read[regions.%region%.flags.entity-explodelist].replace[, ].with[|].as_list||li@>' - define flagVal '' - define entity '' - if %entity% == enderdragon { - define entity 'ender_dragon' } else if %entity% == tnt { - define entity 'primed_tnt|minecart_tnt' } else if %entity% == ghast { - define entity 'fireball|small_fireball' } else if %entity% == other { - define entity 'ender_crystal|fireball|small_fireball|wither|wither_skull' } - if %currentState% == null { - yaml set 'regions.%region%.flags.entity-explode:%flagVal%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.entity-explodelist:' 'id:dRegions__regions' } else if '%currentState%' == '%flagVal%' { - define newList '' - if { - define newList 'all' } else { - define newList '' } - yaml set 'regions.%region%.flags.entity-explodelist:%newList%' 'id:dRegions__regions' } - inject locally flag_entity-grief flag_deny-spawn: # This needs work - define currentState '_regions].read[regions.%region%.flags.mob-spawn]||null>' - define currentList '_regions].read[regions.%region%.flags.mob-spawnlist].replace[, ].with[|].as_list||li@>' - define mobSpawn '' - define denySpawn '' - if %denySpawn% != null { - yaml set 'regions.%region%.flags.mob-spawn:deny' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.mob-spawnlist:' 'id:dRegions__regions' } else { - yaml set 'regions.%region%.flags.mob-spawn:%mobSpawn%' 'id:dRegions__regions' } flag_entity-grief: - define currentState '_regions].read[regions.%region%.flags.entity-grief]||null>' - define currentList '_regions].read[regions.%region%.flags.entity-grieflist].replace[, ].with[|].as_list||li@>' - define flagVal '' - define entity '' - if %entity% == enderdragon { - define entity 'ender_dragon' } else if %entity% == tnt { - define entity 'primed_tnt|minecart_tnt' } else if %entity% == wither { - define entity 'wither|wither_skull' } else if %entity% == ghast { - define entity 'ghast|fireball|small_fireball' } else if %entity% == other { - define entity 'ender_crystal|fireball|small_fireball|wither|wither_skull' } - if %currentState% == null { - yaml set 'regions.%region%.flags.entity-grief:%flagVal%' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.entity-grieflist:' 'id:dRegions__regions' } else if '%currentState%' == '%flagVal%' { - define newList '' - if { - define newList 'all' } else { - define newList '' } - yaml set 'regions.%region%.flags.entity-grieflist:%newList%' 'id:dRegions__regions' } flag_boolean: - yaml set 'regions.%region%.flags.:]:false||true>' 'id:dRegions__regions' flag_generic: - yaml set 'regions.%region%.flags.:' 'id:dRegions__regions' flag_generic-list: - yaml set 'regions.%region%.flags.:' 'id:dRegions__regions' - yaml set 'regions.%region%.flags.:all' 'id:dRegions__regions' flag_generic-group: - define group '' - if %group% == null { - yaml set 'regions.%region%.flags.:' 'id:dRegions__regions' } else { - yaml set 'regions.%region%.flags.:/%group%' 'id:dRegions__regions' } flag_generic-list-group: - define group '' - if %group% == null { - yaml set 'regions.%region%.flags.:' 'id:dRegions__regions' } else { - yaml set 'regions.%region%.flags.:/%group%' 'id:dRegions__regions' } - yaml set 'regions.%region%.flags.:all' 'id:dRegions__regions' flag_generic-string: - define colorMap 'li@r/c|R/4|y/e|Y/6|g/a|G/2|c/b|C/3|b/9|B/1|p/d|P/5|0/0|1/8|2/7|w/f|k/k|l/l|m/m|n/n|o/o|x/r' - define string '' - foreach '%colorMap%': - define string '].with[&]>' - yaml set 'regions.%region%.flags.:%string%' 'id:dRegions__regions' flag_generic-location: - foreach 'li@x|y|z|pitch|yaw|world': - define %value% '' - define loc '%x%,%y%,%z%,%pitch%,%yaw%,%world%' - define group '' - if '%group%' == 'null' { - yaml set 'regions.%region%.flags.:%loc%' 'id:dRegions__regions' } else { - yaml set 'regions.%region%.flags.:%loc%/%group%' 'id:dRegions__regions' } mapping: # WorldGuard Flags allowed-cmds: flag_allowed-cmds blocked-cmds: flag_blocked-cmds build: flag_generic-group/build block-break: flag_generic-group/block-break block-place: flag_generic-group/block-place chest-access: flag_generic-list-group/chest-access/chest-access-blocks chorus-fruit-teleport: flag_generic-group/chorusfruit creeper-explosion: flag_entity-explode deny-spawn: flag_deny-spawn enderdragon-block-damage: flag_entity-explode enderman-grief: flag_entity-grief enderpearl: flag_generic-group/enderpearl entity-item-frame-destroy: flag_generic/entity-break-itemframe entity-painting-destroy: flag_generic/entity-break-painting entry: flag_generic-group/entry # entry-deny-message: flag_generic-string/entry-deny-message exit: flag_generic-group/exit # exit-deny-message: flag_generic-string/exit-deny-message exit-override: flag_generic-group/exit-override exit-via-teleport: flag_generic-group/exit-via-teleport # exp-drops: # fall-damage: farewell: flag_generic-string/farewell feed-amount: flag_generic-group/feed-amount feed-delay: flag_generic/feed-delay feed-max-hunger: flag_generic/feed-max feed-min-hunger: flag_generic/feed-min fire-spread: flag_generic-list/fire-spread/fire-spreadblocks game-mode: flag_generic-group/gamemode ghast-fireball: flag_entity-explode grass-growth: flag_generic/grass-spread greeting: flag_generic-string/greeting heal-amount: flag_generic-group/heal-amount heal-delay: flag_generic/heal-delay heal-max-health: flag_generic/heal-max heal-min-health: flag_generic/heal-min ice-form: flag_boolean/ice-form ice-melt: flag_boolean/ice-melt interact: flag_interact invincible: flag_generic-list-group/player-damage/player-damage-types item-drop: flag_generic-group/player-drops item-pickup: flag_generic-group/player-pickup lava-fire: flag_boolean/lava-fire lava-flow: flag_generic-list/lava-spread/lava-spreadblocks leaf-decay: flag_boolean/leaf-decay lighter: flag_generic-group/lighter lightning: flag_generic-list/lightning-strike/lightning-strikeblocks mob-damage: flag_generic-list-group/mob-damage/mob-damagelist mob-spawning: flag_deny-spawn mushroom-growth: flag_boolean/mushroom-spread mycelium-spread: flag_boolean/mycel-spread notify-enter: flag_boolean/notify-enter notify-leave: flag_boolean/notify-exit other-explosion: flag_entity-explode pistons: flag_boolean/pistons potion-splash: flag_boolean/potion-throw pvp: flag_boolean/pvp recieve-chat: flag_generic-group/recieve-chat # ride: send-chat: flag_generic-group/send-chat sleep: flag_generic-group/sleep snow-fall: flag_generic-list/snow-fall/snow-fallblocks snow-melt: flag_boolean/snow-melt soil-dry: flag_boolean/soil-dry spawn: flag_generic-location/spawn teleport: flag_generic-location/teleport time-lock: flag_generic-group/time-lock tnt: flag_entity-explode # use: vehicle-destroy: flag_generic-group/vehicle-destroy vehicle-place: flag_generic-group/vehicle-place vine-growth: flag_boolean/vine-spread water-flow: flag_generic-list/water-spread/water-spreadblocks weather-lock: flag_generic-group/weather-lock # WorldRegions flags http://dev.bukkit.org/bukkit-plugins/worldregions/ # allow-blocks: # deny-blocks: # chat-prefix: # chat-suffix: # chunk-unload: # cmds-block: # cmds-allow: # allow-pickup: # death-drop-despawn-time: # death-exp-despawn-time: # drop-despawn-time: # exp-despawn-time: # enderpearls: # allow-explosions: # deny-explosions: # fly: # instabreak: # keep-inventory: # keep-level: # mob-damage-allow: # mob-damage-deny: # allow-damage: # deny-damage: # player-enter-command: # player-leave-command: # server-enter-command: # server-leave-command: # effects: # signs-allow: # signs-block: # respawn-location: # texturepack: # delta-time: # fix-time: # max-time: # min-time: # treefarm: # WorldGuard Custom Flags http://dev.bukkit.org/bukkit-plugins/worldguard-custom-flags/pages/flags/ allowed-break: flag_allowed-break # allowed-damage: allowed-place: flag_allowed-place # apply-potion: blocked-break: flag_blocked-break # blocked-damage: blocked-place: flag_blocked-place # healing: # hunger: # instabreak: # item-pickup: # item-spawn: mob-targeting: flag_generic-list-group/mob-target/mob-targetlist pve: flag_generic-list-group/pve/pve-moblist # regen: sheep-eat: flag_entity-grief # time: wither-block-damage: flag_entity-grief zombie-door-break: flag_entity-grief ################################################################################