diff --git a/Towny/pom.xml b/Towny/pom.xml index 220d5e400a..fa5c6b4e96 100644 --- a/Towny/pom.xml +++ b/Towny/pom.xml @@ -13,7 +13,7 @@ towny jar - 0.100.0.14 + 0.100.0.18 @@ -172,12 +172,12 @@ net.kyori adventure-text-serializer-plain - 4.14.0 + 4.15.0 net.kyori adventure-text-minimessage - 4.14.0 + 4.15.0 org.bstats @@ -277,7 +277,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.1 8 ${java.version} diff --git a/Towny/src/main/java/com/palmergames/bukkit/config/ConfigNodes.java b/Towny/src/main/java/com/palmergames/bukkit/config/ConfigNodes.java index 30b5441a4f..0b7c2eb286 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/config/ConfigNodes.java +++ b/Towny/src/main/java/com/palmergames/bukkit/config/ConfigNodes.java @@ -75,6 +75,8 @@ public enum ConfigNodes { ""), LEVELS_TOWN_LEVEL("levels.town_level", "", "", "# Guide On How to Configure: https://github.com/TownyAdvanced/Towny/wiki/How-Towny-Works#configuring-town_level-and-nation_level"), LEVELS_NATION_LEVEL("levels.nation_level", "", "", "# Guide On How to Configure: https://github.com/TownyAdvanced/Towny/wiki/How-Towny-Works#configuring-town_level-and-nation_level"), + + TOWN( "town", "", @@ -82,7 +84,7 @@ public enum ConfigNodes { "", "############################################################", "# +------------------------------------------------------+ #", - "# | Town Claim/new defaults | #", + "# | New Town Defaults | #", "# +------------------------------------------------------+ #", "############################################################", ""), @@ -159,176 +161,8 @@ public enum ConfigNodes { "# A required minimum tax amount for the default_tax, will not change any towns which already have a tax set.", "# Do not forget to set the default_tax to more than 0 or new towns will still begin with a tax of zero.", "# This setting has no effect when negative taxes are allowed."), - TOWN_MAX_PURCHASED_BLOCKS( - "town.max_purchased_blocks", - "0", - "", - "# Limits the maximum amount of bonus blocks a town can buy.", - "# This setting does nothing when town.max_purchased_blocks_uses_town_levels is set to true."), - TOWN_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS( - "town.max_purchased_blocks_uses_town_levels", - "true", - "", - "# When set to true, the town_level section of the config determines the maximum number of bonus blocks a town can purchase."), - TOWN_MAX_PLOTS_PER_RESIDENT( - "town.max_plots_per_resident", - "100", - "", - "# maximum number of plots any single resident can own"), - TOWN_MAX_CLAIM_RADIUS_VALUE( - "town.max_claim_radius_value", - "4", - "", - "# maximum number used in /town claim/unclaim # commands.", - "# set to 0 to disable limiting of claim radius value check.", - "# keep in mind that the default value of 4 is a radius, ", - "# and it will allow claiming 9x9 (80 plots) at once."), - TOWN_MAX_BUYTOWN_PRICE( - "town.max_buytown_price", - "999999999", - "", - "# The Maximum price that a town can be put for sale at. This refers to the price that", - "# someone could pay if they ran /t buytown, to buy a town that has been put up for sale."), - - TOWN_OVERCLAIMING_ROOT("town.overclaiming", "", "", ""), - TOWN_OVER_ALLOWED_CLAIM_LIMITS_ALLOWS_STEALING_LAND( - "town.overclaiming.being_overclaimed_allows_other_towns_to_steal_land", - "false", - "", - "# A feature that allows towns which have too many townblocks claimed (overclaimed) ie: 120/100 TownBlocks, ", - "# to have their land stolen by other towns which are not overclaimed. Using this incentivises Towns to keep", - "# their residents from leaving, and will mean that mayors will be more careful about which land they choose", - "# to claim.", - "# Overclaiming does not allow a town to be split into two separate parts, requiring the Town that is stealing", - "# land to work from the outside inwards.", - "# It is highly recommended to only use this on servers where outposts are disabled, and requiring ", - "# a number of adjacent claims over 1 is enabled.", - "# Towns take land using /t takeoverclaim."), - TOWN_OVERCLAIMING_PREVENTED_BY_HOMEBLOCK_RADIUS( - "town.overclaiming.overclaiming_prevented_by_homeblock_radius", - "true", - "", - "# While true, overclaiming is stopped by the min_distance_from_town_homeblock setting below.", - "# This prevents a town from having townblocks stolen surrounding their homeblocks."), - TOWN_OVERCLAIMING_TOWN_AGE_REQUIREMENT( - "town.overclaiming.town_age_requirement", - "7d", - "", - "# When in use, requires that a town be of a minimum age in order to overclaim another town. This prevents new towns being made just to overclaim someone.", - "# Default is for 7 days."), - TOWN_OVERCLAIMING_COMMAND_COOLDOWN( - "town.overclaiming.command_cooldown", - "0m", - "", - "# When in use, requires an amount of time to pass before the /t takeoverclaim command can be used again."), - - TOWN_LIMIT( - "town.town_limit", - "3000", - "", - "# Maximum number of towns allowed on the server."), - TOWN_MAX_DISTANCE_FOR_MERGE( - "town.max_distance_for_merge", - "10", - "", - "# The maximum distance (in townblocks) that 2 town's homeblocks can be to be eligible for merging."), - TOWN_MIN_DISTANCE_IGNORED_FOR_NATIONS( - "town.min_distances_ignored_for_towns_in_same_nation", - "true", - "", - "# If true, the below settings: min_plot_distance_from_town_plot and min_distance_from_town_homeblock", - "# will be ignored for towns that are in the same nation. Setting to false will keep all towns separated the same."), - TOWN_MIN_DISTANCE_IGNORED_FOR_ALLIES( - "town.min_distances_ignored_for_towns_in_allied_nation", - "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 mutually allied. Setting to false will keep all towns separated the same."), - TOWN_MIN_PLOT_DISTANCE_FROM_TOWN_PLOT( - "town.min_plot_distance_from_town_plot", - "5", - "", - "# Minimum number of plots any towns plot must be from the next town's own plots.", - "# Put in other words: the buffer area around every claim that no other town can claim into.", - "# Does not affect towns which are in the same nation.", - "# This will prevent town encasement to a certain degree."), - TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK( - "town.min_distance_from_town_homeblock", - "5", - "", - "# Minimum number of plots any towns home plot must be from the next town.", - "# Put in other words: the buffer area around every homeblock that no other town can claim into.", - "# Does not affect towns which are in the same nation.", - "# This will prevent someone founding a town right on your doorstep"), - TOWN_MIN_DISTANCE_FOR_OUTPOST_FROM_PLOT( - "town.min_distance_for_outpost_from_plot", - "5", - "", - "# Minimum number of plots an outpost must be from any other town's plots.", - "# Useful when min_plot_distance_from_town_plot is set to near-zero to allow towns to have claims", - "# near to each other, but want to keep outposts away from towns."), - TOWN_MAX_DISTANCE_FOR_OUTPOST_FROM_TOWN_PLOT( - "town.max_distance_for_outpost_from_town_plot", - "0", - "", - "# Set to 0 to disable. When above 0 an outpost may only be claimed within the given number of townblocks from a townblock owned by the town.", - "# Setting this to any value above 0 will stop outposts being made off-world from the town's homeworld.", - "# Do not set lower than min_distance_for_outpost_from_plot above."), - TOWN_MIN_DISTANCE_BETWEEN_HOMEBLOCKS( - "town.min_distance_between_homeblocks", - "0", - "", - "# Minimum distance between homeblocks."), - TOWN_MAX_DISTANCE_BETWEEN_HOMEBLOCKS( - "town.max_distance_between_homeblocks", - "0", - "", - "# Maximum distance between homeblocks.", - "# This will force players to build close together."), - TOWN_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_PLOT( - "town.new_town_min_distance_from_town_plot", - "-1", - "", - "# The minimum distance that a new town must be from nearby towns' plots.", - "# When set to -1, this will use the value of the min_plot_distance_from_town_plot option."), - TOWN_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK( - "town.new_town_min_distance_from_town_homeblock", - "-1", - "", - "# The minimum distance that a new town must be from nearby towns' homeblocks.", - "# When set to -1, this will use the value of the min_distance_from_town_homeblock setting."), - TOWN_TOWN_BLOCK_RATIO( - "town.town_block_ratio", - "8", - "", - "# The maximum townblocks available to a town is (numResidents * ratio).", - "# Setting this value to 0 will instead use the level based jump values determined in the town level config.", - "# Setting this to -1 will result in every town having unlimited claims."), - TOWN_TOWN_BLOCK_LIMIT( - "town.town_block_limit", - "0", - "", - "# The maximimum amount of townblocks a town can have, if town_block_ratio is 0 the max size will be decided by the town_levels.", - "# Set to 0 to have no size limit."), - TOWN_TOWN_BLOCK_SIZE( - "town.town_block_size", - "16", - "", - "# The size of the square grid cell. Changing this value is suggested only when you first install Towny.", - "# Doing so after entering data will shift things unwantedly. Using smaller value will allow higher precision,", - "# at the cost of more work setting up. Also, extremely small values will render the caching done useless.", - "# Each cell is (town_block_size * town_block_size * height-of-the-world) in size, with height-of-the-world", - "# being from the bottom to the top of the build-able world."), - TOWN_MIN_ADJACENT_BLOCKS( - "town.min_adjacent_blocks", - "-1", - "", - "# The minimum adjacent town blocks required to expand.", - "# This can prevent long lines and snake-like patterns.", - "# Set to -1 to disable. Set to 3 to force wider expansions of towns."), - NATION("nation", "", "", "", "############################################################", "# +------------------------------------------------------+ #", @@ -382,6 +216,8 @@ public enum ConfigNodes { "100", "", "# The maximum amount of money that can be charge by a nation on their conquered towns."), + + NWS( "new_world_settings", "", @@ -401,7 +237,6 @@ public enum ConfigNodes { "# #", "############################################################", ""), - NWS_WORLD_USING_TOWNY("new_world_settings.using_towny", "true", "# Do new worlds have Towny enabled by default?", "# You can adjust this setting for an existing world using /townyworld toggle usingtowny"), @@ -411,7 +246,6 @@ public enum ConfigNodes { "# Are new worlds claimable by default?", "# Setting this to false means that Towny will still be active but no land can be claimed by towns.", "# You can adjust this setting for an existing world using /townyworld toggle claimable"), - NWS_WORLD_PVP_HEADER("new_world_settings.pvp", "", ""), NWS_WORLD_PVP( "new_world_settings.pvp.world_pvp", @@ -439,7 +273,6 @@ public enum ConfigNodes { "", "# Do new worlds have their war_allowed enabled by default?", "# You can adjust this setting for an existing world using /townyworld toggle warallowed"), - NWS_WORLD_MONSTERS_HEADER("new_world_settings.mobs", "", ""), NWS_WORLD_MONSTERS_ON( "new_world_settings.mobs.world_monsters_on", @@ -459,7 +292,6 @@ public enum ConfigNodes { "# Do new worlds have force_town_monsters_on enabled by default?", "# This setting overrides a towns' setting.", "# You can adjust this setting for an existing world using /townyworld toggle townmobs"), - NWS_WORLD_EXPLOSION_HEADER("new_world_settings.explosions", "", ""), NWS_WORLD_EXPLOSION( "new_world_settings.explosions.world_explosions_enabled", @@ -473,7 +305,6 @@ public enum ConfigNodes { "# Do new worlds have force_explosions_on enabled by default.", "# This setting overrides a towns' setting, preventing them from turning explosions off in their town.", "# You can adjust this setting for an existing world using /townyworld toggle forceexplosion"), - NWS_WORLD_FIRE_HEADER("new_world_settings.fire", "", ""), NWS_WORLD_FIRE( "new_world_settings.fire.world_firespread_enabled", @@ -487,25 +318,21 @@ public enum ConfigNodes { "# Do new worlds have force_fire_on enabled by default?", "# This setting overrides a towns' setting.", "# You can adjust this setting for an existing world using /townyworld toggle forcefire"), - NWS_WORLD_ENDERMAN( "new_world_settings.enderman_protect", "true", "", "# Do new worlds prevent Endermen from picking up and placing blocks, by default?"), - NWS_DISABLE_CREATURE_CROP_TRAMPLING( "new_world_settings.disable_creature_crop_trampling", "true", "", "# Do new worlds disable creatures trampling crops, by default?"), - NWS_PLOT_MANAGEMENT_HEADER( "new_world_settings.plot_management", "", "", "# World management settings to deal with un/claiming plots"), - NWS_PLOT_MANAGEMENT_DELETE_HEADER( "new_world_settings.plot_management.block_delete", "", @@ -521,7 +348,6 @@ public enum ConfigNodes { "BEDS,TORCHES,REDSTONE_WIRE,SIGNS,DOORS,PRESSURE_PLATES", "", "# These items will be deleted upon a plot being unclaimed"), - NWS_PLOT_MANAGEMENT_ENTITY_DELETE_HEADER( "new_world_settings.plot_management.entity_delete", "", @@ -536,7 +362,6 @@ public enum ConfigNodes { "", "# These entities will be deleted upon a plot being unclaimed.", "# Valid EntityTypes can be found here: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html"), - NWS_PLOT_MANAGEMENT_MAYOR_DELETE_HEADER( "new_world_settings.plot_management.mayor_plotblock_delete", "", @@ -553,7 +378,6 @@ public enum ConfigNodes { "", "# These items will be deleted upon a mayor using /plot clear", "# To disable deleting replace the current entries with NONE."), - NWS_PLOT_MANAGEMENT_REVERT_HEADER( "new_world_settings.plot_management.revert_on_unclaim", "", @@ -594,7 +418,6 @@ public enum ConfigNodes { "# useful when you allow players to build/destroy in the wilderness.", "# Like other options in the new_world_settings section, this is only applied as a default setting for new worlds.", "# Configure the list found in the towny\\data\\worlds\\WORLDNAME.txt files."), - NWS_PLOT_MANAGEMENT_WILD_MOB_REVERT_HEADER( "new_world_settings.plot_management.wild_revert_on_mob_explosion", "", @@ -636,7 +459,7 @@ public enum ConfigNodes { "new_world_settings.plot_management.wild_revert_on_explosion_block_whitelist", "", "# The list of blocks to regenerate. (if empty all blocks will regenerate)"), - + GTOWN_SETTINGS( "global_town_settings", @@ -649,6 +472,17 @@ public enum ConfigNodes { "# +------------------------------------------------------+ #", "############################################################", ""), + GTOWN_SETTINGS_LIMIT( + "global_town_settings.town_limit", + "3000", + "", + "# Maximum number of towns allowed on the server."), + GTOWN_SETTINGS_MAX_DISTANCE_FOR_MERGE( + "global_town_settings.max_distance_for_merge", + "10", + "", + "# The maximum distance (in townblocks) that 2 town's homeblocks can be to be eligible for merging."), + GTOWN_SETTINGS_HEALTH_REGEN( "global_town_settings.health_regen", "", @@ -658,127 +492,7 @@ public enum ConfigNodes { GTOWN_SETTINGS_REGEN_ENABLE( "global_town_settings.health_regen.enable", "true"), - GTOWN_SETTINGS_ALLOW_OUTPOSTS( - "global_town_settings.allow_outposts", - "true", - "", - "# Allow towns to claim outposts (a townblock not connected to town)."), - GTOWN_SETTINGS_LIMIT_OUTPOST_USING_LEVELS( - "global_town_settings.limit_outposts_using_town_and_nation_levels", - "false", - "", - "# When set to true outposts can be limited by the townOutpostLimit value of the Town Levels and", - "# the nationBonusOutpostLimit value in the Nation Levels. In this way nations can be made to be", - "# the only way of receiving outposts, or as an incentive to receive more outposts. Towns which are", - "# larger can have more outposts.", - "# When activated, this setting will not cause towns who already have higher than their limit", - "# to lose outposts. They will not be able to start new outposts until they have unclaimed outposts", - "# to become under their limit. Likewise, towns that join a nation and receive bonus outposts will", - "# be over their limit if they leave the nation."), - GTOWN_SETTINGS_OVER_OUTPOST_LIMIT_STOP_TELEPORT( - "global_town_settings.over_outpost_limits_stops_teleports", - "false", - "", - "# When limit_outposts_using_town_and_nation_levels is also true, towns which are over their outpost", - "# limit will not be able to use their /town outpost teleports for the outpost #'s higher than their limit,", - "# until they have dropped below their limit.", - "# eg: If their limit is 3 then they cannot use /t outpost 4"), - GTOWN_SETTINGS_ALLOW_TOWN_SPAWN( - "global_town_settings.allow_town_spawn", - "true", - "", - "# Allow the use of /town spawn", - "# Valid values are: true, false, war, peace", - "# When war or peace is set, it is only possible to teleport to the town,", - "# when there is a war or peace."), - GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL( - "global_town_settings.allow_town_spawn_travel", - "true", - "", - "# Allow regular residents to use /town spawn [town] (TP to other towns 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 town,", - "# when there is a war or peace."), - GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL_NATION( - "global_town_settings.allow_town_spawn_travel_nation", - "true", - "", - "# Allow regular residents to use /town spawn [town] to other towns in your nation.", - "# Valid values are: true, false, war, peace", - "# When war or peace is set, it is only possible to teleport to the town,", - "# when there is a war or peace."), - GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL_ALLY( - "global_town_settings.allow_town_spawn_travel_ally", - "true", - "", - "# Allow regular residents to use /town spawn [town] to other towns in a nation allied with your nation.", - "# Valid values are: true, false, war, peace", - "# When war or peace is set, it is only possible to teleport to the town,", - "# when there is a war or peace."), - GTOWN_SETTINGS_IS_ALLY_SPAWNING_REQUIRING_PUBLIC_STATUS( - "global_town_settings.is_nation_ally_spawning_requiring_public_status", - "false", - "", - "# When set to true both nation and ally spawn travel will also require the target town to have their status set to public."), - GTOWN_SETTINGS_IS_TRUSTED_RESIDENTS_COUNT_AS_RESIDENTS( - "global_town_settings.do_trusted_residents_count_as_residents", - "false", - "", - "# When set to true, a player that is trusted by a town is allowed to spawn to the town as if they were a resident.", - "# Allows allows the residents of entire an town when that town is trusted by the town."), - GTOWN_SETTINGS_IS_NEW_RESIDENT_PROMPTED_TO_SPAWN( - "global_town_settings.are_new_residents_prompted_to_town_spawn", - "false", - "", - "# When a resident joins a town, should they be prompted to use spawn to the town?", - "# This requires them to not already be standing in the town, and also to be able to use /t spawn and whatever costs may be associated with it."), - GTOWN_SETTINGS_SPAWN_TIMER( - "global_town_settings.teleport_warmup_time", - "0", - "", - "# If non zero it delays any spawn request by x seconds."), - GTOWN_SETTINGS_MOVEMENT_CANCELS_SPAWN_WARMUP( - "global_town_settings.movement_cancels_spawn_warmup", - "false", - "", - "# When set to true, if players are currently in a spawn warmup, moving will cancel their spawn."), - GTOWN_SETTINGS_DAMAGE_CANCELS_SPAWN_WARMUP( - "global_town_settings.damage_cancels_spawn_warmup", - "false", - "", - "# When set to true, if players are damaged in any way while in a spawn warmup, their spawning will be cancelled."), - GTOWN_SETTINGS_COOLDOWN_ROOT( - "global_town_settings.spawning_cooldowns", "", ""), - GTOWN_SETTINGS_SPAWN_COOLDOWN_TIMER( - "global_town_settings.spawning_cooldowns.town_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player can use /t spawn or /res spawn."), - GTOWN_SETTINGS_OUTPOST_COOLDOWN_TIMER( - "global_town_settings.spawning_cooldowns.outpost_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player can use /t outpost."), - GTOWN_SETTINGS_NATION_MEMBER_COOLDOWN_TIMER( - "global_town_settings.spawning_cooldowns.nation_member_town_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player of the same nation can use /t spawn."), - GTOWN_SETTINGS_NATION_ALLY_COOLDOWN_TIMER( - "global_town_settings.spawning_cooldowns.nation_ally_town_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player in an allied nation can use /t spawn."), - GTOWN_SETTINGS_UNAFFILIATED_COOLDOWN_TIMER( - "global_town_settings.spawning_cooldowns.unaffiliated_town_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player who is not a member or ally of town can use /t spawn."), - GTOWN_SETTINGS_SPAWN_WARNINGS( - "global_town_settings.spawn_warnings", - "true", - "", - "# Decides whether confirmations should appear if you spawn to an area with an associated cost."), + GTOWN_SETTINGS_PVP_COOLDOWN_TIMER( "global_town_settings.pvp_cooldown_time", "30", @@ -801,47 +515,6 @@ public enum ConfigNodes { "0", "", "# Number of seconds that must pass before a town that has unclaimed a townblock can claim it again."), - - GTOWN_SETTINGS_TOWN_RESPAWN( - "global_town_settings.town_respawn", - "false", - "", - "# When true Towny will handle respawning, with town or resident spawns."), - GTOWN_SETTINGS_RESPAWN_PROTECTION_ROOT("global_town_settings.respawn_protection", "", ""), - GTOWN_SETTINGS_RESPAWN_PROTECTION_TIME( - "global_town_settings.respawn_protection.time", - "10s", - "", - "# When greater than 0s, the amount of time a player who has respawned is considered invulnerable.", - "# Invulnerable players who attack other players will lose their invulnerability.", - "# Invulnerable players who teleport after respawn will also lose their invulnerability."), - GTOWN_SETTINGS_RESPAWN_PROTECTION_ALLOW_PICKUP( - "global_town_settings.respawn_protection.allow_pickup", - "true", - "", - "# If disabled, players will not be able to pickup items while under respawn protection."), - GTOWN_SETTINGS_TOWN_RESPAWN_SAME_WORLD_ONLY( - "global_town_settings.town_respawn_same_world_only", - "false", - "", - "# Town respawn only happens when the player dies in the same world as the town's spawn point."), - GTOWN_SETTINGS_PREVENT_TOWN_SPAWN_IN( - "global_town_settings.prevent_town_spawn_in", - "enemy,outlaw", - "", - "# Prevent players from using /town spawn while within unclaimed areas and/or enemy/neutral towns.", - "# Allowed options: unclaimed,enemy,neutral,outlaw"), - GTOWN_SETTINGS_ENEMIES_ALLOWED_TO_SPAWN_TO_PEACEFUL_TOWNS( - "global_town_settings.allow_enemies_spawn_to_peaceful_towns", - "false", - "", - "# When true, players will be allowed to spawn to peaceful/neutral towns in which they are considered enemies.", - "# Setting this to true will make town spawn points unsafe for private towns which are part of nations with enemies."), - GTOWN_RESPAWN_ANCHOR_HIGHER_PRECEDENCE( - "global_town_settings.respawn_anchor_higher_precendence", - "true", - "", - "# When this is true, players will respawn to respawn anchors on death rather than their own town. 1.16+ only."), GTOWN_HOMEBLOCK_MOVEMENT_COOLDOWN( "global_town_settings.homeblock_movement_cooldown_hours", "0", @@ -996,13 +669,6 @@ public enum ConfigNodes { "", "# If set to true, when a world has forcepvp set to true, homeblocks of towns will not be affected and have PVP set to off.", "# Does not have any effect when Event War is active."), - GTOWN_SETTINGS_MINIMUM_AMOUNT_RESIDENTS_FOR_OUTPOSTS( - "global_town_settings.minimum_amount_of_residents_in_town_for_outpost", - "0", - "", - "# The amount of residents a town needs to claim an outpost,", - "# Setting this value to 0, means a town can claim outposts no matter how many residents" - ), GTOWN_SETTINGS_KEEP_INVENTORY_ON_DEATH_IN_TOWN( "global_town_settings.keep_inventory_on_death_in_town", "false", @@ -1045,6 +711,13 @@ public enum ConfigNodes { "# If People should keep their experience on death in an arena townblock.", "# Is not guaranteed to work with other keep experience plugins!" ), + GTOWN_SETTINGS_MAX_BUYTOWN_PRICE( + "global_town_settings.max_buytown_price", + "999999999", + "", + "# The Maximum price that a town can be put for sale at. This refers to the price that", + "# someone could pay if they ran /t buytown, to buy a town that has been put up for sale." + ), GTOWN_MAX_PLOT_PRICE_COST( "global_town_settings.maximum_plot_price_cost", "1000000.0", @@ -1052,6 +725,12 @@ public enum ConfigNodes { "# Maximum amount that a town can set their plot, embassy, shop, etc plots' prices to.", "# Setting this higher can be dangerous if you use Towny in a mysql database. Large numbers can become shortened to scientific notation. " ), + GTOWN_SETTINGS_MAX_PLOTS_PER_RESIDENT( + "global_town_settings.max_plots_per_resident", + "100", + "", + "# maximum number of plots any single resident can own" + ), GTOWN_SETTINGS_DISPLAY_XYZ_INSTEAD_OF_TOWNY_COORDS( "global_town_settings.display_xyz_instead_of_towny_coords", "false", @@ -1078,7 +757,6 @@ public enum ConfigNodes { "", "# When enabled, blocks like lava or water will be unable to flow into other plots, if the owners aren't the same." ), - GTOWN_SETTINGS_COMMAND_BLACKLISTING( "global_town_settings.town_command_blacklisting", "", @@ -1097,14 +775,12 @@ public enum ConfigNodes { "# Allows blocking commands inside towns through the town_blacklisted_commands setting.", "# This boolean allows you to disable this feature altogether if you don't need it" ), - GTOWN_TOWN_BLACKLISTED_COMMANDS( "global_town_settings.town_command_blacklisting.town_blacklisted_commands", "somecommandhere,othercommandhere", "", "# Comma separated list of commands which cannot be run inside of any town." ), - GTOWN_TOWN_LIMITED_COMMANDS( "global_town_settings.town_command_blacklisting.player_owned_plot_limited_commands", "sethome,home", @@ -1115,7 +791,6 @@ public enum ConfigNodes { "# Players with the towny.claimed.owntown.* permission node (given to mayors/assistants usually,)", "# will also not be limited by this command blacklist." ), - GTOWN_TOWN_TOURIST_BLOCKED_COMMANDS( "global_town_settings.town_command_blacklisting.own_town_and_wilderness_limited_commands", "sethome,home", @@ -1125,7 +800,6 @@ public enum ConfigNodes { "# Players with the towny.globally_welcome permission node are not going to be limited by this list.", "# Commands have to be on town_command_blacklisting.town_blacklisted_commands, else this is not going to be checked." ), - GTOWN_TOWN_TOURIST_BLOCKED_COMMANDS_TRUSTED_BYPASS( "global_town_settings.town_command_blacklisting.own_town_and_wilderness_limited_commands_allow_trusted_residents", "true", @@ -1134,7 +808,6 @@ public enum ConfigNodes { "# as well as residents that are members of a town that is trusted,) will be able to use", "# commands that only town residents could use." ), - GTOWN_TOWN_TOURIST_BLOCKED_COMMANDS_ALLIES_BYPASS( "global_town_settings.town_command_blacklisting.own_town_and_wilderness_limited_commands_allow_allies", "false", @@ -1142,25 +815,21 @@ public enum ConfigNodes { "# When set to true, residents which are allies of the town (which could be nation members as well as allied nations' members) will be able to use", "# commands that only town residents could use." ), - GTOWN_SETTINGS_AUTOMATIC_CAPITALISATION( "global_town_settings.automatic_capitalisation", "false", "", "# When enabled, town (and nation) names will automatically be capitalised upon creation." ), - GTOWN_SETTINGS_ALLOW_NUMBERS_IN_TOWN_NAME( "global_town_settings.allow_numbers_in_town_name", "true", "", "# When disabled, towns will not be able to be created with or renamed to a name that contains numbers.", "# Disabling this option does not affect already created towns."), - GTOWN_SETTINGS_ALLOWED_TOWN_COLORS( "global_town_settings.allowed_map_colors", "aqua:00ffff, azure:f0ffff, beige:f5f5dc, black:000000, blue:0000ff, brown:a52a2a, cyan:00ffff, darkblue:00008b, darkcyan:008b8b, darkgrey:a9a9a9, darkgreen:006400, darkkhaki:bdb76b, darkmagenta:8b008b, darkolivegreen:556b2f, darkorange:ff8c00, darkorchid:9932cc, darkred:8b0000, darksalmon:e9967a, darkviolet:9400d3, fuchsia:ff00ff, gold:ffd700, green:008000, indigo:4b0082, khaki:f0e68c, lightblue:add8e6, lightcyan:e0ffff, lightgreen:90ee90, lightgrey:d3d3d3, lightpink:ffb6c1, lightyellow:ffffe0, lime:00ff00, magenta:ff00ff, maroon:800000, navy:000080, olive:808000, orange:ffa500, pink:ffc0cb, purple:800080, violet:800080, red:ff0000, silver:c0c0c0, white:ffffff, yellow:ffff00", - "", "# This setting determines the list of allowed town map colors.", "# The color codes are in hex format." @@ -1170,7 +839,8 @@ public enum ConfigNodes { "assistant", "", "# List of ranks (separated by a comma) that will prevent a player from being kicked from a town."), - + + GNATION_SETTINGS( "global_nation_settings", "", @@ -1229,52 +899,6 @@ public enum ConfigNodes { "false", "", "# If true the capital city of nation cannot be neutral/peaceful."), - GNATION_SETTINGS_CAPITAL_SPAWN( - "global_nation_settings.capital_spawn", - "true", - "", - "# If enabled, only allow the nation spawn to be set in the capital city."), - GNATION_SETTINGS_ALLOW_NATION_SPAWN( - "global_nation_settings.allow_nation_spawn", - "true", - "", - "# Allow the use of /nation spawn", - "# 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."), - GNATION_SETTINGS_ALLOW_NATION_SPAWN_TRAVEL( - "global_nation_settings.allow_nation_spawn_travel", - "true", - "", - "# Allow regular residents to use /nation spawn [nation] (TP to other nations 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."), - GNATION_SETTINGS_ALLOW_NATION_SPAWN_TRAVEL_ALLY( - "global_nation_settings.allow_nation_spawn_travel_ally", - "true", - "", - "# Allow regular residents to use /nation spawn [nation] to other nations allied with your nation.", - "# Valid values are: true, false, war, peace", - "# When war or peace is set, it is only possible to teleport to the nations,", - "# when there is a war or peace."), - GNATION_SETTINGS_COOLDOWN_ROOT( - "global_nation_settings.spawning_cooldowns", "", ""), - GNATION_SETTINGS_NATION_MEMBER_COOLDOWN_TIMER( - "global_nation_settings.spawning_cooldowns.nation_member_nation_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player of the same nation can use /n spawn."), - GNATION_SETTINGS_NATION_ALLY_COOLDOWN_TIMER( - "global_nation_settings.spawning_cooldowns.nation_ally_nation_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player allied with the nation can use /n spawn."), - GNATION_SETTINGS_NATION_UNAFFILIATED_COOLDOWN_TIMER( - "global_nation_settings.spawning_cooldowns.unaffiliated_nation_spawn_cooldown_time", - "30", - "", - "# Number of seconds that must pass before a player who is not a member or ally can use /n spawn."), GNATION_SETTINGS_NATION_LEVEL_IS_DETERMINED_BY_TOWNS_COUNT( "global_nation_settings.nation_level_is_determined_by_town_count_instead_of_resident_count", "false", @@ -1296,7 +920,6 @@ public enum ConfigNodes { GNATION_SETTINGS_ALLOWED_NATION_COLORS( "global_nation_settings.allowed_map_colors", "aqua:00ffff, azure:f0ffff, beige:f5f5dc, black:000000, blue:0000ff, brown:a52a2a, cyan:00ffff, darkblue:00008b, darkcyan:008b8b, darkgrey:a9a9a9, darkgreen:006400, darkkhaki:bdb76b, darkmagenta:8b008b, darkolivegreen:556b2f, darkorange:ff8c00, darkorchid:9932cc, darkred:8b0000, darksalmon:e9967a, darkviolet:9400d3, fuchsia:ff00ff, gold:ffd700, green:008000, indigo:4b0082, khaki:f0e68c, lightblue:add8e6, lightcyan:e0ffff, lightgreen:90ee90, lightgrey:d3d3d3, lightpink:ffb6c1, lightyellow:ffffe0, lime:00ff00, magenta:ff00ff, maroon:800000, navy:000080, olive:808000, orange:ffa500, pink:ffc0cb, purple:800080, violet:800080, red:ff0000, silver:c0c0c0, white:ffffff, yellow:ffff00", - "", "# This setting determines the list of allowed nation map colors.", "# The color codes are in hex format."), @@ -1336,7 +959,6 @@ public enum ConfigNodes { "# This setting is only used when nation_proximity_to_capital_city is above 0.", "# Leave this setting at 0.0 in order to allow nations to chain towns together to go as wide as they like." ), - GNATION_SETTINGS_ALLOW_NUMBERS_IN_NATION_NAME( "global_nation_settings.allow_numbers_in_nation_name", "true", @@ -1344,6 +966,443 @@ public enum ConfigNodes { "# When disabled, nations will not be able to be created with or renamed to a name that contains numbers.", "# Disabling this option does not affect already created nations."), + + CLAIMING( + "claiming", + "", + "", + "", + "############################################################", + "# +------------------------------------------------------+ #", + "# | Town Claiming Settings | #", + "# +------------------------------------------------------+ #", + "############################################################", + ""), + CLAIMING_TOWN_BLOCK_RATIO( + "claiming.town_block_ratio", + "8", + "", + "# The maximum townblocks available to a town is (numResidents * ratio).", + "# Setting this value to 0 will instead use the level based jump values determined in the town level config.", + "# Setting this to -1 will result in every town having unlimited claims."), + CLAIMING_TOWN_BLOCK_LIMIT( + "claiming.town_block_limit", + "0", + "", + "# The maximimum amount of townblocks a town can have, if town_block_ratio is 0 the max size will be decided by the town_levels.", + "# Set to 0 to have no size limit."), + CLAIMING_TOWN_BLOCK_SIZE( + "claiming.town_block_size", + "16", + "", + "# The size of the square grid cell. Changing this value is suggested only when you first install Towny.", + "# Doing so after entering data will shift things unwantedly. Using smaller value will allow higher precision,", + "# at the cost of more work setting up. Also, extremely small values will render the caching done useless.", + "# Each cell is (town_block_size * town_block_size * height-of-the-world) in size, with height-of-the-world", + "# being from the bottom to the top of the build-able world."), + CLAIMING_MIN_ADJACENT_BLOCKS( + "claiming.min_adjacent_blocks", + "-1", + "", + "# The minimum adjacent town blocks required to expand.", + "# This can prevent long lines and snake-like patterns.", + "# Set to -1 to disable. Set to 3 to force wider expansions of towns."), + CLAIMING_MAX_CLAIM_RADIUS_VALUE( + "claiming.max_claim_radius_value", + "4", + "", + "# maximum number used in /town claim/unclaim # commands.", + "# set to 0 to disable limiting of claim radius value check.", + "# keep in mind that the default value of 4 is a radius, ", + "# and it will allow claiming 9x9 (80 plots) at once."), + + CLAIMING_BIOME_RULES("claiming.biome_rules","","",""), + + CLAIMING_UNWANTED_BIOMES_ROOT("claiming.biome_rules.unwanted_biomes","","", + "# When a townblock is made up of too many blocks of these biomes, it will not be able to be claimed by a town."), + CLAIMING_BIOME_UNWANTED_BIOMES_ENABLED("claiming.biome_rules.unwanted_biomes.enabled", + "false", + "", + "# When true, unwanted biomes will be tested for when a player is claiming land."), + CLAIMING_BIOME_UNWANTED_BIOMES("claiming.biome_rules.unwanted_biomes.biomes", + "the_end,end_barrens,end_highlands,end_midlands,small_end_islands", + "", + "# A comma separated list of biome names that will add up towards a townblock's un-claim-ability.", + "# Use lower-case only or this will not work properly for you."), + CLAIMING_BIOME_UNWANTED_BIOMES_THRESHOLD("claiming.biome_rules.unwanted_biomes.threshold", + "55", + "", + "# The max amount of combined unwanted biomes as a percent, that will be allowed in plots being claimed by towns.", + "# For example, if a townblock would be more than X percent ocean it will not be able to be claimed."), + + CLAIMING_BIOME_OCEAN_BLOCKING_ROOT("claiming.biome_rules.ocean_blocking","","",""), + CLAIMING_BIOME_BLOCK_OCEAN_CLAIMS("claiming.biome_rules.ocean_blocking.enabled", + "false", + "", + "# When true, any wilderness plot which has more Ocean biome in it than the allowed threshold (see below,)", + "# will not be able to be claimed."), + CLAIMING_BIOME_BLOCK_OCEAN_THRESHOLD("claiming.biome_rules.ocean_blocking.threshold", + "55", + "", + "# The max amount of combined ocean biomes as a percent, that will be allowed in plots being claimed by towns.", + "# For example, if a townblock would be more than X percent ocean it will not be able to be claimed."), + + CLAIMING_DISTANCE_RULES("claiming.distance_rules","","",""), + CLAIMING_MIN_DISTANCE_IGNORED_FOR_NATIONS( + "claiming.distance_rules.min_distances_ignored_for_towns_in_same_nation", + "true", + "", + "# If true, the below settings: min_plot_distance_from_town_plot and min_distance_from_town_homeblock", + "# will be ignored for towns that are in the same nation. Setting to false will keep all towns separated the same."), + CLAIMING_MIN_DISTANCE_IGNORED_FOR_ALLIES( + "claiming.distance_rules.min_distances_ignored_for_towns_in_allied_nation", + "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 mutually allied. Setting to false will keep all towns separated the same."), + CLAIMING_MIN_PLOT_DISTANCE_FROM_TOWN_PLOT( + "claiming.distance_rules.min_plot_distance_from_town_plot", + "5", + "", + "# Minimum number of plots any towns plot must be from the next town's own plots.", + "# Put in other words: the buffer area around every claim that no other town can claim into.", + "# Does not affect towns which are in the same nation.", + "# This will prevent town encasement to a certain degree."), + CLAIMING_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK( + "claiming.distance_rules.min_distance_from_town_homeblock", + "5", + "", + "# Minimum number of plots any towns home plot must be from the next town.", + "# Put in other words: the buffer area around every homeblock that no other town can claim into.", + "# Does not affect towns which are in the same nation.", + "# This will prevent someone founding a town right on your doorstep"), + CLAIMING_MIN_DISTANCE_FOR_OUTPOST_FROM_PLOT( + "claiming.distance_rules.min_distance_for_outpost_from_plot", + "5", + "", + "# Minimum number of plots an outpost must be from any other town's plots.", + "# Useful when min_plot_distance_from_town_plot is set to near-zero to allow towns to have claims", + "# near to each other, but want to keep outposts away from towns."), + CLAIMING_MAX_DISTANCE_FOR_OUTPOST_FROM_TOWN_PLOT( + "claiming.distance_rules.max_distance_for_outpost_from_town_plot", + "0", + "", + "# Set to 0 to disable. When above 0 an outpost may only be claimed within the given number of townblocks from a townblock owned by the town.", + "# Setting this to any value above 0 will stop outposts being made off-world from the town's homeworld.", + "# Do not set lower than min_distance_for_outpost_from_plot above."), + CLAIMING_MIN_DISTANCE_BETWEEN_HOMEBLOCKS( + "claiming.distance_rules.min_distance_between_homeblocks", + "0", + "", + "# Minimum distance between homeblocks."), + CLAIMING_MAX_DISTANCE_BETWEEN_HOMEBLOCKS( + "claiming.distance_rules.max_distance_between_homeblocks", + "0", + "", + "# Maximum distance between homeblocks.", + "# This will force players to build close together."), + CLAIMING_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_PLOT( + "claiming.distance_rules.new_town_min_distance_from_town_plot", + "-1", + "", + "# The minimum distance that a new town must be from nearby towns' plots.", + "# When set to -1, this will use the value of the min_plot_distance_from_town_plot option."), + CLAIMING_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK( + "claiming.distance_rules.new_town_min_distance_from_town_homeblock", + "-1", + "", + "# The minimum distance that a new town must be from nearby towns' homeblocks.", + "# When set to -1, this will use the value of the min_distance_from_town_homeblock setting."), + + CLAIMING_OUTPOSTS("claiming.outposts","","",""), + CLAIMING_ALLOW_OUTPOSTS( + "claiming.outposts.allow_outposts", + "true", + "", + "# Allow towns to claim outposts (a townblock not connected to town)."), + CLAIMING_LIMIT_OUTPOST_USING_LEVELS( + "claiming.outposts.limit_outposts_using_town_and_nation_levels", + "false", + "", + "# When set to true outposts can be limited by the townOutpostLimit value of the Town Levels and", + "# the nationBonusOutpostLimit value in the Nation Levels. In this way nations can be made to be", + "# the only way of receiving outposts, or as an incentive to receive more outposts. Towns which are", + "# larger can have more outposts.", + "# When activated, this setting will not cause towns who already have higher than their limit", + "# to lose outposts. They will not be able to start new outposts until they have unclaimed outposts", + "# to become under their limit. Likewise, towns that join a nation and receive bonus outposts will", + "# be over their limit if they leave the nation."), + CLAIMING_OVER_OUTPOST_LIMIT_STOP_TELEPORT( + "claiming.outposts.over_outpost_limits_stops_teleports", + "false", + "", + "# When limit_outposts_using_town_and_nation_levels is also true, towns which are over their outpost", + "# limit will not be able to use their /town outpost teleports for the outpost #'s higher than their limit,", + "# until they have dropped below their limit.", + "# eg: If their limit is 3 then they cannot use /t outpost 4"), + CLAIMING_MINIMUM_AMOUNT_RESIDENTS_FOR_OUTPOSTS( + "claiming.outposts.minimum_amount_of_residents_in_town_for_outpost", + "0", + "", + "# The amount of residents a town needs to claim an outpost,", + "# Setting this value to 0, means a town can claim outposts no matter how many residents"), + + CLAIMING_OVERCLAIMING_ROOT("claiming.overclaiming", "", "", ""), + CLAIMING_OVER_ALLOWED_CLAIM_LIMITS_ALLOWS_STEALING_LAND( + "claiming.overclaiming.being_overclaimed_allows_other_towns_to_steal_land", + "false", + "", + "# A feature that allows towns which have too many townblocks claimed (overclaimed) ie: 120/100 TownBlocks, ", + "# to have their land stolen by other towns which are not overclaimed. Using this incentivises Towns to keep", + "# their residents from leaving, and will mean that mayors will be more careful about which land they choose", + "# to claim.", + "# Overclaiming does not allow a town to be split into two separate parts, requiring the Town that is stealing", + "# land to work from the outside inwards.", + "# It is highly recommended to only use this on servers where outposts are disabled, and requiring ", + "# a number of adjacent claims over 1 is enabled.", + "# Towns take land using /t takeoverclaim."), + CLAIMING_OVERCLAIMING_PREVENTED_BY_HOMEBLOCK_RADIUS( + "claiming.overclaiming.overclaiming_prevented_by_homeblock_radius", + "true", + "", + "# While true, overclaiming is stopped by the min_distance_from_town_homeblock setting below.", + "# This prevents a town from having townblocks stolen surrounding their homeblocks."), + CLAIMING_OVERCLAIMING_TOWN_AGE_REQUIREMENT( + "claiming.overclaiming.town_age_requirement", + "7d", + "", + "# When in use, requires that a town be of a minimum age in order to overclaim another town. This prevents new towns being made just to overclaim someone.", + "# Default is for 7 days."), + CLAIMING_OVERCLAIMING_COMMAND_COOLDOWN( + "claiming.overclaiming.command_cooldown", + "0m", + "", + "# When in use, requires an amount of time to pass before the /t takeoverclaim command can be used again."), + + CLAIMING_BUY_BONUS_ROOT("claiming.purchased_bonus_blocks", "", "", ""), + CLAIMING_MAX_PURCHASED_BLOCKS( + "claiming.purchased_bonus_blocks.max_purchased_blocks", + "0", + "", + "# Limits the maximum amount of bonus blocks a town can buy.", + "# This setting does nothing when town.max_purchased_blocks_uses_town_levels is set to true."), + CLAIMING_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS( + "claiming.purchased_bonus_blocks.max_purchased_blocks_uses_town_levels", + "true", + "", + "# When set to true, the town_level section of the config determines the maximum number of bonus blocks a town can purchase."), + + + SPAWNING( + "spawning", + "", + "", + "", + "############################################################", + "# +------------------------------------------------------+ #", + "# | Spawning Settings | #", + "# +------------------------------------------------------+ #", + "############################################################", + ""), + SPAWNING_COST_SPAWN_WARNINGS( + "spawning.spawn_cost_warnings", + "true", + "", + "# Decides whether confirmations should appear if you spawn to an area with an associated cost."), + SPAWNING_VISUALIZED_SPAWN_POINTS_ENABLED( + "spawning.visualized_spawn_points_enabled", + "true", + "", + "# If enabled, particles will appear around town, nation, outpost & jail spawns."), + + SPAWNING_WARMUP_ROOT("spawning.spawning_warmups","",""), + SPAWNING_WARMUP_TIMER( + "spawning.spawning_warmups.teleport_warmup_time", + "0", + "", + "# If non zero it delays any spawn request by x seconds."), + SPAWNING_MOVEMENT_CANCELS_SPAWN_WARMUP( + "spawning.spawning_warmups.movement_cancels_spawn_warmup", + "false", + "", + "# When set to true, if players are currently in a spawn warmup, moving will cancel their spawn."), + SPAWNING_DAMAGE_CANCELS_SPAWN_WARMUP( + "spawning.spawning_warmups.damage_cancels_spawn_warmup", + "false", + "", + "# When set to true, if players are damaged in any way while in a spawn warmup, their spawning will be cancelled."), + + SPAWNING_TOWN_SPAWN_ROOT("spawning.town_spawn","",""), + SPAWNING_ALLOW_TOWN_SPAWN( + "spawning.town_spawn.allow_town_spawn", + "true", + "", + "# Allow the use of /town spawn", + "# Valid values are: true, false, war, peace", + "# When war or peace is set, it is only possible to teleport to the town,", + "# when there is a war or peace."), + SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL( + "spawning.town_spawn.allow_town_spawn_travel", + "true", + "", + "# Allow regular residents to use /town spawn [town] (TP to other towns 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 town,", + "# when there is a war or peace."), + SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL_NATION( + "spawning.town_spawn.allow_town_spawn_travel_nation", + "true", + "", + "# Allow regular residents to use /town spawn [town] to other towns in your nation.", + "# Valid values are: true, false, war, peace", + "# When war or peace is set, it is only possible to teleport to the town,", + "# when there is a war or peace."), + SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL_ALLY( + "spawning.town_spawn.allow_town_spawn_travel_ally", + "true", + "", + "# Allow regular residents to use /town spawn [town] to other towns in a nation allied with your nation.", + "# Valid values are: true, false, war, peace", + "# When war or peace is set, it is only possible to teleport to the town,", + "# when there is a war or peace."), + SPAWNING_IS_ALLY_TOWN_SPAWNING_REQUIRING_PUBLIC_STATUS( + "spawning.town_spawn.is_nation_ally_spawning_to_town_requiring_public_status", + "false", + "", + "# When set to true both nation and ally spawn travel will also require the target town to have their status set to public."), + SPAWNING_SETTINGS_IS_TRUSTED_RESIDENTS_COUNT_AS_RESIDENTS( + "spawning.town_spawn.do_trusted_residents_count_as_residents", + "false", + "", + "# When set to true, a player that is trusted by a town is allowed to spawn to the town as if they were a resident.", + "# Allows allows the residents of entire an town when that town is trusted by the town."), + SPAWNING_IS_NEW_RESIDENT_PROMPTED_TO_SPAWN( + "spawning.town_spawn.are_new_residents_prompted_to_town_spawn", + "false", + "", + "# When a resident joins a town, should they be prompted to use spawn to the town?", + "# This requires them to not already be standing in the town, and also to be able to use /t spawn and whatever costs may be associated with it."), + SPAWNING_PREVENT_TOWN_SPAWN_IN( + "spawning.town_spawn.prevent_town_spawn_in", + "enemy,outlaw", + "", + "# Prevent players from using /town spawn while within unclaimed areas and/or enemy/neutral towns.", + "# Allowed options: unclaimed,enemy,neutral,outlaw"), + SPAWNING_ENEMIES_ALLOWED_TO_SPAWN_TO_PEACEFUL_TOWNS( + "spawning.town_spawn.allow_enemies_spawn_to_peaceful_towns", + "false", + "", + "# When true, players will be allowed to spawn to peaceful/neutral towns in which they are considered enemies.", + "# Setting this to true will make town spawn points unsafe for private towns which are part of nations with enemies."), + + SPAWNING_TOWN_SPAWN_COOLDOWN_ROOT( + "spawning.town_spawn.spawning_cooldowns", "", ""), + SPAWNING_TOWN_SPAWN_COOLDOWN_TIMER( + "spawning.town_spawn.spawning_cooldowns.town_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player can use /t spawn or /res spawn."), + SPAWNING_TOWN_SPAWN_OUTPOST_COOLDOWN_TIMER( + "spawning.town_spawn.spawning_cooldowns.outpost_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player can use /t outpost."), + SPAWNING_TOWN_SPAWN_NATION_MEMBER_COOLDOWN_TIMER( + "spawning.town_spawn.spawning_cooldowns.nation_member_town_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player of the same nation can use /t spawn."), + SPAWNING_TOWN_SPAWN_NATION_ALLY_COOLDOWN_TIMER( + "spawning.town_spawn.spawning_cooldowns.nation_ally_town_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player in an allied nation can use /t spawn."), + SPAWNING_TOWN_SPAWN_UNAFFILIATED_COOLDOWN_TIMER( + "spawning.town_spawn.spawning_cooldowns.unaffiliated_town_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player who is not a member or ally of town can use /t spawn."), + + SPAWNING_NATION_SPAWN_ROOT("spawning.nation_spawn","",""), + SPAWNING_FORCE_NATION_SPAWN_IN_CAPITAL( + "spawning.nation_spawn.force_nation_spawn_in_capital", + "true", + "", + "# If enabled, only allow the nation spawn to be set in the capital city."), + SPAWNING_ALLOW_NATION_SPAWN( + "spawning.nation_spawn.allow_nation_spawn", + "true", + "", + "# Allow the use of /nation spawn", + "# 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."), + SPAWNING_ALLOW_NATION_SPAWN_TRAVEL( + "spawning.nation_spawn.allow_nation_spawn_travel", + "true", + "", + "# Allow regular residents to use /nation spawn [nation] (TP to other nations 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."), + SPAWNING_ALLOW_NATION_SPAWN_TRAVEL_ALLY( + "spawning.nation_spawn.allow_nation_spawn_travel_ally", + "true", + "", + "# Allow regular residents to use /nation spawn [nation] to other nations allied with your nation.", + "# Valid values are: true, false, war, peace", + "# When war or peace is set, it is only possible to teleport to the nations,", + "# when there is a war or peace."), + + SPAWNING_NATION_SPAWN_COOLDOWN_ROOT( + "spawning.nation_spawn.spawning_cooldowns", "", ""), + SPAWNING_NATION_SPAWN_NATION_MEMBER_COOLDOWN_TIMER( + "spawning.nation_spawn.spawning_cooldowns.nation_member_nation_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player of the same nation can use /n spawn."), + SPAWNING_NATION_SPAWN_NATION_ALLY_COOLDOWN_TIMER( + "spawning.nation_spawn.spawning_cooldowns.nation_ally_nation_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player allied with the nation can use /n spawn."), + SPAWNING_NATION_SPAWN_NATION_UNAFFILIATED_COOLDOWN_TIMER( + "spawning.nation_spawn.spawning_cooldowns.unaffiliated_nation_spawn_cooldown_time", + "30", + "", + "# Number of seconds that must pass before a player who is not a member or ally can use /n spawn."), + + SPAWNING_RESPAWN_ROOT("spawning.respawning","",""), + SPAWNING_TOWN_RESPAWN( + "spawning.respawning.town_respawn", + "false", + "", + "# When true Towny will handle respawning, with town or resident spawns."), + SPAWNING_TOWN_RESPAWN_SAME_WORLD_ONLY( + "spawning.respawning.town_respawn_same_world_only", + "false", + "", + "# Town respawn only happens when the player dies in the same world as the town's spawn point."), + SPAWNING_RESPAWN_ANCHOR_HIGHER_PRECEDENCE( + "spawning.respawning.respawn_anchor_higher_precendence", + "true", + "", + "# When this is true, players will respawn to respawn anchors on death rather than their own town."), + + SPAWNING_RESPAWN_PROTECTION_ROOT("spawning.respawning.respawn_protection", "", ""), + SPAWNING_RESPAWN_PROTECTION_TIME( + "spawning.respawning.respawn_protection.time", + "10s", + "", + "# When greater than 0s, the amount of time a player who has respawned is considered invulnerable.", + "# Invulnerable players who attack other players will lose their invulnerability.", + "# Invulnerable players who teleport after respawn will also lose their invulnerability."), + SPAWNING_RESPAWN_PROTECTION_ALLOW_PICKUP( + "spawning.respawning.respawn_protection.allow_pickup", + "true", + "", + "# If disabled, players will not be able to pickup items while under respawn protection."), + PLUGIN( "plugin", "", @@ -1459,6 +1518,7 @@ public enum ConfigNodes { PLUGIN_HOUR_INTERVAL( "plugin.hour_timer.hour_interval", "60m", + "", "# The number of minutes in each \"day\".", "# Default is 60m."), PLUGIN_NEWHOUR_TIME( @@ -1499,12 +1559,6 @@ public enum ConfigNodes { "", "# Sets the default size that /towny top commands display." ), - PLUGIN_VISUALIZED_SPAWN_POINTS_ENABLED( - "plugin.visualized_spawn_points_enabled", - "true", - "", - "# If enabled, particles will appear around town, nation, outpost & jail spawns." - ), PLUGIN_NAME_BLACKLIST( "plugin.name_blacklist", "", diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownySettings.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownySettings.java index f29694bc4a..c1c25c71a1 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownySettings.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownySettings.java @@ -1257,7 +1257,7 @@ public static int getMaxTownBlocks(Town town) { n += getNationBonusBlocks(town); - int ratioSizeLimit = getInt(ConfigNodes.TOWN_TOWN_BLOCK_LIMIT); + int ratioSizeLimit = getInt(ConfigNodes.CLAIMING_TOWN_BLOCK_LIMIT); if (ratio != 0 && ratioSizeLimit > 0) n = Math.min(ratioSizeLimit, n); @@ -1335,12 +1335,12 @@ public static boolean areTownBlocksUnlimited() { public static int getTownBlockRatio() { - return getInt(ConfigNodes.TOWN_TOWN_BLOCK_RATIO); + return getInt(ConfigNodes.CLAIMING_TOWN_BLOCK_RATIO); } public static int getTownBlockSize() { - return getInt(ConfigNodes.TOWN_TOWN_BLOCK_SIZE); + return getInt(ConfigNodes.CLAIMING_TOWN_BLOCK_SIZE); } public static boolean isFriendlyFireEnabled() { @@ -1607,14 +1607,14 @@ public static boolean hasTownLimit() { public static int getTownLimit() { - return getInt(ConfigNodes.TOWN_LIMIT); + return getInt(ConfigNodes.GTOWN_SETTINGS_LIMIT); } public static int getMaxPurchasedBlocks(Town town, int residents) { if (isBonusBlocksPerTownLevel()) return getMaxBonusBlocks(town, residents); else - return getInt(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS); + return getInt(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS); } public static int getMaxPurchasedBlocks(Town town) { @@ -1622,33 +1622,53 @@ public static int getMaxPurchasedBlocks(Town town) { if (isBonusBlocksPerTownLevel()) return getMaxBonusBlocks(town); else - return getInt(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS); + return getInt(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS); } public static int getMaxPurchasedBlocksNode() { - return getInt(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS); + return getInt(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS); } public static int getMaxClaimRadiusValue() { - return getInt(ConfigNodes.TOWN_MAX_CLAIM_RADIUS_VALUE); + return getInt(ConfigNodes.CLAIMING_MAX_CLAIM_RADIUS_VALUE); + } + + public static boolean isUnwantedBiomeClaimingEnabled() { + return getBoolean(ConfigNodes.CLAIMING_BIOME_UNWANTED_BIOMES_ENABLED); + } + + public static double getUnwantedBiomeThreshold() { + return getDouble(ConfigNodes.CLAIMING_BIOME_UNWANTED_BIOMES_THRESHOLD) / 100; + } + + public static List getUnwantedBiomeNames() { + return getStrArr(ConfigNodes.CLAIMING_BIOME_UNWANTED_BIOMES); + } + + public static boolean isOceanClaimingBlocked() { + return getBoolean(ConfigNodes.CLAIMING_BIOME_BLOCK_OCEAN_CLAIMS); + } + + public static double getOceanBlockThreshold() { + return getDouble(ConfigNodes.CLAIMING_BIOME_BLOCK_OCEAN_THRESHOLD) / 100; } public static boolean isOverClaimingAllowingStolenLand() { - return getBoolean(ConfigNodes.TOWN_OVER_ALLOWED_CLAIM_LIMITS_ALLOWS_STEALING_LAND); + return getBoolean(ConfigNodes.CLAIMING_OVER_ALLOWED_CLAIM_LIMITS_ALLOWS_STEALING_LAND); } public static boolean isOverClaimingPreventedByHomeBlockRadius() { - return getBoolean(ConfigNodes.TOWN_OVERCLAIMING_PREVENTED_BY_HOMEBLOCK_RADIUS); + return getBoolean(ConfigNodes.CLAIMING_OVERCLAIMING_PREVENTED_BY_HOMEBLOCK_RADIUS); } public static long getOverclaimingTownAgeRequirement() { - return getMillis(ConfigNodes.TOWN_OVERCLAIMING_TOWN_AGE_REQUIREMENT); + return getMillis(ConfigNodes.CLAIMING_OVERCLAIMING_TOWN_AGE_REQUIREMENT); } public static int getOverclaimingCommandCooldownInSeconds() { - return (int) getSeconds(ConfigNodes.TOWN_OVERCLAIMING_COMMAND_COOLDOWN); + return (int) getSeconds(ConfigNodes.CLAIMING_OVERCLAIMING_COMMAND_COOLDOWN); } public static boolean isSellingBonusBlocks(Town town) { @@ -1658,7 +1678,7 @@ public static boolean isSellingBonusBlocks(Town town) { public static boolean isBonusBlocksPerTownLevel() { - return getBoolean(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS); + return getBoolean(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS); } public static double getPurchasedBonusBlocksCost() { @@ -1711,17 +1731,17 @@ public static boolean isTownNeutralityCostMultipliedByTownClaimsSize() { public static boolean isAllowingOutposts() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_ALLOW_OUTPOSTS); + return getBoolean(ConfigNodes.CLAIMING_ALLOW_OUTPOSTS); } public static boolean isOutpostsLimitedByLevels() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_LIMIT_OUTPOST_USING_LEVELS); + return getBoolean(ConfigNodes.CLAIMING_LIMIT_OUTPOST_USING_LEVELS); } public static boolean isOutpostLimitStoppingTeleports() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_OVER_OUTPOST_LIMIT_STOP_TELEPORT); + return getBoolean(ConfigNodes.CLAIMING_OVER_OUTPOST_LIMIT_STOP_TELEPORT); } public static double getOutpostCost() { @@ -1880,34 +1900,34 @@ public static long getNewHourTime() { public static SpawnLevel isAllowingTownSpawn() { - return getSpawnLevel(ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN); + return getSpawnLevel(ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN); } public static SpawnLevel isAllowingPublicTownSpawnTravel() { - return getSpawnLevel(ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL); + return getSpawnLevel(ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL); } public static boolean isConfigAllowingPublicTownSpawnTravel() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL); + return getBoolean(ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL); } public static boolean isConfigAllowingPublicNationSpawnTravel() { - return getBoolean(ConfigNodes.GNATION_SETTINGS_ALLOW_NATION_SPAWN_TRAVEL); + return getBoolean(ConfigNodes.SPAWNING_ALLOW_NATION_SPAWN_TRAVEL); } public static List getDisallowedTownSpawnZones() { - return getStrArr(ConfigNodes.GTOWN_SETTINGS_PREVENT_TOWN_SPAWN_IN); + return getStrArr(ConfigNodes.SPAWNING_PREVENT_TOWN_SPAWN_IN); } public static boolean areEnemiesAllowedToSpawnToPeacefulTowns() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_ENEMIES_ALLOWED_TO_SPAWN_TO_PEACEFUL_TOWNS); + return getBoolean(ConfigNodes.SPAWNING_ENEMIES_ALLOWED_TO_SPAWN_TO_PEACEFUL_TOWNS); } public static boolean isSpawnWarnConfirmationUsed() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_SPAWN_WARNINGS); + return getBoolean(ConfigNodes.SPAWNING_COST_SPAWN_WARNINGS); } public static boolean isTaxingDaily() { @@ -2444,16 +2464,16 @@ public static Collection getRevertOnUnclaimWhitelistMaterials() { public static boolean isTownRespawning() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_TOWN_RESPAWN); + return getBoolean(ConfigNodes.SPAWNING_TOWN_RESPAWN); } public static boolean isTownRespawningInOtherWorlds() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_TOWN_RESPAWN_SAME_WORLD_ONLY); + return getBoolean(ConfigNodes.SPAWNING_TOWN_RESPAWN_SAME_WORLD_ONLY); } public static boolean isRespawnAnchorHigherPrecedence() { - return getBoolean(ConfigNodes.GTOWN_RESPAWN_ANCHOR_HIGHER_PRECEDENCE); + return getBoolean(ConfigNodes.SPAWNING_RESPAWN_ANCHOR_HIGHER_PRECEDENCE); } public static int getHomeBlockMovementCooldownHours() { @@ -2507,25 +2527,25 @@ public static void setLastRunVersion(String currentVersion) { public static int getMinDistanceFromTownHomeblocks() { - return getInt(ConfigNodes.TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK); + return getInt(ConfigNodes.CLAIMING_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK); } public static int getMinDistanceForOutpostsFromPlot() { - return getInt(ConfigNodes.TOWN_MIN_DISTANCE_FOR_OUTPOST_FROM_PLOT); + return getInt(ConfigNodes.CLAIMING_MIN_DISTANCE_FOR_OUTPOST_FROM_PLOT); } public static int getMaxDistanceForOutpostsFromTown() { - return getInt(ConfigNodes.TOWN_MAX_DISTANCE_FOR_OUTPOST_FROM_TOWN_PLOT); + return getInt(ConfigNodes.CLAIMING_MAX_DISTANCE_FOR_OUTPOST_FROM_TOWN_PLOT); } public static int getMinDistanceFromTownPlotblocks() { - return getInt(ConfigNodes.TOWN_MIN_PLOT_DISTANCE_FROM_TOWN_PLOT); + return getInt(ConfigNodes.CLAIMING_MIN_PLOT_DISTANCE_FROM_TOWN_PLOT); } public static int getMaxDistanceForTownMerge() { - return getInt(ConfigNodes.TOWN_MAX_DISTANCE_FOR_MERGE); + return getInt(ConfigNodes.GTOWN_SETTINGS_MAX_DISTANCE_FOR_MERGE); } public static int getBaseCostForTownMerge() { @@ -2538,27 +2558,27 @@ public static int getPercentageCostPerPlot() { public static boolean isMinDistanceIgnoringTownsInSameNation() { - return getBoolean(ConfigNodes.TOWN_MIN_DISTANCE_IGNORED_FOR_NATIONS); + return getBoolean(ConfigNodes.CLAIMING_MIN_DISTANCE_IGNORED_FOR_NATIONS); } public static boolean isMinDistanceIgnoringTownsInAlliedNation() { - return getBoolean(ConfigNodes.TOWN_MIN_DISTANCE_IGNORED_FOR_ALLIES); + return getBoolean(ConfigNodes.CLAIMING_MIN_DISTANCE_IGNORED_FOR_ALLIES); } public static int getMinDistanceBetweenHomeblocks() { - return getInt(ConfigNodes.TOWN_MIN_DISTANCE_BETWEEN_HOMEBLOCKS); + return getInt(ConfigNodes.CLAIMING_MIN_DISTANCE_BETWEEN_HOMEBLOCKS); } public static int getMaxDistanceBetweenHomeblocks() { - return getInt(ConfigNodes.TOWN_MAX_DISTANCE_BETWEEN_HOMEBLOCKS); + return getInt(ConfigNodes.CLAIMING_MAX_DISTANCE_BETWEEN_HOMEBLOCKS); } public static int getMaxResidentPlots(Resident resident) { int maxPlots = TownyUniverse.getInstance().getPermissionSource().getGroupPermissionIntNode(resident.getName(), PermissionNodes.TOWNY_MAX_PLOTS.getNode()); if (maxPlots == -1) - maxPlots = getInt(ConfigNodes.TOWN_MAX_PLOTS_PER_RESIDENT); + maxPlots = getInt(ConfigNodes.GTOWN_SETTINGS_MAX_PLOTS_PER_RESIDENT); return maxPlots; } @@ -2918,22 +2938,22 @@ public static String getNameRemoveRegex() { public static int getTeleportWarmupTime() { - return getInt(ConfigNodes.GTOWN_SETTINGS_SPAWN_TIMER); + return getInt(ConfigNodes.SPAWNING_WARMUP_TIMER); } public static boolean isMovementCancellingSpawnWarmup() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_MOVEMENT_CANCELS_SPAWN_WARMUP); + return getBoolean(ConfigNodes.SPAWNING_MOVEMENT_CANCELS_SPAWN_WARMUP); } public static boolean isDamageCancellingSpawnWarmup() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_DAMAGE_CANCELS_SPAWN_WARMUP); + return getBoolean(ConfigNodes.SPAWNING_DAMAGE_CANCELS_SPAWN_WARMUP); } public static int getSpawnCooldownTime() { - return getInt(ConfigNodes.GTOWN_SETTINGS_SPAWN_COOLDOWN_TIMER); + return getInt(ConfigNodes.SPAWNING_TOWN_SPAWN_COOLDOWN_TIMER); } public static int getPVPCoolDownTime() { @@ -3104,7 +3124,7 @@ public static boolean isNotificationUsingTitles() { } public static int getAmountOfResidentsForOutpost() { - return getInt(ConfigNodes.GTOWN_SETTINGS_MINIMUM_AMOUNT_RESIDENTS_FOR_OUTPOSTS); + return getInt(ConfigNodes.CLAIMING_MINIMUM_AMOUNT_RESIDENTS_FOR_OUTPOSTS); } public static int getMaximumInvitesSentTown() { @@ -3148,7 +3168,7 @@ public static int getNationZonesCapitalBonusSize() { } public static boolean isNationSpawnOnlyAllowedInCapital() { - return getBoolean(ConfigNodes.GNATION_SETTINGS_CAPITAL_SPAWN); + return getBoolean(ConfigNodes.SPAWNING_FORCE_NATION_SPAWN_IN_CAPITAL); } public static int getMaxTownsPerNation() { @@ -3168,15 +3188,15 @@ public static boolean isPublicSpawnCostAffectedByTownSpawncost() { } public static boolean isAllySpawningRequiringPublicStatus() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_IS_ALLY_SPAWNING_REQUIRING_PUBLIC_STATUS); + return getBoolean(ConfigNodes.SPAWNING_IS_ALLY_TOWN_SPAWNING_REQUIRING_PUBLIC_STATUS); } public static boolean trustedResidentsGetToSpawnToTown() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_IS_TRUSTED_RESIDENTS_COUNT_AS_RESIDENTS); + return getBoolean(ConfigNodes.SPAWNING_SETTINGS_IS_TRUSTED_RESIDENTS_COUNT_AS_RESIDENTS); } public static boolean isPromptingNewResidentsToTownSpawn() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_IS_NEW_RESIDENT_PROMPTED_TO_SPAWN); + return getBoolean(ConfigNodes.SPAWNING_IS_NEW_RESIDENT_PROMPTED_TO_SPAWN); } public static String getNotificationTitlesTownTitle() { @@ -3451,7 +3471,7 @@ public static List getWarBlacklistedCommands() { } public static boolean getVisualizedSpawnPointsEnabled() { - return getBoolean(ConfigNodes.PLUGIN_VISUALIZED_SPAWN_POINTS_ENABLED); + return getBoolean(ConfigNodes.SPAWNING_VISUALIZED_SPAWN_POINTS_ENABLED); } public static List getBlacklistedNames() { @@ -3563,7 +3583,7 @@ public static void saveConfig() { } public static long getSpawnProtectionDuration() { - return TimeTools.getTicks(getString(ConfigNodes.GTOWN_SETTINGS_RESPAWN_PROTECTION_TIME)); + return TimeTools.getTicks(getString(ConfigNodes.SPAWNING_RESPAWN_PROTECTION_TIME)); } public static boolean isUsingWebMapStatusScreens() { @@ -3620,7 +3640,7 @@ public static boolean isContextEnabled(String id) { } public static boolean getRespawnProtectionAllowPickup() { - return getBoolean(ConfigNodes.GTOWN_SETTINGS_RESPAWN_PROTECTION_ALLOW_PICKUP); + return getBoolean(ConfigNodes.SPAWNING_RESPAWN_PROTECTION_ALLOW_PICKUP); } public static String getNotificationsAppearAs() { @@ -3707,15 +3727,15 @@ public static float getBossBarNotificationProgress() { } public static int getNewTownMinDistanceFromTownPlots() { - return getInt(ConfigNodes.TOWN_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_PLOT); + return getInt(ConfigNodes.CLAIMING_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_PLOT); } public static int getNewTownMinDistanceFromTownHomeblocks() { - return getInt(ConfigNodes.TOWN_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK); + return getInt(ConfigNodes.CLAIMING_NEW_TOWN_MIN_DISTANCE_FROM_TOWN_HOMEBLOCK); } public static int getMinAdjacentBlocks() { - return Math.min(3, getInt(ConfigNodes.TOWN_MIN_ADJACENT_BLOCKS)); + return Math.min(3, getInt(ConfigNodes.CLAIMING_MIN_ADJACENT_BLOCKS)); } public static boolean isDeletingOldResidentsRemovingTownOnly() { @@ -3739,7 +3759,7 @@ public static String getDefaultResidentAbout() { } public static double maxBuyTownPrice() { - return getDouble(ConfigNodes.TOWN_MAX_BUYTOWN_PRICE); + return getDouble(ConfigNodes.GTOWN_SETTINGS_MAX_BUYTOWN_PRICE); } } diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyUniverse.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyUniverse.java index 1b520657dc..b09f561abc 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyUniverse.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyUniverse.java @@ -92,7 +92,8 @@ public class TownyUniverse { private final Map wildernessMapDataMap = new ConcurrentHashMap(); private final String rootFolder; - private TownyDataSource dataSource; + private TownyDataSource loadDataSource; + private TownyDataSource saveDataSource; private TownyPermissionSource permissionSource; private TownyUniverse() { @@ -141,21 +142,17 @@ public void clearAllObjects() { * @param loadDbType - load setting from the config. * @param saveDbType - save setting from the config. */ - void loadAndSaveDatabase(String loadDbType, String saveDbType) { + void loadAndSaveDatabase(String loadDbType, String saveDbType) throws TownyInitException { towny.getLogger().info("Database: [Load] " + loadDbType + " [Save] " + saveDbType); - try { - // Try loading the database. - loadDatabase(loadDbType); - } catch (TownyInitException e) { - throw new TownyInitException(e.getMessage(), e.getError()); + + loadDatabase(loadDbType); + saveDatabase(saveDbType); + + // Dispose of the load data source if it's no longer needed + if (this.loadDataSource != this.saveDataSource) { + this.loadDataSource.finishTasks(); + this.loadDataSource = null; } - - try { - // Try saving the database. - saveDatabase(saveDbType); - } catch (TownyInitException e) { - throw new TownyInitException(e.getMessage(), e.getError()); - } } /** @@ -174,22 +171,25 @@ private boolean loadDatabase(String loadDbType) { switch (loadDbType.toLowerCase(Locale.ROOT)) { case "ff": case "flatfile": { - this.dataSource = new TownyFlatFileSource(towny, this); + this.loadDataSource = new TownyFlatFileSource(towny, this); break; } case "mysql": { - this.dataSource = new TownySQLSource(towny, this); + this.loadDataSource = new TownySQLSource(towny, this); break; } default: { throw new TownyInitException("Database: Database.yml unsupported load format: " + loadDbType, TownyInitException.TownyError.DATABASE_CONFIG); } } + + // Loading the database can cause saving, so save that back to the load source + this.saveDataSource = this.loadDataSource; /* * Load the actual database. */ - if (!dataSource.loadAll()) + if (!loadDataSource.loadAll()) throw new TownyInitException("Database: Failed to load database.", TownyInitException.TownyError.DATABASE); long time = System.currentTimeMillis() - startTime; @@ -215,11 +215,11 @@ private boolean saveDatabase(String saveDbType) { switch (saveDbType.toLowerCase(Locale.ROOT)) { case "ff": case "flatfile": { - this.dataSource = new TownyFlatFileSource(towny, this); + this.saveDataSource = this.loadDataSource instanceof TownyFlatFileSource ? this.loadDataSource : new TownyFlatFileSource(towny, this); break; } case "mysql": { - this.dataSource = new TownySQLSource(towny, this); + this.saveDataSource = this.loadDataSource instanceof TownySQLSource ? this.loadDataSource : new TownySQLSource(towny, this); break; } default: { @@ -229,10 +229,10 @@ private boolean saveDatabase(String saveDbType) { if (TownySettings.getLoadDatabase().equalsIgnoreCase(saveDbType)) { // Update all Worlds data files - dataSource.saveAllWorlds(); + saveDataSource.saveAllWorlds(); } else { //Formats are different so save ALL data. - dataSource.saveAll(); + saveDataSource.saveAll(); } return true; } catch (UnsupportedOperationException e) { @@ -261,7 +261,7 @@ public void finishTasks() { */ public TownyDataSource getDataSource() { - return dataSource; + return saveDataSource; } public TownyPermissionSource getPermissionSource() { diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownCommand.java b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownCommand.java index e92976ff3a..c2b26a224d 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownCommand.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownCommand.java @@ -2304,26 +2304,7 @@ public static void townSetHomeblock(Player player, final Town town) throws Towny if (town.hasHomeBlock() && town.getHomeBlock().getWorldCoord().equals(townBlock.getWorldCoord())) throw new TownyException(Translatable.of("msg_err_homeblock_already_set_here")); - if (world.hasTowns() && - TownySettings.getMinDistanceFromTownHomeblocks() > 0 || - TownySettings.getMaxDistanceBetweenHomeblocks() > 0 || - TownySettings.getMinDistanceBetweenHomeblocks() > 0) { - - final int distanceToNextNearestHomeblock = world.getMinDistanceFromOtherTownsHomeBlocks(Coord.parseCoord(player), town); - if (distanceToNextNearestHomeblock < TownySettings.getMinDistanceFromTownHomeblocks() || - distanceToNextNearestHomeblock < TownySettings.getMinDistanceBetweenHomeblocks()) - throw new TownyException(Translatable.of("msg_too_close2", Translatable.of("homeblock"))); - - if (TownySettings.getMaxDistanceBetweenHomeblocks() > 0 && - distanceToNextNearestHomeblock > TownySettings.getMaxDistanceBetweenHomeblocks()) - throw new TownyException(Translatable.of("msg_too_far")); - } - - if (TownySettings.getHomeBlockMovementDistanceInTownBlocks() > 0) { - double distance = MathUtil.distance(town.getHomeBlock().getCoord(), townBlock.getCoord()); - if (distance > TownySettings.getHomeBlockMovementDistanceInTownBlocks()) - throw new TownyException(Translatable.of("msg_err_you_cannot_move_your_homeblock_this_far_limit_is_x_you_are_x", TownySettings.getHomeBlockMovementDistanceInTownBlocks(), Math.floor(distance))); - } + ProximityUtil.allowTownHomeBlockOrThrow(world, townBlock.getCoord(), town, false); BukkitTools.ifCancelledThenThrow(new TownPreSetHomeBlockEvent(town, townBlock, player)); @@ -2575,8 +2556,16 @@ public static void newTown(Player player, String name, Resident resident, boolea if (!TownyAPI.getInstance().isWilderness(spawnLocation)) throw new TownyException(Translatable.of("msg_already_claimed_1", key)); - if (world.hasTowns()) - testDistancesOrThrow(world, key); + // Check that a town isn't being formed inside of a biome that isn't allowed to be claimed. + if (TownySettings.isUnwantedBiomeClaimingEnabled() || TownySettings.isOceanClaimingBlocked()) { + List selection = Arrays.asList(WorldCoord.parseWorldCoord(spawnLocation)); + selection = AreaSelectionUtil.filterOutUnwantedBiomeWorldCoords(player, selection); + selection = AreaSelectionUtil.filterOutOceanBiomeWorldCoords(player, selection); + if (selection.isEmpty()) + throw new TownyException("msg_err_cannot_begin_town_in_this_biome"); + } + + ProximityUtil.allowTownHomeBlockOrThrow(world, key, null, true); // If the town doesn't cost money to create, just make the Town. if (noCharge || !TownyEconomyHandler.isActive()) { @@ -2683,37 +2672,6 @@ public static Town newTown(TownyWorld world, String name, Resident resident, Coo return town; } - private static void testDistancesOrThrow(TownyWorld world, Coord key) throws TownyException { - if (TownySettings.getMinDistanceFromTownPlotblocks() > 0 || TownySettings.getNewTownMinDistanceFromTownPlots() > 0) { - int minDistance = TownySettings.getNewTownMinDistanceFromTownPlots(); - if (minDistance <= 0) - minDistance = TownySettings.getMinDistanceFromTownPlotblocks(); - - if (world.getMinDistanceFromOtherTownsPlots(key) < minDistance) - throw new TownyException(Translatable.of("msg_too_close2", Translatable.of("townblock"))); - } - - if (TownySettings.getMinDistanceFromTownHomeblocks() > 0 || - TownySettings.getMaxDistanceBetweenHomeblocks() > 0 || - TownySettings.getMinDistanceBetweenHomeblocks() > 0 || - TownySettings.getNewTownMinDistanceFromTownHomeblocks() > 0) { - - final int distanceToNextNearestHomeblock = world.getMinDistanceFromOtherTownsHomeBlocks(key); - - int minDistance = TownySettings.getNewTownMinDistanceFromTownHomeblocks(); - if (minDistance <= 0) - minDistance = TownySettings.getMinDistanceFromTownHomeblocks(); - - if (distanceToNextNearestHomeblock < minDistance || distanceToNextNearestHomeblock < TownySettings.getMinDistanceBetweenHomeblocks()) - throw new TownyException(Translatable.of("msg_too_close2", Translatable.of("homeblock"))); - - if (TownySettings.getMaxDistanceBetweenHomeblocks() > 0 && - TownyUniverse.getInstance().getTowns().size() > 0 && - distanceToNextNearestHomeblock > TownySettings.getMaxDistanceBetweenHomeblocks()) - throw new TownyException(Translatable.of("msg_too_far")); - } - } - private static String filterNameOrThrow(String name) throws TownyException { if (TownySettings.getTownAutomaticCapitalisationEnabled()) name = StringMgmt.capitalizeStrings(name); @@ -3548,14 +3506,17 @@ else if (result.feedback() != null) // Select the area, can be one or many. selection = AreaSelectionUtil.selectWorldCoordArea(town, new WorldCoord(world.getName(), key), split, true); - - if (selection.size() > 1) - checkPermOrThrow(player, PermissionNodes.TOWNY_COMMAND_TOWN_CLAIM_TOWN_MULTIPLE.getNode()); } // Filter out any TownBlocks which aren't Wilderness. selection = AreaSelectionUtil.filterOutTownOwnedBlocks(selection); + // Filter out any TownBlocks which have too much of the unwanted biomes, when enabled. + selection = AreaSelectionUtil.filterOutUnwantedBiomeWorldCoords(player, selection); + + // Filter out any TownBlocks which have too much ocean biomes, when enabled. + selection = AreaSelectionUtil.filterOutOceanBiomeWorldCoords(player, selection); + if (selection.isEmpty()) throw new TownyException(Translatable.of("msg_err_empty_area_selection")); diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java index f2614b2077..e5204550ac 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java @@ -2822,7 +2822,7 @@ private void parseAdminInstall(CommandSender sender) throws NoPermissionExceptio toggleWildernessUsage(parseBoolean(context.getSessionData(0))); toggleRevertUnclaim(parseBoolean(context.getSessionData(1))); - TownySettings.setProperty(ConfigNodes.TOWN_TOWN_BLOCK_RATIO.getRoot(), Integer.parseInt((String) context.getSessionData(2))); + TownySettings.setProperty(ConfigNodes.CLAIMING_TOWN_BLOCK_RATIO.getRoot(), Integer.parseInt((String) context.getSessionData(2))); if (TownyEconomyHandler.isActive()) { TownySettings.setProperty(ConfigNodes.ECO_PRICE_NEW_TOWN.getRoot(), Integer.parseInt((String) context.getSessionData(3))); diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyCommand.java b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyCommand.java index 75d7f6932f..73e9b4afc4 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyCommand.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyCommand.java @@ -362,17 +362,27 @@ private void parseTopCommand(CommandSender sender, String[] args) throws TownyEx } public List getUniverseStats(Translator translator) { + String heart1 = "\u00A70-\u00A74###\u00A70---\u00A74###\u00A70- "; + String heart2 = "\u00A74#\u00A7c###\u00A74#\u00A70-\u00A74#\u00A7c###\u00A74#\u00A70 "; + String heart3 = "\u00A74#\u00A7c####\u00A74#\u00A7c####\u00A74# "; + String heart4 = "\u00A70-\u00A74#\u00A7c#######\u00A74#\u00A70-"; + String heart5 = "\u00A70--\u00A74##\u00A7c###\u00A74##\u00A70-- "; + String heart6 = "\u00A70----\u00A74#\u00A7c#\u00A74#\u00A70---- "; + String heart7 = "\u00A70-----\u00A74#\u00A70----- "; + String splitter = Colors.Gray + " | "; TownyUniverse townyUniverse = TownyUniverse.getInstance(); List output = new ArrayList<>(); - output.add(""); // Intentionally left blank - output.add("\u00A70-\u00A74###\u00A70---\u00A74###\u00A70- " + Colors.Gold + "[" + Colors.Yellow + "Towny " + Colors.Green + plugin.getVersion() + Colors.Gold + "]"); - output.add("\u00A74#\u00A7c###\u00A74#\u00A70-\u00A74#\u00A7c###\u00A74#\u00A70 " + Colors.Blue + translator.of("msg_universe_attribution") + Colors.LightBlue + "Chris H (Shade), ElgarL, LlmDl"); - output.add("\u00A74#\u00A7c####\u00A74#\u00A7c####\u00A74# " + Colors.LightBlue + translator.of("msg_universe_contributors") + Colors.Rose + translator.of("msg_universe_heart")); - output.add("\u00A70-\u00A74#\u00A7c#######\u00A74#\u00A70-"); - output.add("\u00A70--\u00A74##\u00A7c###\u00A74##\u00A70-- " + Colors.Blue + translator.of("res_list")+ ": " + Colors.LightBlue + townyUniverse.getNumResidents() + Colors.Gray + " | " + Colors.Blue + translator.of("town_plu") + ": " + Colors.LightBlue + townyUniverse.getTowns().size() + Colors.Gray + " | " + Colors.Blue + translator.of("nation_plu") + ": " + Colors.LightBlue + townyUniverse.getNumNations()); - output.add("\u00A70----\u00A74#\u00A7c#\u00A74#\u00A70---- " + Colors.Blue + translator.of("world_plu") + ": " + Colors.LightBlue + townyUniverse.getTownyWorlds().size() + Colors.Gray + " | " + Colors.Blue + translator.of("townblock_plu") + ": " + Colors.LightBlue + townyUniverse.getTownBlocks().size()); - output.add("\u00A70-----\u00A74#\u00A70----- " + Colors.LightGreen + "https://TownyAdvanced.github.io/"); + output.add(heart1 + Colors.Gold + "[" + Colors.Yellow + "Towny " + Colors.Green + plugin.getVersion() + Colors.Gold + "]"); + output.add(heart2 + Colors.Blue + translator.of("msg_universe_attribution") + Colors.LightBlue + "LlmDl, Warrior, ElgarL, Chris H (Shade)"); + output.add(heart3 + Colors.LightBlue + translator.of("msg_universe_contributors") + Colors.Rose + translator.of("msg_universe_heart")); + output.add(heart4); + output.add(heart5 + Colors.Blue + translator.of("res_list")+ ": " + Colors.LightBlue + townyUniverse.getNumResidents() + splitter + + Colors.Blue + translator.of("town_plu") + ": " + Colors.LightBlue + townyUniverse.getTowns().size() + splitter + + Colors.Blue + translator.of("nation_plu") + ": " + Colors.LightBlue + townyUniverse.getNumNations()); + output.add(heart6 + Colors.Blue + translator.of("world_plu") + ": " + Colors.LightBlue + townyUniverse.getTownyWorlds().size() + splitter + + Colors.Blue + translator.of("townblock_plu") + ": " + Colors.LightBlue + townyUniverse.getTownBlocks().size()); + output.add(heart7 + Colors.LightGreen + "https://TownyAdvanced.github.io/"); output.add(""); // Intentionally left blank // Other TownyAdvanced plugins to report versions diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/db/SQLTask.java b/Towny/src/main/java/com/palmergames/bukkit/towny/db/SQLTask.java index ae9756e9c9..140916ac33 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/db/SQLTask.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/db/SQLTask.java @@ -6,7 +6,8 @@ import java.util.Map; @ApiStatus.Internal -public class SQLTask { +public class SQLTask implements Runnable { + private final TownySQLSource source; // Update flags this for an insert/update or delete. public final boolean update; @@ -21,9 +22,9 @@ public class SQLTask { * @param tb_name - Table name. * @param args - Arguments. */ - public SQLTask(String tb_name, Map args) { + public SQLTask(TownySQLSource source, String tb_name, Map args) { - this(false, tb_name, args, null); + this(source, false, tb_name, args, null); } @@ -34,14 +35,14 @@ public SQLTask(String tb_name, Map args) { * @param args - Arguments. * @param keys - Keys to add to table. */ - public SQLTask(String tb_name, Map args, List keys) { + public SQLTask(TownySQLSource source, String tb_name, Map args, List keys) { - this(true, tb_name, args, keys); + this(source, true, tb_name, args, keys); } - private SQLTask(boolean update, String tb_name, Map args, List keys) { - + private SQLTask(TownySQLSource source, boolean update, String tb_name, Map args, List keys) { + this.source = source; this.update = update; this.tb_name = tb_name; this.args = args; @@ -49,4 +50,12 @@ private SQLTask(boolean update, String tb_name, Map args, List { - while (!this.queryQueue.isEmpty()) { - Runnable operation = this.queryQueue.poll(); - operation.run(); + synchronized(queryQueue) { + while (!this.queryQueue.isEmpty()) { + Runnable operation = this.queryQueue.poll(); + operation.run(); + } } }, 5L, 5L); } diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownySQLSource.java b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownySQLSource.java index 9c3e0cd008..f08ea0fda4 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownySQLSource.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownySQLSource.java @@ -28,7 +28,6 @@ import com.palmergames.bukkit.towny.object.WorldCoord; import com.palmergames.bukkit.towny.object.metadata.MetadataLoader; import com.palmergames.bukkit.towny.object.jail.Jail; -import com.palmergames.bukkit.towny.scheduling.ScheduledTask; import com.palmergames.bukkit.towny.tasks.CooldownTimerTask; import com.palmergames.bukkit.towny.utils.MapUtil; import com.palmergames.bukkit.util.BukkitTools; @@ -57,19 +56,13 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; -import java.util.Queue; import java.util.UUID; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentLinkedQueue; import java.util.logging.Level; import java.util.stream.Collectors; public final class TownySQLSource extends TownyDatabaseHandler { - private final Queue queryQueue = new ConcurrentLinkedQueue<>(); - private boolean isPolling = false; - private final ScheduledTask task; - private final String tb_prefix; private final HikariDataSource hikariDataSource; @@ -140,47 +133,12 @@ public TownySQLSource(Towny plugin, TownyUniverse universe) { } catch (SQLException e) { logger.error("Failed to connect to the database", e); } - - /* - * Start our Async queue for pushing data to the database. - */ - task = plugin.getScheduler().runAsyncRepeating(() -> { - if (this.isPolling) - return; - - this.isPolling = true; - try { - SQLTask query; - while ((query = this.queryQueue.poll()) != null) { - if (query.update) { - TownySQLSource.this.queueUpdateDB(query.tb_name, query.args, query.keys); - } else { - TownySQLSource.this.queueDeleteDB(query.tb_name, query.args); - } - } - } finally { - this.isPolling = false; - } - - }, 5L, 5L); } @Override public void finishTasks() { - // Cancel the repeating task as its not needed anymore. - if (task != null) - task.cancel(); - - // Make sure that *all* tasks are saved before shutting down. - while (!queryQueue.isEmpty()) { - SQLTask query = TownySQLSource.this.queryQueue.poll(); + super.finishTasks(); - if (query.update) { - TownySQLSource.this.queueUpdateDB(query.tb_name, query.args, query.keys); - } else { - TownySQLSource.this.queueDeleteDB(query.tb_name, query.args); - } - } // Close the database sources on shutdown to get GC if (hikariDataSource != null) hikariDataSource.close(); @@ -232,7 +190,7 @@ public boolean updateDB(String tb_name, Map args, List keys) * Make sure we only execute queries in async */ - this.queryQueue.add(new SQLTask(tb_name, args, keys)); + this.queryQueue.add(new SQLTask(this, tb_name, args, keys)); return true; @@ -398,7 +356,7 @@ public boolean DeleteDB(String tb_name, HashMap args) { // Make sure we only execute queries in async - this.queryQueue.add(new SQLTask(tb_name, args)); + this.queryQueue.add(new SQLTask(this, tb_name, args)); return true; diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/hooks/PluginIntegrations.java b/Towny/src/main/java/com/palmergames/bukkit/towny/hooks/PluginIntegrations.java index 2a245681d4..8002cd7d33 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/hooks/PluginIntegrations.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/hooks/PluginIntegrations.java @@ -40,9 +40,9 @@ public class PluginIntegrations { private static PluginIntegrations instance; private final String[] TOWNYADVANCED_PLUGINS = { "TownyChat", "TownyFlight", "TownyCultures", "TownyResources", "TownyCombat", "FlagWar", "SiegeWar", "MapTowny", "Dynmap-Towny", "ChestShop-Towny", "mcMMO-Towny", - "Towny-TNE", "WorldGuard-Towny" }; + "Towny-TNE", "WorldGuard-Towny", "TownyProvinces" }; private final String[] SPONSOR_PLUGINS = { "EventWar", "SiegeConquest", "TownyCamps", "TownyHistories", "TownyRTP", - "TownyWayPointTravel", "TownOptionalLWC" }; + "TownyWayPointTravel", "TownOptionalLWC", "TowerOfBable", "TownyCaptureSites" }; private final String NEWLINE_STRING = System.lineSeparator() + " "; private final Map warnings = new LinkedHashMap<>(); diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyCustomListener.java b/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyCustomListener.java index 92c3292894..82efd50bb6 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyCustomListener.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyCustomListener.java @@ -247,7 +247,7 @@ public void onChunkNotification(ChunkNotificationEvent event) { @EventHandler(ignoreCancelled = true) public void onResidentJoinTown(TownAddResidentEvent event) { - if (!TownySettings.isPromptingNewResidentsToTownSpawn() || !TownySettings.getBoolean(ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN)) + if (!TownySettings.isPromptingNewResidentsToTownSpawn() || !TownySettings.getBoolean(ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN)) return; Town town = event.getTown(); diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java b/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java index f7e218507d..c91c45b79c 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java @@ -454,10 +454,15 @@ public void onEntityInteract(EntityInteractEvent event) { if (entity instanceof Villager && ItemLists.WOOD_DOORS.contains(block.getType())) return; - // Prevent creatures triggering switch items, - // OR prevent creatures triggering stone pressure plates (if the config denies it.) - if (TownySettings.isSwitchMaterial(block.getType(), block.getLocation()) - || (TownySettings.isCreatureTriggeringPressurePlateDisabled() && block.getType() == Material.STONE_PRESSURE_PLATE)) { + // Special case protecting stone pressure plates triggered by creatures. + if (block.getType() == Material.STONE_PRESSURE_PLATE) { + if(TownySettings.isCreatureTriggeringPressurePlateDisabled()) + event.setCancelled(true); + return; + } + + // Prevent creatures triggering switch items. + if (TownySettings.isSwitchMaterial(block.getType(), block.getLocation())) { event.setCancelled(true); return; } diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/NationSpawnLevel.java b/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/NationSpawnLevel.java index f8a6f66956..83064c41a1 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/NationSpawnLevel.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/NationSpawnLevel.java @@ -12,29 +12,29 @@ public enum NationSpawnLevel { PART_OF_NATION( - ConfigNodes.GNATION_SETTINGS_ALLOW_NATION_SPAWN, + ConfigNodes.SPAWNING_ALLOW_NATION_SPAWN, "msg_err_nation_spawn_forbidden", "msg_err_nation_spawn_forbidden_war", "msg_err_nation_spawn_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL, PermissionNodes.TOWNY_NATION_SPAWN_NATION.getNode(), - ConfigNodes.GNATION_SETTINGS_NATION_MEMBER_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_NATION_SPAWN_NATION_MEMBER_COOLDOWN_TIMER), NATION_ALLY( - ConfigNodes.GNATION_SETTINGS_ALLOW_NATION_SPAWN_TRAVEL_ALLY, + ConfigNodes.SPAWNING_ALLOW_NATION_SPAWN_TRAVEL_ALLY, "msg_err_nation_spawn_ally_forbidden", "msg_err_nation_spawn_nation_forbidden_war", "msg_err_nation_spawn_nation_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL_ALLY, PermissionNodes.TOWNY_NATION_SPAWN_ALLY.getNode(), - ConfigNodes.GNATION_SETTINGS_NATION_ALLY_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_NATION_SPAWN_NATION_ALLY_COOLDOWN_TIMER), UNAFFILIATED( - ConfigNodes.GNATION_SETTINGS_ALLOW_NATION_SPAWN_TRAVEL, + ConfigNodes.SPAWNING_ALLOW_NATION_SPAWN_TRAVEL, "msg_err_public_nation_spawn_forbidden", "msg_err_public_nation_spawn_forbidden_war", "msg_err_public_nation_spawn_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL_PUBLIC, PermissionNodes.TOWNY_NATION_SPAWN_PUBLIC.getNode(), - ConfigNodes.GNATION_SETTINGS_NATION_UNAFFILIATED_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_NATION_SPAWN_NATION_UNAFFILIATED_COOLDOWN_TIMER), ADMIN( null, null, diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/TownSpawnLevel.java b/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/TownSpawnLevel.java index 3096307c0d..6579825d17 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/TownSpawnLevel.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/object/spawnlevel/TownSpawnLevel.java @@ -12,45 +12,45 @@ public enum TownSpawnLevel { TOWN_RESIDENT( - ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN, + ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN, "msg_err_town_spawn_forbidden", "msg_err_town_spawn_forbidden_war", "msg_err_town_spawn_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL, PermissionNodes.TOWNY_SPAWN_TOWN.getNode(), - ConfigNodes.GTOWN_SETTINGS_SPAWN_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_TOWN_SPAWN_COOLDOWN_TIMER), TOWN_RESIDENT_OUTPOST( - ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN, + ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN, "msg_err_town_spawn_forbidden", "msg_err_town_spawn_forbidden_war", "msg_err_town_spawn_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL, PermissionNodes.TOWNY_SPAWN_OUTPOST.getNode(), - ConfigNodes.GTOWN_SETTINGS_OUTPOST_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_TOWN_SPAWN_OUTPOST_COOLDOWN_TIMER), PART_OF_NATION( - ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL_NATION, + ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL_NATION, "msg_err_town_spawn_nation_forbidden", "msg_err_town_spawn_nation_forbidden_war", "msg_err_town_spawn_nation_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL_NATION, PermissionNodes.TOWNY_SPAWN_NATION.getNode(), - ConfigNodes.GTOWN_SETTINGS_NATION_MEMBER_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_TOWN_SPAWN_NATION_MEMBER_COOLDOWN_TIMER), NATION_ALLY( - ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL_ALLY, + ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL_ALLY, "msg_err_town_spawn_ally_forbidden", "msg_err_town_spawn_nation_forbidden_war", "msg_err_town_spawn_nation_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL_ALLY, PermissionNodes.TOWNY_SPAWN_ALLY.getNode(), - ConfigNodes.GTOWN_SETTINGS_NATION_ALLY_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_TOWN_SPAWN_NATION_ALLY_COOLDOWN_TIMER), UNAFFILIATED( - ConfigNodes.GTOWN_SETTINGS_ALLOW_TOWN_SPAWN_TRAVEL, + ConfigNodes.SPAWNING_ALLOW_TOWN_SPAWN_TRAVEL, "msg_err_public_spawn_forbidden", "msg_err_town_spawn_forbidden_war", "msg_err_town_spawn_forbidden_peace", ConfigNodes.ECO_PRICE_TOWN_SPAWN_TRAVEL_PUBLIC, PermissionNodes.TOWNY_SPAWN_PUBLIC.getNode(), - ConfigNodes.GTOWN_SETTINGS_UNAFFILIATED_COOLDOWN_TIMER), + ConfigNodes.SPAWNING_TOWN_SPAWN_UNAFFILIATED_COOLDOWN_TIMER), ADMIN( null, null, diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/permissions/PermissionNodes.java b/Towny/src/main/java/com/palmergames/bukkit/towny/permissions/PermissionNodes.java index 6c5a59dafe..32d892e04c 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/permissions/PermissionNodes.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/permissions/PermissionNodes.java @@ -176,7 +176,6 @@ public enum PermissionNodes { TOWNY_COMMAND_TOWN_CLAIM("towny.command.town.claim.*"), TOWNY_COMMAND_TOWN_CLAIM_TOWN("towny.command.town.claim.town"), - TOWNY_COMMAND_TOWN_CLAIM_TOWN_MULTIPLE("towny.command.town.claim.town.multiple"), TOWNY_COMMAND_TOWN_CLAIM_OUTPOST("towny.command.town.claim.outpost"), TOWNY_COMMAND_TOWN_CLAIM_FILL("towny.command.town.claim.fill"), diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java index 2cbed5746b..0b37a1b0be 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/tasks/DailyTimerTask.java @@ -132,7 +132,7 @@ public void run() { TownyMessaging.sendDebugMsg(" Towns: " + universe.getTowns().size()); TownyMessaging.sendDebugMsg(" Nations: " + universe.getNumNations()); for (TownyWorld world : universe.getTownyWorlds()) - TownyMessaging.sendDebugMsg(" " + world.getName() + " (townblocks): " + universe.getTownBlocks().size()); + TownyMessaging.sendDebugMsg(" " + world.getName() + " (townblocks): " + world.getTownBlocks().size()); TownyMessaging.sendDebugMsg("Memory (Java Heap):"); TownyMessaging.sendDebugMsg(String.format("%8d Mb (max)", Runtime.getRuntime().maxMemory() / 1024 / 1024)); diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/AreaSelectionUtil.java b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/AreaSelectionUtil.java index 021765e6ec..a1a2114f88 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/AreaSelectionUtil.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/AreaSelectionUtil.java @@ -12,14 +12,19 @@ import com.palmergames.bukkit.towny.object.TownBlockOwner; import com.palmergames.bukkit.towny.object.Translatable; import com.palmergames.bukkit.towny.object.WorldCoord; +import com.palmergames.bukkit.util.BiomeUtil; import com.palmergames.util.MathUtil; import com.palmergames.util.StringMgmt; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.function.Predicate; import java.util.stream.Collectors; +import org.bukkit.entity.Player; + public class AreaSelectionUtil { /** A maximum radius of 15 will garner 961 townblocks. Capped to prevent servers from dying. */ @@ -322,7 +327,6 @@ private static List selectWorldCoordAreaCircle(int maxSelectionSize, * Returns a list containing only townblocks that can be claimed. * Filters out townblocks too close to other towns as set in the config. * - * @param selection - List<WorldCoord> of coordinates * @param town - Town to check distance from * @return List of {@link WorldCoord} @@ -525,6 +529,56 @@ public static List filterOutResidentBlocks(Resident resident, List filterOutUnwantedBiomeWorldCoords(Player player, List selection) { + if (!TownySettings.isUnwantedBiomeClaimingEnabled()) + return selection; + Predicate biomeThresholdTest = wc -> BiomeUtil.getWorldCoordUnwantedBiomePercent(wc) < TownySettings.getUnwantedBiomeThreshold(); + return filterOutByBiome(player, selection, biomeThresholdTest, "msg_err_cannot_claim_the_following_worldcoords_because_of_unwanted_biome"); + } + + /** + * Returns a List containing only WorldCoords which are not composed of "too much" + * ocean biomes, with the threshold determined by the config. + * + * @param player Player trying to claim. + * @param selection List of WorldCoords. + * @return a List of WorldCoords which have passed the biome requirements. + */ + public static List filterOutOceanBiomeWorldCoords(Player player, List selection) { + if (!TownySettings.isOceanClaimingBlocked()) + return selection; + + Predicate biomeThresholdTest = wc -> BiomeUtil.getWorldCoordOceanBiomePercent(wc) < TownySettings.getOceanBlockThreshold(); + return filterOutByBiome(player, selection, biomeThresholdTest, "msg_err_cannot_claim_the_following_worldcoords_because_of_ocean_biome"); + } + + public static List filterOutByBiome(Player player, List selection, Predicate biomeThresholdTest, String errorMsg) { + // Strip list into succesful and failing lists of WorldCoords. + Map> worldCoords = selection.stream().collect(Collectors.partitioningBy(biomeThresholdTest)); + + // Feedback as to why a plot isn't claimable due to biome. + if (!worldCoords.get(false).isEmpty()) + TownyMessaging.sendErrorMsg(player, Translatable.of(errorMsg, prettyWorldCoordList(worldCoords.get(false)))); + + // Return successful selections. + return worldCoords.get(true); + } + + private static String prettyWorldCoordList(List worldCoords) { + return StringMgmt.join(worldCoords.stream() + .map(wc -> String.format("(%s)", wc.getCoord().toString())) + .collect(Collectors.toList()), ", "); + } + public static int getAreaSelectPivot(String[] args) { for (int i = 0; i < args.length; i++) { diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/ProximityUtil.java b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/ProximityUtil.java index ef0920b4b3..39ef2753bf 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/ProximityUtil.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/ProximityUtil.java @@ -4,18 +4,69 @@ import java.util.List; import java.util.stream.Collectors; +import org.jetbrains.annotations.Nullable; + import com.palmergames.bukkit.towny.TownyMessaging; import com.palmergames.bukkit.towny.TownySettings; import com.palmergames.bukkit.towny.exceptions.TownyException; +import com.palmergames.bukkit.towny.object.Coord; import com.palmergames.bukkit.towny.object.Nation; import com.palmergames.bukkit.towny.object.Town; import com.palmergames.bukkit.towny.object.TownBlock; +import com.palmergames.bukkit.towny.object.TownyWorld; import com.palmergames.bukkit.towny.object.Translatable; import com.palmergames.bukkit.towny.object.WorldCoord; import com.palmergames.util.MathUtil; public class ProximityUtil { + /* + * Town Proximity Methods + */ + + public static void allowTownHomeBlockOrThrow(TownyWorld world, Coord key, @Nullable Town town, boolean newTown) throws TownyException { + if (!world.hasTowns()) // No towns exist yet, we cannot be too close to any other town. + return; + + if (newTown) { // Tests run only when there is a new town involved. + if (TownySettings.getMinDistanceFromTownPlotblocks() > 0 || TownySettings.getNewTownMinDistanceFromTownPlots() > 0) { + // Sometimes new towns have special min. distances from other towns. + int minDistance = TownySettings.getNewTownMinDistanceFromTownPlots(); + if (minDistance <= 0) + minDistance = TownySettings.getMinDistanceFromTownPlotblocks(); + + // throws when a new town is being made to close to another town's land. + if (world.getMinDistanceFromOtherTownsPlots(key) < minDistance) + throw new TownyException(Translatable.of("msg_too_close2", Translatable.of("townblock"))); + } + } + + if (TownySettings.getMinDistanceFromTownHomeblocks() > 0 || + TownySettings.getMaxDistanceBetweenHomeblocks() > 0 || + TownySettings.getMinDistanceBetweenHomeblocks() > 0 || + (newTown && TownySettings.getNewTownMinDistanceFromTownHomeblocks() > 0)) { + + final int distanceToNextNearestHomeblock = world.getMinDistanceFromOtherTownsHomeBlocks(key, town); + // Sometimes new towns have special min. distances from other towns' homeblocks. + int minDistance = newTown ? TownySettings.getNewTownMinDistanceFromTownHomeblocks() : 0; + if (minDistance <= 0) + minDistance = TownySettings.getMinDistanceFromTownHomeblocks(); + + // throws when the town's homeblock is too close to another homeblock. + if (distanceToNextNearestHomeblock < minDistance || distanceToNextNearestHomeblock < TownySettings.getMinDistanceBetweenHomeblocks()) + throw new TownyException(Translatable.of("msg_too_close2", Translatable.of("homeblock"))); + + // throws when the town's homeblock would be too far from other towns' homeblocks. + if (TownySettings.getMaxDistanceBetweenHomeblocks() > 0 && + distanceToNextNearestHomeblock > TownySettings.getMaxDistanceBetweenHomeblocks()) + throw new TownyException(Translatable.of("msg_too_far")); + } + } + + /* + * Nation Promixity Methods + */ + public static void testTownProximityToNation(Town town, Nation nation) throws TownyException { if (TownySettings.getNationProximityToCapital() <= 0) return; diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/SpawnUtil.java b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/SpawnUtil.java index 974c8fa7f1..854965fc89 100644 --- a/Towny/src/main/java/com/palmergames/bukkit/towny/utils/SpawnUtil.java +++ b/Towny/src/main/java/com/palmergames/bukkit/towny/utils/SpawnUtil.java @@ -535,6 +535,11 @@ private static void testDisallowedZones(Player player, Resident resident, SpawnT if (townAtPlayerLoc != null) { if (townAtPlayerLoc.hasOutlaw(player.getName()) && disallowedZones.contains("outlaw")) throw new TownyException(Translatable.of("msg_err_x_spawn_disallowed_from_x", "RTP", Translatable.of("msg_a_town_you_are_outlawed_in"))); + if (resident.hasTown() && townAtPlayerLoc.hasNation()) { + Nation townLocNation = townAtPlayerLoc.getNationOrNull(); + if (townLocNation.hasSanctionedTown(resident.getTownOrNull())) + throw new TownyException(Translatable.of("msg_err_cannot_nation_spawn_your_town_is_sanctioned", townLocNation.getName())); + } if (resident.hasNation() && townAtPlayerLoc.hasNation()) { if (CombatUtil.isEnemy(resident.getTownOrNull(), townAtPlayerLoc) && disallowedZones.contains("enemy")) throw new TownyException(Translatable.of("msg_err_x_spawn_disallowed_from_x", spawnType.typeName(), Translatable.of("msg_enemy_areas"))); diff --git a/Towny/src/main/java/com/palmergames/bukkit/util/BiomeUtil.java b/Towny/src/main/java/com/palmergames/bukkit/util/BiomeUtil.java new file mode 100644 index 0000000000..534adf6f4a --- /dev/null +++ b/Towny/src/main/java/com/palmergames/bukkit/util/BiomeUtil.java @@ -0,0 +1,37 @@ +package com.palmergames.bukkit.util; + +import java.util.Locale; +import java.util.function.Predicate; +import org.bukkit.World; +import org.bukkit.block.Biome; +import com.palmergames.bukkit.towny.TownySettings; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class BiomeUtil { + + private static Predicate isOceanPredicate = (biome) -> biome.name().contains("OCEAN"); + private static Predicate isUnwantedBiomePredicate = (biome) -> TownySettings.getUnwantedBiomeNames().contains(biome.name().toLowerCase(Locale.ROOT)); + + public static double getWorldCoordOceanBiomePercent(WorldCoord worldCoord) { + return getWorldCoordBadBiomePercent(worldCoord, isOceanPredicate); + } + + public static double getWorldCoordUnwantedBiomePercent(WorldCoord worldCoord) { + return getWorldCoordBadBiomePercent(worldCoord, isUnwantedBiomePredicate); + } + + public static double getWorldCoordBadBiomePercent(WorldCoord worldCoord, Predicate biomePredicate) { + World world = worldCoord.getBukkitWorld(); + int plotSize = TownySettings.getTownBlockSize(); + int worldX = worldCoord.getX() * plotSize, worldZ = worldCoord.getZ() * plotSize; + + int total = plotSize * plotSize; + int badBiomeBlocks = 0; + for (int z = 0; z < plotSize; z++) + for (int x = 0; x < plotSize; x++) + if (biomePredicate.test(world.getHighestBlockAt(worldX + x, worldZ + z).getBiome())) + badBiomeBlocks++; + + return (double) badBiomeBlocks / total; + } +} diff --git a/Towny/src/main/resources/ChangeLog.txt b/Towny/src/main/resources/ChangeLog.txt index b708dc797c..b8dab0c1a0 100644 --- a/Towny/src/main/resources/ChangeLog.txt +++ b/Towny/src/main/resources/ChangeLog.txt @@ -9315,4 +9315,47 @@ v0.92.0.11: - API: Added NationSanctionTownRemoveEvent - A cancellable event which is fired before a town becomes unsanctioned. 0.100.0.14: - - Fix potential IllegalArgumentException by loading sanctioned towns in a safer way. \ No newline at end of file + - Fix potential IllegalArgumentException by loading sanctioned towns in a safer way. +0.100.0.15: + - Removed Permission Node: towny.command.town.claim.town.multiple + - Towny over the years has made great progress towards making claiming more light weight on the server. + - Therefore it makes sense to allow the use of /t claim # and other multi-claiming commands by default. + - Update attribution in /towny universe to reflect 2023 stats. + - Update Towny/Sponsor plugins list. + - Correct townblock reporting in debug messages no one sees. + - Make the TownyUniverse code a bit more readable. + - Seperate the load and save data sources, courtesy of Warrior with PR #7100. + - Fixes a minor memory/connection leak when using mysql, the load datasource is now properly shut down when it's no longer needed and re-used if possible. +0.100.0.16: + - Reorganize the config, creating dedicated sections for Claiming and Spawning. + - Existing config.yml's will have ~60 entries moved into their new locations with their settings preserved. + - Over 13 years of Towny development there have been many settings added into the section that was a "best-fit". + - The creation of Spawning and Claiming section will ease the addition of future settings in these areas. + - Bump net.kyori:adventure-text-minimessage from 4.14.0 to 4.15.0. + - Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1. + - Bump net.kyori:adventure-text-serializer-plain from 4.14.0 to 4.15.0. + - Prevent players of nation-sanctioned towns being able to use /n spawn [nationname]. +0.100.0.17: + - Fix creatures-using-stone-pressure-plates config setting being overridden. + - Closes #7150. + - Add the ability to block claiming in plots which have too much Ocean or otherwise Unwanted biome in them. + - Closes #7136. + - New Config Option: claiming.biome_rules.unwanted_biomes.enabled + - Default: false + - When true, unwanted biomes will be tested for when a player is claiming land. + - New Config Option: claiming.biome_rules.unwanted_biomes.biomes + - Default: "the_end,end_barrens,end_highlands,end_midlands,small_end_islands" + - A comma separated list of biome names that will add up towards a townblock's un-claim-ability. + - New Config Option: claiming.biome_rules.unwanted_biomes.threshold + - Default: 55 + - The max amount of combined unwanted biomes as a percent, that will be allowed in plots being claimed by towns. + - For example, if a townblock would be more than X percent ocean it will not be able to be claimed. + - New Config Option: claiming.biome_rules.ocean_blocking.enabled + - Default: false + - When true, any wilderness plot which has more Ocean biome in it than the allowed threshold (see below,) will not be able to be claimed. + - New Config Option: claiming.biome_rules.ocean_blocking.threshold + - Default: 55 + - The max amount of combined ocean biomes as a percent, that will be allowed in plots being claimed by towns. + - For example, if a townblock would be more than X percent ocean it will not be able to be claimed. +0.100.0.18: + - Refactor town homeblock proximity tests into new ProximityUtil method. \ No newline at end of file diff --git a/Towny/src/main/resources/config-migration.json b/Towny/src/main/resources/config-migration.json index 8faea1fbae..e9193ec870 100644 --- a/Towny/src/main/resources/config-migration.json +++ b/Towny/src/main/resources/config-migration.json @@ -526,5 +526,315 @@ "value": "global_nation_settings.proximity.nation_proximity_to_capital_city" } ] + }, + { + "version": "0.100.0.16", + "changes": [ + { + "type": "MOVE", + "path": "town.town_block_ratio", + "value": "claiming.town_block_ratio" + }, + { + "type": "MOVE", + "path": "town.town_block_limit", + "value": "claiming.town_block_limit" + }, + { + "type": "MOVE", + "path": "town.town_block_size", + "value": "claiming.town_block_size" + }, + { + "type": "MOVE", + "path": "town.min_adjacent_blocks", + "value": "claiming.min_adjacent_blocks" + }, + { + "type": "MOVE", + "path": "town.max_claim_radius_value", + "value": "claiming.max_claim_radius_value" + }, + { + "type": "MOVE", + "path": "town.min_distances_ignored_for_towns_in_same_nation", + "value": "claiming.distance_rules.min_distances_ignored_for_towns_in_same_nation" + }, + { + "type": "MOVE", + "path": "town.min_distances_ignored_for_towns_in_allied_nation", + "value": "claiming.distance_rules.min_distances_ignored_for_towns_in_allied_nation" + }, + { + "type": "MOVE", + "path": "town.min_plot_distance_from_town_plot", + "value": "claiming.distance_rules.min_plot_distance_from_town_plot" + }, + { + "type": "MOVE", + "path": "town.min_distance_from_town_homeblock", + "value": "claiming.distance_rules.min_distance_from_town_homeblock" + }, + { + "type": "MOVE", + "path": "town.min_distance_for_outpost_from_plot", + "value": "claiming.distance_rules.min_distance_for_outpost_from_plot" + }, + { + "type": "MOVE", + "path": "town.max_distance_for_outpost_from_town_plot", + "value": "claiming.distance_rules.max_distance_for_outpost_from_town_plot" + }, + { + "type": "MOVE", + "path": "town.min_distance_between_homeblocks", + "value": "claiming.distance_rules.min_distance_between_homeblocks" + }, + { + "type": "MOVE", + "path": "town.max_distance_between_homeblocks", + "value": "claiming.distance_rules.max_distance_between_homeblocks" + }, + { + "type": "MOVE", + "path": "town.new_town_min_distance_from_town_plot", + "value": "claiming.distance_rules.new_town_min_distance_from_town_plot" + }, + { + "type": "MOVE", + "path": "town.new_town_min_distance_from_town_homeblock", + "value": "claiming.distance_rules.new_town_min_distance_from_town_homeblock" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_outposts", + "value": "claiming.outposts.allow_outposts" + }, + { + "type": "MOVE", + "path": "global_town_settings.limit_outposts_using_town_and_nation_levels", + "value": "claiming.outposts.limit_outposts_using_town_and_nation_levels" + }, + { + "type": "MOVE", + "path": "global_town_settings.over_outpost_limits_stops_teleports", + "value": "claiming.outposts.over_outpost_limits_stops_teleports" + }, + { + "type": "MOVE", + "path": "town.overclaiming.being_overclaimed_allows_other_towns_to_steal_land", + "value": "claiming.overclaiming.being_overclaimed_allows_other_towns_to_steal_land" + }, + { + "type": "MOVE", + "path": "town.overclaiming.overclaiming_prevented_by_homeblock_radius", + "value": "claiming.overclaiming.overclaiming_prevented_by_homeblock_radius" + }, + { + "type": "MOVE", + "path": "town.overclaiming.town_age_requirement", + "value": "claiming.overclaiming.town_age_requirement" + }, + { + "type": "MOVE", + "path": "town.overclaiming.command_cooldown", + "value": "claiming.overclaiming.command_cooldown" + }, + { + "type": "MOVE", + "path": "town.max_purchased_blocks", + "value": "claiming.purchased_bonus_blocks.max_purchased_blocks" + }, + { + "type": "MOVE", + "path": "town.max_purchased_blocks_uses_town_levels", + "value": "claiming.purchased_bonus_blocks.max_purchased_blocks_uses_town_levels" + }, + { + "type": "MOVE", + "path": "town.max_plots_per_resident", + "value": "global_town_settings.max_plots_per_resident" + }, + { + "type": "MOVE", + "path": "town.max_buytown_price", + "value": "global_town_settings.max_buytown_price" + }, + { + "type": "MOVE", + "path": "town.town_limit", + "value": "global_town_settings.town_limit" + }, + { + "type": "MOVE", + "path": "town.max_distance_for_merge", + "value": "global_town_settings.max_distance_for_merge" + }, + { + "type": "MOVE", + "path": "global_town_settings.minimum_amount_of_residents_in_town_for_outpost", + "value": "claiming.outposts.minimum_amount_of_residents_in_town_for_outpost" + }, + { + "type": "MOVE", + "path": "plugin.visualized_spawn_points_enabled", + "value": "spawning.visualized_spawn_points_enabled" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_town_spawn", + "value": "spawning.town_spawn.allow_town_spawn" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_town_spawn_travel", + "value": "spawning.town_spawn.allow_town_spawn_travel" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_town_spawn_travel_nation", + "value": "spawning.town_spawn.allow_town_spawn_travel_nation" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_town_spawn_travel_ally", + "value": "spawning.town_spawn.allow_town_spawn_travel_ally" + }, + { + "type": "MOVE", + "path": "global_town_settings.is_nation_ally_spawning_requiring_public_status", + "value": "spawning.town_spawn.is_nation_ally_spawning_to_town_requiring_public_status" + }, + { + "type": "MOVE", + "path": "global_town_settings.do_trusted_residents_count_as_residents", + "value": "spawning.town_spawn.do_trusted_residents_count_as_residents" + }, + { + "type": "MOVE", + "path": "global_town_settings.are_new_residents_prompted_to_town_spawn", + "value": "spawning.town_spawn.are_new_residents_prompted_to_town_spawn" + }, + { + "type": "MOVE", + "path": "global_town_settings.teleport_warmup_time", + "value": "spawning.spawning_warmups.teleport_warmup_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.movement_cancels_spawn_warmup", + "value": "spawning.spawning_warmups.movement_cancels_spawn_warmup" + }, + { + "type": "MOVE", + "path": "global_town_settings.damage_cancels_spawn_warmup", + "value": "spawning.spawning_warmups.damage_cancels_spawn_warmup" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.town_spawn_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.town_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.outpost_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.outpost_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.nation_member_town_spawn_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.nation_member_town_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.nation_ally_town_spawn_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.nation_ally_town_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.unaffiliated_town_spawn_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.unaffiliated_town_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawning_cooldowns.town_spawn_cooldown_time", + "value": "spawning.town_spawn.spawning_cooldowns.town_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_town_settings.spawn_warnings", + "value": "spawning.spawn_cost_warnings" + }, + { + "type": "MOVE", + "path": "global_town_settings.town_respawn", + "value": "spawning.respawning.town_respawn" + }, + { + "type": "MOVE", + "path": "global_town_settings.respawn_anchor_higher_precendence", + "value": "spawning.respawning.respawn_anchor_higher_precendence" + }, + { + "type": "MOVE", + "path": "global_town_settings.respawn_protection.time", + "value": "spawning.respawning.respawn_protection.time" + }, + { + "type": "MOVE", + "path": "global_town_settings.respawn_protection.allow_pickup", + "value": "spawning.respawning.respawn_protection.allow_pickup" + }, + { + "type": "MOVE", + "path": "global_town_settings.town_respawn_same_world_only", + "value": "spawning.respawning.town_respawn_same_world_only" + }, + { + "type": "MOVE", + "path": "global_town_settings.prevent_town_spawn_in", + "value": "spawning.town_spawn.prevent_town_spawn_in" + }, + { + "type": "MOVE", + "path": "global_town_settings.allow_enemies_spawn_to_peaceful_towns", + "value": "spawning.town_spawn.allow_enemies_spawn_to_peaceful_towns" + }, + { + "type": "MOVE", + "path": "global_nation_settings.capital_spawn", + "value": "spawning.nation_spawn.force_nation_spawn_in_capital" + }, + { + "type": "MOVE", + "path": "global_nation_settings.allow_nation_spawn", + "value": "spawning.nation_spawn.allow_nation_spawn" + }, + { + "type": "MOVE", + "path": "global_nation_settings.allow_nation_spawn_travel", + "value": "spawning.nation_spawn.allow_nation_spawn_travel" + }, + { + "type": "MOVE", + "path": "global_nation_settings.allow_nation_spawn_travel_ally", + "value": "spawning.nation_spawn.allow_nation_spawn_travel_ally" + }, + { + "type": "MOVE", + "path": "global_nation_settings.spawning_cooldowns.nation_member_nation_spawn_cooldown_time", + "value": "spawning.nation_spawn.spawning_cooldowns.nation_member_nation_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_nation_settings.spawning_cooldowns.nation_ally_nation_spawn_cooldown_time", + "value": "spawning.nation_spawn.spawning_cooldowns.nation_ally_nation_spawn_cooldown_time" + }, + { + "type": "MOVE", + "path": "global_nation_settings.spawning_cooldowns.unaffiliated_nation_spawn_cooldown_time", + "value": "spawning.nation_spawn.spawning_cooldowns.unaffiliated_nation_spawn_cooldown_time" + } + ] } ] \ No newline at end of file diff --git a/Towny/src/main/resources/lang/az-AZ.yml b/Towny/src/main/resources/lang/az-AZ.yml index 65e91070e7..f0d591cbf7 100644 --- a/Towny/src/main/resources/lang/az-AZ.yml +++ b/Towny/src/main/resources/lang/az-AZ.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Millətin Lideri köməyi' king_help_2: 'İttifaqınızı formalaşdırın.' king_help_3: 'Düşmənlərinizi seçin.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/bg-BG.yml b/Towny/src/main/resources/lang/bg-BG.yml index 50a2ab1b83..e86f95c754 100644 --- a/Towny/src/main/resources/lang/bg-BG.yml +++ b/Towny/src/main/resources/lang/bg-BG.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Помощ за национален лидер' king_help_2: 'Съюзете се.' king_help_3: 'Изберете си врагове.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/cs-CZ.yml b/Towny/src/main/resources/lang/cs-CZ.yml index aff658d0ad..e33e2c598e 100644 --- a/Towny/src/main/resources/lang/cs-CZ.yml +++ b/Towny/src/main/resources/lang/cs-CZ.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nápověda vůdce státu' king_help_2: 'Nastavení svých spojenců.' king_help_3: 'Nastavení svých nepřátel.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/da-DK.yml b/Towny/src/main/resources/lang/da-DK.yml index 93b1028550..70df6a2b5e 100644 --- a/Towny/src/main/resources/lang/da-DK.yml +++ b/Towny/src/main/resources/lang/da-DK.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Sæt din alliance.' king_help_3: 'Sæt dine fjender.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/de-DE.yml b/Towny/src/main/resources/lang/de-DE.yml index 4a6895cb67..33b6f2f2c1 100644 --- a/Towny/src/main/resources/lang/de-DE.yml +++ b/Towny/src/main/resources/lang/de-DE.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Führer Hilfe' king_help_2: 'Verbündete festlegen' king_help_3: 'Feinde festlegen' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/en-GB.yml b/Towny/src/main/resources/lang/en-GB.yml index 4410dc17dd..d8ba3e9abf 100644 --- a/Towny/src/main/resources/lang/en-GB.yml +++ b/Towny/src/main/resources/lang/en-GB.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/en-PT.yml b/Towny/src/main/resources/lang/en-PT.yml index 97157ca486..af1f89636e 100644 --- a/Towny/src/main/resources/lang/en-PT.yml +++ b/Towny/src/main/resources/lang/en-PT.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/en-UD.yml b/Towny/src/main/resources/lang/en-UD.yml index 2af107f835..c938314c44 100644 --- a/Towny/src/main/resources/lang/en-UD.yml +++ b/Towny/src/main/resources/lang/en-UD.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/en-US.yml b/Towny/src/main/resources/lang/en-US.yml index c9b567b105..65382af9e5 100644 --- a/Towny/src/main/resources/lang/en-US.yml +++ b/Towny/src/main/resources/lang/en-US.yml @@ -2396,4 +2396,10 @@ msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." -msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." \ No newline at end of file +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." + +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." + +msg_err_cannot_claim_the_following_worldcoords_because_of_unwanted_biome: "The following coordinate(s) cannot be claimed because they contain too much of an unwanted biome: %s." +msg_err_cannot_claim_the_following_worldcoords_because_of_ocean_biome: "The following coordinate(s) cannot be claimed because they contain too much ocean biome: %s." +msg_err_cannot_begin_town_in_this_biome: "You cannot start a town in this biome." \ No newline at end of file diff --git a/Towny/src/main/resources/lang/es-AR.yml b/Towny/src/main/resources/lang/es-AR.yml index f7df4a4ad5..52b802c7ed 100644 --- a/Towny/src/main/resources/lang/es-AR.yml +++ b/Towny/src/main/resources/lang/es-AR.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-CL.yml b/Towny/src/main/resources/lang/es-CL.yml index 5cd9a3659a..63761234c7 100644 --- a/Towny/src/main/resources/lang/es-CL.yml +++ b/Towny/src/main/resources/lang/es-CL.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Cambia el estado público, permitiendo a los extranjeros usar /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda para el Líder' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "No puedes hacerle esto a un residente NPC." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "El residente no posee ningun terreno personal." msg_unnamed: "Sin nombre" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-EC.yml b/Towny/src/main/resources/lang/es-EC.yml index 692cd79177..f11af06139 100644 --- a/Towny/src/main/resources/lang/es-EC.yml +++ b/Towny/src/main/resources/lang/es-EC.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-ES.yml b/Towny/src/main/resources/lang/es-ES.yml index 116d1827b6..a78e1ae599 100644 --- a/Towny/src/main/resources/lang/es-ES.yml +++ b/Towny/src/main/resources/lang/es-ES.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Elige tus aliados.' king_help_3: 'Elige tus enemigos.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-MX.yml b/Towny/src/main/resources/lang/es-MX.yml index bf73f84c45..a64fb615e7 100644 --- a/Towny/src/main/resources/lang/es-MX.yml +++ b/Towny/src/main/resources/lang/es-MX.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-UY.yml b/Towny/src/main/resources/lang/es-UY.yml index 692cd79177..f11af06139 100644 --- a/Towny/src/main/resources/lang/es-UY.yml +++ b/Towny/src/main/resources/lang/es-UY.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/es-VE.yml b/Towny/src/main/resources/lang/es-VE.yml index 692cd79177..f11af06139 100644 --- a/Towny/src/main/resources/lang/es-VE.yml +++ b/Towny/src/main/resources/lang/es-VE.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ayuda del Líder de Nación' king_help_2: 'Establece tus alianzas.' king_help_3: 'Establece tus enemistades.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/fr-FR.yml b/Towny/src/main/resources/lang/fr-FR.yml index e384689f67..aa6282d70e 100644 --- a/Towny/src/main/resources/lang/fr-FR.yml +++ b/Towny/src/main/resources/lang/fr-FR.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Aides du Dirigeant de Nation' king_help_2: 'Gérer vos alliances.' king_help_3: 'Gérer vos ennemis.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/he-IL.yml b/Towny/src/main/resources/lang/he-IL.yml index 6a40cb7fa5..3262182c0a 100644 --- a/Towny/src/main/resources/lang/he-IL.yml +++ b/Towny/src/main/resources/lang/he-IL.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'קבע את בעלי הברית שלך.' king_help_3: 'קבע את האויבים שלך.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/id-ID.yml b/Towny/src/main/resources/lang/id-ID.yml index c1420cf3a2..2169ff62a6 100644 --- a/Towny/src/main/resources/lang/id-ID.yml +++ b/Towny/src/main/resources/lang/id-ID.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Bantuan Pemimpin Negara' king_help_2: 'Atur sekutu kamu.' king_help_3: 'Atur musuh kamu.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/it-IT.yml b/Towny/src/main/resources/lang/it-IT.yml index 7ce5c653c8..ee9832ecf0 100644 --- a/Towny/src/main/resources/lang/it-IT.yml +++ b/Towny/src/main/resources/lang/it-IT.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Guida del Re della nazione' king_help_2: 'Scegli le tue alleanze.' king_help_3: 'Scegli i tuoi nemici.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/ja-JP.yml b/Towny/src/main/resources/lang/ja-JP.yml index 2ad017a5f1..667ed0d7ab 100644 --- a/Towny/src/main/resources/lang/ja-JP.yml +++ b/Towny/src/main/resources/lang/ja-JP.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "国家の平和な状態を切り替えます。" nation_toggle_help_1: "公開状態を切り替え、居住者でない人が /n spawnを使用できるようにします。" nation_toggle_help_2: "オープンステータスを切り替え、招待なしで参加できるようにする。" nation_toggle_help_3: "税率を切り替えて、町が固定税率ではなく割合で支払うようにします。" +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: '国家リーダーヘルプ' king_help_2: '同盟を設定' king_help_3: '敵を設定' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/ko-KR.yml b/Towny/src/main/resources/lang/ko-KR.yml index 7f05efcceb..6d5e81ecc5 100644 --- a/Towny/src/main/resources/lang/ko-KR.yml +++ b/Towny/src/main/resources/lang/ko-KR.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: '국가 리더 도움말' king_help_2: '동맹국 설정' king_help_3: '적국 설정' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/lol-US.yml b/Towny/src/main/resources/lang/lol-US.yml index 99783816c1..b7f8992ca7 100644 --- a/Towny/src/main/resources/lang/lol-US.yml +++ b/Towny/src/main/resources/lang/lol-US.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Halp 4 royel kitteh' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/lt-LT.yml b/Towny/src/main/resources/lang/lt-LT.yml index 027687718e..68095ba40a 100644 --- a/Towny/src/main/resources/lang/lt-LT.yml +++ b/Towny/src/main/resources/lang/lt-LT.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Pakeičia valstybės taikumo būseną." nation_toggle_help_1: "Paskelbia valstybę vieša, leidžiant nepiliečiams naudotis Jūsų valstybės /n spawn." nation_toggle_help_2: "Paskelbia valstybę atvira, leidžiant miestams prisijungti prie jos be pakvietimo." nation_toggle_help_3: "Įtvirtina procentinius mokesčius, todėl miestai mokėtų tam tikrą dalį pinigų nuo savo banko vietoj fiksuoto dydžio." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Valstybės Vadovo Komandos' king_help_2: 'Tvarkyti aljansų sąrašą.' king_help_3: 'Tvarkyti priešiškų valstybių sąrašą.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Be pavadinimo" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/lzh.yml b/Towny/src/main/resources/lang/lzh.yml index 80bc3f58f1..cd8c2d7f81 100644 --- a/Towny/src/main/resources/lang/lzh.yml +++ b/Towny/src/main/resources/lang/lzh.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: '國君之助' king_help_2: '設汝之友。' king_help_3: '設汝之敵。' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "未命名" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/nl-NL.yml b/Towny/src/main/resources/lang/nl-NL.yml index 4eeba801c3..28a67a6ba0 100644 --- a/Towny/src/main/resources/lang/nl-NL.yml +++ b/Towny/src/main/resources/lang/nl-NL.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Natie Leider Help' king_help_2: 'Stel je alliantie in.' king_help_3: 'Stel je vijanden in.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/no-NO.yml b/Towny/src/main/resources/lang/no-NO.yml index 942898a446..8bab1a36d7 100644 --- a/Towny/src/main/resources/lang/no-NO.yml +++ b/Towny/src/main/resources/lang/no-NO.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nasjonsleder Hjelp' king_help_2: 'Sett din allianse.' king_help_3: 'Sett din fiende.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/pl-PL.yml b/Towny/src/main/resources/lang/pl-PL.yml index ccfcc21b63..86e625a490 100644 --- a/Towny/src/main/resources/lang/pl-PL.yml +++ b/Towny/src/main/resources/lang/pl-PL.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Przełącza stan pokojowy nacji." nation_toggle_help_1: "Przełącza status publiczny, pozwalając graczom spoza nacji użyć /n spawn." nation_toggle_help_2: "Przełącza status otwarty, pozwalając miastom dołączyć bez zaproszenia." nation_toggle_help_3: "Przełącza obowiązywanie podatku procentowego. Miasta będą płaciły procent od posiadanych pieniędzy, zamiast stałej stawki." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Pomoc Lidera Nacji' king_help_2: 'Wyznacz swoich sojuszników.' king_help_3: 'Wyznacz swoich wrogów.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/pt-BR.yml b/Towny/src/main/resources/lang/pt-BR.yml index b32ceec9d1..e497a61d8c 100644 --- a/Towny/src/main/resources/lang/pt-BR.yml +++ b/Towny/src/main/resources/lang/pt-BR.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "" nation_toggle_help_1: "Alterna o status público, permitindo que não residentes usem /n spawn." nation_toggle_help_2: "Alterna o estado aberto, permitindo as cidades entrarem sem um convite." nation_toggle_help_3: "Alterna o percentual de imposto, fazendo com que as cidades paguem uma porcentagem em vez de uma taxa fixa." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ajuda do Líder da Nação' king_help_2: 'Definir alianças.' king_help_3: 'Definir inimigos.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/pt-PT.yml b/Towny/src/main/resources/lang/pt-PT.yml index 6963d7d047..ada160e4b3 100644 --- a/Towny/src/main/resources/lang/pt-PT.yml +++ b/Towny/src/main/resources/lang/pt-PT.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ajuda do Líder da Nação' king_help_2: 'Define os teus aliados.' king_help_3: 'Define os teus inimigos.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/ro-RO.yml b/Towny/src/main/resources/lang/ro-RO.yml index a234a3b671..ba3a7ac7ab 100644 --- a/Towny/src/main/resources/lang/ro-RO.yml +++ b/Towny/src/main/resources/lang/ro-RO.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ajutor pentru lideri de naţiune' king_help_2: 'Setează-ți alianța.' king_help_3: 'Setează-ți dușmanii.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/ru-RU.yml b/Towny/src/main/resources/lang/ru-RU.yml index ef56863468..4004643439 100644 --- a/Towny/src/main/resources/lang/ru-RU.yml +++ b/Towny/src/main/resources/lang/ru-RU.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Помощь для лидеров наций' king_help_2: 'Установить альянс.' king_help_3: 'Установить врагов.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/sq-AL.yml b/Towny/src/main/resources/lang/sq-AL.yml index ca54b3d245..59fe5f8576 100644 --- a/Towny/src/main/resources/lang/sq-AL.yml +++ b/Towny/src/main/resources/lang/sq-AL.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/sr-CS.yml b/Towny/src/main/resources/lang/sr-CS.yml index c3f1fe9faa..0e9d855291 100644 --- a/Towny/src/main/resources/lang/sr-CS.yml +++ b/Towny/src/main/resources/lang/sr-CS.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Pomoc vodji nacije' king_help_2: 'Postavite svoj savez.' king_help_3: 'Postavite svoje protivnike.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/sv-SE.yml b/Towny/src/main/resources/lang/sv-SE.yml index c8347324e4..7082180614 100644 --- a/Towny/src/main/resources/lang/sv-SE.yml +++ b/Towny/src/main/resources/lang/sv-SE.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Hjälp med nationens ledare' king_help_2: 'Bestäm dina allierade.' king_help_3: 'Bestäm dina fiender.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/th-TH.yml b/Towny/src/main/resources/lang/th-TH.yml index 4392860d48..3888c586e4 100644 --- a/Towny/src/main/resources/lang/th-TH.yml +++ b/Towny/src/main/resources/lang/th-TH.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Nation Leader Help' king_help_2: 'Set your alliance.' king_help_3: 'Set your enemies.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/tl-PH.yml b/Towny/src/main/resources/lang/tl-PH.yml index 75581e5012..0265652cd6 100644 --- a/Towny/src/main/resources/lang/tl-PH.yml +++ b/Towny/src/main/resources/lang/tl-PH.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Tulong sa Pinuno ng Bansa' king_help_2: 'Itakda ang iyong alyansa.' king_help_3: 'Itakda ang iyong mga kalaban.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/tr-TR.yml b/Towny/src/main/resources/lang/tr-TR.yml index e06d82faef..7ce8dc2a1c 100644 --- a/Towny/src/main/resources/lang/tr-TR.yml +++ b/Towny/src/main/resources/lang/tr-TR.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Ulus Lideri Yardımı' king_help_2: 'İttifakınızı kurun.' king_help_3: 'Düşmanlarınızı ayarlayın.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/uk-UA.yml b/Towny/src/main/resources/lang/uk-UA.yml index c7dead33df..a3532813cd 100644 --- a/Towny/src/main/resources/lang/uk-UA.yml +++ b/Towny/src/main/resources/lang/uk-UA.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Перемикає відкритий статус, дозволяючи містам приєднуватися без запрошення." nation_toggle_help_3: "Перемикає податкові відсотки, що сплачують міста відсотковою ставкою, а не фіксованою." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Допомога лідеру нації' king_help_2: 'Установити альянс.' king_help_3: 'Визначити ворогів.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "Ви не можете зробити цього з NP #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "Жодною земельною ділянкою гравець особисто не володіє." msg_unnamed: "Безіменне" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/vi-VN.yml b/Towny/src/main/resources/lang/vi-VN.yml index 351a3ee72c..96b16fd781 100644 --- a/Towny/src/main/resources/lang/vi-VN.yml +++ b/Towny/src/main/resources/lang/vi-VN.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: 'Trợ giúp dành cho lãnh đạo quốc gia' king_help_2: 'Đặt liên minh của bạn.' king_help_3: 'Đặt kẻ thù của bạn.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/zh-CN.yml b/Towny/src/main/resources/lang/zh-CN.yml index 393361254c..14828caf56 100644 --- a/Towny/src/main/resources/lang/zh-CN.yml +++ b/Towny/src/main/resources/lang/zh-CN.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "切换国家“公开”的状态,允许不是居民的玩家使用/n spawn。" nation_toggle_help_2: "切换国家“开放”的状态,允许没有被邀请的城市加入。" nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: '国家领导者帮助' king_help_2: '设置你的盟国.' king_help_3: '设置你的敌国.' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "Unnamed" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/lang/zh-TW.yml b/Towny/src/main/resources/lang/zh-TW.yml index e2181f3e1e..10c304d8ba 100644 --- a/Towny/src/main/resources/lang/zh-TW.yml +++ b/Towny/src/main/resources/lang/zh-TW.yml @@ -175,6 +175,10 @@ nation_toggle_help_0: "Toggles peaceful status of the nation." nation_toggle_help_1: "Toggles public status, allowing non-residents to use /n spawn." nation_toggle_help_2: "Toggles open status, allowing towns to join without an invite." nation_toggle_help_3: "Toggles taxpercent, making towns pay a percentage instead of fixed rate." +nation_sanction_help_1: "Adds a town to the SanctionedTown list." +nation_sanction_help_2: "Removes a town from the SanctionedTown list." +nation_sanction_help_3: "Lists your nation's Sanctioned Towns." +nation_sanction_help_4: "Lists the given nation's Sanctioned Towns." king_help_1: '元首幫助' king_help_2: '設定你的盟邦 ' king_help_3: '設定你的敵國 ' @@ -2061,3 +2065,14 @@ msg_err_resident_is_npc: "You cannot do this to an NPC resident." #Message shown when a resident doesn't own any land and the /res plotlist command is used. msg_err_resident_doesnt_own_any_land: "The resident does not own any land personally." msg_unnamed: "未命名" +msg_err_nation_cannot_sanction_own_town: "You cannot sanction a town that is a part of your nation." +msg_err_nation_town_isnt_sanctioned: "Your nation is not sanctioning that town." +msg_err_nation_town_already_sanctioned: "Your nation already sanctions that town." +msg_err_nation_town_sanctioned: "Your nation has now sanctioned %s, they will not be allowed to join your nation." +msg_err_nation_town_unsanctioned: "Your nation is no longer sanctioning %s." +msg_err_nation_has_no_sanctioned_towns: "The nation has no sanctioned towns." +title_nation_sanctioned_towns: 'Sanctioned Towns' +msg_err_cannot_add_sanctioned_town: "Your nation cannot add %s, your nation has sanctioned them." +msg_err_cannot_join_nation_sanctioned_town: "Your town cannot join %s, this nation has sanctioned your town." +msg_err_no_nation_cannot_do: "You cannot perform this action because no nation was able to be determined." +msg_err_cannot_nation_spawn_your_town_is_sanctioned: "Your town is sanctioned by %s, you cannot spawn there." diff --git a/Towny/src/main/resources/plugin.yml b/Towny/src/main/resources/plugin.yml index 4986906125..240434f3fb 100644 --- a/Towny/src/main/resources/plugin.yml +++ b/Towny/src/main/resources/plugin.yml @@ -60,7 +60,6 @@ permissions: towny.command.townyworld.*: true towny.command.towny.*: true towny.command.town.*: true - towny.command.town.claim.town.multiple: true towny.command.nation.*: true towny.command.plot.*: true towny.town.resident: true @@ -424,7 +423,6 @@ permissions: children: towny.command.town.claim.town: true towny.command.town.claim.outpost: true - towny.command.town.claim.town.multiple: false towny.command.town.claim.fill: true towny.command.town.invite.*: diff --git a/Towny/src/test/java/com/palmergames/bukkit/towny/test/BonusBlockPurchaseTests.java b/Towny/src/test/java/com/palmergames/bukkit/towny/test/BonusBlockPurchaseTests.java index dbeb623cc1..793505ccdf 100644 --- a/Towny/src/test/java/com/palmergames/bukkit/towny/test/BonusBlockPurchaseTests.java +++ b/Towny/src/test/java/com/palmergames/bukkit/towny/test/BonusBlockPurchaseTests.java @@ -22,8 +22,8 @@ static void init() { town = new Town("test"); // No limit on bought townblocks - TownySettings.getConfig().set(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS.getRoot(), Integer.MAX_VALUE); - TownySettings.getConfig().set(ConfigNodes.TOWN_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS.getRoot(), false); + TownySettings.getConfig().set(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS.getRoot(), Integer.MAX_VALUE); + TownySettings.getConfig().set(ConfigNodes.CLAIMING_MAX_PURCHASED_BLOCKS_USES_TOWN_LEVELS.getRoot(), false); } @BeforeEach diff --git a/providers/BaseProviders/pom.xml b/providers/BaseProviders/pom.xml index 2a25b63e4c..40dd13ff62 100644 --- a/providers/BaseProviders/pom.xml +++ b/providers/BaseProviders/pom.xml @@ -46,7 +46,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.1 8 17 diff --git a/providers/FoliaProvider/pom.xml b/providers/FoliaProvider/pom.xml index 320e7504e4..35875a0901 100644 --- a/providers/FoliaProvider/pom.xml +++ b/providers/FoliaProvider/pom.xml @@ -47,7 +47,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.1 8 17 diff --git a/providers/PaperProvider/pom.xml b/providers/PaperProvider/pom.xml index ce2e65c76e..0ffb13f217 100644 --- a/providers/PaperProvider/pom.xml +++ b/providers/PaperProvider/pom.xml @@ -47,7 +47,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.1 8 17