Paste #48620: Diff note for paste #48619

Date: 2018/07/14 17:33:06 UTC-07:00
Type: Diff Report

View Raw Paste Download This Paste
Copy Link


-#  
-# ----| USAGE 
-#  
-# It's easy as running this command: 
-# /ex run worldguard_regions_to_notable_cuboids 
-#  
-# It will automatically convert all WorldGuard regions to 
-# notable cuboids, so you can use cuboids with this name 
-# format: 
-#  
-# wgregion_W_<world name>_R_<region name> 
-#  
-# You can then use these new notable regions in events, 
-# commands, tags, etc. 
-#  
-#  
+# 
+# ----| USAGE
+# 
+# The script will automatically look for new and removed regions whenever you
+# use the WorldGuard "/region" command. All regions are then converted to
+# notable cuboids.
+# 
+# If you wish to manually convert regions, you can run the task script
+# "worldguard_regions_to_notable_cuboids"
+# 
+# All notable cuboids created by this script will have names following this
+# template:
+# wgregion_W_<world name>_R_<region name>
+# 
+# You can then use these new notable regions in events, commands, tags, etc.
+# 
-# ----| NOTE 
-#  
-# Every time you create, edit, or delete a WorldGuard region, 
-# you will need to rerun this script to update the notable 
-# cuboids as well. 
-#  
 # 
+
+worldguard_regions_to_notable_cuboids:
+    type: task
+    debug: false
+    speed: 0
+    script:
+    - flag server worldguard_to_notable_cuboids:!
+    - foreach <server.list_worlds> {
+        - define w <def[value]>
+        - foreach <def[w].list_regions> {
+            - note <def[value].cuboid> as:wgregion_W_<def[w].name>_R_<def[value].id>
+            - flag server worldguard_to_notable_cuboids:->:<def[value]>
+        }
+    }
+    - foreach <server.list_notables[cuboids].filter[starts_with[cu@wgregion_]].exclude[<server.flag[worldguard_to_notable_cuboids].as_list>]> {
+        - note remove as:<def[value]>
+    }
 
-worldguard_regions_to_notable_cuboids: 
-    type: task 
-    debug: false 
-    speed: 0 
-    script: 
-    - define c_list 'li@' 
-    - foreach <server.list_worlds> { 
-        - define w '<def[value]>' 
-        - foreach <def[w].list_regions> { 
-            - note <def[value].cuboid> 'as:wgregion_W_<def[w].name>_R_<def[value].id>' 
-            - define c_list '<def[c_list].include[cu@wgregion_W_<def[w].name>_R_<def[value].id>]>' 
-        } 
-    } 
-    - foreach <server.list_notables[cuboids].filter[starts_with[cu@wgregion_]].exclude[<def[c_list]>]> { 
-        - note remove as:<def[value]> 
-    } 
+worldguard_regions_to_notable_cuboids_evts:
+    type: world
+    debug: false
+    events:
+        on rg|region command:
+        - wait 1t
+        - if '<li@define|create|d|remove|rem|delete|del|redefine|update|move|load|reload.contains[<context.raw_args.trim.before[ ]>]>' {
+            - define rg_list li@
+            - foreach <server.list_worlds> {
+                - define rg_list <def[rg_list].include[<def[value].list_regions>]>
+            }
+            - define add li@
+            - foreach <def[rg_list].exclude[<server.flag[worldguard_to_notable_cuboids].as_list||li@>]> {
+                - note <def[value].cuboid> as:wgregion_W_<def[value].world.name>_R_<def[value].id>
+                - define add <def[add].include[<def[value]>]>
+            }
+            - define sub li@
+            - foreach <server.flag[worldguard_to_notable_cuboids].as_list.exclude[<def[rg_list]>]||li@> {
+                - note remove as:wgregion_W_<def[value].world.name>_R_<def[value].id>
+                - define sub <def[sub].include[<def[value]>]>
+            }
+            - define new_list <server.flag[worldguard_to_notable_cuboids].as_list.exclude[<def[sub]>].include[<def[add]>]||<def[add]>>
+            - flag server worldguard_to_notable_cuboids:!
+            - flag server worldguard_to_notable_cuboids:|:<def[new_list]>
+        }