Skip to content

@LlmDl LlmDl released this Mar 18, 2020 · 55 commits to master since this release

Towny Advanced

Release contains:

  • Towny
  • TownyChat 0.68
  • TownyNameUpdater 4.0
Welcome to Towny
This release has some nice features added and a mountain of fixes. Please remember that when you're updating your config files, the only changes you must make are directly below in the REQUIRED CHANGES section. All of the rest of the config additions will be added auto-magically by Towny with their default settings. Important links can be found at the bottom of this page, along with the actual downloads in the Assests list.
This Release marks the addition of two developers to the TownyAdvanced organization, Siris & Silverwolfg11. You will find many great contributions in the changelog below. If you haven't said hello to them on the Discord yet, consider joining us there.
If you're upgrading from a previous Release version of Towny there are 4 REQUIRED changes this time.

⚠️ REQUIRED Changes

⚠️ REQUIRED Changes

    • Villager should be added to the protection.mob_types list.
    • Remove LECTERN from the protections.switch_ids list in the config.
    • This will make it possible for players to read books on lecterns without having switch perms.
    • Players will still be unable to take the book (unless they have destroy permissions in the plot.)
    • should be added to the default nation rank.
      • adding this will mean that when the config's global_town_settings.allow_town_spawn_travel_ally will work properly when set to true.
  • REQUIRED: amending towny\data\worlds\WORLDNAME.txt files



  • Event War addition: town conquering:

    • If war.event.winner_takes_ownership_of_town is set to true when a town knocks another town out of the war, the losing town will join the winning town's nation.
    • The losing town will enter a conquered state and be unable to leave the nation until the conquered time has passed.
    • Add conquered & conqueredDays to Towns.
    • A town's conqueredDays will decrease each Towny new day.
    • Closes ticket #3477.
  • Placeholder added: %townyadvanced_nation_tag_town_formatted%

    • Shows the nation tag and the full town name.
    • If nation tag is not set, only the town name is shown.
  • Plot PVP now takes priority over the Town setting.

    • This means that PVP can be toggled on in plots while the rest of the Town remains PVP free.
    • The PVP toggle cooldown means this cannot be abused.
  • Add permission nodes to /t list by x and /n list by x commands.

    • You can negate the new child nodes to limit which ways players are allowed to sort towns.
  • Made most of the unprefixed messages Towny emits use prefixes, either [Towny], [Townname] or [Nationname].

  • Add town_block_size to bstats charts.

  • Made the town & nation levels' town, nation, capital prefixes and postfixes support the & colour codes.

  • Add database load time to startup.

  • New Feature: Plot Groups, courtesy of Siris with PR #3578.

    • Group plots together, which can be named, sold, set with a uniform plot type, a uniform perm line.
    • Plot Groups which are claimed or unclaimed will have confirmation messages showing number of plots in a group, as well as cost.
    • Groups appear in the Chunk Notifications in white.
    • Already priced plots which are added to a group will increase the group price by the plot.
    • Closes ticket #472.
  • Confirmations can now be accepted/declined/confirmed/cancelled by clicking on the text if you use Spigot.

    • Courtesy of Siris with PRs #3631 + #3639
    • Closes #3534.
    • Commands can still be used, clicking only for spigot servers, not craftbukkit servers.
  • New Feature: smart tab-completion of most Towny commands, courtesy of Siris with PR #3700.

  • QOL interface changes/redundancy removal, courtesy of Siris with PR #3677.

  • Flesh out .gitignore with OS specific (usually hidden) files, courtesy of Siris with PR #3706.

  • Expansion of Metadata: courtesy of Emperor-Koala with PR #3548.

    • Added the ability to expand status screens for through the use of metadata. By giving the metadata field, a label, it will then be displayed on the status screen for any object it is added to.
    • Added metadata to worlds, nations and residents.
    • Closes ticket #3543.
  • Added remaining ExtraFields for metadata, courtesy of Emperor-Koala with PR #3575.

  • Implementation of a trie data structure for residents, towns, and nations; courtesy of stzups & Siris with PR #3712.

  • Added tab completion for /invite commands, courtesy of stzups with PR #3705.

  • Updated & smarter /nation command tab-completion, courtesy of stzups with PR #3710.

  • Updated & smarter tab-completion for remaining commands, courtesy of stzups with PR #3714.

  • Object Allocation on player move reduced by Silverwolfg11 in PR #3573.

  • TownyPermission data rewritten to a 2d boolean array, courtesy of Silverwolfg11 with PR #3600.

  • Update Reserve API, courtesy of thecreatorfromhell, with PR #3612.

New Commands

New Commands:

  • /plot group [add|new|create] [groupname]
    • Creates a plot group where a player is standing.
    • Also adds plots to existing an existing group.
  • /plot group remove
    • Removes the plot you're standing in from its group.
  • /plot group rename [newname]
    • Renames a plot group.
  • /plot group set perm ....
    • Used to set the perm line of a group you are standing in.
  • /plot group set [townblocktype]
    • Used to set a group of plots to a shop, farm, embassy, etc.
  • /plot group toggle [fire|mobs|pvp|explosions]
    • Set the toggleable settings for townblocks across the entire group.
  • /plot group [forsale|fs] [price]
    • Sets the group for sale at the set price.
  • /plot group [notforsale|nfs]
    • Sets the group not for sale.
  • /townyadmin nation new {name} {capital}
    • Creates a nation for the specified town.
    • Does not charge the town money.

📕 New Config Options

📕 New Config Options:

  • war.event.winner_takes_ownership_of_town
    • default: false
    • If set to true when a town knocks another town out of the war, the losing town will join the winning town's nation.
    • The losing town will enter a conquered state and be unable to leave the nation until the conquered time has passed.
  • war.event.conquer_time
    • default: 7
    • Number of Towny new days until a conquered town loses its conquered status.
  • notification.town_names_are_verbose
    • Default: true
    • When set to true, town's names are the long form (townprefix)(name)(townpostfix) configured in the town_level section.
    • When false, it is only the town name.
  • notification.notifications_appear_in_action_bar
    • default: true
    • This setting only applies to servers running spigot, paper or bungeecord.
    • On servers using craftbukkit.jar the notifications will always appear in the chat.
    • When set to false the notifications will appear in the chat rather than the action bar.
    • Closes #3636.

🔑 Changed Permission Nodes

🔑 Changed Permission Nodes:

  • Changed required permission node for using /ta from towny.admin to towny.command.townyadmin
    • Fixes scenario where an admin has other /townyadmin permission nodes but not towny.admin.

🔑 New Permission Nodes

🔑 New Permission Nodes:

  • towny.command.townyadmin
    • Used to view the /townyadmin screen.
    • Gateway permission node to all other townyadmin sub-commands
    • Child node of towny.command.townyadmin.*
    • Allows the use of the /ta nation new {name} {capital} command.
  • Child nodes of towny.command.nation.list, no townyperms.yml update required.
    • towny.command.nation.list.residents
    • towny.command.nation.list.towns
    • towny.command.nation.list.balance
    • towny.command.nation.list.townblocks
  • Child nodes of, no townyperms.yml update required.

💻 API Changes

💻 API:

  • Added TownPreUnclaimEvent

    • Useful for getting the TownBlock object that will be unclaimed.
    • Cancellable but probably not a good idea.
  • Create ResidentUtil for resident-related methods.

  • Added TownyMessaging.sendPlainGlobalMessage() which doesn't use the [Towny] prefix.

  • Create resident.getNamePostfix() & resident.getNamePrefix() for gather pre/postfixes of kings and mayor residents

  • Reorganization of TownyFormatter, courtesy of Siris with PR #3715.

    • Deprecates a couple things that other plugins are unlikely to be using, notes were made for new replacements.
  • API: PreNewTownEvent, courtesy of Siris with PR #3606.

    • Cancellable event.
  • Eco backend refactor courtesy of Siris with PR #3663.

  • Courtesy of Emperor-Koala with PR #3566:

    • API:
      • NationPreAddEnemyEvent - Cancellable
      • NationAddEnemeyEvent
      • NationPreRemoveEnemyEvent - Cancellable
      • NationRemoveEnemyEvent
      • New methods to get the cells under attack in Flag War.
  • Pom updates for javadocs courtesy of FlagCourier with PR #3672.

  • API: preNewDayEvent, courtesy of silverwolfg11 with PR #3770.

🔧 Fixed

🔧 Fixed:

  • Fixed: Villagers protected from damage by other Entities when not configured to be protected.

    • Pillagers were unable to harm villagers, even when villagers were not in the protected list.
    • Closes #3580.
  • Fix keep inventory and keep experience features.

  • Fix edge-case scenario where revoking invites couldn't be done because we were matching the wrong player.

  • Fix message shown when a player tries to set their nation spawn in the wilderness.

  • Fix for trees and mushrooms growing into plots they shouldn't.

  • Fix /ta set throwing error.

  • Fixed explosion regen deleting the contents of BlockInventoryHolders (chests, furnaces, hopper and more.)

  • Fix Mysql databases not creating plotblocksnapshot files.

  • Fix WARZONE status overriding the allow_block_griefing: false setting.

  • Fix Mysql databases not purging fallen towns.

  • Fix town_plotbased_upkeep_minimum_amount not working when town_plotbased_upkeep_affected_by_town_level_modifier is set to false.

  • Fix renaming towns which have 0 plot groups.

  • Fix /ta town {townname} {command} not showing anything helpful when the {command} used is not a valid command.

  • Fix ranks not being capitalized on /res, /town and /nation screens.

  • Fix for single-town nations when the winner_takes_ownership_of_town is true.

  • Removed unneeded permission check for /n spawn.

    • towny.command.nation.spawn node is no longer tested for.
    • towny.nation.spawn.* nodes still remain in use.
  • Fix CombatUtil not disabling PVP in townblocks where PVP is off, when PVP is still on in the town.

    • Towns will no longer override PVP settings for townblocks.
    • The below 3 fixes were required after adjusting this.
  • Fix lack of message when an unjailed player uses /res jail foo.

  • Fix revert-on-unclaim not respecting the PlotManagementSpeed set in the config.

  • Fix Towny moving Citizens NPCs to server spawn when Towny loads in safe mode.

  • Fix missing translation.

  • Fix using /plot perm in the wilderness just returning '[Towny] Not registered' message. Towny will now display the World status page.

  • Fix ChunkNotification not displaying change of PVP status when moving between two townblocks with differing PVP settings.

  • Fix /plot perm hud not displaying PVP setting for plots correctly.

  • Fix for eventwar war participants message using two lines when it ought to only use one.

  • Fix eventwar wars that don't start properly leaving remainders in the warringsTowns and warringNations.

  • Fix WARZONE status being given to townblocks when war is not active.

  • Improve debug messaging on flatfile database load.

  • Fix plot groups whose town doesn't exist anymore causing safe mode.

  • Translated cannot-kick-that-resident strings.

  • Fix bug with /plot group set {plottype}

  • Disallowed the use of /plot group set jail, jails can only be set before grouping.

  • Fix plot groups not loading after server stop and start.

  • Clear out warringNations & warringTowns on war end.

  • Make sure world is properly handled when a town renames itself.

  • Fix /ta plot ? help screen.

  • Fix Null message when plots were claimed/unclaimed.

  • Fix error message for the /plot fs when used on a plot group.

  • Fix false-positive being shown when using /plot nfs on a plot group.

  • Fix error shown in console when entering a plot that is for sale but is not part of a plot group.

  • Fix successful message when economy.new_expand.price_claim_townblock_refund is set to a negative value.

  • Fix no message being shown when an invalid subcommand of "/plot group" is used.

  • Fix /ta rename not passing on NPC status to residents.

  • Fix /plot set perm showing the opposite PVP setting in its final output.

  • Fix towny.admin players being limited by pvp cooldown timer.

  • Fix town/nation permissions missing on the /plot perm hud scoreboard.

  • Fix NPE shown when player is using /plot perm hud, but has another plugin's scoreboard show up.

  • Fix missing town/nation key values on /plot perm hud.

  • Fix missing townblock type on /plot perm hud.

  • Fix /n new name with out underscores not parsing spaces into underscores.

  • Fix for revoking town invites on a player not actually revoking the invite.

  • Fix null response when sending an invite to an offline player.

  • Fix lag caused by /t list and /n list.

  • Changed message shown at the end of the new day to print in the log regardless of debug mode being true.

  • Readd economy lookups for town and nation banks, deprecated.

  • Fix for potentially causing too many file open exceptions on servers with large databases and small Open File Limits.

  • Fix bug where renamed towns and nations would lose their bank balances, introduced in

  • Fix death_payments feature not working on mob-kills of players.

  • Fix PlayerCommandPreprocessEvent error seen in log when players chat while Towny is in safe mode.

  • Fix edge-case scenario where a townblock could be null when listing outposts.

  • Fix DailyTimerTask not resetting cosmetic list of removedTowns, removedNations, totalUpkeeps.

  • Fix towns being kicked from a nation for non-payment of taxes being included in the removedTowns.

  • Fix possible NPE when Nation taxes were collected from towns.

  • Fix BED_BLOCK in the default config's new_world_settings.plot_management.block_delete.unclaim_delete list.

  • Fix Wither Skulls & Shulker Boxes not being in the new_world_settings.plot_management.revert_on_unclaim.block_ignore list.

  • Fix allowing /t buy bonus to be used when the config has using_economy: false.

  • Fix a couple missing options not showing under /plot set perm tab completion.

  • Fix for Towny not clearing a residents' modes when they quit.

  • Fix /ta set capital {townname} {nationname} not working.

  • Fix possibility of residents getting duplicate town and nation ranks.

  • Fix unhelpful debug messages when saving residents in sql.

  • Potential fix for /t and /n online commands not parsing their outputs nicely.

  • Fix Towny safe-mode induced via /ta reload still allowing Towny commands to be used.

  • Fix titles and surname losing their trailing and leading spaces.

  • Fix msg_changed_public in korean.yml not working.

  • Fix a couple missing child nodes for permissions in the plugin.yml.

  • Fix nether portals being created in areas the portal-creator cannot build, courtesy of Siris with PR #3745.

    • Stops 'portal griefing'.
    • Closes #3412.
  • Fix for spawners not reverting properly courtesy of Siris with PR #3629.

  • Fix for plot groups sometimes throwing a CommandException, courtesy of Siris with PR #3597.

  • Fix Ally invite sending to already allied nations, courtesy of Siris with PR #3755.

  • Fix for not running on Craftbukkit servers, courtesy of Siris with PR #3642.

  • Fix NPE when '/plot group add' was used without any name, courtesy of Siris with PR #3630.

  • Fix for /ta town meta not working on towns the admin doesnt own, courtesy of Siris with PR #3549.

  • Fix for town invites from nation, courtesy of Siris with PR #3653.

  • Fix logger, courtesy of ArticDive/Siris with PR #3664.

  • Readd pay() and collect() to Towns and Nations, deprecated, courtesy of Siris with PR #3697.

  • Fix any possible NPE's in NameUtil, courtesy of Siris with PR #3724.

  • Fix flagwar not transferring TownBlocks correctly, courtesy of Siris with PR #3744.

  • Remove metadata raw access warnings, courtesy of Siris with PR #3762.

  • Pom and pom_deb updates by TheFlagCourier with PR #3632.

    • Javadocs should only build on the install phase.
    • Github actions should again function properly.
  • Fix for javadocs courtesy of TheFlagCourier with PR #3655.

  • Github Actions workflow adjustment courtesy of TheFlagCourier with PR #3654.

  • Fix 'msg_modes_set' in ResidentCommand not being used for translation, courtesy of TheFlagCourier with PR #3658.

  • Fix for more tab completions, courtesy of stzups with PR #3734.

  • Fix for root cause of issue solved with #3724, courtesy of stzups with PR #3725.

  • Fix for Tab Completion leaving out some towns/nations/players, as well as caring about upper/lower-case letters, courtesy of stzups with PR #3728.

  • Further optimize Trie used in tab completion, courtesy of stzups with PR #3739.

  • Fixes for Nation_Zones not working/not giving capitals their proper bonus, courtesy of Goosius with PR #3567.

  • Missing apostrophe in error message fixed by Deuphic with PR #3645.

  • Continue != break, courtesy of creatorfromhell with PR #3690.

  • Fix to the preventPVP function, allowing for towns with PVP off to set PVP true on individual plots, courtesy of silverwolfg11 with PR #3718.

  • Fix plot toggle tab-completion and remove unused code, courtesy of silverwolfg11 with PR #3750.

  • Fix townyworld set messages for console not being used, courtesy of silverwolfg11 with PR #3757.

  • Remove redundant arraylist creation for tab-completion, courtesy of silverwolfg11 with #3756.

  • Fix a small typo, courtesy of introvertism with PR #3736.

🌏 Language Updates

🌏 Language Updates:

  • Bump language files to 0.76
  • New Language: Portuguese (Brazilian) Translation, courtesy of BannerGames with PR #3603.
    • use pt-br.yml as your language in the config to enable.
  • New Language: Taiwanese courtesy of shou692199 with PR #3689.
    • set language: zh-TW.yml in config to use.
  • PT-BR.yml updated by BannerGames with PR #3647.
  • Korean.yml updated by wolfwork with PR #3651.
  • Fix french.yml not parsing.
  • French translation updated by Mitsu13Ion with PR #3614 & #3680.
  • Chinese translation updated by qsefthuopq with PR #3703.
  • German.yml updated to 0.75 by enterih.

💬 TownyChat Changes

💬 TownyChat Changes:


  • Removed "[Towny] Modes set: " line seen when a player changes channels.


  • Altered behaviour:
    • Previously using the channel command for the channel you're already speaking in would move you to the next default channel,
      or if non was found, the next global channel.
    • Ex: While being in townchat you use "/tc" you could find yourself in globalchat.
    • Now you will be told you're already in the channel you just used the command to enter into.
  • Fixed: GLOBAL channelTypes (default: general and local channels) are no longer formatted by TownyChat if modify_chat.enabled is false.
    • DEFAULT, TOWN, NATION & ALLIANCE types are still formatted by Towny when modify_chat.enable is false.
    • Closes: #3568


  • Fix for removed TownyFormatter methods, required for Towny and newer.


  • Fix for TownyChat overwriting towny_default_modes player modes on login.


  • Updated comments to reflect change with toggling chats, courtesy of GenSecrets with PR #25.

If you want to support the developer consider becoming a sponsor

Important Links
Click Here for a full changelog
Towny Install Guide
How to Update an Existing Towny
Towny Permission Nodes
How Towny Works
Assets 3
You can’t perform that action at this time.