Features - CryptoMorin/KingdomsX GitHub Wiki

Kingdoms aims to provide a lot of more core features than other plugins such as Factions and Towny and in a more customizable way. Kingdoms is mostly for PvP servers, but you can still enjoy the plugin core features without the PvP mechanics. Although the most fun comes from the PvP part.

Below is a brief list of the plugin's main features. This is just an overview of the main features, for specific details please refer to the main section for that specific topic in the wiki.

Note that not all features are available for older server versions. Kingdoms is developed to make the most use of latest Minecraft features. If technically possible and convenient, such features are added for outdated server versions as well.

Multiple database support

Kingdoms supports a variety of different popular databases such as JSON, YAML (these two are not considered proper "databases"), SQLite, H2, MySQL, MariaDB, PostgreSQL and MongoDB.

It defines different settings to configure the optimal connection for your server in different environments. It also supports external database backup dumping if your server allows that. It takes advantage of the most optimal data types for increased performance and efficient usage of the database space.

Kingdoms is mostly known for its PvP features such as the invasion and turrets system. Invading a kingdom is a way to get another kingdom's land. Members of the kingdom need to strategize while invading another kingdom and prepare their base properly. These strategies are made easier using champions, turrets and structures.

Turrets are stationary blocks that protect your kingdom against invaders. These turrets also work on mobs.
They have levels and ammos, their behavior can be changed via kingdoms relation settings and Regulator structures. You can even add your own turrets with different settings and GUIs.

Structures are stationary blocks that can do different functions from protecting your lands to producing resource points and shops.

This is one of the best core features of Kingdoms. The help pages for the /k help command is interactive in chat. These pages are designed based on Googles page layout.
Interactive means you can hover over messages to show a lore, just like items in your inventory.

The kingdoms map is also interactive, meaning you don't have to use complicated symbols to show different things on the map. Just hovering on an element will tell you the information. You can even claim a land from interacting with the map! Map sizes can also be changed per player with a limit.

Update Checkers

Kingdoms has an async update checker. Updating the plugin is quite easy and new options for language files will be automatically added.
Other config options that are missing from the config will use the default values to prevent errors.

Auto Config Updater

Kingdoms is the first Minecraft plugin that automatically updates configs while keeping comments reliably.
This also tries to keep the original format of the values given to options:

# It distinguishes between these and keeps their format
option: hello
option: 'hello'
option: "Hello"

But this is not always the case.

The only downside of this feature is that it does not keep the comments that you added yourself because it simply doesn't know whether the comments you added yourself were removed as a result of being obsolete from the previous version or if you wanted to keep it here.

This system will not change GUIs at all, because GUIs are completely customizable. The plugin can't know whether a new option that was added in a new update was removed by you manually or not. Or whether an existing option was changed by you manually or not.
Default and up to date GUI configs can be found here. You should make your own changes where necessary.

This also has a config migration system where various tasks are performed on different configs depending on your last updated version. For technical reasons, if you should know, not having a globals.yml file will make the plugin consider your Kingdoms setup as a "fresh" setup and will not perform any config migration tasks. Sometimes config migrations can be as extreme as deleting an entire config file or as simple as relocating an option or setting it back to its default value.

The auto config updater will not try to update options that had their meaning/format changed in newer versions.

# For example if older versions supported math equations with % around them:
option: "100 * %level%"

# It'll not update that option to the new default one:
option: "100 * level"
# which will make the plugin panic and throw errors.

The option to enable this feature can be found in config.yml -> updates -> configs

Plugin GUIs are 100% customizable with conditional JavaScript support which almost no plugin has.
GUI types, slot, sounds, messages, interactable slots, advanced item properties and etc... can be changed for each GUI.

When changing lands and claiming the plugin uses fake blocks to show the chunk borders. How blocks are shown for each kingdom relation and their design can be changed via the config.
There is also an option to disable this or make it permanent for per player.

Land Restoration

The plugin can store a chunk's information inside a very compact file in order to restore that chunk once it has been unclaimed. The chunk snapshot is taken once a chunk is claimed, and restored and deleted once it has been unclaimed. The restoration process is divided between chunks in an interval to prevent server lag.

Backups

The plugin automatically takes a backup every day and saves them to the Backups folder inside Kingdoms folder.
Don't worry if your host doesn't allow automatic backups, the plugin automatically deletes old backups after a few weeks.
All the backup settings can be changed from the config.

The plugin will automatically reload when you change something in the config. Almost every option in the plugin, including messages, GUIs and other main configs support this method. However a few complicated options cannot be reloaded this way.
This is the most stable and convenient way of reloading options.

Nations are another big aspect of Kingdoms that grant special powers to kingdoms that are in a nation.
Once you enter a nation the plugin will get a little more complicated to understand.

Players can fly in their land and in an ally's land (depending on their relation settings)
This also has a check for nearby enemies to be automatically disabled.

Advanced Commands & Permissions

Kingdoms uses the new advanced command auto completion features to make it easier for players to understand what they should be typing.
Most of the permissions (mostly commands) follow a specific pattern so you can even use them without looking at the wiki. There are also commands to test certain things before using them in the config option.

Chat Channels & Join Messages

Chat channels for global, kingdom and ally. Chat formats support hover messages and DiscordSRV.
There are many conditioned formats for kingdoms such as whether the player has a kingdom/nation or not.

The same for join and leave messages. These are to show different messages for kingdoms that are in the same kingdom.

By default the plugin also disables Minecraft chat reporting, however if you wanted a more advanced plugin that specializes in this exact topic, you should check out AntiPopup plugin.

Kingdoms is extremely customizable in different aspects, allowing server owners to make unique mechanics and provide plugin developers with an easy API to implement their own features.
The plugin even provides different ways to make it easier for server owners to use these features.

Custom Ranks & Relations

You can make your own ranks in your kingdom and nations! Edit their node, name, color, symbol and etc... for every rank.
Custom relation attributes can be changed via your nexus settings.

Nexus Settings

Kingdoms nexus is the perfect center for changing your kingdom settings. A lot of things can be done from this GUI.

  • Kingdoms Shields
  • Pacifism Mode
  • Relation Attributes
  • Taxes

Kingdoms and nations support taxes from Vault. You can also make your own tax equation for your kingdom and nation.
There is also a rank permission for excluding people from paying taxes!

A way to protect your containers using signs. This is basically similar to LockettePro plugin but specially made for kingdoms with more powerful tools.
You can quick lock chests and use various codes to protect a chest, just choose one that's easier for you!

It also has the ability to change players and kingdoms who can access the chest, doesn't matter if they're in your kingdom or not. You can also use different [everyone] tags to give chest access to everyone in your kingdom or outside of your kingdom.

Similar to KoTH (King of The Hill) plugins, but specifically made for kingdoms with extra features.

The plugin attempts to provide the best options for popular plugins such as LuckPerms and Dynmap.
Especially Dynmap that has a very powerful config to customize your server. Kingdoms can choose their own flag and kingdom color.

Compilers

Kingdoms is the first Minecraft plugin that runs on "compilers". This means that it has built-in systems that validate and optimize configuration settings during server startup. This has two significant advantages.

When settings are validated during server startup, it'll warn you in the console if settings are using an invalid value or even fail to load the plugin completely for crucial options. This helps server owners to identify most issues before players encounter them. Some of these validations are strict and server owners might not like them. This validation can sometimes even help owners and give them hints on how they can solve the problem.

Validating settings during server startup allows the plugin to heavily optimize options being used. For example turrets use math equations for most of their options. If the equation is parsed by the plugin every time, it can slow down things a lot.

Others

Kingdoms plugin is heavily optimized and provides different options to adjust its behavior for big servers.
It has a really easy and well-documented API to use that everyone with basic Java knowledge can use most of its features.
For support refer to this section.

Easter Eggs

The plugin contains some very rare easter eggs. There are some that only people with access to the config files can figure out, others are accessible by all players. These easter eggs aren't documented, but they're not harmful in any way, but of course some of them can restrict the way players interact with certain features in-game, but they're extremely insignificant.

Feature Cycles

Kingdoms suggestions are added to the plugin in a specific order. Most suggestions are discussed and accepted in the discord server, but these features will not be added gradually to the plugin.

Once there are no bug reports (even minor bugs, unless they're extremely insignificant like a simple grammar issue) left for at least a week, the feature update cycle will be started. During this cycle, all suggestions will be implemented which usually takes up to a month.

Caution

During feature cycles, no bugs will be fixed (even major ones) until the first alpha/beta version is out. No bugs will be fixed at all for the latest stable version. This is why there is a long delay for bug reports before feature cycles start. All users are warned in the discord server about when feature cycles start.

Bugs are mostly fixed weekly outside of feature cycles unless they're major bugs (in which case a hotfix is usually released).\

Caution

For the stability of alpha/beta versions refer to stability section.

Disadvantages

There are disadvantages compared to other factions plugins:

Kingdoms is by no means a "simple" plugin if you decide to change things. You might think this contradicts the "Plug & Play" statement, but it's applicable to people who are fine with how things work by default. Running a server by itself is by no means an easy task, and Kingdom's isn't just a plugin. You can think of it as an installer with 10000 Next buttons.

Since there are many many features in the plugin, and the plugin's internals are being improved constantly, things that were working before might begin to break and they have to be fixed again. Kingdoms will never be a 100% stable software, because I always intend to keep improving it, and these changes will cause other issues at some point. These changes can cause some config options to be moved, deleted or changed.

While you might encounter these issues when using Kingdoms, there are many command utilities to help you with that. Also, Kingdoms has the most comprehensive and complete wiki you'll ever find.

⚠️ **GitHub.com Fallback** ⚠️