> For the complete documentation index, see [llms.txt](https://darkstarworks.gitbook.io/plugins/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://darkstarworks.gitbook.io/plugins/mc/ws-documentation/installation.md).

# Installation

## What you need

* A **Paper** or **Folia** server running Minecraft **1.21.1 or newer**.
* Running a **Minecraft 26.x** server? Pick the **26.x** build in the download version picker on your [esmp.fun](https://esmp.fun/plugins) dashboard — the 1.21 jar won't load on 26.x and vice versa (the `api-version` gate is deliberate).
* **Java 21** or newer.
* **TrialChamberPro v1.4.0+** already installed and working. If you haven't installed it yet, grab it from [Modrinth](https://modrinth.com/plugin/trialchamberpro) — it's free and the install is the same as any plugin.
* **(Optional)** a custom-mob plugin — MythicMobs, EliteMobs, EcoMobs, LevelledMobs, InfernalMobs, or Citizens — only if you want non-vanilla spawner mobs (see [Custom mobs](/plugins/mc/ws-documentation/custom-mobs.md)).

## Step 1 — Drop in the JAR

Copy `tcp-wild-spawners-<version>-obf.jar` (the one you downloaded from esmp.fun or Voxel) into your server's `plugins/` folder. Don't rename the file — its name is what the server uses to find it.

You'll have something like this:

```
plugins/
├── TrialChamberPro-1.4.x.jar
├── tcp-wild-spawners-<version>-obf.jar     ← new
└── ...
```

## Step 2 — Restart the server

Restart (don't `/reload` — `/reload` is unreliable for plugins that register listeners on enable, and you'll get strange behaviour).

## Step 3 — Verify it loaded

Watch the console as the server boots. You should see something like:

```
[INFO] [TCP-WildSpawners] License key sourced from JAR placeholder (production distribution).
[INFO] [TCP-WildSpawners] Loaded 1 wild-spawner preset(s).
[INFO] ╔══════════════════════════════════════╗
[INFO] ║  TCP-WildSpawners v1.0.0         ║
[INFO] ║  Licensed via ESMP               ║
[INFO] ╚══════════════════════════════════════╝
```

If you see the banner, you're good. The `Loaded 1 wild-spawner preset(s)` line refers to the example preset that ships with the plugin — feel free to delete or rewrite it.

## Step 4 — Confirm the GUI works

Join the server as an op (or anyone with the `tcpws.admin` permission). Run:

```
/tcpws gui
```

A paginated chest GUI should open showing the example preset. Click it to enter its editor. If it works, your install is complete.

## What if it didn't load?

If you don't see the banner, check the console for ERROR or SEVERE lines:

* **"TrialChamberPro not loaded — cannot activate TCP-WildSpawners."** TrialChamberPro is missing or failed to load. Check that you have the free TCP plugin installed at v1.4.0 or later.
* **"License verification FAILED."** The JAR's embedded licence isn't valid for your account. Re-download from your purchase page at [esmp.fun/plugins](https://esmp.fun/plugins) (or whichever store you bought it from) under your own account.
* **`ClassNotFoundException` at startup.** Almost always means your Paper version is too old. Update to a recent Paper 1.21.x build.

For anything else, hop into the Discord linked from the product page.

## Where the plugin's files live

After first boot, look for:

```
plugins/TCP-WildSpawners/
├── config.yml                ← global toggles (holograms, mining, tether)
├── wild-presets.yml          ← your preset definitions
├── messages.yml              ← every player-facing string
└── license-cache.dat         ← offline-grace verification cache (don't share or commit!)
```

The first three are yours to edit. `license-cache.dat` is managed by the plugin — never copy it between machines or upload it anywhere.

***

Next: [**Your first spawner →**](/plugins/mc/ws-documentation/your-first-spawner.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://darkstarworks.gitbook.io/plugins/mc/ws-documentation/installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
