A Paper plugin that lets you “capture mobs into a Pokéball” and release them via right-click or a physics-based throw. It preserves entity NBT as much as possible and simulates more realistic projectile behavior (gravity / bounces / rolling / lifetime).
- Runtime: Paper 26.1.2+, Java 25
- Required dependencies: PacketEvents, NBTAPI (Item-NBT-API plugin)
- License: MIT (LICENSE)
- Capture & release with compressed NBT storage (GZIP + Base64) and necessary sanitization to reduce size risks
- THROW mode: behaves like a real projectile; only captures on collision; can bounce/roll on ground; auto-recovers on timeout
- Pokéball item supports custom player-head texture and configurable name/lore/glow/custom-model-data
- Lore enrichment for common mobs (villager profession/level, sheep color, cat variant, wolf collar/tamed, etc.)
- Protection-friendly: optional “build permission” checks for capture/release to prevent abuse in protected areas
- Persistent local logs with time-range queries (CO-like time filtering)
- Install dependencies: PacketEvents, NBTAPI (Item-NBT-API plugin)
- Put CaptureSpawn into
plugins/and start the server once to generate config - Edit
plugins/CaptureSpawn/config.yml
Default interaction mode is THROW (can be switched back to DIRECT in config).
/capturespawn reloadreload config and listeners/capturespawn log <player|me> <from> [to] [release|capture|all] [limit]- Time examples:
10m1h2d1w1h30m - Examples:
/capturespawn log me 10m all 50/capturespawn log steve 3d 1d release 100
- Time examples:
capturespawn.capturecapture permissioncapturespawn.releaserelease permissioncapturespawn.bypass.blacklistbypass capture blacklistcapturespawn.craftcraft permission (optional)capturespawn.reloadreload permission (default: OP)capturespawn.loglog query permission (default: OP)
plugins/CaptureSpawn/config.yml (high-level)
interaction-mode: THROW | DIRECTthrow.physics.*: air drag / bounce restitution / friction / max bounces / min-speed thresholdstorage.nbt-format: GZIP_BASE64+storage.max-bytes: control payload sizeprotection.capture-requires-build / protection.release-requires-build: build-based checksprotection.residence.*: optional Residence checks- Built-in flags:
capture-build-flags/release-build-flagsetc. (e.g.build,use) - Custom flags:
protection.residence.custom.capture-flag/release-flag(auto-registered on startup) require-installed: force Residence-only behavior when Residence is present/required
- Built-in flags:
logging.*: local log enablement, filename pattern, flush interval, queue limit
Logs are written daily by default:
plugins/CaptureSpawn/logs/ball-YYYY-MM-DD.log
The log format is TSV (one record per line) and includes timestamp, player, action, entity type, world/coords, result, etc.
- Dependencies:
- PacketEvents (used for THROW mode packet-based triggering)
- NBTAPI (Item-NBT-API plugin for reading/writing entity NBT)
./gradlew buildArtifacts are located in build/libs/.