HomeJavaModsZBedRockBlock
ZBedRockBlock
ModsJava

ZBedRockBlock

Block Bedrock players from joining your Paper backend server using name-prefix detection.

⬇ Download on HangarOpen in MCModsHubGet it on Google Play →
# 🌐 ZBedRockBlock Blocks **Bedrock** players (identified by a **name prefix**) from joining a **backend Paper** server behind Velocity. No Floodgate hooks; purely name-prefix based. Built for **Paper 1.21.x** on **Java 21**. ## What it does (and doesn’t) do - ✅ **Blocks** players whose Java username **starts with** the configured prefix (case-insensitive). - ✅ **Kick reason** supports **MiniMessage** (e.g., `…`) **and** legacy `&` color codes. - ✅ **Bypass** permission for exceptions (trusted players, staff alts, etc). - ✅ **Admin commands** for reload and test. - ❌ Doesn’t talk to Floodgate/Geyser APIs or Mojang auth; it’s lightweight and proxy-agnostic. - ❌ Doesn’t manage your queue; if you use a queue plugin (e.g., ajQueue), configure it to **remove** players on this kick reason. --- ## Requirements - Paper (1.21+) - Java 21+ --- ## Optional dependencies - LuckPerms (or any permissions plugin) --- ## Installation 1. Place the JAR into the backend server’s `plugins/` folder. 2. Start the server once to generate `plugins/ZBedRockBlock/config.yml`. 3. Edit `config.yml` (see below), then `/zbedrockblock reload`. > **Backend requirements:** > - Server is **behind Velocity** and typically **offline mode**. > - Make sure Paper is proxy-aware (standard Velocity modern forwarding setup). --- ## Configuration (`config.yml`) ```yaml enabled: true # Ops are *not* automatically exempt; they must have the bypass permission. ignore-ops: true # Single, exact prefix (case-insensitive). Example: "." or "bedrock_" bedrock-prefix: "." # Kick message supports MiniMessage and legacy & codes. kick-message: "Bedrock accounts aren’t allowed on this server." # Logs match decisions to console if true. debug: false messages: reload-success: "&aZBedRockBlock config reloaded." no-permission: "&cYou don't have permission." usage-test: "&cUsage: /zbedrockblock test " test-header: "&7Kick preview (as seen by player/proxy):" test-allowed: "&eTest for &f%name%&e: &aALLOWED" test-blocked: "&eTest for &f%name%&e: &cBLOCKED (would be kicked)" ``` ### Tips - **Choosing the prefix:** Use the same prefix your Bedrock players receive on Java (e.g., `"."`, `"BD_"`, or `"bedrock_"`). - **MiniMessage example:** `kick-message: "No Bedrock accounts on this server."` - **Legacy example:** `kick-message: "&c&lNo Bedrock accounts on this server."` > **YAML gotcha:** Keep MiniMessage tags **inside** the quotes. > ✅ `"text"` > ❌ `"text"` --- ## Commands | Command | Description | Permission | |---|---|---| | `/zbedrockblock reload` | Reloads the plugin configuration | `zbedrockblock.admin` | | `/zbedrockblock test ` | Shows whether a name would be blocked; previews the kick message | `zbedrockblock.admin` | **Tab-completion** is included. --- ## Permissions | Node | Who should get it | Effect | |---|---|---| | `zbedrockblock.admin` | Admins/staff | Access to `/zbedrockblock reload` and `/zbedrockblock test` | | `zbedrockblock.bypass` | Specific players | Allows joining even if their name matches the Bedrock prefix | > To **whitelist** a specific Bedrock player, grant them `zbedrockblock.bypass`. --- ## ajQueue / Queue plugin note (important) If you use **ajQueue** (or similar), make sure it **removes** players from the queue when they’re kicked by this backend. A simple way is to include a keyword in your kick message (e.g., “Bedrock”) and configure ajQueue’s “kick reasons” list to **match** that word. ajQueue will then pop them out of the queue instead of looping them. Example approach: - Keep the default kick message (`"Bedrock …"`) or any message containing a consistent keyword. - Add that keyword to your queue plugin’s configuration where it looks for **contains** matches in backend kick messages. --- ## Compatibility - **Server:** Paper **1.21.x** (including 1.21.10) - **Java:** 21 - **Proxy:** Works fine behind Velocity. No Velocity/Waterfall helper plugin required. - **Other plugins:** Plays nicely with virtually everything; it only reads config and listens for `PlayerLoginEvent`. --- ## Common scenarios **Block all Bedrock users across one backend:** ```yaml bedrock-prefix: "." kick-message: "No Bedrock accounts on this server." ``` **Allow a specific Bedrock user (staff alt):** - Grant them `zbedrockblock.bypass` via your permissions plugin. **Temporarily disable the plugin without removing it:** ```yaml enabled: false ``` Then `/zbedrockblock reload`. --- ## Troubleshooting - **YAML error on reload:** Most often a quoting issue in `kick-message`. Keep the entire message in quotes if you use `` or `&` codes. - **Players looping in queue:** The queue plugin isn’t configured to drop them on this kick reason. Add a **keyword** from your kick message to the queue plugin’s “kick reasons” list (or equivalent). - **“429” Mojang warnings on startup:** That’s Mojang rate-limiting for **profile lookups** (skins), usually triggered by skins/heads/cosmetics/tablist plugins—not this plugin. Consider enabling caches or disabling startup fetches in those plugins. - **Ops getting blocked:** This is by design. If you want ops exempt, either set `ignore-ops: false` (lets ops in even if they match) or grant ops `zbedrockblock.bypass`. --- ## Uninstall 1. Remove the JAR from `plugins/`. 2. (Optional) Delete `plugins/ZBedRockBlock/` if you don’t need the config anymore. 3. Restart the server. --- ## 🧑‍💻 Author - **Zenologia** - [GitHub Repository](https://github.com/Zenologia/ZBedRockBlock) - [License](https://github.com/Zenologia/ZBedRockBlock/blob/main/LICENSE)

ZBedRockBlock is a free Minecraft Java mod. Compatible with Minecraft 1.21, 1.21.1, 1.21.10, 1.21.11 and newer. Downloaded 1 times (via Hangar). Download it and open it directly in the game.

Explore more