Six bugs, one weekend
Building the server network went mostly to plan. "Mostly" is doing a lot of work in that sentence. Here's what broke, roughly in the order it bit us, and how each one got fixed. The short version of all of them: the error message is usually telling the truth, just not the whole truth.
1. "Click actions are disabled for this sign"
The lobby has signs you click to jump to a world. In testing, clicking them just showed that message in red.
The first culprit was spawn protection: the server stops regular players from interacting with blocks near spawn, and signs count. Turning that off for signs changed nothing, though. Same message.
The real cause was in the game itself. In this version of Minecraft, a sign only runs its click command if it carries a special permission flag, and signs placed by the server console don't get that flag by default. Digging through the game's code turned up the flag's name.
2. Spawning inside a wall
After rebuilding the lobby (more on that here), I logged in and saw nothing but darkness, with my health flickering down and back up. Minecraft puts you back exactly where you logged out, and that spot was now inside the new stone foundation. Claude had planned the rebuild around the new spawn point and missed that returning players don't use it.
3. PvP that wouldn't turn off
A friend got a chat message on the Peaceful world: "Now you can fight other players." Not ideal for a world called Peaceful. The server panel clearly said PvP was off.
It turns out this Minecraft version moved PvP from a server setting to a game rule, a per-world setting stored inside the world itself. The panel was still writing the old server setting, which the game now ignores, so the worlds kept the default, which is PvP on. The land-claims plugin had noticed PvP was on and was helpfully announcing it.
4. The backup that quietly refused to run
The first night of scheduled backups, one world's backup failed with "backup exceeds individual size limit." The limit was set to 14 MB. The world is about 5 GB.
That one was Claude's. I'd asked for the number of backups to keep to be set to 14, and Claude typed the 14 into the box next door: the maximum size of a single backup. Two boxes on the same row, easy to mix up, and exactly why "check the result, not just the action" is a habit worth having.
5. A friend's Xbox stuck on "Strict NAT"
Not a Minecraft bug, but it showed up the same week. A friend's Xbox on our network reported a Strict NAT type, which limits online play.
Claude's first theory was a naming mismatch in some router port rules, with a config change to match. It looked plausible, but before touching a production router I sent it back for a second look. The second pass found the real cause: stale state. The router was holding on to old automatic port mappings from earlier sessions and wouldn't hand out new ones cleanly. The "fix" from the first theory would have changed config and fixed nothing.
6. The Xbox Friends tab that works only at home
Xbox players join through the Friends tab. Inside my house that works perfectly. From outside, the console finds the server, starts connecting, and then gives up.
We tried a lot: fixed port ranges, extra port forwards, even switching connection methods. The logs eventually showed the hand-off was being dropped in the software itself, and the developer had already confirmed it as a known bug, with the fix coming alongside Minecraft's next update.
Bonus: whitelisting Bedrock players
Adding a Bedrock player to the whitelist by gamertag kept failing with "unable to find user." The lookup only knows players who have joined a Bedrock-enabled server before. The workaround is a little backwards: the player tries to join once and gets bounced, their account ID shows up in the server log, and we whitelist that ID. Now it's a two-minute routine.
Under the hood
- Signs: in this Minecraft version a sign's click commands only run if its block data has
allow_op_features:true. Found by reading the sign class in the server jar, since the docs hadn't caught up. A start-up function re-places the signs with the flag. - Spawn fix: a tick function sends players to spawn when they're new to the hall (a scoreboard tag) or arriving back in the lobby (the
leave_gamestatistic). - PvP: now the
pvpgame rule, stored per world, so it had to be set in the overworld, Nether and End separately. The panel's old server-properties setting is ignored. - Backups: the per-backup size limit was set back, the replacement policy changed to delete the oldest, nightly jobs switched to stop-copy-restart (a clean copy instead of a live one), and the regenerable map data excluded.
- Xbox NAT: stale UPnP mappings on the router. A planned reboot cleared them; no configuration was changed.
- Friends tab: a known bug in the current MCXboxBroadcast release where the hand-off to a NetherNet server fails from outside the local network. The developer confirmed it in the project's issue tracker.
- Bedrock whitelist: a Floodgate player's ID is derived from their Xbox user ID, so once you have that number, the ID can be whitelisted directly.