Installation

Requirements

Requirement Value
Server software Paper, Purpur, Pufferfish, Folia, Spigot
API version 1.21
Folia Supported
Required plugin PacketEvents
Outbound network TCP to cloud.ecstacy.ac:5001

The full supported-version matrix and the known plugin conflicts live on the compatibility page. It is generated from the live data, so check there rather than trusting a copy.

Important

PacketEvents is a hard dependency, declared as depend in plugin.yml. If it is missing the server will refuse to enable Ecstacy at all. This is not a soft failure you can ignore.

Install

  1. Download your jar from the Client Area. The download is built for your license; do not share it and do not reuse one server's jar on a license it was not issued for.
  2. Put the jar and PacketEvents in plugins/.
  3. Start the server.
  4. Watch the console. On a healthy start Ecstacy connects to the cloud during enable and reports it in the log.
  5. In game, run /ecstacy cloud to confirm the connection.
console
[Ecstacy] Loading EcstacyAC v1.3.3
[Ecstacy] Connected to cloud

There is nothing to paste into a config to activate the licence.

Warning

Do not add a uuid: key to settings.yml. The identity is injected into the jar at download time and a uuid: key in the config is ignored. Editing it does not move a licence between servers, it just makes the file misleading.

Firewall

Ecstacy dials out; nothing needs to be exposed. Allow outbound TCP to cloud.ecstacy.ac:5001.

If your firewall pins outbound source ports, the local port the plugin binds is configurable:

settings.yml
cloud:
  local-port: 49152   # 0 = let the OS pick an ephemeral port

That is the port the plugin opens locally, not the port it connects to. Change it only if 49152 is already taken on the host or your firewall requires a fixed source port.

First startup behaviour

By default the plugin keeps running if it cannot reach the cloud at startup, and retries. If you would rather the plugin disable itself instead of running without detections:

settings.yml
cloud:
  disable-on-startup-connect-failure: true
  startup-connect-timeout-ms: 30000

Verify

Check Command Expected
Cloud link /ecstacy cloud Connected, a ping value, a recent heartbeat
Checks loaded /ecstacy checks The checks GUI opens with the four families
Alerts reach you /ecstacy alerts Alerts toggle on for your account

If any of the three is wrong, /ecstacy doctor diagnoses all of them at once and is what support will ask for first.

When the first start does not work

Symptom Almost always
Server refuses to enable Ecstacy at all PacketEvents is missing. It is a hard depend, not a soft one
Unknown command: /ecstacy The plugin did not enable. Read the enable stage of the log, not the tail
Plugin enables, /ecstacy cloud says disconnected Outbound TCP to cloud.ecstacy.ac:5001 is blocked. Test from the host, not from your desktop
Enables and connects, but nothing ever flags Usually not a fault. See First steps for how to confirm detections are live
UnsupportedClassVersionError The server is on an older Java than the jar targets

Running more than one server on a licence

Each server gets its own download from the Client Area. The identity is baked into the jar at download time, which means:

  • Copying one server's jar to a second server does not give the second server its own identity.
  • There is no key to paste and no uuid: to set. A uuid: key in settings.yml is ignored.
  • Give each server a distinct name: in settings.yml, up to 32 characters. It is what distinguishes them in alerts and in the dashboard.

Reputation, the known-cheaters list and cross-server replay playback are scoped to the licence, so servers on the same licence share them. Whether reputation is scoped to one server or the whole licence is switchable at runtime with /ecstacy reputation mode <LOCAL|GLOBAL>.

Updating

/ecstacy update checks for a new build and downloads it. Two settings control how you hear about releases:

settings.yml
update:
  alert: true    # staff alert when a new build is published
  beta: false    # receive beta and canary builds before public release

Detections themselves do not need a plugin update. Scoring is cloud-side, so improvements arrive without a jar swap. advanced.auto-update-checks (on by default) is what pulls updated check configuration down from the cloud. Full descriptions in the settings reference.

Removing it

  1. Stop the server.
  2. Delete the jar from plugins/.
  3. plugins/EcstacyAC/ holds your configs, local violation storage and any .rpl replay clips. Keep the folder if you might come back. Dropping a jar back in resumes from it.

Nothing is written outside that folder and nothing is left in your world data.

Once the three verification rows above are green, continue with First steps.

Last updated