settings.yml reference

The core half of settings.yml. Client integrations are on Integrations; reputation, ban waves, replays and the rest of the enforcement machinery are on Enforcement.

Identity

There is nothing to configure. Your licence identity is embedded in the jar you download from the Client Area.

Warning

A uuid: key in settings.yml is ignored. Adding one does not move a licence between servers; it only makes the file lie about where the identity comes from.

General

settings.yml
name: "MyServer"
debug: false
language: "en_us"

ai:
  debug: false

api:
  sync-interval: 300
Key Default Meaning
name "MyServer" Server display name in the dashboard and in alerts. Max 32 characters
debug false Verbose logging. Spams the console. Leave off unless asked
language "en_us" Loads lang/<code>.yml. Bundled: en_us, tr
ai.debug n/a No longer available. It streamed a per-window model reading; the key is now ignored if present
api.sync-interval 300 Seconds between reputation syncs

language accepts both en and en_us for English. Only translated keys need to be present in a language file. Anything missing falls back to English. Dropping your own lang/<code>.yml (for example it_it) into the plugin's data folder adds or overrides a language without waiting for an update.

Note

ai.debug used to stream a reading for every scored window. It was removed: a per-window numeric readout of the model is a detection secret, and it fired on windows that never flagged. To confirm detections are alive on a quiet server use /ecstacy suspicious, which lists players tracking near the bar, or the dashboard.

Alert visibility

Where a flag is shown. The dashboard always receives every flag. That is not configurable here. These keys only decide what the server itself does with it.

settings.yml
alerts:
  permission: "ecstacy.alerts"
  mode: "CHAT_AND_WEB"
  console: true
  webhook: true
  punish: true
Key Default Meaning
alerts.permission ecstacy.alerts Permission needed to see staff alerts in chat
alerts.mode CHAT_AND_WEB CHAT_AND_WEB prints staff alerts in chat. WEB_ONLY prints nothing in chat. Flags are only visible on the dashboard and in /ecstacy logs
alerts.console true Print the flag line to the server console. Independent of mode
alerts.webhook true Forward flags to the Discord webhook (see Integrations)
alerts.punish true Execute punishments and per-check fail.commands. false = detection only

mode governs the chat alert only. Console, webhook and punishment stay separate switches, so "silent in chat but still banning" and "loud in console, nothing in chat" are both expressible.

Per check, fail.alert.mode in checks.yml overrides the global mode (INHERIT follows it). Setting it to WEB_ONLY on one noisy check leaves every other check alerting normally.

Note

WEB_ONLY does not weaken detection and does not stop anything reaching the dashboard. Cloud-side nothing changes: the flag is still sent, still recorded and still counted for reputation. Only the in-game chat line is suppressed. Staff can review flags in the dashboard or with /ecstacy logs.

Warning

alerts.punish: false silently disables every ban, kick and configured command, on every check. A cheater flagged at max VL will keep playing. Use it while tuning a new check, not as a permanent setting.

Cloud

settings.yml
cloud:
  disable-on-startup-connect-failure: false
  startup-connect-timeout-ms: 30000
  local-port: 49152
Key Default Meaning
disable-on-startup-connect-failure false true disables the plugin if the cloud is unreachable at startup instead of running without detections
startup-connect-timeout-ms 30000 How long to wait for the first connection
local-port 49152 The local TCP source port the plugin binds, not the port it connects to. 0 lets the OS pick

Change local-port only if 49152 is taken on the host or your firewall pins outbound source ports. Valid range 0–65535.

Proxy

settings.yml
proxy:
  send: false
  receive: false

Network-wide alert sharing across a BungeeCord or Velocity network. send forwards this server's alerts to the proxy; receive shows other servers' alerts here.

Database

Local violation storage. Violations always sync to the Ecstacy cloud regardless of this section.

settings.yml
database:
  type: SQLITE          # SQLITE, MYSQL, MARIADB
  self-hosted:
    enabled: false
    max-violations: 1000
  sqlite:
    file: "ecstacy.db"
  mysql:
    host: "localhost"
    port: 3306
    database: "ecstacy"
    username: "root"
    password: "password"
    pool-size: 10
    connection-timeout: 5000

self-hosted.enabled: true keeps the full history in your own database. The Ecstacy central database then keeps only a lightweight rolling window (max 100) for the dashboard. max-violations caps your local table. Oldest rows are dropped first.

Logging and updates

settings.yml
advanced:
  auto-update-checks: true
  log-violations: true
  max-log-size: 10_000
  clean-old-logs: false
  log-retention-days: 30

update:
  alert: true
  beta: false
Key Default Meaning
advanced.auto-update-checks true Pull check-configuration updates from the cloud
advanced.log-violations true Write violations to file
advanced.max-log-size 10_000 Log file cap
advanced.clean-old-logs false Prune old logs on startup
advanced.log-retention-days 30 Retention when pruning is on
update.alert true Staff alert when a new build is published
update.beta false Receive beta and canary builds before public release

GUI edit rate limit

The checks GUI can edit values in game. This limits how fast one player may do so.

settings.yml
checks-edit:
  rate-limit:
    max: 5
    window-seconds: 60

Local mitigation timings

These are local timing constants read by the mitigator once it is already active. Whether mitigation is enabled lives in checks.yml per family. See Checks overview.

settings.yml
mitigation:
  triggerbot:
    min-delay-ms: 150
  autopot:
    early-expiry-ms: 7000

Last updated