
HuskTowns 3.1.2
A simple and elegant proxy-compatible Towny-style protection plugin
HuskTowns 3.1.2 is a minor release which adds a web dump command for customer service.
- Added
/husktowns dump
to produce a system status dump of the plugin to the web
To update from 3.1.1, regenerate your locale (messages-xx-xx.yml
) file.
HuskTowns 3.1.1 fixes bugs in the previous release
- Fixed the set value of custom operation types failing to load correctly
- Fixed a logic error with claim and plots causing rule loading inversion by @HookWoods (#566)
- Updated the German (
de-de
) locales, courtesy of @Bensonheimer992 (#565)
To update from v3.1, just drag+drop.
HuskTowns 3.1 fixes bugs and improves the developer API in line with HuskClaims.
- Added a
/husktowns status
command to view system status information (#561) - Improved system performance with a new user caching strategy
- Fixed vehicle mobs being invincible outside of claims in certain cases
- Fixed a NullPointerException that could occur when accepting town war declarations (#557)
- API: Introduced new API for registering custom
OperationType
s.- Lets mod and plugin developers register custom operation types and call actions to cancel actions based on HuskTowns town claims.
- Documentation for this is available here.
To update from v3.0.8, just drag+drop.
HuskTowns 3.0.8 improves support for 1.21.4 and fixes bugs. This release will perform database migrations on startup, and requires updating or regenerating your flags.yml
file.
- Added
PLACE_VEHICLE
andBREAK_VEHICLE
operation types and added handling for boats with chest in 1.21.4 - Improved the performance of SQLite database mode; data is now stored in jsonb format
- Fixed usernames with multiple underscores being formatting-escaped causing
/town invite accept/decline
to not work (#532) - Fixed a
NoSuchElementException
that could occur when using the town invite command (#531) - Fixed reeling an entity in with a fishing rod not being correctly protected against (#534)
To update, just drag+drop and update your flags.yml
file (or regenerate if you haven't modified it from the default) with the new PLACE_VEHICLE
and BREAK_VEHICLE
operation types.
HuskTowns 3.0.7 fixes several bugs.
- Players now require build trust by default to start raids in town claims.
- Fixed a race condition when loading map hooks
- Fixed damage dealt by the Sweeping Edge enchantment causing player damage in some cases, even when the PVP flag was disabled
- Fixed thrown eggs & lit arrows by non-trustees can hatch chickens & light campfires in claims
To update, drag+drop and add the START_RAID
operation type to the PUBLIC_BUILD_ACCESS
flag in flags.yml
.
HuskTowns 3.0.6 is fixes a few bugs present in the previous release.
- Added Traditional Chinese (zh-tw) locales, courtesy of @yichifauzi (#494)
- Added German (de-de) locales, courtesy of @Bensonheimer992 (#492)
- Fixed using an ender pearl within a claim not working properly due to an improper victim damage check (#505)
- Fixed a NullPointerException that could occur when a dynmap marker marker was removed, courtesy of @Rubenicos (#501)
- API: Added new events for town wars:
TownWarCreateEvent
andTownWarEndEvent
, courtesy of @thomasz05 (#491)
✅ Compatible with: Spigot/Paper 1.17.1-1.21.1 (download the right version for your server).
HuskTowns 3.0.5 adds support for Minecraft 1.21, adds more placeholders, and fixes bugs.
- Added support for Minecraft 1.20.6 and Minecraft 1.21
- Town advancements have been temporarily disabled in this release due to a compatibility issue
- Significantly improved the PlaceholderAPI hook, courtesy of @Rubenicos (#463)
- All the current_location_town and town_leaderboard_{type}_{index} placeholders now can get an extensive town information, like mayor, members, member_count, claim_count, max_claims, max_members, crop_growth_rate, mob_spawner_rate, money, money_formatted, level_up_cost, level, max_level.
- New money_formatted placeholder to get town money with a short formatting method, for example 1003000 will be converted to 1M3k.
- Leaderboard placeholders now can be parsed without providing a player.
- Fixed the WorldGuard hook failing to initialize in most cases, courtesy of @ProdPreva1l (#468)
- Fixed calculated flags not caching correctly, causing performance regressions (#458)
- Removed the "brigadier tab completion" and commodore support. A better solution will be implemented in the future.
To update, just drag+drop.
HuskTowns 3.0.4 fixes a critical bug in the previous release, v3.0.3.
- Fixed town claims failing to persist in 3.0.3
To update, just drag+drop.
HuskTowns 3.0.3 improves plugin performance and adds a WorldGuard hook.
- Significantly improved claim caching for faster lookups. This should have considerable performance improvements for larger servers.
- Added WorldGuard API hook for land claim prevention, courtesy of @ProdPreva1l (#435)
- Added config options for changing chat characters used in the town map, courtesy of @ProdPreva1l (#427)
- Updated the Simplified Chinese (zh-cn) locales, courtesy of @jhqwqmc and @MSCMDD (#421, #426, #439)
- Fixed some missing startup error trace logging
To update, just drag+drop.
- Fixed a NullPointerException related to flag caching.
HuskTowns 3.0.1 fixes a few issues present in the previous release.
- Fixed passive mobs failing to spawn
- Fixed friendly fire not being prevented even if the setting was enabled
- A new locale has been added for describing that players cannot damage town members/allies
- The
MONSTER_SPAWNING
default flag now also restricts the passive mob spawning operation type if disabled- It has been renamed "Mob Spawning" in the locale file
- Feel free to create your own custom flags in flags.yml if you want to edit this
- Fixed performance issues caused by passive mob spawning checks (#412)
- Fixed performance issues when using the LuckPerms context hook (#289)
- Calculated flag and rule maps are now cached to improve system performance
To update, drag+drop. If you haven't modified it, you may wish to regenerate your flags.yml
. You should also regenerate your messages-xx-xx.yml
file.
Please note, as announced on Discord, starting with this release support for Minecraft 1.16 and Java 16 has been dropped. HuskTowns now requires Java 17 / Minecraft 1.17.1 as a minimum.
HuskTowns 3.0 is a major version release that makes breaking changes to the developer API. Please make sure your plugins that depend on HuskTowns have been updated to support HuskTowns API v3 — for developers, this should be quite easy, but it is a breaking change nonetheless. A few other bug fixes and locale updates have been made for this release, requiring a locale file regeneration.
- Improved the way config files are loaded. Config validation on startup will now be more strict.
- Added Korean (ko-kr) locales, courtesy of awrwag
- Updated the Simplified Chinese (zh-cn) locales, courtesy of @jhqwqmc (#392)
- Updated the Spanish (es-es) locales, courtesy of @pipearaneda
- Fixed a bug that meant servers using a MySQL/MariaDB database that encountered a startup problem involving the loading of town data would not properly terminate plugin initialization.
- Fixed a bug where issues with the serialization of Map objects in Towns would not be correctly handled were a duplicate key to be inserted into them
- API: API v2 (and the original deprecated API v1) have been removed.
- The way the HuskTowns API is published has been changed: APIs are now published per-platform; husktowns-bukkit and husktowns-common can now be targeted.
- Simply update your build scripts to target the net.william278.husktowns:husktowns-bukkit artifact
- HuskTownsAPI is no longer an abstract class; you can now retrieve an instance of the base class with HuskTownsAPI.getInstance()
- HuskTowns now uses ClopLib
- The built-in Operation.Type is now OperationType.
- Operation and OperationType now live in the net.william278.husktowns.libraries.cloplib package.
- This is the same system in use on my other plugin, HuskClaims.
Added API methods for getting a player's Privilege.Fully documented the API (at last!).
To update from v2.6.x, just drag+drop and regenerate your locales file (messages-xx-xx). You should not need to touch your other config files unless they are very outdated (regenerate it if so!)
HuskTowns 2.6.1 fixes bugs introduced in the last release (particularly with the War module), and updates compatibility with 1.20.4.
- The plugin will now use the native adventure implementation on Paper servers, improving support for future MC versions and adding support for 1.20.4.
- Fixed an exception generating map hook chunk highlights for towns with UTF-8 names (#375)
- Fixed bucket fill and empty operation handlers checking against the wrong event
Block
, letting users place fluids on claim edges (#383) - Fixed war wagers not being subtracted at start, meaning towns got paid more than the sum of wagers (#380)
- Fixed war win-check logic being inverse when determining who won a war by alive members (#379)
- Fixed a
NullPointerException
being thrown when trying to modify the relations map of a town migrated from <2.6 due to the migrator not instantiating a newMap
. - Fixed wartime flags being applied to users other than active battle participants (#378)
To update from v2.6, just drag+drop. Check the v2.6 patch notes if you're uploading from an earlier version for instructions—you'll want to regenerate your config files!
Note: To upgrade to this release from v2.5.x and earlier, please regenerate your
config.yml
andmessages-xx-xx.yml
files. If you haven't modified them from the previous default, you should also regeneraterules.yml
androles.yml
; otherwise, don't forget to add the new wartime rules / action privileges to their respective files!
HuskTowns 2.6 is a major release of HuskTowns adding Town Relations (ON by default), Town Wars (OFF by default), and several useful quality-of-life features for both players and admins. It also fixes a number of bugs, adds a new API event, and updates locales.
- Added Town Relations (#334)
- Towns can now mark other towns as an "ally" or "enemy" to manage a list of relations
- Command for managing relations is
/town relations [list (town)|set <ally|neutral|enemy> <other_town>]
- The
MANAGE_RELATIONS
privilege (default role: Trustee) is required to manage town relations. - This system can be turned off in
config.yml
. It is ON by default.
- Added Town Wars. This feature is currently experimental and a work-in-progress — please send in your feedback! (#334)
- Allows towns which have marked each other as an "enemy" to go to war
- Command for managing war is
/town war <accept|declare|surrender|view>
- This system can be turned on in
config.yml
. It is OFF by default, and requires town relations to also be ON. - A town can declare war on another town, and specify a wager; the victor of the war will have the wager added to their coffers
- War declarations work cross-server, but the war battle itself will take place on the server the defending town's spawn is set.
- The
DECLARE_WAR
privilege (default role: Mayor) is required to send or accept declarations of war. - When a war declaration is accepted, the town that declared war will be teleported. All members of the defending town will be teleported to their spawn.
- Participants in a war are removed from the war if they are killed (or otherwise die) and if they leave a configurable radius of the defending town's spawn.
- During a war, special war flags apply on the defending town's claims. You can customize these flags depending on your particular flavor of chaos — allow full destruction, or lock down to just allowing PvP!
- A town loses a war if they no longer have any online war participants. If three hours elapse or if the server restarts, the war will be declared a stalemate (both towns will lose their wager if this occurs). Towns can also surrender a war with
/town war surrender
. - The status of a war is displayed in the Boss Bar (which will display the remaining war participants to defeat) as well as in the war overview menu
/town war
(which will show a text-based graphic bar indicating the current balance of an active war) - A town cannot declare war again for another 48 hours (this cooldown is configurable)
- Added a new admin command for managing town balances:
/admintown balance
- Lets admins set, add, or remove money from the coffers of towns
- Add town points as fallback currency for servers without Vault (#342)
- If Vault is not installed/detected, the currency used for towns will be an integer-based "Town Points" (example format:
100pts
) - Town points can be added to towns with
/admintown balance (add|remove|set)
- Town points can also be earned as part of advancement rewards
- This lets servers not using an economy use HuskTowns standalone and award points to towns through other means, to allow towns to level up
- If Vault is not installed/detected, the currency used for towns will be an integer-based "Town Points" (example format:
- Town members can now self-claim vacant plots (#369)
- To do so, members can simply stand in a vacant town plot and type
/town plot claim
- This will add them to the plot as a manager
- Requires the
CLAIM_PLOT
privilege (default role: Member)
- To do so, members can simply stand in a vacant town plot and type
- The
/town census
menu will now show if a member is online- Online members will appear green in the census list, and you can hover to view their online status
- This also works on cross-server setups; Redis is recommended for this feature in particular!
- The plugin will now automatically create a backup of the SQLite database on startup (#368)
- Updated the Simplified Chinese (zh-cn) locales, courtesy of @MSCMDD (#345, #370)
- Fixed the plugin not restricting interactions when a player was holding an item that had been deactivated (e.g. Ender Pearls on cooldown, Shields disabled with an axe attack) (#351)
- Fixed no message being displayed when attempting to level-up a town when the town had already reached the max level.
- API: Added a
PostTownCreateEvent
, to let you handle when a town has been created. (#336) - API: Fixed the user involved in the
MemberJoinEvent
,MemberLeaveEvent
,MemberRoleChangeEvent
andMemberRoleChangeEvent
, courtesy of @thomasz05
To update, drag+drop and regenerate your config files. You should regenerate your config.yml
and messages-xx-xx.yml
files. If you haven't modified them from the previous default, you should also regenerate rules.yml
and roles.yml
; otherwise, don't forget to add the new wartime rules / action privileges to their respective files!
Thank you, and enjoy!
HuskTowns 2.5.4 adds an /admintown setlevel command, makes a range of bug fixes, and adds a few new API methods for developers.
- Added a new /admintown setlevel command to let administrators manually set the level of a town
- Usage: /admintown setlevel <town> <level> (where level is between 1 and the maximum configured level)
- Permission node:husktowns.command.admintown.setlevel
- The /town level command will now prompt you for confirmation with the cost needed to level-up before levelling up a town (#37)
- Added the next level cost to the town overview screen (it is shown when hovering over the town's current level) (#218)
- Added a new operation type: ENDER_PEARL_TELEPORT. This restricts the teleportation into claims using ender pearls or chorus fruit (#313)
- Right clicking a sign will now be restricted unless you have the block place permission, to prevent players from editing signs in claims (#321)
- Players will now be removed from town chat mode when leaving or being evicted from a town (#316)
- Fixed an issue where operation checks carried out for the PlaceholderAPI hook would occur verbosely, sending a chat message (#312)
- Fixed an issue where editing the town rules would sometimes not be possible occasions due to the rules map being generated with an immutable map (#311)
- Fixed an issue where the projectiles of shooting monsters could not damage players in claims (#315)
- Added Russian (ru-ru) locales, courtesy of ADAMADA8 (#309)
- API: Added various methods to highlight chunk(s) with particle effects (#319)
- API: Exposed methods for generating chat claim maps (#320)
To update, you should regenerate just your locale files. Thank you!
HuskTowns 2.5.3 adds support for Pl3xMap, adds a few new configuration features, and fixes several bugs. It also makes a small API change related to town colors.
- Added support for hooking with Pl3xMap (v3) to display town claims on your map, courtesy of @CoolDCB (#303)
- Added the ability to specify the regex filters used for restricting town names. (#305)
- Town names now only accept alphanumeric characters, underscores, and hyphens by default
- The configuration options for this have changed. Please regenerate your config or check the docs for the new settings
- The color picker now uses a horizontal pipe (|) as the swatch for better 1.20.1+ Unifont legibility
- The default "flag enabled" locale (used in the /town rules menu) has been changed to ☑ (a checkmark) to better express that it means a flag is enabled
- Commands are now also registered dynamically for server still running Spigot (as opposed to Paper servers)
- Fixed an issue where the town color command would not correctly work depending on the system environment the server was running on (#304)
- Fixed an issue where the monster spawning flag would not correctly prevent monsters from spawning when disabled (#283)
- Fixed a NoSuchElementCheck exception that could sometimes appear in the server console if Town Advancements were disabled
- API: Town colors are now represented using adventure TextColors instead of java.awt.Color objects.
- The #getColor() method on the Town object has been deprecated as of this release; please use the new #getTextColor() method instead
To update, you should regenerate just your config and locale files. Thank you!
HuskTowns 2.5.2 adds support for MariaDB and makes a few bug fixes, including a critical fix for town advancement users.
- Added support for MariaDB (#300)
- Fixed money and level town advancement reward distribution systems being swapped (#302)
- The "Tax Deductible" town advancement would attempt to reward towns 1000 levels instead of 1000 units of currency when depositing, causing towns to jump to max level when an advancement check occurred
- Fixed an issue that meant the unique depositors advancement condition was not being calculated correctly
- Fixed the database not having the schema version set after initialization for the first time, causing a warning to appear in console the first time the server would be restarted
- Fixed various config options, such as the database type, requiring capitalization and throwing an error if they were slightly off
- Updated some internal logic to prepare for supporting Folia (Full folia support is not yet implemented.)
- Added French (fr-fr) locales, courtesy of XeroYT
To update from 2.5.1, just drag+drop.
HuskTowns 2.5.1 fixes a few bugs found in the previous release. Please note support for RedisEconomy has been dropped starting with this release.
- Removed the RedisEconomy hook due to instability
- Fixed players not being able to kill monsters that randomly spawn with armor in farm chunks (#277)
- Attempted a fix for an issue that meant monsters could still spawn even when the flag to disable spawning was set (#280)
- Fixed pillagers being able to shoot projectiles that could destroy armor stands, item frames, etc. (#281)
To update from 2.5, just drag+drop.
HuskTowns 2.5 adds the ability to customize the town flags through a new flags.yml
file and fixes a few bugs.
- Add support for customizing town flags (#273)
- A new
flags.yml
config file will be generated on startup - Flags defined by ID in this file can then be mapped to default values for each claim type in your
rules.yml
file. - Note that existing towns will not assume new defaults added to the rule presets later on (and flags in this file will only be displayed in
/town rules
if a default has been applied); provided users have permission, users must apply the flags manually to their town with/town rules <claim_type> <name> <true/false>
- Servers should have the same flag set configured -- but if there's a mismatch, missing flags will simply go ignored and not be displayed in /town rules.
- You can define display names for flags by adding them to your locales file
- A new
- Fixed an issue where monsters could not be killed by town members due to the wrong persistence check being performed (#272)
- Added PLAYER_INTERACT_BLOCK into the set of allowed actions for
public_farm_access
to fix an issue where placing crops would be cancelled by the surface player interact check - Fixed an issue where interacting with an item in the off hand would display an error if the operation were to be denied instead of this happening when interacting with the main hand
- Fixed an issue that may occur on some paper forks where dependencies would not correctly load due to an incorrect config default on some paper 1.19.4 implementations (note this may not fix compatibility with Purpur 1.19.4, but has been done anyway)
- API: New methods for getting and registering flags to the flag map have been added. Old
Flag.NAME
enumerations have been deprecated, though it's not anticipated that this introduces any breaking API changes.
To update, just drag+drop, as there's no config changes—you should see a new rules.yml
config appear, which you can edit if you wish. Once again, please use the latest build of Paper if you're still on 1.19.4 and note that some forks will not be compatible due to paper-plugin yaml schema changes. All other versions are unaffected.
HuskTowns 2.4 adds the ability to automatically prune inactive claims, re-adds the /town player command, and makes a significant number of minor bug fixes and improvements.
- Added the ability to prune inactive claims, both automatically and through a command (#255)
- The command to do this is
/admintown prune <time> [confirm]
, requiring thehusktowns.command.admintown.prune
permission node - You can also configure this to be done automatically on startup (this is off by default); a new section has been added to the config file letting you enable this and set a number of days before this occurs
- The command to do this is
- Re-added the
/town player <name>
command (alias:/town who
), requiring thehusktowns.command.town.player
permission node, which tells you which town a player is in and the role they have in that town. - Improved the boosted crop growth and mob spawning rate system (#268)
- Fixed issues with the rate calculations that prevented this system from properly working
- Added purple particle effects whenever a crop is grown faster or extra mob is spawned thanks to a boosted growth rate chance (you can configure which particle to use and/or turn this off in the config file)
- The numbers accepted for crop/mob rate boosts now accept full 100-point-scale percentage values instead of decimal values
- Added four new placeholders for crop/mob rate boosts; two for the player's town, and two for the town who owns the claim the player is standing in (#266)
- Added new locales for the
/town list
key sort option buttons (#267) - Made it so entering a town name with a space in it will now cancel the town creation with a validation error message, instead of just creating a town with the first part of the user's entry before the space (#208)
- Added more comments across the different plugin config files to improve the setup and configuration experience
- Updated the
special_types
file to contain new 1.20 plants, and added seeds to the crop list to let players properly replant in farms - Fixed
/admintown bonus
and/town unclaim all
not TAB completing correctly - Fixed
/admintown unclaim all
missing a confirmation step in certain circumstances, causing users to delete their own town's claims
To update to this release, it's strongly reccommended that you regenerate both your config.yml
, messages-xx-xx.yml
and especially your levels.yml
files. When you do so, be sure to make a copy of the files and re-enter any changes you made to the default config (except changes to the percentage values for crop/mob boosts, as detailed previously). This build introduces database changes, and migrations will automatically be carried out on startup—you may wish to take a backup of your database however just in case.
Please note this release is not compatible with Purpur 1.19.4; this is because the last build of Purpur for that version does not include a correct implementation of paper-plugin.yml schema changes made in the last builds of Paper for 1.19.4. As a result, if you're running Paper on 1.19.x, make sure you download the latest Paper version.
Thank you!