TDXPlugins
TDX VotePlusConfiguration

storage

SQLite vs MySQL, per-server isolation, MySQL credentials.

VotePlus ships with two storage backends. SQLite is the default and needs zero setup. MySQL is what you want if you're sharing data across multiple servers.

Choosing a backend

BackendWhen to use it
SQLiteSingle server. The file lives at plugins/TDXVotePlus/data.db.
MySQLMultiple servers sharing a database, or you want managed backups.

SQLite

plugins/TDXVotePlus/config.yml
general:
  storage: sqlite

That's the entire configuration. SQLite uses WAL mode for safe concurrent reads, and the database file is created automatically on first start.

MySQL

plugins/TDXVotePlus/config.yml
general:
  storage: mysql

mysql:
  host: "db.your-host.tld"
  port: 3306
  database: "tdx_voteplus"
  username: "tdx"
  password: "a-strong-password"
  use-ssl: true
  pool-size: 8
  server-id: "survival"

Reference

KeyTypeDefaultNotes
hoststringDNS name or IP of the MySQL host.
portint3306
databasestringMust already exist. Plugin creates its own tables on first connect.
usernamestringNeeds CREATE TABLE and full DML in the target database.
passwordstringTreat as a secret — see the warning below.
use-sslbooleantrueDisable only when connecting to localhost.
pool-sizeint8HikariCP max pool size. Bump on busy servers; lower if your DB host has a connection cap.
server-idstringdefaultPer-server isolation key — see below.

Treat mysql.password like a password. Restrict file permissions on config.yml so only the server process can read it, and rotate the credential if you suspect it's leaked.

Per-server isolation

If you run more than one game server against the same MySQL database and want each to keep its own independent player counters, streaks, milestones, and offline queue, set mysql.server-id to a unique identifier per server (e.g. survival, skyblock, prison).

plugins/TDXVotePlus/config.yml
mysql:
  server-id: "skyblock"

The global vote-party counter is intentionally still shared across every server, so a server-wide party fires in sync on your whole network. Player-scoped counters are not.

The Votifier topology you use (a single endpoint vs NuVotifier forwarding to each backend) directly affects how offline votes get rewarded across servers. Read the mysql.server-id comment in config.yml for the full explanation — it's the most important section to understand before going multi-server.