Features
Rename, AES, long paths, BuiltByBit placeholders, watermarks, tamper alerts. Runs on the Veyl worker.
Veyl runs a pipeline on the uploaded JAR. Typical order:
Rename
Map class / method / field names (honoring keeps and public-API expansion). Styles include letters, dictionaries, and I/l maze (style: "ill").
Optional longPaths: deep packages + very long .class entry names (any naming style). Many Windows unzip tools fail with “filename too long” on an extracted classes.zip.
AES strings
Encrypt string constants into an AES-GCM vault with split keys.
aesKeepBuiltByBit (default on): leaves BuiltByBit anti-piracy placeholders such as %%__USER__%% / %%__NONCE__%% in plaintext so the marketplace can inject buyer data after download. See BuiltByBit wiki. Integrity / tamper checks must allow those post-download edits.
Hidden numbers
Hide numeric literals so decompilers cannot constant-fold them.
Hidden calls
Obfuscate invoke sites via MethodHandle gates.
Control flow
Flatten eligible methods into a while/switch state machine (try/catch / synchronized skipped in v1).
Watermark (dashboard / settings)
Embed a unique token (dead fields, logs, ASCII, META-INF resources). Use one mark per release for marketplace JARs; label e.g. v1.4.2 · BuiltByBit.
Tamper alert
Optional soft presence ping from plugin onEnable / onLoad to the Veyl API. Discord webhook (Account settings) gets an embed with security score, JAR, server IP, and a dashboard link. Best-effort — not unbreakable DRM.
Verify
Bytecode check before the protected JAR is returned.
Enable core passes in Gradle/Maven (aesStrings, hiddenNumbers, …). Long paths, BuiltByBit placeholder keep, tamper alert, and naming style (ill, …) are available via the dashboard or CLI veyl obfuscate --settings JSON today.
Paper / Bukkit tips
Always keep the main class from plugin.yml / paper-plugin.yml. Soft-depend APIs often need extra keeps. Use veyl recommend.
After obfuscation, smoke-test on a real Paper server (enable + a feature command).
Account gate
Obfuscation runs on the Veyl worker. veyl login is required so builds are tied to your account.