No Feather Attack
A small Paper plugin that makes feather hits deal no damage, only applying light (configurable) knockback.
No Feather Attack
No Feather Attack
[aka Feather Attack Cancel]
Feather hit is not an attack — a small Paper plugin that turns feather hits into knockback-only interactions. It cancels damage (so villagers don’t get angry and no damage side-effects fire) while still applying a light custom knockback.
Features
- Knockback-only feather hits: cancels the damage event and applies custom push. - Per-player toggle via command `/featherhit`. - Auto-enable on player join (and on plugin reload for already-online players). - Client language message support: `en_us`, `de_de`, `fr_fr`, `es_es`, `hu_hu`. - Builds for multiple MC versions via Maven profiles (1.21.7 and 1.21.8).
Requirements
- Java 21 (Paper 1.21+ requires Java 21). - PaperMC server 1.21.7 or 1.21.8 (matching the built JAR).
Installation
1. Download/build the JAR for your server version (see Build section). 2. Place the JAR into your server’s `plugins/` folder. 3. Start the server. The plugin will create: - `plugins/NoFeatherAttack/config.yml` - `plugins/NoFeatherAttack/lang/*.yml`
Commands
- `/featherhit` — Toggle feather knockback-only mode for yourself.
Permissions: none (by default all players can use the command).
Configuration
File: `plugins/NoFeatherAttack/config.yml` (use spaces only, no TABs)
Keys - trigger-item: Uppercase Bukkit material name for the item that triggers the knockback-only hit. Default: FEATHER
- knockback: - min-charge: Number (0.0–1.0). Minimum attack cooldown required to apply knockback. 1.0 = fully charged. Default: 0.9 - horizontal: Number. Base horizontal strength of the knockback vector. Default: 0.6 - min-upward: Number. Ensures at least this upward (Y) component so hits don’t push targets downward. Default: 0.35 - scale-by-charge: Boolean. If true, scales horizontal strength by the current attack charge (prevents weak spam from being as strong as full hits). Default: false - clamp-velocity: Boolean. If true, clamps the target’s final velocity magnitude to avoid “stacking” launches. Default: true - max-velocity: Number. Maximum final velocity magnitude when clamping is enabled. Default: 1.2
- behavior: - auto-enable-on-enable: Boolean. When the plugin enables (e.g., server start/reload), automatically enables the feature for players already online. Default: true - auto-enable-on-join: Boolean. Automatically enables the feature for players when they join. Default: true
Applying changes - There is no reload subcommand; `/featherhit` only toggles the feature for the executing player. - To apply config changes, restart the server (or stop/start).
Language files - Path: `plugins/NoFeatherAttack/lang/` - Fallback order: exact client tag (e.g., `de-de.yml`) → underscore form (e.g., `de_de.yml`) → `en_us.yml`. - Color codes: use `&` (e.g., `&6`, `&a`).
Examples ```yaml
Softer knockback that scales with charge
trigger-item: FEATHER knockback: min-charge: 0.9 horizontal: 0.45 min-upward: 0.30 scale-by-charge: true clamp-velocity: true max-velocity: 1.0 behavior: auto-enable-on-enable: true auto-enable-on-join: true ```
Notes on Namespaced Command Suggestions
If tab-complete shows a namespaced command like `/nofeatherattack:featherhit`, this comes from the plugin name namespace. On Paper, you can hide namespaced suggestions by setting `send-namespaced=false` in `paper-global.yml` (or relevant Paper config for your version).