Skip to content

Update dependency com.palmergames.bukkit.towny:towny to v0.103.0.0#3521

Merged
renovate[bot] merged 1 commit into
mainfrom
renovate/towny
May 11, 2026
Merged

Update dependency com.palmergames.bukkit.towny:towny to v0.103.0.0#3521
renovate[bot] merged 1 commit into
mainfrom
renovate/towny

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 11, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
com.palmergames.bukkit.towny:towny 0.102.0.140.103.0.0 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

TownyAdvanced/Towny (com.palmergames.bukkit.towny:towny)

v0.103.0.0: for MC 1.19.* & 1.20.* & 1.21.* & 26.1.*

Compare Source

Towny Advanced 0.103.0.0

Release contains:

Towny 0.103.0.0
TownyChat 0.121

Welcome to Towny 0.103.0.0.
Towny 0.103.0.0 is the first release in the 0.103.*.* series!
0.103.0.0 marks another large shift in development, with the database now using UUIDs instead of names!
This means that downgrading after this point will require you to restore your Towny database from a backup. If you use mysql, make sure you create a backup. If you use Flatfile your Towny backups should already exist (unless you have disabled Towny's backup system.)
This version supports any Minecraft version 1.19.* and newer! This version of Towny should be run using Java 17 or newer!
This version contains new features and fixes that you want on your server!
This is a drag-and-drop update: just replace your old .jars with the new ones and Towny will take care of the rest of the update by itself. Your config file and Towny database will not be harmed.
➕ Added (38)

➕ Added:

  • Add option to refund towns upon deletion.

    • Adds a configurable system based on town age and size limits, to refund recently-made, "small" towns their full cost.
    • Closes #​7974.
  • Add new hovers to town and nation lists.

    • Separate spawn and town/nation status screen hovers/clickables are now available.
    • Closes #​8100.
  • Add optional limits to town and nation ranks uses.

    • New towny.ranklimit.# node which can be added to town and nation ranks to limit how many times a town or nation can use the rank.
    • Closes #​8035.
  • Add ability for nation members to teleport to outposts belonging to the nation's towns.

  • Add new message shown to mayor and assistants when someone spawns to their town and it has resulted in the town earning the money.

  • Add the option to make the town bank cap plot-based.

  • Add info/meta node for overriding teleport warmup.

  • Add new CHESTS_WITHOUT_ENDERCHEST group, usable in the config switch_ids list, includes all chests but the enderchest.

  • Add maximum deposit and withdraw settings for towns and nations.

  • Adds option to deny cross world teleportation.

  • Add hover to town and nation status screen title bars for admins.

    • Displays name, uuid and town/nation level information.
  • Add test preventing copper golems moving items beyond same-owner plots.

  • Add protection for the waxed copper golem statues into the switch category when COPPER_GOLEM_STATUE is a switch_id.

  • Add waxed versions of copper chests into the COPPER_CHEST category.

  • Added option to hide nations and towns from the list pages when their banks are less than or equal to zero.

  • Add support for enabling conquering on a town via townyadmin command.

  • Add getFormattedTimeValue that accepts a player locale.

  • Add Scoreboard/HUD support for Folia, convert Scoreboards to Adventure.

  • UUID Database Update!

    • READ CAREFULLY, THIS UPDATE HAS CHANGES THAT CANNOT BE REVERSED EASILY.
    • Since Minecraft added UUIDs to players there has always been the idea of changing Towny over to using UUIDs as the main key in our database,
      but due to database instability this was not something that was considered a smart change. Database stability was majorly improved years ago
      however and starting in 2022 and 2023 I (LlmDl,) had pull requests on deck exploring/planning what a UUID-based database would look like for
      Towny. In the middle-to-late 2025 Warrior decided to revive the UUID database concept, breaking things into bite-sized pull requests that
      made the concept easier to review and merge. Those pull requests are as follows:
      • Load UUIDs for residents, towns & nations early, courtesy of Warrior with PR #​7945.
      • Replace references to names with UUIDs in the database, courtesy of Warrior with PR #​7962.
      • Clean up town/nation/resident renaming logic, courtesy of Warrior with PR #​7963.
      • Use UUIDs for town/nation/resident file names in flatfile, courtesy of Warrior with PR #​8023.
        Thanks to Warrior's efforts the UUID database has become a reality!
    • What this means for Towny server admins:
      • The database no longer saves using resident, town and nation names. Instead you will see UUID-named .txt files in the resident, town and
        nation folders, and UUIDs in the lists of friends, enemies and allies.
      • Once you updated to this version your database will be converted and there is no going back. Towny will create backups of your pre-UUID
        database if you have backups enabled in the Towny config.yml and you are using Towny in flatfile!
      • If your Towny database is stored in MYSQL you need to make your own backup! Towny doesn't back up MYSQL databases!
    • Benefits:
      • Your Towny database just got more error-proof.
      • Renaming of residents, towns, nations should no longer be prone to edge-case scenarios that could cause issues.
      • Server hosts which don't allow some unicode characters in the server file system's filenames will no longer fail to save/load towns and
        nations with special (usually accented,) characters.
      • If you change hosts and your future-host does not allow the above unicode characters to be used in the filesystem, your server will not
        immediately fail to load!
      • The main issue with Towny databases over the last few years was typically towns/nations being named with characters that server hosting
        would not allow in the filesystem, this database update will make this issue non-existant, which is why the benefits of this update
        outweigh the cons.
    • Cons:
      • The database's residents/towns/nations are no longer saved with their names. This makes editing your database manually trickier.
        • To help this out the residents' files will now contain their town's last-known name, the towns' files will contain their nation's and
          mayor's last-known name. All residents, towns and nations files will contain their last-known name in their files.
    • Ultimately, the benefits have outweighed the cons, stability has been good for Towny databases for 5+ years, and it is time to make this
      change in order to reduce the complexity of the codebase and to improve how Towny runs on varied server hosts.
  • Add new shear-to-remove-saddle mobs to entity list, courtesy of Warrior with PR #​8018.

  • Future proof minecraft version parsing, courtesy of Warrior with PR #​8034.

  • Bit pack perms in TownyPermission objects, courtesy of Warrior with PR #​8048.

  • Add protection for golden dandelion usage, courtesy of Warrior with PR #​8129.

  • Use mockito for unit testing, courtesy of Warrior with PR #​8159.

  • Improve NameValidation checks for banned names, courtesy of Veyronity with PR #​8133.
    • Prevents Towns and Nations being named with subcommands of /town and /nation.
    • Replaced hard coded list with auto-populating list, which now also includes TownyCommandAddonAPI subcommands.
  • Allow server owners to set a capital change cost, or for other plugins to modify it, courtesy of Veyronity with PR #​8166.
    • Configurable cost and NationKingChangeEvent#setCost now available.
  • Add a cooldown to prevent towns spamming residents by outlawing and unoutlawing them, courtesy of Veyronity with PR #​8074.
  • Add PLOT_GROUP_TOGGLE to TownyCommandAddonAPI, courtesy of Veyronity with PR #​8107.
  • Add cooldown on how often towns & nations can request a merge with the same target, courtesy of Veyronity with PR #​8134.
  • Send dangerous action confirmation messages in red instead of gray, courtesy of Veyronity with PR #​8145.
  • Add a config option to allow dispensers damaging protected entities in PvP plots, courtesy of Veyronity with PR #​8180.
  • Add only_remove_claim_count for inactive resident claim limits, courtesy of GoodrichDev with PR #​8119.
    • When delete_old_residents.enable, only_remove_town, and only_remove_claim_count are all true (and delete_only_townless is false),
      residents who are offline longer than deleted_after_time no longer count toward ratio-based max town blocks.
    • Resident data is kept: purge skips removing town/deleting residents in this mode.
  • Add /ta resident set for lastonline/registered with timestamp validation, courtesy of GoodrichDev with PR #​8120..
  • Add /town nearby command, courtesy of Nrleryx with PR #​8040. (First-Time Contributor!)
  • Add setting manual NationLevels onto Nations, courtesy of confusedalex with PR #​8112. (First-Time Contributor!)
  • Add option to consider nation and town enemies as town outlaws, courtesy of Captain-S0L0 with PR #​8132. (First-Time Contributor!)
  • Separate public town/nation spawn default and maximum cost configs, courtesy of kaanalp28 with PR #​8160. (First-Time Contributor!)
  • Add config option to ingore ruined town in claiming distance check rules, courtesy of HydrolienF with PR #​8178. (First-Time Contributor!)

➕ Automatic Config Edits (0)

➕ Towny's default config and world files will have the following automatic changes made:

  • None.

✨ Command Changes (7)
✨ New Commands (7)

✨ New Commands:

  • /town nearby

    • Shows a player up to 10 towns that are nearest to the player in the order of closest to furthest.
  • /n townoutposts listall

    • list a nation's towns' outposts, with clickable teleportation.
  • /n townoutposts [townname] list

    • lists a town's outposts, with clickable teleportation.
  • /n townoutposts [townname] [outpost]

    • teleports to a town's outpost.
  • /ta nation NATIONNAME setnationlevel #|clear.

  • /ta resident set registered

    • Sets the resident registered time with the timestamp being a long.
  • /ta resident set lastonline

    • Sets the resident lastonline time with the timestamp being a long.

✨ Changed Commands (0)

✨ Changed Commands:

  • None.

❌ Removed Commands (0)

❌ Removed Commands:

  • None.


📕 Config Changes (24)
📕 New Config Options (24)

📕 New Config Options:

These new settings will be added to your config with their default settings.
  • global_town_settings.rank_names_to_be_treated_as_assistants

    • Default: assistant
    • The ranks to be given special priviledges, for instance when messages would be shown to only VIP town members.
    • All ranks should be as defined in townyperms.yml.
  • global_town_settings.consider_enemies_outlaws

    • Default: false
    • If set to true, when a town is in a nation any player in another nation that the town's nation considers enemies will be considered an outlaw in that town.
  • global_town_settings.merge_request_cooldown_time

    • Default: 60
    • Number of seconds that must pass before a town can send a merge request to the same target.
  • global_nation_settings.merge_request_cooldown_time

    • Default: 60
    • Number of seconds that must pass before a nation can send a merge request to the same target.
  • economy.refund_deleted_new_towns.allow_refund_on_deletion

    • Default: false
    • Will towns that are recently created allow for a refund when the town is deleted by using the /t delete command?
    • This allows a player who has founded their town in the wrong place to delete their town and move it.
    • Towns must be less than the age specified below and have a configuable number of townblocks.
  • economy.refund_deleted_new_towns.max_town_age_in_hours

    • Default: 1
    • How many hours old is a town allowed to be in order to get the refund when being deleted.
  • economy.refund_deleted_new_towns.max_townblocks

    • Default: 8
    • How many townblocks is a town allowed to have in order to qualify for the refund.
  • economy.banks.hide_zero_or_under_banks_on_list_outputs

    • Default: false
    • When true town and nations with a bank balance of less than or equal to zero will not appear on the town and nation lists.
  • economy.banks.town_bank_cap_is_plotbased

    • Default: false
    • When true the bank cap is plot-based. The number of townblocks/plots a town has claimed will be multiplied by the above town_bank_cap value.
  • economy.banks.plotbased_bank_cap_uses_town_level_modifier

    • Default: false
    • When true the plot-based bank cap will also be multiplied by the town_levels' bank cap modifiers.
  • economy.banks.plotbased_town_bank_cap_minimum

    • Default: 0.0
    • The smallest cap that banks can have while using the plotbased bank cap.
    • If this value is larger than the naturally-derived townblocks * town_bank_cap equation, this minimum will be used instead.
  • economy.banks.town_max_deposit

    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to deposit in town bank at a time.
  • economy.banks.town_max_withdraw

    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to withdraw from town bank at a time.
  • economy.banks.nation_max_deposit

    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to deposit in nation bank at a time.
  • economy.banks.nation_max_withdraw

    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to withdraw from nation bank at a time.
  • economy.spawn_travel.price_town_public_spawn_travel_maximum

    • Default: 10.0
    • Maximum cost to use /town spawn [town] that mayors can set using /t set spawncost.
    • You can disable this setting by setting price_allow_mayors_to_override_public_spawn_cost to false. This will use the price_town_public_spawn_travel option to set a mandatory price.
  • economy.nation_capital_change_cost

    • Default: 0
    • The cost of a nation changing its capital
  • town_ruining.empty_towns_become_ruins

    • Default: false
    • When enabled, when the last resident is removed from a town and it becomes empty (such as when inactive resident deletion is enabled),
      the town will turn into a ruin instead of being immediately removed.
  • resident_settings.warn_player_on_outlaw_message_cooldown_in_seconds

    • Default: 30
    • How many seconds in between warning messages, to prevent spam.
  • resident_settings.delete_old_residents.only_remove_claim_count

    • Default: false
    • When true (and only_remove_town is true) residents are kept and only stop counting toward town claim limits after deleted_after_time.
  • spawning.require_spawn_destination_same_world

    • Default: false
    • When true, using /res, /t, /n spawn or /t outpost will fail when those spawn points are not in the same world as the player.
    • Use this feature to require players use special portals to travel between your server's worlds.
  • spawning.nation_spawn.allow_nation_outpost_travel

    • Default: true
    • Allow regular residents to use /nation outpost [town] [outpost] (TP to other towns' outposts if they are public).
    • Valid values are: true, false, war, peace.
    • When war or peace is set, it is only possible to teleport to the nation, when there is a war or peace.
  • claiming.distance_rules.min_distances_ignored_for_ruined_towns

    • Default: false
    • If true, the below settings: min_plot_distance_from_town_plot and min_distance_from_town_homeblock
      will be ignored for towns that are ruined. Setting to false will keep all towns separated the same.
  • protection.are_mob_types_protected_against_block_projectile_sources

    • Default: true
    • Setting this to false will allow block projectile sources, namely dispensers, to harm the above protected
      mobs (using potions, arrows, etc.), if they're in the same townblock and PvP is enabled.

❌ Removed Config Options (0)

❌ Removed Config Options:

  • None.


🔑 Permission Node Changes (6)
🔑 New Permission Nodes (6)

🔑 New Permission Nodes:

No change required in townyperms.yml.

  • towny.command.town.nearby
    • Will be automatically added to your nomads in the townyperms.yml.
  • towny_teleport_warmup_seconds.N
  • towny.command.townyadmin.nation.setnationlevel
    • Child node of towny.command.townyadmin.nation.* and towny.admin.
  • towny.town.spawn.nation.outpost
    • Allows the use of /n townoutposts [townname] [outpost]
    • child node of towny.town.spawn.nation, no changes to townyperms.yml required.
  • towny.command.nation.outpost.listall
    • Allows the use of /n townoutposts listall
    • child node of towny.command.nation.*, no changes to townyperms.yml required.
  • towny.command.nation.outpost.list
    • Allows the use of /n townoutposts [townname] list
    • child node of towny.command.nation.*, no changes to townyperms.yml required.

❌ Removed Permission Nodes (0)

❌ Removed Permission Nodes:

  • None.

❌ Changed Permission Nodes (1)

❌ Changed Permission Nodes:

  • Remove some townyadmincommand permission tests in favour of subcommand permission tests, allowing for more fine-grained permission node configurations.
    • towny.command.townyadmin.town.*
    • towny.command.townyadmin.nation.*
    • towny.command.townyadmin.resident.*
    • towny.command.townyadmin.toggle.*
    • towny.command.townyadmin.plot.*
    • The subcommands of these commands now rely soley on their own permission node, and do not require the parent permission node.


💻 API Changes (1)

💻 API:

  • Add NationRangeAllowTownEvent, courtesy of Veyronity with PR #​8128.
    • An event thrown when a town is assessed during the nation proximity tests, allowing plugins to modify nation proximity rules on a per-town basis.

🔧 Fixed (60)

🔧 Fixed:

  • Fix admin permissions on LuckPerms-using servers where OPs do not receieve towny.admin.
    • OPs will now be given the towny.admin permission node by default.
    • Closes #​8017.
  • Fix town bank accounts being removed before the feature isDeletedObjectBalancePaidToOwner can finish logging into the bank history book.
  • Fix copper golem test that caused Could not pass event ItemTransportingEntityValidateTargetEvent spam.
  • Fix outposts not following the min_distances_ignored_for_towns_in_same_nation and min_distances_ignored_for_towns_in_allied_nation
    when min_distance_for_outpost_from_plot is tested while creating an outpost using /t claim outpost.
  • Add Interaction entity to right click protected list.
  • Fix unclaiming near to outposts while min_adjacent_claims feature is in use.
  • Fix the message shown to mayors and assistants when someone spawns to their town showing prior to the teleport warmup time, resulting in unneeded messages.
  • Fix 2 points where permission node tests bypass the adminbypass mode.
  • Fix the message shown to mayors and assistants when someone spawns to their town showing prior to the teleport warmup time, resulting in unneeded messages.
  • Fix towns having a spawn point in a non-existent world preventing the town being deleted.
  • Fix admins with the adminbypass mode active not receiving teleport warmups and cooldowns.
  • Fix occasions where plot groups exist in townblocks being removed.
  • Fix itemuse list not being used against projectiles which are fired into the air.
  • Fix titles messages showing their subtitle in the title position.
  • Fix towny_teleport_warmup_seconds permission node not working.
  • Fix adminbypass mode not applying to nationzones.
  • Fix title and surname settings issues.
  • Fix plot command being blocked in ruined Towns for players who are not town members.
  • Fix nation-level-getting broken in 0.102.0.8.
  • Fix HUDManager not accepting added HUDs.
  • Fix empty nations saving themselves instead of getting deleted.
  • Fix not throwing PlayerChangePlotEvents for passengers.
  • Fix /towny prices missing the max tax percent caps when a town or nation has taxpercent in use.
  • Fix added padding of scoreboards.
  • Fix consider_enemies_outlaws config setting not applying to towns who are enemies with each other.
  • Fix Nation's newCapitalFinder being able to pick a conquered town.
  • Fix gradients not working when parsed through resident.formattedName().
  • Fix a bunch of nation and town level weirdness, courtesy of Warrior with PR #​8091.
    • Fixed getTownLevelMax always being 1 too high
    • Fixed TownLevelDecrease/IncreaseEvent firing for towns that have a manually set town level.
    • Fixed the code around the Town/NationLevelDecrease/IncreaseEvent bypassing the level calculate events, possibly causing them to be wrongly fired when a plugin is calculating its own levels with the level calculate events.
    • Town merge:
      • Fixed the town's resident amount being used instead of the nation's resident amount for max outpost calculations.
      • Fixed max purchased blocks not using the number of townblocks to calculate the town level when configured to do so.
      • Fixed the purchased and bonus blocks of the succumbing town not being limited by the town block limit option when the town_block_ratio is in use.
    • Fixed nation level methods wrongly using the modifier and level interchangeably (i.e. getNationLevelFromGivenInt was returning the floored modifier rather than the actual level).
  • Prevent renaming town/nation files when name is invalid, courtesy of Warrior with PR #​8137.
    • Flatfile databases which loaded towns/nations with invalid names could result in a town/nation file being created with a name instead of a UUID.
  • Fix exception when attempting to query NPC perms through LuckPerms, courtesy of Warrior with PR #​8033.
  • Remove world references stored inside WorldCoord, courtesy of Warrior with PR #​8050.
  • Fix message when attempting to overclaim your own town, courtesy of Warrior with PR #​8051.
  • Reduce allocations done by Resident hasRank methods, courtesy of Warrior with PR #​8037.
  • Lazily initialize maps used by TownBlock, courtesy of Warrior with PR #​8049.
  • Fix the townyperms group command not working with capitalized groups, courtesy of Warrior with PR #​8055.
  • Add null checks to the task schedulers, courtesy of Warrior with PR #​8060.
  • Enforce notnull for economy account name/uuid fields, courtesy of Warrior with PR #​7705.
  • Allow empty towns to turn into ruins, courtesy of Warrior with PR #​8071.
  • Fix IllegalArgumentException when a plugin we integrate with has a bad version, courtesy of Warrior with PR #​8072.
  • Fix the mayor succession event not being fired, courtesy of Warrior with PR #​8086.
  • Restrict usable minimessage tags in titles/surnames, courtesy of Warrior with PR #​8096.
  • Re-add removed res_8 lang string, courtesy of Warrior with PR #​8097.
  • Lower listener priorities for block events, courtesy of Warrior with PR #​8123.
  • Remove enderchests from default switch_ids config, courtesy of Warrior with PR #​8147.
  • Simplify explosion revert BlockState handling, courtesy of Warrior with PR #​8153.
  • Use dedicated age lock event instead of interact listener, courtesy of Warrior with PR #​8158.
  • Check the chunk is still wilderness after confirmation in /town new, courtesy of Veyronity with PR #​8059. (First-Time Contributor!)
  • Fix IndexOutOfBounds exception in /t join, courtesy of Veyronity with PR #​8062.
  • Ignore colors in length validation, strip unwanted minimessage tags, courtesy of Veyronity with PR #​8116.
  • NameValidation: Strip dangerous tags, not the allowed ones, courtesy of Veyronity with PR #​8156.
  • Bump javadoc plugin and fix javadoc goal not applying formatting, courtesy of SulkyWhale with PR #​8161.
  • Fix incorrect color for overclaimed upkeep, courtesy of SulkyWhale with PR #​8173.
  • Fix spacing for perm line after changing perms, courtesy of SulkyWhale with PR #​8174.
  • Fix a logic error in the PlotGroup#setResident function, courtesy of Remasuri with PR #​8043. (First-Time Contributor!)
  • Fix SQL loading of forSale, forSalePrice, and forSaleTime, courtesy of Groovymeister with PR #​8063. (First-Time Contributor!)
  • Fix unneeded msg_invalid_name exception message from /n enemy, courtesy of pernio with PR #​8073. (First-Time Contributor!)
  • Skip proximity checks when minimum plot distance is set to 0, courtesy of MakcNmk with PR #​8087. (First-Time Contributor!)
  • Fix Outlaw teleportation on Folia / Add support for Canvas outlaw teleportation, courtesy of Jsinco #​8138. (First-Time Contributor!)
  • Fix maxJailedUnjail method when town has no jailed residents, courtesy of Dionert with PR #​8141. (First-Time Contributor!)

🌏 Language Updates (1)

🌏 Language Updates:

  • Regular updates via Crowdin.

🌏 Dependency Updates (17)

🌏 Dependency Updates:

  • Bump com.zaxxer:HikariCP from 6.2.1 to 7.0.2.
  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.2 to 3.5.5.
  • Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.2 to 3.5.0.
  • Bump org.apache.maven.plugins:maven-compiler-plugin from 3.13.0 to 3.15.0.
  • Bump org.apache.logging.log4j:log4j-core from 2.24.3 to 2.25.4.
  • Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.0 to 3.6.2.
  • Bump junit.version from 5.13.4 to 6.0.3.
  • Bump net.luckperms:api from 5.4 to 5.5.
  • Bump org.apache.maven.plugins:maven-source-plugin from 3.3.1 to 3.4.0.
  • Bump net.milkbowl.vault:VaultUnlockedAPI from 2.9 to 2.15.
  • Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.2 to 3.12.0.
  • Bump net.coreprotect:coreprotect from 22.4 to 23.2.
  • Bump me.clip:placeholderapi from 2.11.6 to 2.12.2.
  • Bump org.apache.commons:commons-compress from 1.26.2 to 1.28.0.
  • Bump org.jetbrains:annotations from 26.0.2 to 26.1.0.
  • Bump org.bstats:bstats-bukkit from 3.1.0 to 3.2.1.
  • Bump io.github.git-commit-id:git-commit-id-maven-plugin from 9.0.2 to 10.0.0.

👽 Placeholder Updates (7)

👽 Placeholder Updates:

  • %townyadvanced_player_location_in_homeblock% - Returns a string TRUE or FALSE if the player is in a homeblock.
  • %townyadvanced_player_location_in_homeblock_owntown% - Returns a string TRUE or FALSE if the player is in a homeblock belonging to their town.
  • %townyadvanced_player_location_in_homeblock_ownnation% - Returns a string TRUE or FALSE if the player is in a homeblock belonging to a town in the player's nation.
  • %townyadvanced_player_location_in_homeblock_enemy% - Returns a string TRUE or FALSE if the player is in a homeblock belonging to a town that is enemied with the player's town.
  • %townyadvanced_player_location_in_homeblock_ally% - Returns a string TRUE or FALSE if the player is in a homeblock belonging to a town that is allied with the player's town.
  • %townyadvanced_town_outposts_claimed%
    • Displays how many outposts a town has, when the player has a town.
    • Closes #​8114.
  • %townyadvanced_top_town_residents_and_open_n% - (Replace n with a number) Displays the nth Town that is open, arranged by the number of residents.

💬 TownyChat Changes (2)

💬 TownyChat Changes:

  • Port to Paper for Towny 0.102.0.0, courtesy of TheFlagCourier with PR #​62.
    • Bump min Towny version to 0.102.0.0.
    • Drop Jabel and Java 8 support.
    • Updates a bunch of dependencies.
    • Adds README and License markdown files.
  • Add support for Towny's areConqueredTownsConsideredAllied feature, allowing for conquered towns to not use or see the nation and alliance chats belonging to their conquering nation.

Towny Sponsors

I want to give a big thank you to all of my sponsors:
These are the people that help to make Towny's development as active as it is,
and who supported me during this release of Towny.

DrprofLuigiakup001pebblehostDiimoniixtomhmagicjshalbrook
LuexaTurtleCraftManGoodrichDevchessmastertobecobrex1lexiccn
WaspyethanStoniasawesomeSmallSansSeriftrevor1097KeNickGongMilesBHuff
SolarCivLitning11Bloc-kxSTORMYxSHMlukemangoTheeno74
Rekar7Folas1337keijodputtNeumimToStevenSharkerRialkingg
ewofKermXTylorTurnerHippieBeakNewspoetdruidbrandon
yurddZacharySeebeck2020JosefofMongoliaBattleBornPMCMrG00s3ubobubob
loanderKarl4sKr1stuX32dannyxJ0TxKRDucky
minefortcomElementals-bitEmperorDazedWoodiieTesqageFusionZ1
ShermansWorldyolo69-stsAndyRecktKeKnowltonAtexur99StaccatoAunt007
FantaFreak04KuvviiJsincoLucasUnderlineerenmakalatlasmcplugins
DGCreatesssdrive-flaktraPhatdog731uplex11KrarwiFutureLemon
MomshroomgerardvanschipItzXPurpleXspikehiddenAncientSMCorruptedGreed
TriaieSupersmurf82NikkilectricCactusbandityurigarciiaspektrsoyuz
GeraldR12Triumvir-CivlDoomerlNotAndre157Gl0W1Egorbyhail
Sexy-JuraTheNyloxand 36 private sponsors.

If you want to support the developer, become a sponsor.

(It's just like Patreon but instead 100% of your support goes to the developer.)

Plus there are Sponsor Perks!

Important Links
Frequently Asked
Questions
How Towny Works Towny Install Guide Towny Update Guide
Other Towny Plugins Complete Changelog Default Config Files Commands/Permissions
Placeholders
⏬ Download available as a .zip file in the Assets section below:

v0.102.0.15: for MC 1.19.* & 1.20.* & 1.21.* & 26.1.*

Compare Source

  • New PlaceholderAPI placeholder: %townyadvanced_top_town_residents_and_open_n% - (Replace n with a number) Displays the nth Town that is open, arranged by the number of residents.
    • Add hover to town and nation status screen title bars for admins.
      • Displays name, uuid and town/nation level information.
    • Fix consider_enemies_outlaws config setting not applying to towns who are enemies with each other.
    • Fix Nation's newCapitalFinder being able to pick a conquered town.
    • Separate public town/nation spawn default and maximum cost configs, courtesy of kaanalp28 with PR #​8160. (First-Time Contributor!)
    • New Config Option: economy.spawn_travel.price_town_public_spawn_travel_maximum
      • Default: 10.0
      • Maximum cost to use /town spawn [town] that mayors can set using /t set spawncost.
      • You can disable this setting by setting price_allow_mayors_to_override_public_spawn_cost to false. This will use the price_town_public_spawn_travel option to set a mandatory price.
    • Allow server owners to set a capital change cost, or for other plugins to modify it, courtesy of Veyronity with PR #​8166.
      • Configurable cost and NationKingChangeEvent#setCost now available.
    • New Config Option: economy.nation_capital_change_cost
      • Default: 0
      • The cost of a nation changing its capital
    • Fix unclaiming near to outposts while min_adjacent_claims feature is in use.
    • Fix gradients not working when parsed through resident.formattedName().
    • Fix incorrect color for overclaimed upkeep, courtesy of SulkyWhale with PR #​8173.
    • Fix spacing for perm line after changing perms, courtesy of SulkyWhale with PR #​8174.
    • Add config option to ingore ruined town in claiming distance check rules, courtesy of HydrolienF with PR #​8178. (First-Time Contributor!)
    • New Config Option: claiming.distance_rules.min_distances_ignored_for_ruined_towns
      • Default: false
      • If true, the below settings: min_plot_distance_from_town_plot and min_distance_from_town_homeblock
        will be ignored for towns that are ruined. Setting to false will keep all towns separated the same.
    • Bump net.coreprotect:coreprotect from 23.1 to 23.2.
    • Add a config option to allow dispensers damaging protected entities in PvP plots, courtesy of Veyronity with PR #​8180.
    • New Config Option: protection.are_mob_types_protected_against_block_projectile_sources
      • Default: true
      • Setting this to false will allow block projectile sources, namely dispensers, to harm the above protected
        mobs (using potions, arrows, etc.), if they're in the same townblock and PvP is enabled.

Cumulative changes since 0.102.0.0
0.102.0.14
  • Use mockito for unit testing, courtesy of Warrior with PR #​8159.
  • Fix Outlaw teleportation on Folia / Add support for Canvas outlaw teleportation, courtesy of Jsinco #​8138. (First-Time Contributor!)
  • Add optional limits to town and nation ranks uses.
    • New towny.ranklimit.# node which can be added to town and nation ranks to limit how many times a town or nation can use the rank.
    • Closes #​8035.
  • Fix added padding of scoreboards.
  • Simplify explosion revert BlockState handling, courtesy of Warrior with PR #​8153.
  • NameValidation: Strip dangerous tags, not the allowed ones, courtesy of Veyronity with PR #​8156.
  • Bump io.github.git-commit-id:git-commit-id-maven-plugin from 9.1.0 to 10.0.0.
  • Bump javadoc plugin and fix javadoc goal not applying formatting, courtesy of SulkyWhale with PR #​8161.
  • Adds option to deny cross world teleportation.
  • New Config Option: spawning.require_spawn_destination_same_world
    • Default: false
    • When true, using /res, /t, /n spawn or /t outpost will fail when those spawn points are not in the same world as the player.
    • Use this feature to require players use special portals to travel between your server's worlds.
  • Use dedicated age lock event instead of interact listener, courtesy of Warrior with PR #​8158.
  • Add ability for nation members to teleport to outposts belonging to the nation's towns.
  • New Commands:
    • /n townoutposts listall - list a nation's towns' outposts, with clickable teleportation.
    • /n townoutposts [townname] list - lists a town's outposts, with clickable teleportation.
    • /n townoutposts [townname] [outpost] - teleports to a town's outpost.
  • New Permission Nodes:
    • towny.town.spawn.nation.outpost
      • Allows the use of /n townoutposts [townname] [outpost]
      • child node of towny.town.spawn.nation, no changes to townyperms.yml required.
    • towny.command.nation.outpost.listall
      • Allows the use of /n townoutposts listall
      • child node of towny.command.nation.*, no changes to townyperms.yml required.
    • towny.command.nation.outpost.list
      • Allows the use of /n townoutposts [townname] list
      • child node of towny.command.nation.*, no changes to townyperms.yml required.
  • New Config Option: spawning.nation_spawn.allow_nation_outpost_travel
    • Default: true
    • Allow regular residents to use /nation outpost [town] [outpost] (TP to other towns' outposts if they are public).
    • Valid values are: true, false, war, peace.
    • When war or peace is set, it is only possible to teleport to the nation, when there is a war or peace.
0.102.0.13
  • Add protection for golden dandelion usage, courtesy of Warrior with PR #​8129.
  • Fix maxJailedUnjail method when town has no jailed residents, courtesy of Dionert with PR #​8141. (First-Time Contributor!)
  • Add maximum deposit and withdraw settings for towns and nations.
  • New Config Option: economy.banks.town_max_deposit
    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to deposit in town bank at a time.
  • New Config Option: economy.banks.town_max_withdraw
    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to withdraw from town bank at a time.
  • New Config Option: economy.banks.nation_max_deposit
    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to deposit in nation bank at a time.
  • New Config Option: economy.banks.nation_max_withdraw
    • Default: -1
    • When greater than -1, the maximum amount of money players are allowed to withdraw from nation bank at a time.
  • Send dangerous action confirmation messages in red instead of gray, courtesy of Veyronity with PR #​8145.
  • Remove enderchests from default switch_ids config, courtesy of Warrior with PR #​8147.
  • Fix /towny prices missing the max tax percent caps when a town or nation has taxpercent in use.
  • Bump org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4.
  • Bump io.github.git-commit-id:git-commit-id-maven-plugin from 9.0.2 to 9.1.0.
0.102.0.12
  • Fix a bunch of nation and town level weirdness, courtesy of Warrior with PR #​8091.
    • Fixed getTownLevelMax always being 1 too high
    • Fixed TownLevelDecrease/IncreaseEvent firing for towns that have a manually set town level.
    • Fixed the code around the Town/NationLevelDecrease/IncreaseEvent bypassing the level calculate events, possibly causing them to be wrongly fired when a plugin is calculating its own levels with the level calculate events.
    • Town merge:
      • Fixed the town's resident amount being used instead of the nation's resident amount for max outpost calculations.
      • Fixed max purchased blocks not using the number of townblocks to calculate the town level when configured to do so.
      • Fixed the purchased and bonus blocks of the succumbing town not being limited by the town block limit option when the town_block_ratio is in use.
    • Fixed nation level methods wrongly using the modifier and level interchangeably (i.e. getNationLevelFromGivenInt was returning the floored modifier rather than the actual level).
  • Fix not throwing PlayerChangePlotEvents for passengers.
  • Add NationRangeAllowTownEvent, courtesy of Veyronity with PR #​8128.
    • An event thrown when a town is assessed during the nation proximity tests, allowing plugins to modify nation proximity rules on a per-town basis.
  • Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.1 to 3.6.2.
0.102.0.11
  • Prevent renaming town/nation files when name is invalid, courtesy of Warrior with PR #​8137.
    • Flatfile databases which loaded towns/nations with invalid names could result in a town/nation file being created with a name instead of a UUID.
0.102.0.10
  • Fix HUDManager not accepting added HUDs.
  • Fix empty nations saving themselves instead of getting deleted.
  • Add only_remove_claim_count for inactive resident claim limits, courtesy of GoodrichDev with PR #​8119.
    • When delete_old_residents.enable, only_remove_town, and only_remove_claim_count are all true (and delete_only_townless is false),
      residents who are offline longer than deleted_after_time no longer count toward ratio-based max town blocks.
    • Resident data is kept: purge skips removing town/deleting residents in this mode.
  • New Config Option: resident_settings.delete_old_residents.only_remove_claim_count
    • Default: false
    • When true (and only_remove_town is true) residents are kept and only stop counting toward town claim limits after deleted_after_time.
  • Add /ta resident set for lastonline/registered with timestamp validation, courtesy of GoodrichDev with PR #​8120.
  • New Command: /ta resident set registered
    • Sets the resident registered time with the timestamp being a long.
  • New Command: /ta resident set lastonline
    • Sets the resident lastonline time with the timestamp being a long.
  • Bump org.bstats:bstats-bukkit from 3.1.0 to 3.2.1.
  • Add option to consider nation enemies as town outlaws, courtesy of Captain-S0L0 with PR #​8132. (First-Time Contributor!)
  • New Config Option: global_town_settings.consider_enemies_outlaws
    • Default: false
    • If set to true, when a town is in a nation any player in another nation that the town's nation considers enemies will be considered an outlaw in that town.
  • Improve NameValidation checks for banned names, courtesy of Veyronity with PR #​8133.
    • Prevents Towns and Nations being named with subcommands of /town and /nation.
    • Replaced hard coded list with auto-populating list, which now also includes TownyCommandAddonAPI subcommands.
  • Add cooldown on how often towns & nations can request a merge with the same target, courtesy of Veyronity with PR #​8134.
  • New Config Option: global_town_settings.merge_request_cooldown_time
    • Default: 60
    • Number of seconds that must pass before a town can send a merge request to the same target.
  • New Config Option: global_nation_settings.merge_request_cooldown_time
    • Default: 60
    • Number of seconds that must pass before a nation can send a merge request to the same target.
0.102.0.9
  • Remove some townyadmincommand permission tests in favour of subcommand permission tests, allowing for more fine-grained permission node configurations.
    • towny.command.townyadmin.town.*
    • towny.command.townyadmin.nation.*
    • towny.command.townyadmin.resident.*
    • towny.command.townyadmin.toggle.*
    • towny.command.townyadmin.plot.*
    • The subcommands of these commands now rely soley on their own permission node, and do not require the parent permission node.
  • Fix nation-level-getting broken in 0.102.0.8.
0.102.0.8
  • Fix outposts not following the min_distances_ignored_for_towns_in_same_nation and min_distances_ignored_for_towns_in_allied_nation
    when min_distance_for_outpost_from_plot is tested while creating an outpost using /t claim outpost.
  • Fix plot command being blocked in ruined Towns for players who are not town members.
  • New PAPI Placeholder: %townyadvanced_town_outposts_claimed%
    • Displays how many outposts a town has, when the player has a town.
    • Closes #​8114.
  • Bump junit.version from 6.0.2 to 6.0.3.
  • Add setting manual NationLevels onto Nations, courtesy of confusedalex with PR #​8112. (First-Time Contributor!)
  • New Command: /ta nation NATIONNAME setnationlevel #|clear.
  • New Permission Node: towny.command.townyadmin.nation.setnationlevel
    • Child node of towny.command.townyadmin.nation.* and towny.admin.
  • Add Scoreboard/HUD support for Folia, convert Scoreboards to Adventure.
  • Ignore colors in length validation, strip unwanted minimessage tags, courtesy of Veyronity with PR #​8116.
  • Bump org.jetbrains:annotations from 26.0.2 to 26.1.0.
  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.4 to 3.5.5.
  • Add Interaction entity to right click protected list.
  • Lower listener priorities for block events, courtesy of Warrior with PR #​8123.
0.102.0.7
  • Add new CHESTS_WITHOUT_ENDERCHEST group, usable in the config switch_ids list, includes all chests but the enderchest.
  • Add getFormattedTimeValue that accepts a player locale.
  • Fix adminbypass mode not applying to nationzones.
  • Fix title and surname s

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • Between 12:00 AM and 03:59 AM, only on Monday (* 0-3 * * 1)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the Renovate label May 11, 2026
@renovate renovate Bot requested a review from a team as a code owner May 11, 2026 01:03
@renovate renovate Bot enabled auto-merge (squash) May 11, 2026 01:03
@renovate renovate Bot added the Renovate label May 11, 2026
@renovate renovate Bot merged commit 6f65c1d into main May 11, 2026
8 checks passed
@renovate renovate Bot deleted the renovate/towny branch May 11, 2026 01:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants