
No Feather Attack
A small Paper plugin that makes feather hits deal no damage, only applying light (configurable) knockback.
📖About 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
- Download/build the JAR for your server version (see Build section).
- Place the JAR into your server’s
plugins/folder. - Start the server. The plugin will create:
plugins/NoFeatherAttack/config.ymlplugins/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;
/featherhitonly 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
# 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).