home..

Network Levelling

Minecraft Spigot Minigames DBMS

This is a technical post regarding Network Levelling, and the tools I used to design a rigorous plugin for Minecraft networks.

The Design

I find it quite important to start any large project with some form of design documentation so that there’s a centralized, and highly specialized location of ideas, and sharing the documentation with others developers (if you work on a team).

If I have some form of control with design then I tend to go with mind maps for clarity. This is the approach I used within contract positions, and during freelance development.

Below will contain the features, followed by an example design documentation.

Linear Levelling Progression

Exponential Levelling Progression

Polynomial Levelling Progression

Boosters

Discord Integreation

Notifiers for Best Player Experience

Psychology Utilization

Customization

Now the features are transparent, I spent time creating a design doc.

It’s important to encapsulate all the features, as well as any additional ideas you can think of, let yourself be creative. Here’s an image of the documentation:

The Map Anatomy

At first glance it may be difficult to understand the map, so I’ll break it down:

/**
 * This class represents a network statistic.
 */
public abstract class NetworkStatistic {

	protected static final List<String> availableStats = new ArrayList<>();

	protected int value;
	protected String name;
	protected String type;
	protected UUID player;
}
public class Booster<T extends NetworkStatistic> {

	private final String boosterName;
	private final UUID playerUUID;
	private final T statistic;
}

Notice how I didn’t use a raw type of NetworkStatistic, this was peril not to do. Having a generic type of NetworkStatistic allow us to instantiate boosting for different types of network statistics, which also helps to be proactive for any future additions of network statistics, and this was the basis for how I started the project.

Player Psychology

It’s important to me that the systems I create, are as fun, intuitive, and enjoyable as possible for players. I think of players as customers, and so understanding your target audience is very important.

Here are the steps I took to create an engaging system:

Discord Integration

This was simply achieved through a HTTPS connection to the url of a discord channel. All the functionality to post was customizable for admins (thumbnails, footers, content, titles, rgb support, and more).

URL url = new URL(this.url);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

Conclusion

You can find a link to my repository, containing fully documented code of a basic implementation, similar to how I’ve incorporated network levelling for servers in the past View Repo

© 2026 qbb84