# QoL-tweaks A quality-of-life SMP plugin for Paper/Folia. ## Features - **Join messages** — a "Welcome to the SMP" title on every join, friendly welcome messages (including a first-join message that lists the server's plugins and a warning that `/nopvp` abuse is bannable and that combat logging is a bad idea), and a special announcement when the owner logs in. - **`/nopvp`** — toggle no-PvP mode. While active you cannot damage other players and other players cannot damage you (direct hits and projectiles). While enabled you also glow so everyone can see you're protected. Turning no-PvP *off* starts a **1-hour cooldown** before you can enable it again, and the state persists across restarts so relogging can't bypass it. - **Anti-combat-logging** — whenever you hit another player or get hit by one, you're tagged as being in combat for **15 seconds** with a chat warning. Logging off while tagged kills you on the spot and announces it to the server. ## Commands | Command | Description | Permission | |----------|--------------------------------------------------------------------------|-----------------------| | `/nopvp` | Toggle no-PvP mode (damage immunity vs. players + player glow). | `qoltweaks.nopvp` | All permissions default to `true`. ## Data Player no-PvP state and cooldown timestamps are stored in `plugins/qol-tweaks/nopvp.yml` so they survive restarts and reloads. ## Compatibility - Built against the Paper API and marked `folia-supported: true`, so it runs on both Paper and Folia. Region-aware scheduling is used for persistence writes. - Java 25 toolchain. ## Building ```bash ./build.sh ``` This just runs `./gradlew build`, but if the pinned Java toolchain isn't installed it will automatically fall back to whatever JDK you do have (keeping the jar's bytecode compatible). You can also pass extra Gradle args, e.g. `./build.sh clean build`. The plugin jar is output to `build/libs/`. ## License See [LICENSE](LICENSE).