TeamKind

A Minecraft Bedrock server project: survival and mini-games on one instance, a shared account and economy across instances, and a heavily modified server core.

Period
August 2018 — December 2023
Status
Completed
My role
Founded the project in 2018 and ran the community for the first two years; development from 2020. As lead developer I owned the architecture, the core and the key systems. On specific questions I consulted a developer from another large Minecraft project, and some plugins and individual mechanics went to freelancers.
TeamKind banner: three modes — Survival, SkyWars and FastBuilders

Stack

  • PHP
  • PocketMine-MP
  • Guzzle
  • Slim
  • MySQL
  • SQLite
  • Redis
  • WebSocket
  • nginx
  • JavaScript

Problem

Before TeamKind I ran the community of a large Minecraft Bedrock Edition project. I could see which complaints kept coming back and what players were missing, but I had no way to act on any of it. I wanted a project where development follows that feedback, where paid privileges add options without turning into pay-to-win, and where survival, SkyWars and FastBuilders behave as one system rather than three separate products. The technical side did not come for free: on our configuration and core version plain survival started losing TPS at around 70–80 players, and the project had to hold several worlds and the mini-games at once. Abuse through crafted network packets was a problem of its own.

Solution

Players always come in through a lobby, which checks for a live session and sends them to their pinned instance, or a newcomer to the least loaded one. Each instance runs survival, SkyWars and FastBuilders together. Moving into a mini-game happens inside it: the inventory is saved, prepared for the mode and restored afterwards, and the player is never handed off to another server. Account, privileges, currency and cases are shared across instances, while homes, claims and anything else tied to a map stay local to it. To support this, I developed and reworked my own version of the server core, adapting it to handle high load, run several game modes and close vulnerabilities.

Architecture

TeamKind architectureThe lobby is the single way in: every player connects to it, the system checks the live session and sends them to the instance pinned to them, while a newcomer is assigned the least loaded one. An instance can be changed by hand. Account, privileges, currency and cases are shared across instances, while the map, homes and claims belong to one. Each instance runs survival, SkyWars and FastBuilders: moving between modes happens inside it, with the inventory saved and restored. An account may hold only one live session.inventory saved and restoredsharedto your pinned instance, or the least loaded if newLobby— 19132the single way in — every player connects herechecks the live session — an account may have only oneGame instance 1— 19133SurvivalSkyWarsFastBuildersMap-bound datathis instance’s map, homes and claimsGame instance 2— 19134the same set of modesits own map, its own homes and claimsShared across the projectaccount · privileges · currency · cases
The lobby is the single way in: every player connects to it, the system checks the live session and sends them to the instance pinned to them, while a newcomer is assigned the least loaded one. An instance can be changed by hand. Account, privileges, currency and cases are shared across instances, while the map, homes and claims belong to one. Each instance runs survival, SkyWars and FastBuilders: moving between modes happens inside it, with the inventory saved and restored. An account may hold only one live session.

Key technical decisions

  • A core fork of our own. Upstream PocketMine-MP was no longer officially maintained by then, and the base core did not cover what the project needed, so I reworked it substantially for the load, the stability and the game mechanics the project required.
  • Mini-games inside the survival instance rather than on separate servers: the inventory is saved and restored, there is no reconnect, and SkyWars never feels like a different product.
  • Account, privileges, currency and cases shared across instances while map-bound data stays local: what you bought works everywhere, but homes and claims stay bound to one map.
  • One account, one live session: it cannot be in play on two instances at once. Moving to another instance means ending the current one first.
  • Controlled restarts: before an update the server winds activity down properly instead of cutting players off mid-game.

The media below comes from the product itself, so interface text and any audio are in Russian.

A Minecraft Bedrock Edition server project that combined full survival with SkyWars and FastBuilders.

The core

Individual instances held 180+ players at once. The core was substantially reworked for the load the project carried.

TeamCore is a heavily modified fork of the server core, with substantial changes to performance, network security, world and chunk handling, and game logic. After that work the core held up better under load and matched what the project needed. Those changes made TeamKind one of the first Minecraft Bedrock Edition 1.1.X servers in the CIS to run full survival and SkyWars on one server, at a player count that was high for that core. It also allowed a long list of custom commands and mechanics to be added without losing stability. One stable version of this core is available here.

TeamCore logo
The logo of the project’s own core fork, TeamCore.

Overview

A short tour of the modes, the main mechanics and how the server is put together, enough to see the scale at once. The high-quality original is lost.

Account and authentication

Players used a single account across all of the project’s servers. Passwords were first hashed with SHA-512, using a per-password salt and an additional server-side secret that was never stored in the database. After several months that scheme was replaced with bcrypt, which is slow by design and so better suited to passwords. Once a player signed in, the session was kept, so moving between servers didn’t mean entering the password again.

Active session check
The single-session rule in action: the player is already on another instance, and the message names the port where that session is open.

The donation store and payments

The donation store was tied into the project’s shared account system: the buyer entered their in-game nickname, the store checked for a registered account with that name and linked the purchase to it. Payments went through integrations with several external payment providers, covering bank cards, e-wallets and other methods. Items, currency and privileges were tied to the account rather than to a server, so they worked on any server and in any mode. The store had product categories and order tracking.

The donation store: a purchase is tied to the project-wide account, so it works on every server rather than only the one it was made on.

Paying was never meant to give anyone an edge over other players or a way to harm them. That is why, for example, items and resources could not be carried from creative into survival, alongside other limits that kept a balance between paid and free features.

Where the paid tiers stop: what a privilege grants, and what it deliberately does not, so that paying never turns into an advantage in a fight.

Bonus questions

Bonus questions tied the game to the project’s VKontakte group. The question, its posting time and the reward were set on the server, and five minutes before the start the server automatically created a scheduled post with the question in the group. Players answered with /bonus on any server; the server checked the time and the answer and paid out if both were right.

Bonus questions
The bonus question: the task is posted to the community, the player answers in game with /bonus, and a correct answer pays out. The question, its window and the reward are configured on the server.

Controlled restarts

Before an update, the server wound down running processes and mini-games properly, handed players their rewards and paused the related game scenarios. The restart only began once players had been warned and their current actions had finished, to avoid losing data.

Controlled restarts
A restart warns the players, lets the mini-games finish and pays out their rewards before the server goes down for the update.

Moderation

Moderators had tools for different kinds of rule-breaking: bans, temporary restrictions, disabling individual features and removing a player from the server. Moderator permissions were configurable.

Moderation
A ban as both the player and the server see it: who issued it, why, and how long is left. The same notice goes to the public chat.

Trading

Players bought and sold items to each other through built-in trading. The mechanics closed off the usual scams from both the seller’s and the buyer’s side. Particularly valuable items could not be listed at all, and the server took a 10% commission on each trade.

A trade between players: the shop of what is on offer, the 10% fee, and a flow that closes the usual scams on both sides. Particularly valuable items cannot be listed at all.

Game mechanics

Levels

Levels went up with time actually spent playing; idling did not count. They earned in-game currency, magic cases, privileges and access to particular features. Some of those rewards overlapped with paid privileges and bonuses, so active players earned them for free; a player who already held a higher privilege got currency instead of a duplicate.

The level system: levels come from time actually spent playing. Idling does not count towards them.

FastBuilders

A mode for practising speed building: platforms were generated automatically, and the result was recorded and rewarded. Survival features stayed available as long as they didn’t get in the way of the drill.

FastBuilders: a speed-building drill. The platforms are generated automatically, the result is recorded, and the reward follows from it.

Magic drops

Rare and valuable items appeared from time to time in designated areas of the spawn.

The magic drop: rare items appear from time to time in set spots on spawn. The mechanic pulls players into the same place at the same time.

Vanish

Unlike the standard effect, vanish removed not just the character model but every other sign of presence: effect particles, footstep sounds, visible armour and interaction prompts. The /vanish list command showed moderators everyone currently vanished.

Vanish: the player disappears completely, not just the model but every trace that would give them away.

Other mechanics

The video shows a random task system with rewards and a disguise feature that let players change their nickname, prefix and skin in game.

A few more systems built over the years: small ones, but the kind that show up in everyday play.

Results

  • A single instance held 180+ players at once.
  • Survival, SkyWars and FastBuilders all ran inside one instance, without moving the player to another server.
  • Account, privileges, currency and cases stayed shared across instances.
  • The reworked core removed the original performance limit: before that, the configuration in use started losing TPS at just 70–80 players.

Metrics

players online on a single instance
180+

Facts

  • The project's most active player, Wauder, spent 1,339.3 hours in game over TeamKind's final year; second was Said_123 with 797.5 hours.
  • One stable build of the project’s own core fork, TeamCore, is still public on GitHub.