Configuration
Everything is in plugins/eDupeFix/config.yml, explained in place. /edf reload applies it, except database
(restart).
The parts that matter most
tracking: which items get an id. Only items that don’t stack can have one. materials takes patterns:
"NETHERITE_*", "*SHULKER_BOX". With all-unstackable: true every unstackable item is followed (more history,
more rows in the database).
ledger.materials: the stackable items that are counted, each with a medium and a high limit: how many
unexplained ones, in window-minutes, before staff hear about it (medium) or they’re confiscated (high). Put here
what’s worth money on your server.
ledger.trusted-commands and ledger.trusted-menus: what gives items legitimately on your server. A
player who gains spawners right after /kit or inside your “Shop” menu is fine. Gains inside menus that aren’t
trusted are still alerts, and the alert names the menu: that’s how a GUI dupe shows up. Console commands that name
a player (crates, votes, many shops) are trusted on their own.
actions: what each severity does: confiscate, staff, discord. run-commands: console commands per
severity, with %player%, %uuid%, %item%, %id%, %amount%, %severity%, %kind%, %alert%. Be careful with automatic
punishments: the player who received a duped item isn’t always the one who duped it.
retention: how long history is kept (30 days) and how long an item nobody sees is remembered (180 days).
Messages
language: en or es reads lang/en.yml or lang/es.yml. They’re MiniMessage, so colors, hover and click work.
To write your own, copy one to lang/xx.yml, translate it and set language: xx; anything you leave out comes from
English. {n} (alert number) and {id} (item id) also work inside click commands.
Every option
| Option | Default | What it does |
|---|---|---|
license-key | "" | Only for a key you got another way. A BuiltByBit download already has yours inside the jar |
language | en | en, es or your own file in lang/ |
server-name | survival | Written into every place an item was seen. On a network, a different one per server |
database.type | sqlite | sqlite, mysql or mariadb. Needs a restart |
database.file | edupefix.db | The SQLite file, in plugins/eDupeFix/ |
database.host, port, name, user, password | localhost, 3306, edupefix, root, "" | MySQL/MariaDB connection |
database.params | "" | Extra JDBC parameters, e.g. useSSL=false |
database.table-prefix | edf_ | In front of every table name |
database.pool-size | 5 | Connections kept open |
tracking.all-unstackable | false | Give an id to every item that doesn’t stack |
tracking.enchanted, tracking.renamed | true | Also enchanted and renamed items |
tracking.materials | netherite, diamond, shulkers, bundles, elytra, trident, mace, totem, enchanted book | Which items get an id. * matches anything |
tracking.exclude | [] | Never these, same patterns |
tracking.template-after | 4 | Clones of one id before it’s taken for a kit or shop template |
ledger.enabled | true | The book of accounts for stackable items |
ledger.window-minutes | 10 | How long unexplained gains add up |
ledger.scan-seconds | 60 | How often each player is counted, besides every inventory close |
ledger.containers | true | Count containers too (chunk, piston and rollback dupes) |
ledger.materials | spawner, beacon, nether star, netherite, debris, diamond and emerald blocks, god apple | MATERIAL: {medium: n, high: n} |
ledger.trusted-commands | kit, kits, shop, buy, crate, crates, claim, vote, rewards | What a player gains right after one is explained |
ledger.trusted-menus | [] | Menu titles (or part of them) that give items |
ledger.trusted-menu-plugins | AuctionHouse, CrazyAuctions | Every menu of these plugins is trusted |
actions.<SEVERITY> | see below | Any of confiscate, staff, discord |
run-commands.<SEVERITY> | [] | Console commands run on an alert |
discord.webhook | "" | The webhook URL. Empty: nothing goes to Discord |
discord.mention | "" | Pinged on alerts, e.g. "<@&123456789012345678>" |
discord.mention-from | CRITICAL | The lowest severity that pings |
retention.history-days | 30 | Item history older than this is deleted |
retention.items-days | 180 | Items nobody has seen for this long are forgotten |
The default actions:
actions:
CRITICAL: [confiscate, staff, discord]
HIGH: [confiscate, staff, discord]
MEDIUM: [staff, discord]
LOW: []Your own limits for the book of accounts, e.g. on a server where spawners are sold in a shop:
ledger:
materials:
SPAWNER: {medium: 4, high: 16}
BEACON: {medium: 2, high: 6}
trusted-menus: ["Spawner Shop"]