StackNest Documentation
Everything you need to get better generations, cleaner outputs, and a smoother path from prompt to deployed plugin.
If you are new, read Your first plugin, copy the prompt template, then come back to validation if you want to improve a result.
What is StackNest?
StackNest is an AI development tool for Minecraft server plugins, Fabric/Forge/NeoForge mods, and related server workflows. You describe what you want in plain English — for example “a Fabric mod that adds a /heal command and a glowing apple item” or “a plugin that rewards players when they vote” — and StackNest generates the code, metadata, and validation feedback.
You do not need to be a Java expert to get started. The goal is to shorten the path from idea to working plugin or mod, then give you enough tooling to refine, validate, and deploy with confidence.
Head to the app, describe your plugin in one or two clear sentences, and hit Generate. Simple requests are usually faster; larger multi-feature plugins may take longer while validation finishes.
Generating mods with AI
In addition to server plugins, StackNest can generate Fabric, Forge, and NeoForge mods from a single prompt. Mod generation runs through the same AI pipeline as plugin generation, but produces mod-specific source files instead of a compiled server plugin.
What you get from a mod generation:
- A main Java class implementing the correct mod entry point (
ModInitializerfor Fabric,@Modclass for Forge/NeoForge) - The mod metadata file —
fabric.mod.jsonfor Fabric,mods.tomlfor Forge/NeoForge - A Gradle build config stub (
build.gradle) - Inline comments explaining how to wire up the generated features
Unlike server plugins, mod output is not compiled or validated server-side — you receive Java source that you build locally with Gradle. Check @Override annotations, imports, and event registrations before building. The AI uses the latest Fabric/Forge API conventions but always review the output.
Fabric, Forge & NeoForge
fabric.mod.json, the Fabric API, and Mixins. Recommended for most new mods on 1.20+. StackNest injects live PaperMC/Adventure doc context into Fabric generations.mods.toml and @Mod annotations. Good choice when you need to depend on other Forge mods. Works on 1.20.1 and earlier as well as recent releases.@Mod pattern with neoforge.mods.toml and net.neoforged.* imports.Your first mod
-
Switch to Mods mode In the generator at /app, click the Mods pill at the top of the composer. The control strip will change to show mod options.
-
Choose your loader and MC version Select Fabric, Forge, or NeoForge and pick the Minecraft version you are targeting. Give your mod a name.
-
Select feature chips (optional) Toggle chips like Custom items, Commands, Event listeners, or Config file to add those patterns to your generation.
-
Describe your mod Write what the mod should do, e.g. “A Fabric 1.21 mod that adds a /heal command and a custom glowing apple item.” The more detail, the better the output.
-
Copy the source into your project Drop the generated Java file(s) into the correct package inside your Fabric/Forge/NeoForge project, merge the
fabric.mod.jsonormods.toml, and run./gradlew build.
Skript generation
Skript is a scripting plugin for Paper that lets you add game logic in plain-English syntax — no Java compilation needed. StackNest generates complete .sk script files using the Skript 2.x rule set.
How to generate a Skript
-
Click the Skript pill On the generator at /app, click Skript in the mode pills row. The composer strips down to just a text box — no loader or version selector needed.
-
Describe what you want Write what the script should do, e.g. “A /sethome and /home command that saves each player’s home location and teleports them back to it.”
-
Download and install Save the generated
.skfile into your server’splugins/Skript/scripts/folder. Run/sk reload allor restart the server.
Your server must have the Skript plugin (2.x, latest stable) installed on a Paper server. Skript does not work on Fabric, Forge, or Vanilla.
What StackNest enforces for Skript
- Indentation-based scope — no braces, no semicolons
- Correct event names:
on join:noton player join: - Variables:
{global}for persistent,{_local}for temporary,{list::*}for lists - String interpolation with
%expr%inside"..." - Stores player UUIDs, not player objects, in long-lived variables
- No Java syntax leaking in (no
;, no{}blocks, noimport)
A Skript with /sethome and /home commands. /sethome saves the player’s current location to a global variable keyed by their UUID. /home teleports them back to that location, or tells them they have no home set. Add a 5-second cooldown on /home.
Datapack generation
Vanilla datapacks let you modify game behaviour without a plugin or modloader — using only JSON files, .mcfunction scripts, and folder conventions that Minecraft reads natively.
StackNest generates a complete datapack file tree for MC 1.21+ and labels each file with its intended path, so you know exactly where to place it.
How to generate a datapack
-
Click the Datapacks pill On the generator at /app, click Datapacks. A MC version dropdown appears — pick the version you are targeting.
-
Describe your datapack Explain what it should do: “Give players the Speed II effect when they eat a golden carrot. Remove it after 30 seconds.”
-
Install the output Create a folder inside your world’s
datapacks/directory with the namespace name. Drop the generated files into the correct sub-paths (each file in the output starts with a comment showing its path). Run/datapack enable "file/<name>"and/reload.
What StackNest generates for datapacks
pack.mcmeta— with the correctpack_format(48 for 1.21, 61 for 1.21.4)data/<namespace>/functions/—.mcfunctionfiles for tick, load, and any custom logic- Tick & load function tags in
data/minecraft/tags/function/ - Advancements, recipes, loot tables, and predicates in JSON
- Scoreboard initialisation in the load function
Unlike plugins, Skript scripts and datapacks are not compiled by StackNest — Minecraft itself parses them at load time. If a datapack or Skript has a syntax error, check the server console for the specific line that failed.
Your first plugin
-
Create a free account Go to /app and sign up with your email. Verify your email — you'll get a confirmation link.
-
Describe your plugin Type what you want in the prompt box. Be specific — the more detail you give, the better the result. See Writing better prompts.
-
Wait for generation Click Generate. StackNest writes your plugin, validates it, and attempts automatic corrections when needed. This usually takes 15–60 seconds, but larger plugins can take longer.
-
Download your JAR Once generated, click Download JAR. Drop the
.jarfile into your server'splugins/folder and restart.
Writing better prompts
The quality of your plugin depends heavily on how clearly you describe it. Here are the key things to include:
- What triggers the plugin — a command, an event (player joins, breaks a block, dies), a timer
- What it does — the specific action or behaviour
- Who it affects — all players, specific permissions, ops only
- Any configuration — messages, cooldowns, limits
- Any dependencies — Vault, LuckPerms, PlaceholderAPI, databases, or other required plugins
Prompt template
Use this structure when you want more reliable results:
Build a Paper 1.21 plugin.
Main features:
- [feature 1]
- [feature 2]
Commands:
- /example
Permissions:
- example.use for regular players
- example.admin for admins
Config:
- message text should be configurable
- cooldown should default to 30 seconds
Storage / integrations:
- use YAML / SQLite / Vault / LuckPerms
Notes:
- make this Folia-compatible if needed
- keep messages formatted with Adventure components
Prompt examples
Make a chat plugin
Create a plugin that prefixes all chat messages with the player's rank from LuckPerms. Ops see chat in gold, regular players in white. Add a /togglechat command that lets players mute global chat for themselves.
Economy plugin
A simple economy plugin with /balance to check your money, /pay <player> <amount> to send money, and /setbalance <player> <amount> for admins (requires economy.admin permission). Starting balance is 500. Store data in a YAML file.
Mention the target platform (e.g. "Paper 1.21") and any specific APIs you want to use. If you need Folia support, say so explicitly — it uses a different scheduler.
Platform overview
Minecraft server software comes in many flavours. Choosing the right one affects what features your plugin can use.
Which platform should I choose?
| I want to… | Use |
|---|---|
| Make a plugin for a standard survival/creative server | Paper (default) |
| Use extra config options (mob behaviour, etc.) | Purpur |
| Run on a large multi-core server | Folia (with "Folia-compatible" prompt) |
| Support the widest range of old servers | Bukkit API |
| Control a network of servers (hub, survival, skyblock…) | Velocity or BungeeCord |
| Build a quick automation script instead of a full Java plugin | Skript (Skript mode) |
| Add game logic without Java or a plugin framework | Datapacks (Datapack mode) |
How generation works
When you hit Generate, StackNest goes through several steps automatically:
- Your prompt is sent to the AI — it writes Java code and descriptor files based on what you described.
- For plugins: the code is compiled — the plugin is compiled against the real PaperMC API and any errors are shown.
- For plugins: automatic fixing — if the code has issues, StackNest retries with targeted corrections before returning the result.
- For mods: source output only — mods are not compiled server-side. You receive Java source,
fabric.mod.json/mods.toml, and a Gradle stub to build locally. - For Skript: .sk file output — a complete
.skscript ready to drop intoplugins/Skript/scripts/. No compilation step. - For datapacks: full file tree —
pack.mcmeta,.mcfunctionfiles, JSON tags, advancements, recipes, and loot tables. Each file is labelled with its install path. - You get the output — the code, any warnings, and a download button for the compiled JAR (plugins) or source files (mods, Skript, datapacks).
Architecture patterns the AI is guided to use
For complex plugins the AI follows a set of production-grade patterns, not just syntactically correct Java:
- Layered manager classes — a top-level
DatabaseManager,CacheManager, and service layer instead of logic in the main plugin class. - Async-safe player data loading — a
ConcurrentHashMap<UUID, CompletableFuture<PlayerData>>dedup map so the database is hit exactly once per UUID even under concurrent join events. - Bounded write queues — a
LinkedBlockingQueuewith a configurable size cap and inline fallback, flushed before shutdown. - Config-driven backpressure — a
Semaphoresized toavailableProcessors() * 2limits concurrent database operations so threads are not exhausted under load. - Stale-task guards — async callbacks check both
plugin.isEnabled()and aSystem.nanoTime()instance ID so they silently drop work if the plugin was reloaded mid-flight. - Retry jitter — failed external API calls back off with
Math.random() * baseDelayto prevent thundering-herd retry storms. - Copy-on-write snapshots — mutable
PlayerDatais snapshotted on the main thread before being handed to async writers to prevent torn multi-field reads.
These patterns are injected based on what the prompt asks for. A simple /heal command won’t include a write queue. A PlayerData persistence plugin will. The generator scales the architecture to the complexity you describe.
Generation typically takes 15–60 seconds. Complex plugins with many features can take longer. Please don't close the tab while it's working — the page will show a progress indicator.
Validation & errors
StackNest validates your plugin at every stage before returning the result:
- Java compilation — the code is compiled against the real Paper 1.21 API using
javac. Compiler errors are captured and fed back into the auto-heal loop. - plugin.yml check — all required fields are verified:
name,version,main, andapi-version. Missing or malformed entries are caught before the JAR is packaged. - Static analysis — catches unsafe and broken patterns before the code ever reaches a server:
- Main-thread violations — reading or writing world state from an async callback
- Deprecated API use — removed or legacy Bukkit calls that break on Paper 1.17+
Thread.sleep()in async tasks — blocks the thread pool slot; replaced withrunTaskLaterAsynchronously- Raw NMS access — internal Minecraft internals that break on every version bump
- Unbounded collections and missing
ConcurrentHashMapon shared state - Stale async callbacks after plugin reload (
isEnabled()checks)
- Quality review — no truncated methods, no empty catch blocks, no placeholder comments left in the output.
If warnings appear after generation they are usually minor (like an unused import) and the plugin will still work. Errors shown in red mean compilation failed — try regenerating with a more specific prompt, or describe what went wrong and the auto-heal loop will attempt a targeted fix.
The auto-heal loop runs up to 5 passes. Each pass feeds the exact compiler error or static-check failure back to the AI so the correction is targeted, not a full regeneration. Most single-error cases resolve in one pass.
Downloading your JAR
After a successful generation, click Download JAR. You'll get a .jar file ready to install:
- Stop your server (or let it run — hot-loading is possible but not recommended).
- Drop the
.jarinto your server's/pluginsfolder. - Start (or restart) the server.
- The plugin loads automatically. Check your console for any startup errors.
The plugins folder is usually at server-folder/plugins/. Any config files the plugin creates will appear inside a subfolder with the plugin's name, e.g. plugins/YourPlugin/config.yml.
Runtime plugin testing Beta
Runtime plugin testing is new and may occasionally produce unexpected results. Quotas are intentionally conservative while we stabilise the infrastructure. Quotas reset on the 1st of each month.
Instead of downloading a JAR and deploying it to your own server, you can ask StackNest to boot a real Paper 1.21.1 server instance, load your plugin, and return a structured diagnostic report — all within the browser, in under 60 seconds.
How to use it
- Generate a plugin as normal in the editor.
- Once generation succeeds, click the Test on Server button in the action bar (Starter and above only).
- A results panel slides open and streams the test output. It takes roughly 30–60 seconds.
- Review the stat tiles (load time, warnings, errors) and the StackNest Insights section for AI-powered fix hints.
- Expand Full server log for the raw Paper output if you need to dig deeper.
Plan limits
| Plan | Tests / month |
|---|---|
| Free | Not available |
| Starter | 3 |
| Pro | 10 |
| Studio | 30 |
What the report includes
- Load status — whether the plugin enabled successfully.
- Errors & warnings — counts extracted directly from the server log.
- Stack traces — any Java exceptions printed during startup or the first tick.
- StackNest Insights — up to 25 AI-powered hints matched against common plugin issues (missing dependencies, deprecated API calls, unsafe async operations, and more).
- Full server log — the complete Paper console output, expandable on demand.
A Passed result means the plugin loaded without throwing errors and the server started cleanly. It does not test gameplay logic. Always do a manual in-game test for commands, events, and game mechanics before shipping to players.
Gallery
The Gallery is a community library of plugins that users have uploaded for others to use freely.
- Browsing — anyone can browse and download plugins from the gallery, no account needed.
- Uploading — you need a verified account. Upload a
.jaror.zipcontaining your plugin (it must have a validplugin.ymlinside). - Tagging — tag your upload with the platforms it supports (Paper, Spigot, etc.) so others can filter by platform.
Recommended workflow
- Start narrow — generate one core feature first instead of a giant all-in-one plugin.
- Test the basics — check commands, permissions, and startup logs on a local Paper test server.
- Iterate in follow-ups — add one feature at a time so the AI has a clear next step.
- Use the editor and log analyser — they are the fastest path when a plugin almost works but still needs cleanup.
Plans & limits
| Feature | Free | Starter | Pro | Studio |
|---|---|---|---|---|
| Monthly generations | 3 | 15 | 100 | 300 |
| Prompt previews | 20 | 20 | Unlimited | Unlimited |
| Primary generation tier | Fast | Fast | Premium | Premium + workspace features |
| Platform breadth | Core plugin flow | Expanded platform support | All major supported targets | All major supported targets |
| Plugin branding | StackNest added to output | StackNest added to output | None | None |
| Priority queue | No | No | Yes | Yes |
| Collaboration features | No | No | Basic | Team-oriented |
| Runtime server tests / month Beta | — | 3 | 10 | 30 |
See the pricing page for full details and to upgrade.
Common issues
My plugin generated but doesn't work on the server
Check your server console for error messages when the plugin loads. Common causes:
- Wrong server version — make sure your prompt mentioned the Minecraft version (e.g. "Paper 1.21").
- Missing dependency — if the plugin requires another plugin (like Vault or LuckPerms), make sure it's installed first.
- Folia compatibility — if you're on Folia, regenerate with "make this Folia-compatible" in your prompt.
Generation is taking a long time
Complex plugins can take up to 90 seconds. Mod generation may also take 30–60 seconds as it uses the cloud AI tier. If the page shows a spinner, it’s still working — don’t reload. If it times out, try again with a slightly simpler prompt and build up from there.
I get a compilation error in the output
This happens occasionally with very complex or unusual requests. Try:
- Regenerating with the same prompt (the AI might get it right on the next attempt).
- Simplifying your prompt slightly, then adding complexity in a follow-up generation.
- Being more specific about the Minecraft version and API you're targeting.
The plugin has "StackNest" as the author — can I change it?
On the free plan, authors: [StackNest] is added to your plugin.yml automatically. You can edit the file manually to change it, or upgrade to Pro to remove this entirely.
I’ve hit my monthly limit
Free accounts get 3 plugin/mod generations per month. If you need more headroom, move to Starter, Pro, or Studio depending on how often you generate and whether you need premium tooling.
Service availability
StackNest uses cloud AI services to generate plugins. Occasionally these services may be slower or temporarily unavailable due to high demand.
If you see a "temporarily unavailable" message, the AI service is likely busy or experiencing an outage. This is not a problem with your prompt. Please wait a few minutes and try again — these issues typically resolve quickly.
Pro users get priority queue access, meaning their requests are processed before free-tier requests during high-traffic periods.