BouncePads is a lightweight, performance-optimized Minecraft plugin that transforms any solid block into a configurable bounce/jump pad. When a player steps on a configured block, they are automatically launched into the air with customizable velocity, direction, sound effects, and particles.
Inspired by popular servers like CubeCraft, Hypixel, and Hive, the plugin brings smooth, lag-free bounce mechanics to your server. Perfect for FFA arenas, BedWars, SkyWars, parkour maps, lobbies, and any gamemode that needs launch pads.
``` Player steps on configured block (or pressure plate above it) │ ▼ Plugin detects the bounce block │ ▼ Checks: enabled? world allowed? permission? cooldown? │ ▼ Calculates velocity (vertical + horizontal + direction + multipliers) │ ▼ Applies velocity to player │ ▼ Plays sound effects and particle effects │ ▼ Applies fall damage protection │ ▼ Sets cooldown timer ```
Use Cases
| Server Type | How BouncePads Helps | |-------------|---------------------| | **FFA / PvP Arenas** | Strategic launch points around the map for quick traversal | | **BedWars / SkyWars** | Launch pads between islands with directional bouncing | | **Lobby Servers** | Fun bounce areas to guide players to different games | | **Parkour Maps** | Momentum-based bounce chains with varying heights | | **Hub / Spawn** | Directional pads pointing players toward attractions | | **Minigame Networks** | Configurable per-world launch systems |
---
Features Summary
Core Features ``` ✅ Turn any solid block into a bounce pad ✅ Per-block velocity configuration (vertical + horizontal) ✅ Three activation modes: Direct, Pressure Plate, Hybrid ✅ Different bounce strengths for different blocks ✅ Smooth velocity application without potion effects ✅ Works for all players server-wide ✅ Automatic fall damage protection after bouncing ✅ Per-block cooldown system ✅ Per-player toggle (on/off for bouncing, sounds, particles) ```
Directional Bouncing ``` ⬆️ VERTICAL_ONLY — Pure upward bounce (default) PLAYER_FACING — Launch in player's look direction ↗️ PLAYER_FACING_HORIZONTAL — Horizontal look direction + vertical FIXED_DIRECTION — Always launch toward configured compass direction AWAY_FROM_CENTER — Launch away from the block's center ```
Pressure Plate System ``` ✅ Supports all 15 pressure plate types in Minecraft ✅ Different velocity multipliers per plate type ✅ Weighted pressure plates give stronger bounces ✅ Restrict which plate types work on each block ✅ Player-only activation (excludes mobs and items) ```
Effects System ``` Custom sound effects per block (any Minecraft sound) Custom particle effects per block (any Minecraft particle) Particle trails while player is airborne Launch and landing particle effects Configurable volume and pitch per block Per-player sound/particle toggles ```
Preset System ``` 8 built-in presets ready to use Create unlimited custom presets from existing blocks Apply presets to any block instantly with one command Built-in presets protected from accidental deletion All presets saved persistently in presets.yml ```
GUI Management System ``` ️ Full inventory-based management GUI Paginated block list with click-to-edit ✏️ Interactive block editing with increase/decrease buttons Color-coded toggles and status indicators Statistics display within GUI Preset selection and application GUI ⚙️ Personal player settings GUI ✅ Confirmation dialogs for destructive actions Chat-based input for precise value entry ```
World Restrictions ``` DISABLED mode — bouncing works in all worlds WHITELIST mode — bouncing only in listed worlds BLACKLIST mode — bouncing everywhere except listed worlds Per-world activation mode overrides Per-world velocity multipliers ️ WorldGuard region-based restrictions ```
Performance Optimizations ``` ⚡ Optimized movement event handling with early exits Concurrent data structures for thread safety ⏱️ Debounce system prevents double-processing ️ Automatic expired cooldown cleanup Asynchronous data saving Configurable cache limits Minimal TPS impact even with 100+ concurrent players Efficient HashSet/HashMap lookups for O(1) block detection ```
Integrations ``` PlaceholderAPI — 10+ placeholders available ️ WorldGuard — Region-based bounce restrictions Vault — Economy support prepared for future features bStats — Anonymous usage metrics ```
Configuration ``` Every message customizable in messages.yml ⚙️ Every setting configurable in config.yml Block data stored separately in data/blocks.yml Presets stored separately in data/presets.yml Player data stored separately in data/players.yml Full color code support (& codes + hex &RRGGBB) Hot-reload without server restart via /bp reload ```
---
Installation Guide
Requirements
| Requirement | Details | |-------------|---------| | **Server Software** | Paper or Spigot (or any fork) | | **Minecraft Version** | 1.21 through 1.21.11 | | **Java Version** | Java 21 or higher | | **Disk Space** | Less than 1MB |
Optional Dependencies
| Plugin | Purpose | Required? | |--------|---------|-----------| | **PlaceholderAPI** | Display bounce stats in chat, scoreboard, etc. | No | | **WorldGuard** | Region-based bounce pad restrictions | No | | **Vault** | Economy integration (prepared for future) | No |
Step-by-Step Installation
**Step 1: Download the Plugin** ``` Download BouncePads-1.0.0.jar from the official download page ```
**Step 2: Install the JAR** ``` Place BouncePads-1.0.0.jar into your server's plugins/ folder
Server/ ├── plugins/ │ ├── BouncePads-1.0.0.jar ← Place here │ └── ... other plugins ├── server.jar └── ... ```
**Step 3: Start or Restart Your Server** ``` The plugin will generate its configuration files automatically:
plugins/BouncePads/ ├── config.yml ← Main configuration ├── messages.yml ← All messages └── data/ ├── blocks.yml ← Bounce block data ├── presets.yml ← Preset templates └── players.yml ← Player preferences and stats ```
**Step 4: Verify Installation** ``` Check console for startup message:
**Step 5: Configure and Add Blocks** ``` Use in-game commands to add bounce blocks: /bp add slime_block 1.5 /bp add emerald_block 3.0
Or edit config files and reload: /bp reload ```
Upgrading
``` 1. Stop your server (recommended) or use /bp reload after replacing 2. Replace the old JAR with the new version 3. Start your server 4. Check console for any migration messages 5. All data and configurations are preserved automatically ```
---
Quick Start Guide
Your First Bounce Pad (30 seconds)
```bash Step 1: Add a slime block as a bounce pad with velocity 1.5 /bp add slime_block 1.5
Step 2: Place a slime block anywhere in your world
Step 3: Step on it and bounce! ```
Setting Up Multiple Blocks with Different Powers
```bash Low bounce - for subtle movement /bp add honey_block 0.8
Medium bounce - standard jump pad /bp add slime_block 1.5
High bounce - significant height /bp add emerald_block 2.5
Super launch - extreme height /bp add diamond_block 4.0
Directional launch - forward momentum /bp add gold_block 2.0 /bp set gold_block direction player_facing /bp set gold_block horizontal 1.5 ```
The GUI provides: - Block List: View and edit all configured blocks - Presets: Browse and apply presets - Settings: Toggle your personal preferences - Statistics: View bounce statistics - Reload: Reload configuration ```
---
Activation Modes
Mode Overview
BouncePads supports three activation modes that determine how players trigger bounce pads. Each block can have its own mode, or you can set a global default.
| Mode | Trigger Method | Best For | |------|---------------|----------| | **DIRECT** | Step directly on the block | FFA, PvP arenas, fast response | | **PRESSURE_PLATE** | Step on pressure plate above block | BedWars, controlled activation | | **HYBRID** | Either method works | Flexible setups, mixed maps |
DIRECT Mode
``` Players bounce immediately when stepping on the configured block. No pressure plate needed. Fastest response time.
Player ↓ [Bounce Block] ← Player steps here, bounces immediately ```
**Setup:** ```bash /bp add slime_block 1.5 /bp set slime_block mode direct ```
PRESSURE_PLATE Mode
``` Requires a pressure plate placed on top of the bounce block. Players only bounce when the pressure plate is triggered.
Player ↓ [Pressure Plate] ← Player steps here [Bounce Block] ← This provides the bounce ```
| Command | Description | Permission | |---------|-------------|------------| | `/bp world mode <disabled/whitelist/blacklist>` | Set restriction mode | `bouncepad.world` | | `/bp world add <world>` | Add world to list | `bouncepad.world` | | `/bp world remove <world>` | Remove world from list | `bouncepad.world` | | `/bp world list` | Show world configuration | `bouncepad.world` |
**Examples:** ```bash Only allow bouncing in specific worlds /bp world mode whitelist /bp world add pvp_arena /bp world add bedwars_lobby
Block bouncing in specific worlds /bp world mode blacklist /bp world add creative_world
Show current configuration /bp world list ```
Preset Commands
| Command | Description | Permission | |---------|-------------|------------| | `/bp preset list` | List all presets | `bouncepad.preset` | | `/bp preset apply <block> <preset>` | Apply preset to block | `bouncepad.preset` | | `/bp preset save <name> <block>` | Save block as preset | `bouncepad.preset` | | `/bp preset delete <name>` | Delete custom preset | `bouncepad.preset` |
**Examples:** ```bash List all available presets /bp preset list
**LuckPerms — Give all players access to basic bouncing:** ```bash /lp group default permission set bouncepad.use true /lp group default permission set bouncepad.toggle true ```
**LuckPerms — VIP gets bypass cooldowns:** ```bash /lp group vip permission set bouncepad.bypass.cooldown true ```
**LuckPerms — Admin gets everything:** ```bash /lp group admin permission set bouncepad.* true ```
blocks.yml — Block Configuration
Each bounce block entry supports these settings:
PlaceholderAPI Support
Requirements - PlaceholderAPI plugin installed on your server - `integrations.placeholderapi.enabled: true` in config.yml (default)
Available Placeholders
| Placeholder | Description | Example Output | |-------------|-------------|---------------| | `%bouncepad_enabled%` | Player's bounce toggle | `true` | | `%bouncepad_sounds%` | Player's sound toggle | `true` | | `%bouncepad_particles%` | Player's particle toggle | `false` | | `%bouncepad_total_blocks%` | Total configured blocks | `5` | | `%bouncepad_total_bounces%` | Player's total bounces | `1234` | | `%bouncepad_server_bounces%` | Server-wide total bounces | `98765` | | `%bouncepad_cooldown%` | Current cooldown remaining | `2.5s` or `Ready` | | `%bouncepad_last_block%` | Last block bounced on | `SLIME_BLOCK` | | `%bouncepad_world_allowed%` | Current world allows bouncing | `true` | | `%bouncepad_mode%` | Global activation mode | `Direct` | | `%bouncepad_bounces_<material>%` | Bounces on specific block | `500` |
**Q: What versions does BouncePads support?** A: Paper and Spigot versions 1.21 through 1.21.11. All subversions are fully tested and supported.
**Q: Does it work with Folia?** A: The current version is designed for Paper/Spigot. Folia compatibility may be added in a future update.
**Q: Is there a block type limit?** A: No. You can configure as many different block types as bounce pads as you want.
**Q: Does it affect server performance?** A: BouncePads is heavily optimized. The movement event handler uses early-exit checks, debouncing, and caching. Most servers report zero measurable TPS change even with 100+ players.
**Q: Can I use any block as a bounce pad?** A: Any solid block can be used. Blocks like signs, banners, buttons, and pressure plates themselves cannot be bounce pads (pressure plates go ON TOP of bounce blocks).
Configuration Questions
**Q: Can I have different velocities for different worlds?** A: Yes. Use `world-restrictions.world-multipliers` in config.yml to set per-world velocity multipliers.
**Q: Can I make a block only work with specific pressure plates?** A: Yes. Set the `allowed-plates` list for that block in blocks.yml to restrict which plate types trigger it.
**Q: Can I have different activation modes in different worlds?** A: Yes. Use `world-restrictions.world-modes` in config.yml to override the global mode per world.
**Q: How do I change all messages?** A: Every single message is in messages.yml. Edit the file and run `/bp reload`.
Gameplay Questions
**Q: Do mobs trigger bounce pads?** A: In Pressure Plate mode with `player-only: true` (default), mobs cannot trigger bounces. In Direct mode, only player movement is checked.
**Q: Can players bypass cooldowns?** A: Players with `bouncepad.bypass.cooldown` permission skip all cooldowns.
**Q: Does the plugin use Jump Boost potion effect?** A: No. BouncePads applies direct velocity to the player, not potion effects. This is smoother and more controllable.
**Q: Can I disable fall damage from bounces?** A: Yes. Each block has a `fall-damage-protection` setting. When enabled, players won't take fall damage after bouncing for a configurable duration.
**Q: Can players disable bouncing for themselves?** A: Yes. Players can use `/bp toggle` to turn bouncing on/off for themselves without affecting other players.
Technical Questions
**Q: Can other plugins interact with BouncePads?** A: Yes. The plugin provides a complete public API with custom events. Other plugins can add/remove blocks, bounce players, listen to bounce events, and more.
**Q: How is data stored?** A: All data is stored in YAML files in the `plugins/BouncePads/data/` folder. No database required.
**Q: Can I reload without restarting?** A: Yes. Use `/bp reload` to reload all configuration files without server restart.
**Q: How do I reset everything?** A: Stop the server, delete the `plugins/BouncePads/` folder entirely, and restart. All default files will be regenerated.
---
Troubleshooting
Common Issues
Bounce pads not working
``` 1. Check if plugin is enabled: → Verify "general.enabled: true" in config.yml
2. Check world restrictions: → Run /bp debug to see if world is allowed → Check world-restrictions section in config.yml
3. Check block is configured: → Run /bp list to see all configured blocks → Run /bp info <block> for specific block
4. Check activation mode: → If mode is PRESSURE_PLATE, a plate must be on top → Run /bp debug to see current mode
5. Check permissions: → Player needs bouncepad.use (default: true) → Check if block has specific permission requirement
6. Check player toggle: → Player may have disabled bouncing: /bp toggle → Run /bp debug to check bouncing-enabled status ```
Players taking fall damage after bouncing
``` 1. Check fall damage protection is enabled: → /bp info <block> shows fall-damage setting → Enable: /bp set <block> falldamage true
2. Check protection duration: → Default is 5000ms (5 seconds) → Increase in config.yml: fall-damage.protection-duration
3. Check if cleared on teleport: → config.yml: fall-damage.clear-on-teleport ```
Sounds or particles not working
``` 1. Check global toggles: → config.yml: sounds.enabled and particles.enabled
2. Check per-block settings: → /bp info <block> shows sound and particle settings
3. Check player preferences: → Player may have toggled off: /bp toggle sounds
4. Check sound/particle names: → Must be valid Minecraft names → Case-insensitive, but UPPER_CASE recommended ```
GUI not opening
``` 1. Check GUI is enabled: → config.yml: gui.enabled: true
2. Check permission: → Player needs bouncepad.gui
3. Try command version instead: → /bp list, /bp info <block>, etc. ```
Config not reloading
``` 1. Check YAML syntax: → Use a YAML validator (yamllint.com) → Common issues: tabs instead of spaces, missing colons
2. Check console for errors: → Look for "Failed to reload" messages
3. Try regenerating: → Delete the problematic file → Run /bp reload to regenerate defaults ```
Debug Mode
Enable debug mode for verbose console output:
```yaml config.yml general: debug: true ```
Then check console for detailed logs about bounce detection, velocity calculations, permission checks, and more.
Performance Issues
``` If you experience TPS drops:
1. Increase movement threshold: performance.movement-threshold: 0.2 (default 0.1)
1. Enable debug mode and reproduce the issue 2. Copy the relevant console output 3. Note your server version and plugin version 4. List any other plugins that might conflict 5. Contact support (see below) ```
``` 1. Server software and version (e.g., Paper 1.21.1) 2. BouncePads version (e.g., 1.0.0) 3. Java version (e.g., Java 21) 4. Other plugins installed (plugin list) 5. Steps to reproduce the bug 6. Expected behavior vs actual behavior 7. Console errors (if any) 8. config.yml settings (relevant sections) ```
Performance Metrics
| Metric | Value | |--------|-------| | Event Processing | < 0.5ms per bounce | | Memory Footprint | < 5MB base | | TPS Impact | Negligible with 100+ players | | Startup Time | < 200ms | | JAR Size | ~150KB |