Protections
Clean-up passes
Strip debug information and tidy up the jar.
These settings remove information from your jar that your program doesn't need to run, but that makes it much easier to read when decompiled.
Remove line numbers
Turns off protection.removeLines. Strips the line-number information that maps compiled code back to your original source lines. Without it, a decompiler can't point to "line 42" anymore.
Remove local variable names
Setting: protection.removeLocals. Strips the original names of local variables, so a decompiler falls back to generic names like var1, var2 instead of your original, meaningful ones.
Number protection
Setting: protection.numberObfuscation. Rewrites numeric constants in your code so they aren't sitting in the file as plain, readable numbers.
Tip
These three are cheap to turn on — low risk, low performance cost — and are a good default for every build.