Updated Konquest API Java version to 21 for Jitpack API repository, so that the API artifacts build successfully.
Updated Spigot API to version 1.21.1.
Added support for Minecraft 1.21.1.
Updated compatibility between Minecraft versions.
Bug Fixes
The Health town upgrade now correctly applies and removes health bar hearts in newer Minecraft versions.
When EssentialsX integration is enabled, barbarian players can now set homes in their own camps.
Kingdom payments are now correctly calculated for all online players.
New Features
Added experimental option enable_advanced_tnt_protection for tracking which players own TNT explosions, with added protections in towns based on owner relationships. For example, players cannot launch TNT into towns they are allied with.
Added option no_protected_attacking to prevent players in kingdoms that are offline-protected from attacking other kingdoms with more online members.
Added option settle_increment_kingdom to make the cost to settle new towns based on all towns within the kingdom, instead of the towns which the player is the lord.
Added option upgrade_while_attacked to allow whether players can purchase upgrades while a town is under attack.
Changed the Town Watch upgrade to have a warmup time, specified by option no_enemy_edit_offline_warmup, after a resident quits the server.
Added option enable_afk_payments to allow whether or not players can receive kingdom payments while marked as AFK by Essentials.
Reworked all commands to include chat text commands for all major plugin mechanics, in addition to native GUI menus.
Changed command syntax for some commands, like kingdom and town commands.
Updated GUI menu titles to avoid using kingdom, town or player names, which could make the title too long.
Added support for console to run some commands, and added new console-only commands:
k version
k reload
k save
Updated GUI menus to not display icons for features which are disabled in core.yml.
New Features
Added Spanish language file.
Added ability for admins to rename and travel to monument templates.
Added integration for EssentialsX:
Players cannot set homes in enemy territory or the wild (options in core.yml).
Players cannot use Essentials teleport commands into or out of enemy territory (options in core.yml).
Added core.yml option core.kingdoms.max_player_limit to limit the absolute max number of kingdom members.
Added core.yml option core.towns.max_resident_limit to limit the absolute max number of town residents.
Added sub-command /k admin kingdom exile (player) to force any player to become a barbarian as if they joined the server for the first time.
Added placeholder %konquest_rank% which returns a player's role in a kingdom (master, officer, member), derived from new language messages under the placeholder section.
Added chat format tag %RANK% to display a player's rank within their kingdom as a part of the chat message.
Added core.yml option core.chat.always_show_title to force player prefix titles to always show in chat messages and placeholders.
Added ability for town lords or kingdom master to destroy their towns using commands or GUI menus.
New command for town lords is /k town manage (town) destroy, when core.yml option core.towns.allow_destroy_lord = true
New command for kingdom masters is /k kingdom manage destroy (town), when core.yml option core.towns.allow_destroy_master = true.
Bug Fixes
Players that become the lord of a town after being only a town resident now correctly are accounted for in the backend code logic.
Kingdom capitals now correctly apply upgrades on server restart.
Added color tags for use in core.chat.message string: %C1% for primary relation color, %C2% for secondary relation color, and %CW% for kingdom web color.
Added option core.chat.divider to specify divider text between chat format and message.
Removed config options core.chat.kingdom_team_color and core.chat.name_team_color which were too restrictive. Instead, the new color tags can be used to insert relational colors anywhere in the format string.
Updated kingdom chat message formats for friendly players and admin bypass players.
Updated chat command /k chat logic to return an error message when the config option core.chat.enable_format is false.
Added a permission, konquest.chatcolor, to allow players to use color codes (&4, #ff0080, etc.) in their messages only while in global chat mode.
Added new placeholders:
%konquest_timer_loot% - The time until all monument loot refreshes.
%konquest_timer_payment% - The time until kingdom payments refresh.
%rel_konquest_kingdom_webcolor% - The target player's kingdom web color as a parsed ChatColor. This will directly color following text.
Replaced town list placeholders with number of towns:
Added option core.towns.settle_officer_only to allow only kingdom masters and officers to settle new towns.
Added custom commands config file, commands.yml, for in-game events:
commands.ruin_critical - The command that runs when any ruin critical block is destroyed.
commands.ruin_capture - The command that runs when any ruin is captured.
commands.ruin_loot_open - The command that runs when any ruin loot chest is opened.
commands.ruin_golem_kill - The command that runs when any ruin golem is killed.
commands.town_monument_critical - The command that runs when any town monument critical block is destroyed.
commands.town_monument_capture - The command that runs when any town is captured.
commands.town_monument_loot_open - The command that runs when any town monument loot chest is opened.
Minor Improvements
Updated the behavior of some property flags:
Silverfish blocks, slime splits, and phantoms do not spawn when MOBS = false.
Creeper explosions are cancelled when PVE = false.
Enemy mobs do not target players who are inside territory with PVE = false.
Added support for all non-Latin characters, like Cyrillic.
Improved console error messages related to Vault API.
Added support for color codes (format codes and hex) in language message files.
Bug Fixes
Changing the kingdom monument template to a new template that is shorter in height than the original template no longer leaves extra blocks above the new monument in towns.
Fixed town protections of entities like paintings, item frames, and armor stands so that non-resident players cannot break them.
Language files now correctly get saved with a .bad extension when they have invalid YAML syntax. Any config file with invalid syntax will be saved with a .bad extension, and the default version of the file will be used.
Improved player kingdom membership checks when SQL database connection is corrupt or unavailable. Players will no longer be marked as a Barbarian while being members of kingdoms/towns.
Minor Features
Added ARENA property for Ruins and Sanctuaries. Also added konquest-arena flag for WorldGuard regions. This allows any player to pvp in the territory/region, regardless of kingdom relationship.
Added sub-command "/k admin ruin reset (name)", which will reset the ruin by re-generating all critical blocks, and re-spawning all Ruin Golems.
Added core.yml option loot_after_capture, which will only spawn loot in chests after the ruin has been captured.
Added sub-commands for joining and leaving kingdoms and towns, which do the same thing as the existing GUI menu methods.
Command "/k kingdom join (name)" lets the player request to join a kingdom.
Command "/k kingdom exile" lets the player leave their kingdom to become a barbarian.
Command "/k town (name) join" lets the player request to join a town.
Command "/k town (name) leave" lets the player leave the specified town to stop being a resident.
Fixed bug that allowed players to use buckets in the wild when core.kingdoms.use_wild: false.
Minor Improvements
Added config option to switch capital suffix into a prefix.
Added config options to limit the maximum number of towns that a kingdom may settle. This does not limit the number of towns that a kingdom can capture from enemy kingdoms.
Added WorldGuard support with custom region flags: konquest-claim, konquest-unclaim, konquest-travel-enter, konquest-travel-exit.
Added capture cooldown timer to Ruin territory bars.
Added Ruin Loot chests: any chest inside of a Ruin will spawn random loot from the loot.yml file, and will reset once the Ruin has been captured and the cooldown timer is finished.
Added info GUI menus for Ruin and Sanctuary territories.
Updated info command with extra argument to specify type of object (player, town, ruin, etc).
Added a core.yml option to allow all players to pvp, regardless of kingdom relationship, but still only updates damage/kill stats for enemy players.
Bug Fixes
Fixed internal error in admin claim command.
Fixed bug that prevented the use of non-default (Obsidian) blocks as monument template critical blocks.
Fixed Ruin critical blocks not regenerating on server restart.
Fixed bug that could allow players to put items into loot chests.
Updated naming validation checks to include localized Unicode alphanumeric characters, such as characters from the Chinese or Russian alphabets.
Changed town settle depth check to include water, instead of checking the whole chunk for water.
Updated most event listener priorities to optimize performance, and to help prevent other plugins from bypassing territory protections.
Fixed wild_build, wild_use, and wild_pvp settings to only apply to worlds that are not in the world blacklist (or that are in the list when reverse = true).
Fixed issue that prevented creation of monument templates in blacklisted worlds.
Fixed Ruin critical blocks that did not correctly regenerate when the server stops and starts.
Fixed Ruin Golem respawning without removing old Iron Golem entities.
Minor Improvements
Changed the core.world_blacklist_ignore option to core.world_ignorelist, which is now a separate list of world names to ignore all Konquest features.
Ruin Golems now respawn when they are outside of their Ruin territory and a player enters the Ruin.
Updated support for QuickShop to work with latest versions.
Core Configuration
Added map options for rendering kingdoms, sanctuaries, camps and ruins.
Added kingdom option to allow kingdom masters to change the web map color, or only allow admins.
Added camp clan options to join a clan group while the other members are offline, and to allow travel by enemies while inside of a camp.
Updated secondary colors to support Hex (#RRGGBB) color codes, as well as chat colors. Also updated more GUI labels and displays to use secondary colors instead of primary colors.
Property Flags
Added SHOP flag for towns, capitals and sanctuaries, to control whether players can create chest shops.
Added membership flags for kingdoms, towns and capitals to control joining, leaving, promoting, demoting, and transferring.
Updated admin flag command to display more info, and to restore flags to default from properties.yml.
Updated info menus to display some property flags.
Commands
Added new kingdom sub-command "/k kingdom webmap" to customize web map render color.
Added console-only command "konquest reload" which reloads the configuration for the plugin.
Permissions
Added "konquest.create.*" permissions to allow players to create camps, kingdoms and towns.
Miscellaneous Improvements
Updated minimum Java version requirement to Java 11.
Fixed enemy mining fatigue updating when kingdom diplomacy changes.
Updated town menu to replace the "Requests" page with a more general "Manage" page which opens a specific town's management menu.
Added town option for Iron Golem offensive control. By default this option will be off, which means that Iron Golems in towns will only attack enemies when they break town blocks. Turning the option on means that Iron Golems will attack any enemy when they enter town land (original behavior).
Added unclaim command for players.
"/k unclaim" has sub-commands just like "/k claim": "radius #", and "auto".
Only town lords can use the unclaim command.
Players are not paid any favor when unclaiming land.
Territory center chunks (monument) cannot be unclaimed.
Added claim "undo" sub-command for admins.
Using "/k admin claim undo" will remove the most recent land claimed with "/k admin claim".
Admins can undo their previous 10 claims.
Added player member pages to kingdom info menu.
Added comments back into the core.yml configuration file.
Changed ProtocolLib from a hard to a soft dependency. It is still highly recommended to include ProtocolLib. Omitting it will result in errors on startup, and some Konquest features will be disabled without it: Player nametag/tab name colors, and guild specialization village discounts.
All chat is sent to DiscordSRV's "global" linked channel.
Kingdom chat is sent to linked channels that match the name of the kingdom (case-sensitive).
Conquered town status messages are sent to the "global" linked channel.
Core config options send town raid alerts as direct messages (core.integration.discordsrv_options.raid_alert_direct) and as mentions to linked kingdom chat channels (core.integration.discordsrv_options.raid_alert_channel).
Minor features
Added core config option to disable Konquest nametag team packets (core.player_nametag_format).
Added PlaceholderAPI support to the Konquest chat message format, core.chat.message. You can now include placeholders from other plugins (plus Konquest) in the chat message format.
Added new town shield core config option, core.towns.shield_new_towns, to give newly settled towns a free shield for the given amount of time.
Bug Fixes
Improved town settlement check to correctly evaluate land flatness.
Added town settlement check for containers inside of the monument chunk. Block edits are now allowed in the monument chunk beneath the base of the monument structure, minus the core config option core.towns.settle_checks_depth.
Fixed monument loot to only spawn in chests within the monument structure, and not in chests elsewhere in the monument's chunk.
Chest Boats are included in town inventory protections.
Minor improvements
Fixed town title bars to refresh upon player exile.
Disabled the quest book from displaying on kingdom join when directive quests are disabled in config.
Town monument loot chests now work for both single and double chests.
Added config option for town settlement ground flatness, core.towns.settle_check_flatness, to control how much height variation there can be to settle a new town.
Other plugins can get a KonquestAPI instance to access methods, classes and events.
Fully documented Javadoc is available for reference on GitHub.
Updated support for Minecraft 1.18.2.
Added more placeholders.
Added relational placeholders for relationships between two players.
Added kingdom-specific placeholders for info and stats.
Minor Features
Added configurable cooldowns for join and exile commands.
Added option to override kingdom name color in chat messages.
Added town armor block white/black list and improved armor logic.
Changed town raid message to ignore players in admin bypass or spectator gamemode.
Changed integrations (Dynmap, LuckPerms, etc) to detect automatically by default.
Created separate language message paths for Dynmap labels.
Bug Fixes
Fixed Dynmap crashes from also crashing Konquest on plugin enable.
Monsters can now be killed within capital territory always.
Prevented players from bypassing territory transition checks by entering vehicles inside of the territory while the player is outside of the territory.
Fixed score GUI menu from breaking when some icons were clicked, allowing players to take menu icons out of the virtual inventory. Only the "/k score" menu was affected.
Improved MySQL database connection handling to keep the connection alive over long periods of inactivity, and to attempt reconnecting. Updated SQL exception handling logic to prevent Konquest crashing.
Added core.yml option core.ruins.no_golem_drops to prevent ruin golem death drops.
Changed town health upgrades to add hearts as modifiers instead of modifying base value.
Added core.yml option core.reset_legacy_health to reset player hearts to 20 (normal) when current value is greater than 20 on server join. This is to revert the old health upgrade mechanic. Set this to false to allow other plugins to raise heart base value.
Improved monument template mechanics to better handle bypass edits.
Prevented favor withdraw/deposit messages when amount is 0.
Added forced border particle update when towns are captured for nearby players.
Bug fixes
Fixed unhandled exception when invalid custom prefixes exist in prefix.yml.
Fixed unhandled exception when QuickShop version does not match X.X.X.X format.
Fixed exile command confirmation timer not resetting for repeated joining & exiling.
Added new commands, "/k guild" & "/k admin forceguild", and GUI menu.
Create a guild for an optional cost, which is a group of players in the same kingdom, including their towns.
Guild masters can control who can join their guild, and promote members to guild officers, similar to town residencies.
Guild members receive a configurable periodic payment based on total land and population of membership towns, while guild officers and master receive a bonus percentage.
Guilds can select a specialization villager profession, which grants a configurable percent discount on all villager trades of that profession within guild town land.
Guilds can choose to sanction friendly guilds, which prevents the other guild from using their villager trade discounts.
Guilds can agree to an armistice with enemy guilds, which prevents PvP and town damage between the guild members of each guild.
Minor improvements
Added option for exile teleport to world spawn.
Added options to specify relative team colors.
Added option for wild travel position offset.
Added option for town settlement depth below monument check for air, to allow easier settlement above massive 1.18 caves.
Updated message block color formatting, for example, all favor deposit messages will be dark green.
Improved name checks, so that no kingdom, town, ruin, guild or player can share the same name.
Bug fixes
Barbarians now lose their accomplishment prefix upon exile, without having to re-join the server.
Added core.yml option core.kingdoms.capital_build to allow players to build within kingdom capitals. Monument Templates remain protected except for players using admin bypass.
Updated core.yml option core.travel_wild_random_radius to disable "/k travel wild" command when set as 0.
WARNING Minecraft 1.17 has significantly longer chunk load times, causing Konquest to take longer to load on server start-up. Using Paper is highly recommended to speed up load times.
Added dependency on ProtocolLib
Added "Ingots" stat support for copper ore
Changed town settling to place town base Y level at player's standing position instead of highest block in the chunk
Bug fixes
Optimized land accounting in memory
Fixed town settlement bugs, towns cannot be settled in the Nether or The End due to those unique world properties:
Nether ceiling prevents towns from be placed on "highest" chunk level
The End void prevents towns from being placed where there is too much "air" below the ground
Note that these worlds can still be enabled in core.yml, which allows for /k travel, but settling towns is effectively always disabled.