[{"data":1,"prerenderedAt":1081},["ShallowReactive",2],{"wiki-nav":3,"wiki-sidebar":238,"wiki-en-\u002Fwiki\u002Finstall\u002Fhytale":304,"wiki-surround-en-\u002Fwiki\u002Finstall\u002Fhytale":1078},[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":205,"body":306,"contributors":1062,"description":1071,"editUrl":1072,"extension":1073,"meta":1074,"navigation":921,"path":206,"seo":1075,"stem":207,"updatedAt":1076,"__hash__":1077},"wiki_en\u002Fwiki\u002Finstall\u002Fhytale.md",{"type":307,"value":308,"toc":1043},"minimark",[309,334,349,352,355,360,406,410,413,416,433,440,443,446,449,469,476,498,501,512,531,534,540,547,550,553,557,564,571,620,629,636,639,711,714,735,739,742,745,748,754,757,761,768,822,825,871,874,878,885,950,957,970,973,1026,1030,1039],[310,311,312,313,317,318,327,328,333],"p",{},"There is an ",[314,315,316],"strong",{},"beta"," version of ",[314,319,320,321],{},"LuckPerms for ",[322,323,205],"a",{"href":324,"rel":325},"https:\u002F\u002Fhytale.com\u002F",[326],"nofollow"," available from our ",[322,329,332],{"href":330,"rel":331},"https:\u002F\u002Fluckperms.net\u002Fdownload",[326],"downloads page",". This is the same LuckPerms you know and (maybe\u002Fhopefully) love from Minecraft, ported across and integrated with Hytale! 🎉",[310,335,336,337,340,341,344,345,348],{},"LuckPerms for Hytale is built on top of the same common codebase as the other LuckPerms plugin\u002Fmods. We believe that basing the Hytale version of LuckPerms on top of the same established core platform as our existing ",[314,338,339],{},"well-proven"," Minecraft releases enables us to provide a very ",[314,342,343],{},"stable"," and ",[314,346,347],{},"performant"," permissions implementation for Hytale, to a higher quality than \"bespoke\" plugins could. 🥳",[310,350,351],{},"Some of the documentation here on the wiki and elsewhere in the project is lagging behind slightly and still references Minecraft in a few places. However, thankfully the permissions system in Hytale is very similar to the \"Bukkit\" system that most of the Minecraft ecosystem has adopted, so most if not all of the existing concepts in LuckPerms for Minecraft apply in Hytale too! Yay!",[310,353,354],{},"We hope you enjoy using LuckPerms on your Hytale servers!",[356,357,359],"h2",{"id":358},"faqs","FAQs",[361,362,363,370,376,382,388,394,400],"ul",{},[364,365,366],"li",{},[322,367,369],{"href":368},"#ive-never-used-luckperms-before-how-do-i-get-started","I've never used LuckPerms before! How do I get started?",[364,371,372],{},[322,373,375],{"href":374},"#op-doesnt-work-anymore","OP doesn't work anymore!",[364,377,378],{},[322,379,381],{"href":380},"#compatibility-with-other-modsplugins","Compatibility with other mods\u002Fplugins",[364,383,384],{},[322,385,387],{"href":386},"#finding-permissions-and-troubleshooting","Finding permissions and troubleshooting",[364,389,390],{},[322,391,393],{"href":392},"#chat-formatting","Chat formatting",[364,395,396],{},[322,397,399],{"href":398},"#integrating-with-the-luckperms-api","Integrating with the LuckPerms API",[364,401,402],{},[322,403,405],{"href":404},"#known-caveatsissues","Known caveats\u002Fissues",[407,408,369],"h3",{"id":409},"ive-never-used-luckperms-before-how-do-i-get-started",[310,411,412],{},"Hello and welcome! 👋",[310,414,415],{},"The short answer is, check out the:",[361,417,418,425],{},[364,419,420,424],{},[314,421,422],{},[322,423,198],{"href":200}," page to learn how to install LuckPerms, then the",[364,426,427,432],{},[314,428,429],{},[322,430,431],{"href":157},"Getting Started"," page for how to start using it!",[310,434,435,436,439],{},"After that, if you've never used a permissions plugin before and want to find out more, we suggest you just start at the top and work your way down! A more to the point command reference can be found in the ",[322,437,438],{"href":43},"Command Usage"," subpages.",[407,441,375],{"id":442},"op-doesnt-work-anymore",[310,444,445],{},"When LuckPerms is installed, the built-in Hytale permission system is largely replaced. This is so LuckPerms can intercept and handle permissions checks for players.",[310,447,448],{},"This means that:",[361,450,451,459],{},[364,452,453,454,458],{},"The built-in ",[455,456,457],"code",{},"\u002Fop"," command will not work as expected. Use LuckPerms to configure permissions instead.",[364,460,453,461,464,465,468],{},[455,462,463],{},"\u002Fperm"," command will not work as expected. You must use the LuckPerms ",[455,466,467],{},"\u002Flp"," commands to configure permissions for players.",[310,470,471,472,475],{},"If you want to replicate OP-like functionality (full access to ",[314,473,474],{},"all"," commands, features, etc), you can use the following LuckPerms commands:",[361,477,478,488],{},[364,479,480,483,484,487],{},[455,481,482],{},"\u002Flp user \u003Cuser> permission set *"," - give ",[455,485,486],{},"\u003Cuser>"," all permissions",[364,489,490,493,494,497],{},[455,491,492],{},"\u002Flp group \u003Cgroup> permission set *"," - give any user in ",[455,495,496],{},"\u003Cgroup>"," all permissions (e.g. you may want to do this for your \"admin\" or \"owner\" group)",[407,499,381],{"id":500},"compatibility-with-other-modsplugins",[310,502,503,504,507,508,511],{},"LuckPerms aims to maintain compatibility with other mods checking permissions via ",[455,505,506],{},"CommandSender#hasPermission"," or ",[455,509,510],{},"PermissionsModule#hasPermission",". If you other mods check for permissions this way, everything should work absolutely fine!",[310,513,514,515,519,520,522,523,526,527,530],{},"By default, LuckPerms will delegate permission checks for non-Player entities to the built-in Hytale permissions system. This means that you ",[516,517,518],"em",{},"can"," use the built-in ",[455,521,463],{}," commands to configure permissions for ",[314,524,525],{},"non-Player"," NPCs, \"service accounts\", or the Nitrado \"anonymous\" user. Player permissions ",[314,528,529],{},"must"," be configured through LuckPerms.",[407,532,387],{"id":533},"finding-permissions-and-troubleshooting",[310,535,536,537,539],{},"If you don't know the permissions associated with a given command or feature, use the LuckPerms verbose feature! See the ",[322,538,137],{"href":138}," wiki page for details.",[310,541,542,543,546],{},"You can also use the built-in ",[455,544,545],{},"\u002Fhelp"," command, which will bring up a UI listing available commands and their corresponding permissions.",[407,548,393],{"id":549},"chat-formatting",[310,551,552],{},"In early beta versions, LuckPerms had a built-in chat formatter. Now that the mod\u002Fplugin ecosystem has developed a bit, this functionality has been removed from LuckPerms as there are better alternatives available. We suggest you use one of the following approaches format your chat.",[554,555,556],"h4",{"id":556},"mini-chat-formatter",[310,558,559,563],{},[322,560,556],{"href":561,"rel":562},"https:\u002F\u002Fgithub.com\u002Flucko\u002Fmini-chat-formatter",[326]," is written by the same author as LuckPerms and is a simple Hytale chat formatting mod. It has native integration with LuckPerms.",[310,565,566,567,570],{},"Simply download and install it, then set the following config in ",[455,568,569],{},"mods\u002Flucko_mini-chat-formatter\u002Fconfig.json",":",[572,573,578],"pre",{"className":574,"code":575,"language":576,"meta":577,"style":577},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"Format\": \"\u003Cprefix>\u003Cusername>\u003Csuffix>: \u003Cmessage>\"\n}\n","json","",[455,579,580,589,614],{"__ignoreMap":577},[581,582,585],"span",{"class":583,"line":584},"line",1,[581,586,588],{"class":587},"sMK4o","{\n",[581,590,592,595,599,602,604,607,611],{"class":583,"line":591},2,[581,593,594],{"class":587},"  \"",[581,596,598],{"class":597},"spNyl","Format",[581,600,601],{"class":587},"\"",[581,603,570],{"class":587},[581,605,606],{"class":587}," \"",[581,608,610],{"class":609},"sfazB","\u003Cprefix>\u003Cusername>\u003Csuffix>: \u003Cmessage>",[581,612,613],{"class":587},"\"\n",[581,615,617],{"class":583,"line":616},3,[581,618,619],{"class":587},"}\n",[310,621,622,623,628],{},"The format string, as well as the prefix and suffix values support formatting using ",[322,624,627],{"href":625,"rel":626},"https:\u002F\u002Fdocs.papermc.io\u002Fadventure\u002Fminimessage\u002Fformat\u002F",[326],"MiniMessage",". (Yes, this is a Minecraft format, but it's good and it was easier to reuse it!)",[310,630,631,632,635],{},"Formatting from the prefix and suffix will intentionally \"",[516,633,634],{},"spill over","\" into subsequent parts of the format.",[310,637,638],{},"Some examples:",[640,641,642,655],"table",{},[643,644,645],"thead",{},[646,647,648,652],"tr",{},[649,650,651],"th",{},"Command",[649,653,654],{},"Result",[656,657,658,673,694],"tbody",{},[646,659,660,666],{},[661,662,663],"td",{},[455,664,665],{},"\u002Flp user lucko meta setprefix 10 \"\u003Cred>[ADMIN] \"",[661,667,668],{},[669,670],"img",{"alt":671,"src":672},"hytale chat 1","\u002Fwiki-img\u002Fhytale-chat-1.png",[646,674,675,688],{},[661,676,677,680,683,684,687],{},[455,678,679],{},"\u002Flp user lucko meta setprefix 10 \"\u003Cred>[ADMIN]\u003C\u002Fred> \"",[681,682],"br",{},"(note the close ",[455,685,686],{},"\u003C\u002Fred>"," tag).",[661,689,690],{},[669,691],{"alt":692,"src":693},"hytale chat 2","\u002Fwiki-img\u002Fhytale-chat-2.png",[646,695,696,705],{},[661,697,698,700,702],{},[455,699,665],{},[681,701],{},[455,703,704],{},"\u002Flp user lucko meta setsuffix 10 \"\u003Cgray>\"",[661,706,707],{},[669,708],{"alt":709,"src":710},"hytale chat 3","\u002Fwiki-img\u002Fhytale-chat-3.png",[310,712,713],{},"Hopefully you get the idea. For more information:",[361,715,716,722,728],{},[364,717,718,721],{},[322,719,556],{"href":561,"rel":720},[326]," (GitHub)",[364,723,724,727],{},[322,725,726],{"href":130},"Prefixes, Suffixes & Meta"," (LP wiki)",[364,729,730,734],{},[322,731,733],{"href":625,"rel":732},[326],"MiniMessage format"," (PaperMC docs)",[554,736,738],{"id":737},"advanced-chat-formatting-options","Advanced chat formatting options",[310,740,741],{},"For more advanced chat formatting, we recommend using a dedicated chat plugin that integrates with LuckPerms. Some options include: HeroChat, EliteEssentials, EssentialsPlus, and others.",[407,743,399],{"id":744},"integrating-with-the-luckperms-api",[310,746,747],{},"We have created a basic example plugin which demonstrates how to access the LuckPerms API from a Hytale plugin.",[310,749,750],{},[322,751,752],{"href":752,"rel":753},"https:\u002F\u002Fgithub.com\u002FLuckPerms\u002Fapi-cookbook-hytale",[326],[310,755,756],{},"The key things are:",[554,758,760],{"id":759},"_1-declare-luckperms-as-a-dependency-or-optional-dependency","1) Declare LuckPerms as a dependency or optional dependency",[310,762,763,764,767],{},"In your plugin ",[455,765,766],{},"manifest.json",", you must include either:",[572,769,771],{"className":574,"code":770,"language":576,"meta":577,"style":577},"{\n  \"Dependencies\": {\n    \"LuckPerms:LuckPerms\": \"*\"\n  }\n}\n",[455,772,773,777,791,811,817],{"__ignoreMap":577},[581,774,775],{"class":583,"line":584},[581,776,588],{"class":587},[581,778,779,781,784,786,788],{"class":583,"line":591},[581,780,594],{"class":587},[581,782,783],{"class":597},"Dependencies",[581,785,601],{"class":587},[581,787,570],{"class":587},[581,789,790],{"class":587}," {\n",[581,792,793,796,800,802,804,806,809],{"class":583,"line":616},[581,794,795],{"class":587},"    \"",[581,797,799],{"class":798},"sBMFI","LuckPerms:LuckPerms",[581,801,601],{"class":587},[581,803,570],{"class":587},[581,805,606],{"class":587},[581,807,808],{"class":609},"*",[581,810,613],{"class":587},[581,812,814],{"class":583,"line":813},4,[581,815,816],{"class":587},"  }\n",[581,818,820],{"class":583,"line":819},5,[581,821,619],{"class":587},[310,823,824],{},"or",[572,826,828],{"className":574,"code":827,"language":576,"meta":577,"style":577},"{\n  \"OptionalDependencies\": {\n    \"LuckPerms:LuckPerms\": \"*\"\n  }\n}\n",[455,829,830,834,847,863,867],{"__ignoreMap":577},[581,831,832],{"class":583,"line":584},[581,833,588],{"class":587},[581,835,836,838,841,843,845],{"class":583,"line":591},[581,837,594],{"class":587},[581,839,840],{"class":597},"OptionalDependencies",[581,842,601],{"class":587},[581,844,570],{"class":587},[581,846,790],{"class":587},[581,848,849,851,853,855,857,859,861],{"class":583,"line":616},[581,850,795],{"class":587},[581,852,799],{"class":798},[581,854,601],{"class":587},[581,856,570],{"class":587},[581,858,606],{"class":587},[581,860,808],{"class":609},[581,862,613],{"class":587},[581,864,865],{"class":583,"line":813},[581,866,816],{"class":587},[581,868,869],{"class":583,"line":819},[581,870,619],{"class":587},[310,872,873],{},"This is because Hytale's plugin manager isolates classloaders between plugins, except if a dependency is declared.",[554,875,877],{"id":876},"_2-obtain-the-api-instance-from-javapluginstart-or-later","2) Obtain the API instance from JavaPlugin.start() or later",[310,879,880,881,884],{},"LuckPerms performs it's final initialisation during the \"start\" phase, it is ",[314,882,883],{},"not"," ready during the \"setup\" phase.",[572,886,890],{"className":887,"code":888,"language":889,"meta":577,"style":577},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","  @Override\n  protected void setup() {\n    \u002F\u002F doesn't work! ❌\n    LuckPerms luckPerms = LuckPermsProvider.get();\n  }\n\n  @Override\n  protected void start() {\n    \u002F\u002F works! ✅\n    LuckPerms luckPerms = LuckPermsProvider.get();\n  }\n","java",[455,891,892,897,902,907,912,916,923,928,934,940,945],{"__ignoreMap":577},[581,893,894],{"class":583,"line":584},[581,895,896],{},"  @Override\n",[581,898,899],{"class":583,"line":591},[581,900,901],{},"  protected void setup() {\n",[581,903,904],{"class":583,"line":616},[581,905,906],{},"    \u002F\u002F doesn't work! ❌\n",[581,908,909],{"class":583,"line":813},[581,910,911],{},"    LuckPerms luckPerms = LuckPermsProvider.get();\n",[581,913,914],{"class":583,"line":819},[581,915,816],{},[581,917,919],{"class":583,"line":918},6,[581,920,922],{"emptyLinePlaceholder":921},true,"\n",[581,924,926],{"class":583,"line":925},7,[581,927,896],{},[581,929,931],{"class":583,"line":930},8,[581,932,933],{},"  protected void start() {\n",[581,935,937],{"class":583,"line":936},9,[581,938,939],{},"    \u002F\u002F works! ✅\n",[581,941,943],{"class":583,"line":942},10,[581,944,911],{},[581,946,948],{"class":583,"line":947},11,[581,949,816],{},[554,951,953,954],{"id":952},"_3-playeradapter-and-contextmanager-expect-playerref","3) PlayerAdapter and ContextManager expect ",[455,955,956],{},"PlayerRef",[310,958,959,960,962,963,965,966,969],{},"Methods in the LuckPerms API that expect a \"player\" object need to be passed a ",[455,961,956],{},", ",[314,964,883],{}," a ",[455,967,968],{},"Player",".",[310,971,972],{},"For example:",[572,974,976],{"className":887,"code":975,"language":889,"meta":577,"style":577},"\u002F\u002F PlayerAdapter is a convenience class for converting\n\u002F\u002F between Hytale's PlayerRef and LuckPerms' User objects\nPlayerAdapter\u003CPlayerRef> playerAdapter = LuckPermsProvider.get().getPlayerAdapter(PlayerRef.class);\n\nUser user = playerAdapter.getUser(playerRef);\nCachedPermissionData permissionData = playerAdapter.getPermissionData(playerRef);\nCachedMetaData metaData = playerAdapter.getMetaData(playerRef);\n\n\u002F\u002F Get the players prefix, for example :)\nString prefix = metaData.getPrefix();\n",[455,977,978,983,988,993,997,1002,1007,1012,1016,1021],{"__ignoreMap":577},[581,979,980],{"class":583,"line":584},[581,981,982],{},"\u002F\u002F PlayerAdapter is a convenience class for converting\n",[581,984,985],{"class":583,"line":591},[581,986,987],{},"\u002F\u002F between Hytale's PlayerRef and LuckPerms' User objects\n",[581,989,990],{"class":583,"line":616},[581,991,992],{},"PlayerAdapter\u003CPlayerRef> playerAdapter = LuckPermsProvider.get().getPlayerAdapter(PlayerRef.class);\n",[581,994,995],{"class":583,"line":813},[581,996,922],{"emptyLinePlaceholder":921},[581,998,999],{"class":583,"line":819},[581,1000,1001],{},"User user = playerAdapter.getUser(playerRef);\n",[581,1003,1004],{"class":583,"line":918},[581,1005,1006],{},"CachedPermissionData permissionData = playerAdapter.getPermissionData(playerRef);\n",[581,1008,1009],{"class":583,"line":925},[581,1010,1011],{},"CachedMetaData metaData = playerAdapter.getMetaData(playerRef);\n",[581,1013,1014],{"class":583,"line":930},[581,1015,922],{"emptyLinePlaceholder":921},[581,1017,1018],{"class":583,"line":936},[581,1019,1020],{},"\u002F\u002F Get the players prefix, for example :)\n",[581,1022,1023],{"class":583,"line":942},[581,1024,1025],{},"String prefix = metaData.getPrefix();\n",[407,1027,1029],{"id":1028},"other","Other",[310,1031,1032,1033,1038],{},"Please come and chat with us in ",[322,1034,1037],{"href":1035,"rel":1036},"https:\u002F\u002Fdiscord.gg\u002Fluckperms",[326],"Discord"," for help. There is a dedicated channel for Hytale questions :)",[1040,1041,1042],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":577,"searchDepth":616,"depth":616,"links":1044},[1045],{"id":358,"depth":591,"text":359,"children":1046},[1047,1048,1049,1050,1051,1055,1061],{"id":409,"depth":616,"text":369},{"id":442,"depth":616,"text":375},{"id":500,"depth":616,"text":381},{"id":533,"depth":616,"text":387},{"id":549,"depth":616,"text":393,"children":1052},[1053,1054],{"id":556,"depth":813,"text":556},{"id":737,"depth":813,"text":738},{"id":744,"depth":616,"text":399,"children":1056},[1057,1058,1059],{"id":759,"depth":813,"text":760},{"id":876,"depth":813,"text":877},{"id":952,"depth":813,"text":1060},"3) PlayerAdapter and ContextManager expect PlayerRef",{"id":1028,"depth":616,"text":1029},[1063,1067],{"name":1064,"username":1065,"avatar":1066},"Luck","lucko","https:\u002F\u002Fgithub.com\u002Flucko.png?size=80",{"name":1068,"username":1069,"avatar":1070},"Sam Goodger","Turbotailz","https:\u002F\u002Fgithub.com\u002FTurbotailz.png?size=80","LuckPerms on Hytale.","https:\u002F\u002Fgithub.com\u002FTurbotailz\u002Fwiki\u002Fedit\u002Fv3-structure\u002Fen\u002Finstall\u002Fhytale.md","md",{},{"title":205,"description":1071},"2026-09-09T23:11:10+10:00","buCx_HGrEwthL1ewJbw2jRjIq8rxV1MUF1O2dETgg98",[1079,1080],{"title":198,"path":200,"stem":201,"children":-1},{"title":209,"path":210,"stem":211,"children":-1},1792996649352]