[{"data":1,"prerenderedAt":805},["ShallowReactive",2],{"wiki-nav":3,"wiki-sidebar":238,"wiki-en-\u002Fwiki\u002Freference\u002Fpermission-calculation":304,"wiki-surround-en-\u002Fwiki\u002Freference\u002Fpermission-calculation":802},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Wiki","i-lucide-book","\u002Fwiki","wiki",[10,13,40,84,88,110,114,155,159,197,212,234],{"title":11,"path":7,"stem":12},"Wiki home","wiki\u002Findex",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":39},"About","i-lucide-info","\u002Fwiki\u002Fabout","wiki\u002Fabout",[19,23,27,31,35],{"title":20,"path":21,"stem":22},"Credits","\u002Fwiki\u002Fabout\u002Fcredits","wiki\u002Fabout\u002Fcredits",{"title":24,"path":25,"stem":26},"External connections","\u002Fwiki\u002Fabout\u002Fexternal-connections","wiki\u002Fabout\u002Fexternal-connections",{"title":28,"path":29,"stem":30},"Locale and translations","\u002Fwiki\u002Fabout\u002Flocale","wiki\u002Fabout\u002Flocale",{"title":32,"path":33,"stem":34},"Placeholders","\u002Fwiki\u002Fabout\u002Fplaceholders","wiki\u002Fabout\u002Fplaceholders",{"title":36,"path":37,"stem":38},"Why LuckPerms?","\u002Fwiki\u002Fabout\u002Fwhy-luckperms","wiki\u002Fabout\u002Fwhy-luckperms",false,{"title":41,"icon":42,"path":43,"stem":44,"children":45},"Commands","i-lucide-terminal","\u002Fwiki\u002Fcommands","wiki\u002Fcommands\u002Findex",[46,48,52,56,60,64,68,72,76,80],{"title":47,"path":43,"stem":44},"Command usage",{"title":49,"path":50,"stem":51},"General commands","\u002Fwiki\u002Fcommands\u002Fgeneral","wiki\u002Fcommands\u002Fgeneral",{"title":53,"path":54,"stem":55},"Group commands","\u002Fwiki\u002Fcommands\u002Fgroup","wiki\u002Fcommands\u002Fgroup",{"title":57,"path":58,"stem":59},"Log commands","\u002Fwiki\u002Fcommands\u002Flog","wiki\u002Fcommands\u002Flog",{"title":61,"path":62,"stem":63},"Meta commands","\u002Fwiki\u002Fcommands\u002Fmeta","wiki\u002Fcommands\u002Fmeta",{"title":65,"path":66,"stem":67},"Parent commands","\u002Fwiki\u002Fcommands\u002Fparent","wiki\u002Fcommands\u002Fparent",{"title":69,"path":70,"stem":71},"Permission commands","\u002Fwiki\u002Fcommands\u002Fpermission","wiki\u002Fcommands\u002Fpermission",{"title":73,"path":74,"stem":75},"Permissions reference","\u002Fwiki\u002Fcommands\u002Fpermissions","wiki\u002Fcommands\u002Fpermissions",{"title":77,"path":78,"stem":79},"Track commands","\u002Fwiki\u002Fcommands\u002Ftrack","wiki\u002Fcommands\u002Ftrack",{"title":81,"path":82,"stem":83},"User commands","\u002Fwiki\u002Fcommands\u002Fuser","wiki\u002Fcommands\u002Fuser",{"title":85,"path":86,"stem":87},"Configuration","\u002Fwiki\u002Fconfiguration","wiki\u002Fconfiguration",{"title":89,"icon":90,"path":91,"stem":92,"children":93,"page":39},"Developers","i-lucide-code","\u002Fwiki\u002Fdevelopers","wiki\u002Fdevelopers",[94,98,102,106],{"title":95,"path":96,"stem":97},"Developer API","\u002Fwiki\u002Fdevelopers\u002Fapi","wiki\u002Fdevelopers\u002Fapi",{"title":99,"path":100,"stem":101},"API usage","\u002Fwiki\u002Fdevelopers\u002Fapi-usage","wiki\u002Fdevelopers\u002Fapi-usage",{"title":103,"path":104,"stem":105},"Contributing","\u002Fwiki\u002Fdevelopers\u002Fcontributing","wiki\u002Fdevelopers\u002Fcontributing",{"title":107,"path":108,"stem":109},"Standalone app and REST API","\u002Fwiki\u002Fdevelopers\u002Fstandalone-rest","wiki\u002Fdevelopers\u002Fstandalone-rest",{"title":111,"path":112,"stem":113},"FAQ","\u002Fwiki\u002Ffaq","wiki\u002Ffaq",{"title":115,"icon":116,"path":117,"stem":118,"children":119,"page":39},"Features","i-lucide-sparkles","\u002Fwiki\u002Ffeatures","wiki\u002Ffeatures",[120,124,128,132,136,140,151],{"title":121,"path":122,"stem":123},"Context","\u002Fwiki\u002Ffeatures\u002Fcontext","wiki\u002Ffeatures\u002Fcontext",{"title":125,"path":126,"stem":127},"Default groups","\u002Fwiki\u002Ffeatures\u002Fdefault-groups","wiki\u002Ffeatures\u002Fdefault-groups",{"title":129,"path":130,"stem":131},"Prefixes, suffixes and meta","\u002Fwiki\u002Ffeatures\u002Fprefixes-suffixes-meta","wiki\u002Ffeatures\u002Fprefixes-suffixes-meta",{"title":133,"path":134,"stem":135},"Tracks","\u002Fwiki\u002Ffeatures\u002Ftracks","wiki\u002Ffeatures\u002Ftracks",{"title":137,"path":138,"stem":139},"Verbose","\u002Fwiki\u002Ffeatures\u002Fverbose","wiki\u002Ffeatures\u002Fverbose",{"title":141,"path":142,"stem":143,"children":144},"Web Editor","\u002Fwiki\u002Ffeatures\u002Fweb-editor","wiki\u002Ffeatures\u002Fweb-editor\u002Findex",[145,147],{"title":146,"path":142,"stem":143},"Web editor",{"title":148,"path":149,"stem":150},"Web editor technical details","\u002Fwiki\u002Ffeatures\u002Fweb-editor\u002Ftechnical","wiki\u002Ffeatures\u002Fweb-editor\u002Ftechnical",{"title":152,"path":153,"stem":154},"Weight","\u002Fwiki\u002Ffeatures\u002Fweight","wiki\u002Ffeatures\u002Fweight",{"title":156,"path":157,"stem":158},"Getting started","\u002Fwiki\u002Fgetting-started","wiki\u002Fgetting-started",{"title":160,"icon":161,"path":162,"stem":163,"children":164,"page":39},"Guides","i-lucide-map","\u002Fwiki\u002Fguides","wiki\u002Fguides",[165,169,173,177,181,185,189,193],{"title":166,"path":167,"stem":168},"Argument-based command permissions","\u002Fwiki\u002Fguides\u002Fargument-permissions","wiki\u002Fguides\u002Fargument-permissions",{"title":170,"path":171,"stem":172},"Bulk editing","\u002Fwiki\u002Fguides\u002Fbulk-editing","wiki\u002Fguides\u002Fbulk-editing",{"title":174,"path":175,"stem":176},"Extensions","\u002Fwiki\u002Fguides\u002Fextensions","wiki\u002Fguides\u002Fextensions",{"title":178,"path":179,"stem":180},"Migration","\u002Fwiki\u002Fguides\u002Fmigration","wiki\u002Fguides\u002Fmigration",{"title":182,"path":183,"stem":184},"Prefix and suffix stacking","\u002Fwiki\u002Fguides\u002Fprefix-stacking","wiki\u002Fguides\u002Fprefix-stacking",{"title":186,"path":187,"stem":188},"Storage system errors","\u002Fwiki\u002Fguides\u002Fstorage-errors","wiki\u002Fguides\u002Fstorage-errors",{"title":190,"path":191,"stem":192},"Switching storage types","\u002Fwiki\u002Fguides\u002Fswitching-storage","wiki\u002Fguides\u002Fswitching-storage",{"title":194,"path":195,"stem":196},"Syncing data between servers","\u002Fwiki\u002Fguides\u002Fsyncing","wiki\u002Fguides\u002Fsyncing",{"title":198,"icon":199,"path":200,"stem":201,"children":202},"Installation","i-lucide-download","\u002Fwiki\u002Finstall","wiki\u002Finstall\u002Findex",[203,204,208],{"title":198,"path":200,"stem":201},{"title":205,"path":206,"stem":207},"Hytale","\u002Fwiki\u002Finstall\u002Fhytale","wiki\u002Finstall\u002Fhytale",{"title":209,"path":210,"stem":211},"Network installation","\u002Fwiki\u002Finstall\u002Fnetwork","wiki\u002Finstall\u002Fnetwork",{"title":213,"icon":214,"path":215,"stem":216,"children":217,"page":39},"Reference","i-lucide-library","\u002Fwiki\u002Freference","wiki\u002Freference",[218,222,226,230],{"title":219,"path":220,"stem":221},"Migrating from GroupManager or PermissionsEx","\u002Fwiki\u002Freference\u002Fmigrating-gm-pex","wiki\u002Freference\u002Fmigrating-gm-pex",{"title":223,"path":224,"stem":225},"How permission calculation works","\u002Fwiki\u002Freference\u002Fpermission-calculation","wiki\u002Freference\u002Fpermission-calculation",{"title":227,"path":228,"stem":229},"Self-hosting the web interfaces","\u002Fwiki\u002Freference\u002Fself-hosting","wiki\u002Freference\u002Fself-hosting",{"title":231,"path":232,"stem":233},"Upgrading from v4 to v5","\u002Fwiki\u002Freference\u002Fupgrade-v4-v5","wiki\u002Freference\u002Fupgrade-v4-v5",{"title":235,"path":236,"stem":237},"Storage types","\u002Fwiki\u002Fstorage","wiki\u002Fstorage",[239],{"title":5,"icon":6,"path":7,"stem":8,"children":240},[241,242,249,261,262,268,269,281,282,292,297,303],{"title":11,"path":7,"stem":12},{"title":14,"icon":15,"path":16,"stem":17,"children":243,"page":39},[244,245,246,247,248],{"title":20,"path":21,"stem":22},{"title":24,"path":25,"stem":26},{"title":28,"path":29,"stem":30},{"title":32,"path":33,"stem":34},{"title":36,"path":37,"stem":38},{"title":41,"icon":42,"path":43,"stem":44,"children":250},[251,252,253,254,255,256,257,258,259,260],{"title":47,"path":43,"stem":44},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63},{"title":65,"path":66,"stem":67},{"title":69,"path":70,"stem":71},{"title":73,"path":74,"stem":75},{"title":77,"path":78,"stem":79},{"title":81,"path":82,"stem":83},{"title":85,"path":86,"stem":87},{"title":89,"icon":90,"path":91,"stem":92,"children":263,"page":39},[264,265,266,267],{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"icon":116,"path":117,"stem":118,"children":270,"page":39},[271,272,273,274,275,276,280],{"title":121,"path":122,"stem":123},{"title":125,"path":126,"stem":127},{"title":129,"path":130,"stem":131},{"title":133,"path":134,"stem":135},{"title":137,"path":138,"stem":139},{"title":141,"path":142,"stem":143,"children":277},[278,279],{"title":146,"path":142,"stem":143},{"title":148,"path":149,"stem":150},{"title":152,"path":153,"stem":154},{"title":156,"path":157,"stem":158},{"title":160,"icon":161,"path":162,"stem":163,"children":283,"page":39},[284,285,286,287,288,289,290,291],{"title":166,"path":167,"stem":168},{"title":170,"path":171,"stem":172},{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188},{"title":190,"path":191,"stem":192},{"title":194,"path":195,"stem":196},{"title":198,"icon":199,"path":200,"stem":201,"children":293},[294,295,296],{"title":198,"path":200,"stem":201},{"title":205,"path":206,"stem":207},{"title":209,"path":210,"stem":211},{"title":213,"icon":214,"path":215,"stem":216,"children":298,"page":39},[299,300,301,302],{"title":219,"path":220,"stem":221},{"title":223,"path":224,"stem":225},{"title":227,"path":228,"stem":229},{"title":231,"path":232,"stem":233},{"title":235,"path":236,"stem":237},{"id":305,"title":223,"body":306,"contributors":778,"description":794,"editUrl":795,"extension":796,"meta":797,"navigation":798,"path":224,"seo":799,"stem":225,"updatedAt":800,"__hash__":801},"wiki_en\u002Fwiki\u002Freference\u002Fpermission-calculation.md",{"type":307,"value":308,"toc":752},"minimark",[309,314,318,322,325,330,364,367,388,391,394,402,405,409,414,435,452,456,478,489,493,516,527,531,552,557,560,564,568,575,578,585,588,595,598,605,608,615,618,625,628,635,638,642,645,649,652,655,658,661,664,672,675,680,687,690,697,703,705,710,713,718,724,726,731,735,738,741,748],[310,311,313],"h2",{"id":312},"intro","Intro",[315,316,317],"p",{},"Whilst the basics of LuckPerms are fairly simple, you can leverage a number of features and internal rules to setup an advanced permission system.",[310,319,321],{"id":320},"server-and-world-specific-permissions","Server and World specific permissions",[315,323,324],{},"LuckPerms is designed for multi-server networks. You can define permissions that only apply on certain servers and in certain worlds.",[326,327,329],"h3",{"id":328},"some-important-config-options","Some important config options:",[331,332,337],"pre",{"className":333,"code":334,"language":335,"meta":336,"style":336},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# The name of the server, used for server specific permissions. Set to 'global' to disable.\nserver: global\n","yml","",[338,339,340,349],"code",{"__ignoreMap":336},[341,342,345],"span",{"class":343,"line":344},"line",1,[341,346,348],{"class":347},"sHwdD","# The name of the server, used for server specific permissions. Set to 'global' to disable.\n",[341,350,352,356,360],{"class":343,"line":351},2,[341,353,355],{"class":354},"swJcz","server",[341,357,359],{"class":358},"sMK4o",":",[341,361,363],{"class":362},"sfazB"," global\n",[315,365,366],{},"This is the name of the server. If you want to set server specific permissions, you need to name your server by changing this option. Servers in your network can share the same name if you like.",[331,368,370],{"className":333,"code":369,"language":335,"meta":336,"style":336},"# If users on this server should have their global permissions\u002Fgroups applied.\ninclude-global: true\n",[338,371,372,377],{"__ignoreMap":336},[341,373,374],{"class":343,"line":344},[341,375,376],{"class":347},"# If users on this server should have their global permissions\u002Fgroups applied.\n",[341,378,379,382,384],{"class":343,"line":351},[341,380,381],{"class":354},"include-global",[341,383,359],{"class":358},[341,385,387],{"class":386},"sfNiH"," true\n",[315,389,390],{},"The include global option is also important.",[315,392,393],{},"Permissions in LuckPerms are either server specific (they only apply on certain servers) or global (they apply on all servers).",[315,395,396,397,401],{},"By setting the above option to ",[398,399,400],"strong",{},"false",", only permissions that are explicitly set on that server will be applied. Global (or non-server-specific) permissions will not apply.",[315,403,404],{},"By changing these two options, you can setup super flexible & powerful per-server permissions and groups.",[326,406,408],{"id":407},"examples","Examples",[410,411,413],"h4",{"id":412},"example-1","Example 1",[331,415,417],{"className":333,"code":416,"language":335,"meta":336,"style":336},"server: global\ninclude-global: true\n",[338,418,419,427],{"__ignoreMap":336},[341,420,421,423,425],{"class":343,"line":344},[341,422,355],{"class":354},[341,424,359],{"class":358},[341,426,363],{"class":362},[341,428,429,431,433],{"class":343,"line":351},[341,430,381],{"class":354},[341,432,359],{"class":358},[341,434,387],{"class":386},[436,437,438,445],"ul",{},[439,440,441,442],"li",{},"\u002Fluckperms user Luck set minecraft.command.gamemode true ",[398,443,444],{},"WILL APPLY",[439,446,447,448,451],{},"\u002Fluckperms user Luck set minecraft.command.gamemode true factions ",[398,449,450],{},"WILL NOT APPLY"," while not on the server \"factions\"",[410,453,455],{"id":454},"example-2","Example 2",[331,457,459],{"className":333,"code":458,"language":335,"meta":336,"style":336},"server: lobby\ninclude-global: true\n",[338,460,461,470],{"__ignoreMap":336},[341,462,463,465,467],{"class":343,"line":344},[341,464,355],{"class":354},[341,466,359],{"class":358},[341,468,469],{"class":362}," lobby\n",[341,471,472,474,476],{"class":343,"line":351},[341,473,381],{"class":354},[341,475,359],{"class":358},[341,477,387],{"class":386},[436,479,480,484],{},[439,481,441,482],{},[398,483,444],{},[439,485,486,487],{},"\u002Fluckperms user Luck set minecraft.command.gamemode true lobby ",[398,488,444],{},[410,490,492],{"id":491},"example-3","Example 3",[331,494,496],{"className":333,"code":495,"language":335,"meta":336,"style":336},"server: bungeecord\ninclude-global: false\n",[338,497,498,507],{"__ignoreMap":336},[341,499,500,502,504],{"class":343,"line":344},[341,501,355],{"class":354},[341,503,359],{"class":358},[341,505,506],{"class":362}," bungeecord\n",[341,508,509,511,513],{"class":343,"line":351},[341,510,381],{"class":354},[341,512,359],{"class":358},[341,514,515],{"class":386}," false\n",[436,517,518,522],{},[439,519,441,520],{},[398,521,450],{},[439,523,524,525],{},"\u002Fluckperms user Luck set bungeecord.command.alert true bungeecord ",[398,526,444],{},[410,528,530],{"id":529},"example-4","Example 4",[331,532,534],{"className":333,"code":533,"language":335,"meta":336,"style":336},"server: global\ninclude-global: false\n",[338,535,536,544],{"__ignoreMap":336},[341,537,538,540,542],{"class":343,"line":344},[341,539,355],{"class":354},[341,541,359],{"class":358},[341,543,363],{"class":362},[341,545,546,548,550],{"class":343,"line":351},[341,547,381],{"class":354},[341,549,359],{"class":358},[341,551,515],{"class":386},[315,553,554],{},[398,555,556],{},"NO PERMISSIONS WILL APPLY",[315,558,559],{},"If no server is defined, and global permissions are not being included, then nothing will be applying.",[310,561,563],{"id":562},"permission-calculation","Permission Calculation",[326,565,567],{"id":566},"permissions-are-calculated-based-on-a-priority-system-as-follows","Permissions are calculated based on a priority system as follows.",[436,569,570],{},[439,571,572],{},[398,573,574],{},"Server specific permissions will override generic\u002Fglobal permissions.",[315,576,577],{},"Example: if a user has a global \"fly.use\" permission, and then has a negated \"fly.use\" permission on the \"factions\" server, the server specific permission will override the globally defined one, and the user will be granted the negated node (provided they're on that server).",[436,579,580],{},[439,581,582],{},[398,583,584],{},"World specific permissions will override generic permissions.",[315,586,587],{},"Example: if a user has a global \"fly.use\" permission, and then has a negated \"fly.use\" permission in the \"world_nether\" world, the world specific permission will override the globally defined one, and the user will be granted the negated node (provided they're in that world, of course.).",[436,589,590],{},[439,591,592],{},[398,593,594],{},"Temporary permissions will override non-temporary permissions.",[315,596,597],{},"Example: if a user has a false permission set for \"test.node\", and a temporary true permission set for \"test.node\", the temporary permission will override the permanent one, and the user will be granted the true node for the duration defined for that temporary permission.",[436,599,600],{},[439,601,602],{},[398,603,604],{},"Wildcard\u002Fregex permissions will be overridden by normal permissions",[315,606,607],{},"Example: if a user has a true permission set for \"luckperms.*\", and a false permission set for \"luckperms.something\", the non-wildcard permission will override the wildcard, and \"luckperms.something\" will be set to false, despite the wildcard.",[436,609,610],{},[439,611,612],{},[398,613,614],{},"Temporary permissions will override other temporary permissions with a longer expiry time",[315,616,617],{},"Example: if a user has a temporary true permission set for \"fly.use\" that expires in 1 day, and a temporary false permission set for \"fly.use\" that expires in 1 hour, the temporary permission expiring in 1 hour will override the one expiring in 1 day, and the negative node will take precedence for the duration of 1 hour.",[436,619,620],{},[439,621,622],{},[398,623,624],{},"More specific wildcards override less specific ones",[315,626,627],{},"Example: if a user has \"luckperms.*\" set to true, but \"luckperms.user.*\" set to false, all of the user permissions will be set to false, despite the more generic wildcard for \"luckperms.*\".",[436,629,630],{},[439,631,632],{},[398,633,634],{},"Inherited permissions will be overridden by an objects own permissions.",[315,636,637],{},"Example: A user is a member of the default group, which grants \"some.thing.perm\", but the users own permissions has \"some.thing.perm\" set to false. The inherited permission will be overridden by the users own permissions, and the user will be granted the negative node.",[310,639,641],{"id":640},"temporary-permissions","Temporary Permissions",[315,643,644],{},"Temporary permissions are audited once every 3 seconds, to check if they have expired. This check happens regardless of the sync interval setting. This means that you can safely set temporary permissions to expire after a matter of seconds, and they will be removed on-time.",[310,646,648],{"id":647},"shorthand-permissions","Shorthand Permissions",[315,650,651],{},"LuckPerms has it's own system (although it's quite similar to PermissionsEx ",[326,653,408],{"id":654},"examples-1",[410,656,413],{"id":657},"example-1-1",[315,659,660],{},"Using the LuckPerms permission nodes as an example, say for instance, you wanted to let a user set and unset permissions for both groups and users.",[315,662,663],{},"Without shorthand, you would have to apply 4 nodes.",[331,665,670],{"className":666,"code":668,"language":669},[667],"language-text","luckperms.user.setpermission\nluckperms.user.unsetpermission\nluckperms.group.setpermission\nluckperms.group.unsetpermission\n","text",[338,671,668],{"__ignoreMap":336},[315,673,674],{},"However, with shorthand, you can just apply the following node:",[315,676,677],{},[338,678,679],{},"luckperms.{user,group}.{setpermission,unsetpermission}",[315,681,682,683,686],{},"You use curly brackets to define part of a node as a shorthand group, and then use the comma character ",[338,684,685],{},","," to separate entries.",[410,688,455],{"id":689},"example-2-1",[315,691,692,693,696],{},"You can use the ",[338,694,695],{},"-"," character to create character ranges.\nWithout shorthand, you would have to apply 4 nodes.",[331,698,701],{"className":699,"code":700,"language":669},[667],"coolkits.kit.a\ncoolkits.kit.b\ncoolkits.kit.c\ncoolkits.kit.d\n",[338,702,700],{"__ignoreMap":336},[315,704,674],{},[315,706,707],{},[338,708,709],{},"coolkits.kit.{a-d}",[410,711,492],{"id":712},"example-3-1",[315,714,692,715,717],{},[338,716,695],{}," character to create number ranges.\nWithout shorthand, you would have to apply 4 nodes.",[331,719,722],{"className":720,"code":721,"language":669},[667],"prisonmines.teleport.1\nprisonmines.teleport.2\nprisonmines.teleport.3\nprisonmines.teleport.4\n",[338,723,721],{"__ignoreMap":336},[315,725,674],{},[315,727,728],{},[338,729,730],{},"prisonmines.teleport.{1-4}",[310,732,734],{"id":733},"regex","Regex",[315,736,737],{},"LuckPerms has support for regex when defining permission nodes.",[315,739,740],{},"Whenever regex is used, it MUST be prefixed with \"R=\", so LuckPerms knows to treat it as regex, and not as a normal string.",[315,742,743,744,747],{},"For example, if you wanted a user to be able to create both groups and tracks, you would normally just add the two permission nodes. However with regex, you can just add one. ",[338,745,746],{},"luckperms\\.create.*"," Remember to escape any characters (including dots) as the entire node will be parsed.",[749,750,751],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":336,"searchDepth":753,"depth":753,"links":754},3,[755,756,766,769,770,777],{"id":312,"depth":351,"text":313},{"id":320,"depth":351,"text":321,"children":757},[758,759],{"id":328,"depth":753,"text":329},{"id":407,"depth":753,"text":408,"children":760},[761,763,764,765],{"id":412,"depth":762,"text":413},4,{"id":454,"depth":762,"text":455},{"id":491,"depth":762,"text":492},{"id":529,"depth":762,"text":530},{"id":562,"depth":351,"text":563,"children":767},[768],{"id":566,"depth":753,"text":567},{"id":640,"depth":351,"text":641},{"id":647,"depth":351,"text":648,"children":771},[772],{"id":654,"depth":753,"text":408,"children":773},[774,775,776],{"id":657,"depth":762,"text":413},{"id":689,"depth":762,"text":455},{"id":712,"depth":762,"text":492},{"id":733,"depth":351,"text":734},[779,783,787,791],{"name":780,"username":781,"avatar":782},"Luck","lucko","https:\u002F\u002Fgithub.com\u002Flucko.png?size=80",{"name":784,"username":785,"avatar":786},"Andre_601","andre601","https:\u002F\u002Fgithub.com\u002Fandre601.png?size=80",{"name":788,"username":789,"avatar":790},"Sam Goodger","Turbotailz","https:\u002F\u002Fgithub.com\u002FTurbotailz.png?size=80",{"name":792,"username":792,"avatar":793},"pairnon","https:\u002F\u002Fgithub.com\u002Fpairnon.png?size=80","The LuckPerms permission calculation algorithm.","https:\u002F\u002Fgithub.com\u002FTurbotailz\u002Fwiki\u002Fedit\u002Fv3-structure\u002Fen\u002Freference\u002Fpermission-calculation.md","md",{},true,{"title":223,"description":794},"2026-09-11T10:20:37+10:00","1EkWLGTgjr3EencVRFgYFYij7sGQNiDfCCzROLXr4Go",[803,804],{"title":219,"path":220,"stem":221,"children":-1},{"title":227,"path":228,"stem":229,"children":-1},1792996657001]