[{"data":1,"prerenderedAt":719},["ShallowReactive",2],{"docs-\u002Fgetting-started\u002Finstallation":3},{"id":4,"title":5,"body":6,"description":709,"extension":710,"meta":711,"navTitle":712,"navigation":713,"path":714,"rawbody":715,"seo":716,"stem":717,"__hash__":718},"docs\u002Fgetting-started\u002Finstallation.md","Installation",{"type":7,"value":8,"toc":685},"minimark",[9,13,37,40,45,52,59,63,66,76,80,264,268,271,359,362,366,369,372,385,406,411,414,417,423,426,454,458,461,465,468,484,488,491,497,507,519,526,534,538,545,551,555,564,580,590,594,603,609,613,616,621,629,633,636,641,645,657,660,664,670,674],[10,11,5],"h1",{"id":12},"installation",[14,15,16,17,21,22,21,25,28,29,32,33,36],"p",{},"MagicUtils is split into modules. For most projects you only need one platform\nentry point (",[18,19,20],"code",{},"magicutils-bukkit",", ",[18,23,24],{},"magicutils-bungee",[18,26,27],{},"magicutils-velocity",",\n",[18,30,31],{},"magicutils-fabric-bundle",", or ",[18,34,35],{},"magicutils-neoforge",") plus optional format\nhelpers.",[14,38,39],{},"Use the modular artifacts only when you need a custom wiring path.",[41,42,44],"h2",{"id":43},"choose-a-version","Choose A Version",[14,46,47,48,51],{},"This documentation is versioned. The examples below use\n",[18,49,50],{},"1.27.1"," which matches the current docs version.",[14,53,54,55,58],{},"If you want to hardcode it in your build, replace it with the exact number\n(for example ",[18,56,57],{},"1.10.0",").",[41,60,62],{"id":61},"repositories","Repositories",[14,64,65],{},"Add the MagicUtils Maven repository.",[67,68,74],"pre",{"className":69,"code":71,"language":72,"meta":73},[70],"language-kotlin","repositories {\n    maven(\"https:\u002F\u002Fmaven.theroer.dev\u002Freleases\")\n}\n","kotlin","",[18,75,71],{"__ignoreMap":73},[41,77,79],{"id":78},"which-artifact-do-i-need","Which Artifact Do I Need?",[81,82,83,99],"table",{},[84,85,86],"thead",{},[87,88,89,93,96],"tr",{},[90,91,92],"th",{},"Scenario",[90,94,95],{},"Recommended artifacts",[90,97,98],{},"Notes",[100,101,102,115,133,145,162,176,188,200,222,235,251],"tbody",{},[87,103,104,108,112],{},[105,106,107],"td",{},"Bukkit\u002FPaper plugin",[105,109,110],{},[18,111,20],{},[105,113,114],{},"Default choice for most plugins.",[87,116,117,120,130],{},[105,118,119],{},"Shared Bukkit server install",[105,121,122,125,126,129],{},[18,123,124],{},"magicutils-bukkit-bundle"," + plugin ",[18,127,128],{},"compileOnly"," dependency",[105,131,132],{},"Use when multiple plugins should share one install.",[87,134,135,138,142],{},[105,136,137],{},"Fabric mod",[105,139,140],{},[18,141,31],{},[105,143,144],{},"Default choice for most mods.",[87,146,147,150,159],{},[105,148,149],{},"Shared Fabric server install",[105,151,152,155,156],{},[18,153,154],{},"magicutils-fabric-bundle:dev"," without ",[18,157,158],{},"include(...)",[105,160,161],{},"Install the bundle mod on the server.",[87,163,164,167,173],{},[105,165,166],{},"Modular Fabric setup",[105,168,169,172],{},[18,170,171],{},"magicutils-fabric"," + Fabric integration modules",[105,174,175],{},"Use only when you want custom wiring.",[87,177,178,181,185],{},[105,179,180],{},"BungeeCord plugin",[105,182,183],{},[18,184,24],{},[105,186,187],{},"Includes config\u002Flogger\u002Flang\u002Fcommands\u002Fdiagnostics support.",[87,189,190,193,197],{},[105,191,192],{},"Velocity plugin",[105,194,195],{},[18,196,27],{},[105,198,199],{},"Includes config\u002Flogger\u002Flang\u002Fcommands support.",[87,201,202,205,213],{},[105,203,204],{},"NeoForge mod",[105,206,207,209,210],{},[18,208,35],{}," + ",[18,211,212],{},"magicutils-commands-neoforge",[105,214,215,218,219,221],{},[18,216,217],{},"NeoForgeBootstrap"," lives in ",[18,220,212],{},". Placeholder bridge not available yet.",[87,223,224,227,232],{},[105,225,226],{},"Shared NeoForge server install",[105,228,229],{},[18,230,231],{},"magicutils-neoforge-bundle",[105,233,234],{},"Standalone bundle mod for the server, like the Fabric bundle.",[87,236,237,240,248],{},[105,238,239],{},"Extra config formats",[105,241,242,21,245],{},[18,243,244],{},"magicutils-config-yaml",[18,246,247],{},"magicutils-config-toml",[105,249,250],{},"Optional helpers for YAML and TOML.",[87,252,253,256,261],{},[105,254,255],{},"HTTP client",[105,257,258],{},[18,259,260],{},"magicutils-http-client",[105,262,263],{},"Optional runtime-aware HTTP\u002FWebSocket clients.",[41,265,267],{"id":266},"quick-install","Quick Install",[14,269,270],{},"Pick your platform, then your Gradle DSL. The DSL choice is remembered across\nthe page, so you only set Kotlin or Groovy once.",[272,273,276,285,295,303,311,319,327,335,343,351],"install-tabs",{":icons":274,":platforms":275},"[\"lucide:server\",\"lucide:route\",\"lucide:network\",\"lucide:package\",\"lucide:hammer\"]","[\"Bukkit\u002FPaper\u002FFolia\",\"BungeeCord\",\"Velocity\",\"Fabric\",\"NeoForge\"]",[277,278,279],"template",{"v-slot:bukkit-paper-folia-kotlin-dsl":73},[67,280,283],{"className":281,"code":282,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-bukkit:1.27.1\")\n}\n",[18,284,282],{"__ignoreMap":73},[277,286,287],{"v-slot:bukkit-paper-folia-groovy-dsl":73},[67,288,293],{"className":289,"code":291,"language":292,"meta":73},[290],"language-groovy","dependencies {\n    implementation 'dev.ua.theroer:magicutils-bukkit:1.27.1'\n}\n","groovy",[18,294,291],{"__ignoreMap":73},[277,296,297],{"v-slot:bungeecord-kotlin-dsl":73},[67,298,301],{"className":299,"code":300,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-bungee:1.27.1\")\n}\n",[18,302,300],{"__ignoreMap":73},[277,304,305],{"v-slot:bungeecord-groovy-dsl":73},[67,306,309],{"className":307,"code":308,"language":292,"meta":73},[290],"dependencies {\n    implementation 'dev.ua.theroer:magicutils-bungee:1.27.1'\n}\n",[18,310,308],{"__ignoreMap":73},[277,312,313],{"v-slot:velocity-kotlin-dsl":73},[67,314,317],{"className":315,"code":316,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-velocity:1.27.1\")\n}\n",[18,318,316],{"__ignoreMap":73},[277,320,321],{"v-slot:velocity-groovy-dsl":73},[67,322,325],{"className":323,"code":324,"language":292,"meta":73},[290],"dependencies {\n    implementation 'dev.ua.theroer:magicutils-velocity:1.27.1'\n}\n",[18,326,324],{"__ignoreMap":73},[277,328,329],{"v-slot:fabric-kotlin-dsl":73},[67,330,333],{"className":331,"code":332,"language":72,"meta":73},[70],"dependencies {\n    modImplementation(include(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1\"))\n    modCompileOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n    modRuntimeOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n}\n",[18,334,332],{"__ignoreMap":73},[277,336,337],{"v-slot:fabric-groovy-dsl":73},[67,338,341],{"className":339,"code":340,"language":292,"meta":73},[290],"dependencies {\n    modImplementation(include('dev.ua.theroer:magicutils-fabric-bundle:1.27.1'))\n    modCompileOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n    modRuntimeOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n}\n",[18,342,340],{"__ignoreMap":73},[277,344,345],{"v-slot:neoforge-kotlin-dsl":73},[67,346,349],{"className":347,"code":348,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-neoforge:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-commands-neoforge:1.27.1\")\n}\n",[18,350,348],{"__ignoreMap":73},[277,352,353],{"v-slot:neoforge-groovy-dsl":73},[67,354,357],{"className":355,"code":356,"language":292,"meta":73},[290],"dependencies {\n    implementation 'dev.ua.theroer:magicutils-neoforge:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-commands-neoforge:1.27.1'\n}\n",[18,358,356],{"__ignoreMap":73},[14,360,361],{},"The sections below cover bundle options, shared server installs, and modular\nsetups per platform.",[41,363,365],{"id":364},"bukkitpaper","Bukkit\u002FPaper",[14,367,368],{},"The Bukkit\u002FPaper adapter bundles the core modules (config, logger, commands,\nlang, placeholders). Add optional format helpers only when you need them.",[14,370,371],{},"You can use it in two ways:",[373,374,375,379],"ol",{},[376,377,378],"li",{},"Embed MagicUtils into your plugin.",[376,380,381,382,384],{},"Use a shared MagicUtils plugin (",[18,383,124],{},") so multiple\nplugins reuse the same runtime.",[386,387,390,398],"code-tabs",{":tabs":388,"sync":389},"[\"Kotlin DSL\", \"Groovy DSL\"]","install-dsl",[277,391,392],{"v-slot:kotlin-dsl":73},[67,393,396],{"className":394,"code":395,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-bukkit:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-config-yaml:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-config-toml:1.27.1\")\n}\n",[18,397,395],{"__ignoreMap":73},[277,399,400],{"v-slot:groovy-dsl":73},[67,401,404],{"className":402,"code":403,"language":292,"meta":73},[290],"dependencies {\n    implementation 'dev.ua.theroer:magicutils-bukkit:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-config-yaml:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-config-toml:1.27.1'\n}\n",[18,405,403],{"__ignoreMap":73},[407,408,410],"h3",{"id":409},"shared-bukkit-bundle","Shared Bukkit Bundle",[14,412,413],{},"If you want a single shared MagicUtils install for multiple plugins, use the\nbundle plugin and do not embed MagicUtils inside your plugins.",[14,415,416],{},"Dependencies (compile-only):",[67,418,421],{"className":419,"code":420,"language":72,"meta":73},[70],"dependencies {\n    compileOnly(\"dev.ua.theroer:magicutils-bukkit-bundle:1.27.1\")\n}\n",[18,422,420],{"__ignoreMap":73},[14,424,425],{},"Install the bundle on the server:",[427,428,429,440],"ul",{},[376,430,431,432,435,436,439],{},"Drop ",[18,433,434],{},"magicutils-bukkit-bundle-1.27.1.jar"," into ",[18,437,438],{},"plugins\u002F",".",[376,441,442,443,446,447,450,451,439],{},"Add ",[18,444,445],{},"depend: [MagicUtils]"," (or ",[18,448,449],{},"softdepend",") to your ",[18,452,453],{},"plugin.yml",[41,455,457],{"id":456},"fabric","Fabric",[14,459,460],{},"You have two options:",[407,462,464],{"id":463},"embed-the-bundle-inside-your-mod","Embed The Bundle Inside Your Mod",[14,466,467],{},"This is the recommended approach for single-mod setups and avoids requiring\nserver owners to install MagicUtils separately.",[386,469,470,477],{":tabs":388,"sync":389},[277,471,472],{"v-slot:kotlin-dsl":73},[67,473,475],{"className":474,"code":332,"language":72,"meta":73},[70],[18,476,332],{"__ignoreMap":73},[277,478,479],{"v-slot:groovy-dsl":73},[67,480,482],{"className":481,"code":340,"language":292,"meta":73},[290],[18,483,340],{"__ignoreMap":73},[407,485,487],{"id":486},"depend-on-a-shared-bundle-mod","Depend On A Shared Bundle Mod",[14,489,490],{},"If you want one shared MagicUtils install for multiple mods, use a standard\ndependency and install the bundle mod on the server.",[67,492,495],{"className":493,"code":494,"language":72,"meta":73},[70],"dependencies {\n    modImplementation(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n}\n",[18,496,494],{"__ignoreMap":73},[14,498,499,500,502,503,506],{},"If you pick the shared bundle, add the ",[18,501,31],{}," mod to the\nserver ",[18,504,505],{},"mods\u002F"," folder and do not embed it inside other mods.",[14,508,509,510],{},"You can download the bundle from the Maven repository:\n",[511,512,516],"a",{"href":513,"rel":514},"https:\u002F\u002Fmaven.theroer.dev\u002Freleases\u002Fdev\u002Fua\u002Ftheroer\u002Fmagicutils-fabric-bundle\u002F1.27.1\u002Fmagicutils-fabric-bundle-1.27.1.jar",[515],"nofollow",[18,517,518],{},"magicutils-fabric-bundle-1.27.1.jar",[14,520,521,522,525],{},"You can also add a dependency in your ",[18,523,524],{},"fabric.mod.json",":",[67,527,532],{"className":528,"code":530,"language":531,"meta":73},[529],"language-json","{\n  \"depends\": {\n    \"magicutils-fabric-bundle\": \">=1.27.1\"\n  }\n}\n","json",[18,533,530],{"__ignoreMap":73},[407,535,537],{"id":536},"modular-fabric-dependencies","Modular Fabric Dependencies",[14,539,540,541,544],{},"Use this only when you want to wire specific modules yourself instead of using\nthe bundle. ",[18,542,543],{},"FabricBootstrap"," lives in the command integration layer, so a\nbootstrap-first modular setup usually pulls both the platform adapter and the\nFabric integration modules.",[67,546,549],{"className":547,"code":548,"language":72,"meta":73},[70],"dependencies {\n    modImplementation(\"dev.ua.theroer:magicutils-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-logger-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-commands-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-placeholders-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-config:1.27.1\")\n    modImplementation(\"dev.ua.theroer:magicutils-lang:1.27.1\")\n}\n",[18,550,548],{"__ignoreMap":73},[41,552,554],{"id":553},"neoforge","NeoForge",[14,556,557,558,560,561,563],{},"NeoForge exposes platform, config, logger, and Brigadier command integrations.\nThere is no NeoForge placeholder bridge yet. ",[18,559,217],{}," lives in\n",[18,562,212],{},", so include it even if you register no commands.",[386,565,566,573],{":tabs":388,"sync":389},[277,567,568],{"v-slot:kotlin-dsl":73},[67,569,571],{"className":570,"code":348,"language":72,"meta":73},[70],[18,572,348],{"__ignoreMap":73},[277,574,575],{"v-slot:groovy-dsl":73},[67,576,578],{"className":577,"code":356,"language":292,"meta":73},[290],[18,579,356],{"__ignoreMap":73},[14,581,582,583,586,587,589],{},"See ",[511,584,554],{"href":585},"\u002Fplatforms\u002Fneoforge"," for the ",[18,588,217],{}," wiring example.",[407,591,593],{"id":592},"shared-neoforge-bundle","Shared NeoForge Bundle",[14,595,596,597,599,600,439],{},"If you want a single shared MagicUtils install for multiple mods, install the\nstandalone bundle mod on the server and do not embed MagicUtils inside your\nmods. It works like the Fabric bundle: drop the bundle jar in ",[18,598,505],{}," and depend\non it from your ",[18,601,602],{},"neoforge.mods.toml",[67,604,607],{"className":605,"code":606,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-neoforge-bundle:1.27.1\")\n}\n",[18,608,606],{"__ignoreMap":73},[41,610,612],{"id":611},"bungeecord","BungeeCord",[14,614,615],{},"The BungeeCord adapter exposes platform, config, logger, lang, command, and\ndiagnostics integration in a single artifact.",[67,617,619],{"className":618,"code":300,"language":72,"meta":73},[70],[18,620,300],{"__ignoreMap":73},[14,622,582,623,586,626,589],{},[511,624,612],{"href":625},"\u002Fplatforms\u002Fbungee",[18,627,628],{},"BungeeBootstrap",[41,630,632],{"id":631},"velocity","Velocity",[14,634,635],{},"The Velocity adapter exposes platform, config, logger, lang, and command\nintegration in a single artifact.",[67,637,639],{"className":638,"code":316,"language":72,"meta":73},[70],[18,640,316],{"__ignoreMap":73},[41,642,644],{"id":643},"optional-format-helpers","Optional Format Helpers",[427,646,647,652],{},[376,648,649,651],{},[18,650,244],{}," enables YAML support.",[376,653,654,656],{},[18,655,247],{}," enables TOML support.",[14,658,659],{},"Without them, MagicUtils uses JSON or JSONC (Fabric default).",[41,661,663],{"id":662},"optional-http-client","Optional HTTP Client",[67,665,668],{"className":666,"code":667,"language":72,"meta":73},[70],"dependencies {\n    implementation(\"dev.ua.theroer:magicutils-http-client:1.27.1\")\n}\n",[18,669,667],{"__ignoreMap":73},[41,671,673],{"id":672},"notes-on-shaded-artifacts","Notes On Shaded Artifacts",[14,675,676,677,680,681,684],{},"Local builds produce ",[18,678,679],{},"*-all"," artifacts (shaded). The published Maven repository\n(",[18,682,683],{},"maven.theroer.dev",") does not include these files, so do not depend on them.",{"title":73,"searchDepth":686,"depth":686,"links":687},3,[688,690,691,692,693,696,701,704,705,706,707,708],{"id":43,"depth":689,"text":44},2,{"id":61,"depth":689,"text":62},{"id":78,"depth":689,"text":79},{"id":266,"depth":689,"text":267},{"id":364,"depth":689,"text":365,"children":694},[695],{"id":409,"depth":686,"text":410},{"id":456,"depth":689,"text":457,"children":697},[698,699,700],{"id":463,"depth":686,"text":464},{"id":486,"depth":686,"text":487},{"id":536,"depth":686,"text":537},{"id":553,"depth":689,"text":554,"children":702},[703],{"id":592,"depth":686,"text":593},{"id":611,"depth":689,"text":612},{"id":631,"depth":689,"text":632},{"id":643,"depth":689,"text":644},{"id":662,"depth":689,"text":663},{"id":672,"depth":689,"text":673},"Add MagicUtils to a Bukkit\u002FPaper\u002FFolia, BungeeCord, Velocity, Fabric, or NeoForge project. Repository setup, the right artifact per platform, and version pinning.","md",{},null,true,"\u002Fgetting-started\u002Finstallation","---\ntitle: Installation\ndescription: Add MagicUtils to a Bukkit\u002FPaper\u002FFolia, BungeeCord, Velocity, Fabric, or NeoForge project. Repository setup, the right artifact per platform, and version pinning.\n---\n\n# Installation\n\nMagicUtils is split into modules. For most projects you only need one platform\nentry point (`magicutils-bukkit`, `magicutils-bungee`, `magicutils-velocity`,\n`magicutils-fabric-bundle`, or `magicutils-neoforge`) plus optional format\nhelpers.\n\nUse the modular artifacts only when you need a custom wiring path.\n\n## Choose A Version\n\nThis documentation is versioned. The examples below use\n`1.27.1` which matches the current docs version.\n\nIf you want to hardcode it in your build, replace it with the exact number\n(for example `1.10.0`).\n\n## Repositories\n\nAdd the MagicUtils Maven repository.\n\n```kotlin\nrepositories {\n    maven(\"https:\u002F\u002Fmaven.theroer.dev\u002Freleases\")\n}\n```\n\n## Which Artifact Do I Need?\n\n| Scenario | Recommended artifacts | Notes |\n| --- | --- | --- |\n| Bukkit\u002FPaper plugin | `magicutils-bukkit` | Default choice for most plugins. |\n| Shared Bukkit server install | `magicutils-bukkit-bundle` + plugin `compileOnly` dependency | Use when multiple plugins should share one install. |\n| Fabric mod | `magicutils-fabric-bundle` | Default choice for most mods. |\n| Shared Fabric server install | `magicutils-fabric-bundle:dev` without `include(...)` | Install the bundle mod on the server. |\n| Modular Fabric setup | `magicutils-fabric` + Fabric integration modules | Use only when you want custom wiring. |\n| BungeeCord plugin | `magicutils-bungee` | Includes config\u002Flogger\u002Flang\u002Fcommands\u002Fdiagnostics support. |\n| Velocity plugin | `magicutils-velocity` | Includes config\u002Flogger\u002Flang\u002Fcommands support. |\n| NeoForge mod | `magicutils-neoforge` + `magicutils-commands-neoforge` | `NeoForgeBootstrap` lives in `magicutils-commands-neoforge`. Placeholder bridge not available yet. |\n| Shared NeoForge server install | `magicutils-neoforge-bundle` | Standalone bundle mod for the server, like the Fabric bundle. |\n| Extra config formats | `magicutils-config-yaml`, `magicutils-config-toml` | Optional helpers for YAML and TOML. |\n| HTTP client | `magicutils-http-client` | Optional runtime-aware HTTP\u002FWebSocket clients. |\n\n## Quick Install\n\nPick your platform, then your Gradle DSL. The DSL choice is remembered across\nthe page, so you only set Kotlin or Groovy once.\n\n::install-tabs{:platforms='[\"Bukkit\u002FPaper\u002FFolia\",\"BungeeCord\",\"Velocity\",\"Fabric\",\"NeoForge\"]' :icons='[\"lucide:server\",\"lucide:route\",\"lucide:network\",\"lucide:package\",\"lucide:hammer\"]'}\n\n#bukkit-paper-folia-kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-bukkit:1.27.1\")\n}\n```\n\n#bukkit-paper-folia-groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-bukkit:1.27.1'\n}\n```\n\n#bungeecord-kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-bungee:1.27.1\")\n}\n```\n\n#bungeecord-groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-bungee:1.27.1'\n}\n```\n\n#velocity-kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-velocity:1.27.1\")\n}\n```\n\n#velocity-groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-velocity:1.27.1'\n}\n```\n\n#fabric-kotlin-dsl\n\n```kotlin\ndependencies {\n    modImplementation(include(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1\"))\n    modCompileOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n    modRuntimeOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n}\n```\n\n#fabric-groovy-dsl\n\n```groovy\ndependencies {\n    modImplementation(include('dev.ua.theroer:magicutils-fabric-bundle:1.27.1'))\n    modCompileOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n    modRuntimeOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n}\n```\n\n#neoforge-kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-neoforge:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-commands-neoforge:1.27.1\")\n}\n```\n\n#neoforge-groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-neoforge:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-commands-neoforge:1.27.1'\n}\n```\n\n::\n\nThe sections below cover bundle options, shared server installs, and modular\nsetups per platform.\n\n## Bukkit\u002FPaper\n\nThe Bukkit\u002FPaper adapter bundles the core modules (config, logger, commands,\nlang, placeholders). Add optional format helpers only when you need them.\n\nYou can use it in two ways:\n\n1. Embed MagicUtils into your plugin.\n2. Use a shared MagicUtils plugin (`magicutils-bukkit-bundle`) so multiple\n   plugins reuse the same runtime.\n\n::code-tabs{:tabs='[\"Kotlin DSL\", \"Groovy DSL\"]' sync=\"install-dsl\"}\n\n#kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-bukkit:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-config-yaml:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-config-toml:1.27.1\")\n}\n```\n\n#groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-bukkit:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-config-yaml:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-config-toml:1.27.1'\n}\n```\n\n::\n\n### Shared Bukkit Bundle\n\nIf you want a single shared MagicUtils install for multiple plugins, use the\nbundle plugin and do not embed MagicUtils inside your plugins.\n\nDependencies (compile-only):\n\n```kotlin\ndependencies {\n    compileOnly(\"dev.ua.theroer:magicutils-bukkit-bundle:1.27.1\")\n}\n```\n\nInstall the bundle on the server:\n\n- Drop `magicutils-bukkit-bundle-1.27.1.jar` into `plugins\u002F`.\n- Add `depend: [MagicUtils]` (or `softdepend`) to your `plugin.yml`.\n\n## Fabric\n\nYou have two options:\n\n### Embed The Bundle Inside Your Mod\n\nThis is the recommended approach for single-mod setups and avoids requiring\nserver owners to install MagicUtils separately.\n\n::code-tabs{:tabs='[\"Kotlin DSL\", \"Groovy DSL\"]' sync=\"install-dsl\"}\n\n#kotlin-dsl\n\n```kotlin\ndependencies {\n    modImplementation(include(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1\"))\n    modCompileOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n    modRuntimeOnly(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n}\n```\n\n#groovy-dsl\n\n```groovy\ndependencies {\n    modImplementation(include('dev.ua.theroer:magicutils-fabric-bundle:1.27.1'))\n    modCompileOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n    modRuntimeOnly 'dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev'\n}\n```\n\n::\n\n### Depend On A Shared Bundle Mod\n\nIf you want one shared MagicUtils install for multiple mods, use a standard\ndependency and install the bundle mod on the server.\n\n```kotlin\ndependencies {\n    modImplementation(\"dev.ua.theroer:magicutils-fabric-bundle:1.27.1:dev\")\n}\n```\n\nIf you pick the shared bundle, add the `magicutils-fabric-bundle` mod to the\nserver `mods\u002F` folder and do not embed it inside other mods.\n\nYou can download the bundle from the Maven repository:\n[`magicutils-fabric-bundle-1.27.1.jar`](https:\u002F\u002Fmaven.theroer.dev\u002Freleases\u002Fdev\u002Fua\u002Ftheroer\u002Fmagicutils-fabric-bundle\u002F1.27.1\u002Fmagicutils-fabric-bundle-1.27.1.jar)\n\nYou can also add a dependency in your `fabric.mod.json`:\n\n```json\n{\n  \"depends\": {\n    \"magicutils-fabric-bundle\": \">=1.27.1\"\n  }\n}\n```\n\n### Modular Fabric Dependencies\n\nUse this only when you want to wire specific modules yourself instead of using\nthe bundle. `FabricBootstrap` lives in the command integration layer, so a\nbootstrap-first modular setup usually pulls both the platform adapter and the\nFabric integration modules.\n\n```kotlin\ndependencies {\n    modImplementation(\"dev.ua.theroer:magicutils-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-logger-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-commands-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-placeholders-fabric:1.27.1:dev\")\n    modImplementation(\"dev.ua.theroer:magicutils-config:1.27.1\")\n    modImplementation(\"dev.ua.theroer:magicutils-lang:1.27.1\")\n}\n```\n\n## NeoForge\n\nNeoForge exposes platform, config, logger, and Brigadier command integrations.\nThere is no NeoForge placeholder bridge yet. `NeoForgeBootstrap` lives in\n`magicutils-commands-neoforge`, so include it even if you register no commands.\n\n::code-tabs{:tabs='[\"Kotlin DSL\", \"Groovy DSL\"]' sync=\"install-dsl\"}\n\n#kotlin-dsl\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-neoforge:1.27.1\")\n    implementation(\"dev.ua.theroer:magicutils-commands-neoforge:1.27.1\")\n}\n```\n\n#groovy-dsl\n\n```groovy\ndependencies {\n    implementation 'dev.ua.theroer:magicutils-neoforge:1.27.1'\n    implementation 'dev.ua.theroer:magicutils-commands-neoforge:1.27.1'\n}\n```\n\n::\n\nSee [NeoForge](\u002Fplatforms\u002Fneoforge) for the `NeoForgeBootstrap` wiring example.\n\n### Shared NeoForge Bundle\n\nIf you want a single shared MagicUtils install for multiple mods, install the\nstandalone bundle mod on the server and do not embed MagicUtils inside your\nmods. It works like the Fabric bundle: drop the bundle jar in `mods\u002F` and depend\non it from your `neoforge.mods.toml`.\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-neoforge-bundle:1.27.1\")\n}\n```\n\n## BungeeCord\n\nThe BungeeCord adapter exposes platform, config, logger, lang, command, and\ndiagnostics integration in a single artifact.\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-bungee:1.27.1\")\n}\n```\n\nSee [BungeeCord](\u002Fplatforms\u002Fbungee) for the `BungeeBootstrap` wiring example.\n\n## Velocity\n\nThe Velocity adapter exposes platform, config, logger, lang, and command\nintegration in a single artifact.\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-velocity:1.27.1\")\n}\n```\n\n## Optional Format Helpers\n\n- `magicutils-config-yaml` enables YAML support.\n- `magicutils-config-toml` enables TOML support.\n\nWithout them, MagicUtils uses JSON or JSONC (Fabric default).\n\n## Optional HTTP Client\n\n```kotlin\ndependencies {\n    implementation(\"dev.ua.theroer:magicutils-http-client:1.27.1\")\n}\n```\n\n## Notes On Shaded Artifacts\n\nLocal builds produce `*-all` artifacts (shaded). The published Maven repository\n(`maven.theroer.dev`) does not include these files, so do not depend on them.\n",{"title":5,"description":709},"getting-started\u002Finstallation","npY4Ywx9U6D06Fr5B7Bx_h_gBt9c2EKZFdp2cmv3AG4",1783944485844]