Skip to content

Commit

Permalink
- Fix NameValidation issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
LlmDl committed Feb 13, 2024
1 parent 72fae91 commit 22afa0d
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 10 deletions.
2 changes: 1 addition & 1 deletion Towny/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<artifactId>towny</artifactId>
<packaging>jar</packaging>
<version>0.100.1.12</version>
<version>0.100.1.13</version>

<licenses>
<license>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -903,6 +903,8 @@ public static void newNation(CommandSender sender, String name, Town capitalTown
throw new TownyException(Translatable.of("msg_err_already_nation"));

String filteredName = NameValidation.checkAndFilterNationNameOrThrow(name);
if (TownyUniverse.getInstance().hasNation(filteredName))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", filteredName));

BukkitTools.ifCancelledThenThrow(new PreNewNationEvent(capitalTown, filteredName));

Expand Down Expand Up @@ -2104,6 +2106,9 @@ private static void nationSetName(CommandSender sender, Nation nation, String[]
String name = String.join("_", StringMgmt.remFirstArg(split));

name = NameValidation.checkAndFilterGovernmentNameOrThrow(name, nation);
if (TownyUniverse.getInstance().hasNation(name))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", name));


if (TownySettings.getTownAutomaticCapitalisationEnabled())
name = StringMgmt.capitalizeStrings(name);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2129,6 +2129,8 @@ public static void townSetName(CommandSender sender, String[] split, Town town)
if (TownySettings.getTownAutomaticCapitalisationEnabled())
name = StringMgmt.capitalizeStrings(name);
name = NameValidation.checkAndFilterGovernmentNameOrThrow(name, town);
if (TownyUniverse.getInstance().hasTown(name))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", name));

if(TownyEconomyHandler.isActive() && TownySettings.getTownRenameCost() > 0) {
if (!town.getAccount().canPayFromHoldings(TownySettings.getTownRenameCost()))
Expand Down Expand Up @@ -2466,6 +2468,8 @@ public static void newTown(Player player, String name, Resident resident, boolea
name = StringMgmt.capitalizeStrings(name);

name = NameValidation.checkAndFilterTownNameOrThrow(name);
if (TownyUniverse.getInstance().hasTown(name))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", name));

if (resident.hasTown())
throw new TownyException(Translatable.of("msg_err_already_res", resident.getName()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1225,6 +1225,8 @@ public void parseAdminTownCommand(CommandSender sender, String[] split) throws T
if (split.length < 3)
throw new TownyException(Translatable.of("msg_err_invalid_input", "/ta town TOWNNAME rename NEWNAME"));
String name = NameValidation.checkAndFilterTownNameOrThrow(String.join("_", StringMgmt.remArgs(split, 2)));
if (TownyUniverse.getInstance().hasTown(name))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", name));
BukkitTools.ifCancelledThenThrow(new TownPreRenameEvent(town, name));
townyUniverse.getDataSource().renameTown(town, name);
TownyMessaging.sendPrefixedTownMessage(town, Translatable.of("msg_town_set_name", getSenderFormatted(sender), town.getName()));
Expand Down Expand Up @@ -1674,6 +1676,8 @@ public void parseAdminNationCommand(CommandSender sender, String[] split) throws
case "rename":
checkPermOrThrow(sender, PermissionNodes.TOWNY_COMMAND_TOWNYADMIN_NATION_RENAME.getNode());
String name = NameValidation.checkAndFilterNationNameOrThrow(String.join("_", StringMgmt.remArgs(split, 2)));
if (TownyUniverse.getInstance().hasNation(name))
throw new TownyException(Translatable.of("msg_err_name_validation_name_already_in_use", name));
BukkitTools.ifCancelledThenThrow(new NationPreRenameEvent(nation, name));
townyUniverse.getDataSource().renameNation(nation, name);
TownyMessaging.sendPrefixedNationMessage(nation, Translatable.of("msg_nation_set_name", getSenderFormatted(sender), nation.getName()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.palmergames.bukkit.towny.Towny;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.TownyUniverse;
import com.palmergames.bukkit.towny.exceptions.InvalidNameException;
import com.palmergames.bukkit.towny.exceptions.TownyException;
import com.palmergames.bukkit.towny.object.Government;
Expand Down Expand Up @@ -81,9 +80,6 @@ public static String checkAndFilterTownNameOrThrow(String name) throws InvalidNa
if (out.startsWith(TownySettings.getTownAccountPrefix()))
throw new InvalidNameException(Translatable.of("msg_err_name_validation_begins_with_eco_prefix", out));

if (TownyUniverse.getInstance().hasTown(out))
throw new InvalidNameException(Translatable.of("msg_err_name_validation_name_already_in_use", out));

return out;
}

Expand All @@ -108,9 +104,6 @@ public static String checkAndFilterNationNameOrThrow(String name) throws Invalid
if (out.startsWith(TownySettings.getNationAccountPrefix()))
throw new InvalidNameException(Translatable.of("msg_err_name_validation_begins_with_eco_prefix", out));

if (TownyUniverse.getInstance().hasNation(out))
throw new InvalidNameException(Translatable.of("msg_err_name_validation_name_already_in_use", out));

return out;
}

Expand Down Expand Up @@ -328,7 +321,7 @@ private static void testNameLength(String name) throws InvalidNameException {
* @throws InvalidNameException thrown when numbers aren't allowed and they are present.
*/
private static void testForNumbers(String name) throws InvalidNameException {
if (TownySettings.areNumbersAllowedInNationNames() && numberPattern.matcher(name).find())
if (!TownySettings.areNumbersAllowedInNationNames() && numberPattern.matcher(name).find())
throw new InvalidNameException(Translatable.of("msg_err_name_validation_contains_numbers", name));
}

Expand Down
4 changes: 3 additions & 1 deletion Towny/src/main/resources/ChangeLog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9515,4 +9515,6 @@ v0.92.0.11:
- Closes #7249.
- Overhaul the NameValidation class.
- Add the towny.command.resident.jail to the nomad section of the townyperms.yml file, so that players without a town can pay bail if they're jailed.
- Bump com.github.seeseemelk:MockBukkit-v1.20 from 3.65.0 to 3.72.0.
- Bump com.github.seeseemelk:MockBukkit-v1.20 from 3.65.0 to 3.72.0.
0.100.1.13:
- Fix NameValidation issues.

0 comments on commit 22afa0d

Please sign in to comment.