No Feather Attack
A small Paper plugin that makes feather hits deal no damage, only applying light (configurable) knockback.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
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).