From fbfde79c141389643bb8925ee5fd6dc25338b704 Mon Sep 17 00:00:00 2001 From: Smorki Date: Tue, 11 Aug 2026 23:53:05 +0300 Subject: [PATCH] Avoid unnecessary regex compilation in hot paths --- src/main/java/net/coreprotect/config/Config.java | 4 +++- .../net/coreprotect/database/logger/BlockBreakLogger.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/coreprotect/config/Config.java b/src/main/java/net/coreprotect/config/Config.java index 51c1be243..8f5470e7f 100644 --- a/src/main/java/net/coreprotect/config/Config.java +++ b/src/main/java/net/coreprotect/config/Config.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; +import java.util.regex.Pattern; import org.bukkit.Bukkit; import org.bukkit.World; @@ -30,6 +31,7 @@ public class Config extends Language { private static final Map DEFAULT_VALUES = new LinkedHashMap<>(); private static final Map CONFIG_BY_WORLD_NAME = new HashMap<>(); private static final String DEFAULT_FILE_HEADER = "# CoreProtect Config"; + private static final Pattern NON_DIGIT_PATTERN = Pattern.compile("[^0-9]"); public static final String LINE_SEPARATOR = "\n"; private static final Config GLOBAL = new Config(); @@ -370,7 +372,7 @@ private int getInt(final String key, final int dfl) { return dfl; } - configured = configured.replaceAll("[^0-9]", ""); + configured = NON_DIGIT_PATTERN.matcher(configured).replaceAll(""); return configured.isEmpty() ? dfl : Integer.parseInt(configured); } diff --git a/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java b/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java index f232a6040..626c268a9 100644 --- a/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java +++ b/src/main/java/net/coreprotect/database/logger/BlockBreakLogger.java @@ -63,7 +63,7 @@ else if (checkType != null && (checkType.equals(Material.AIR) || checkType.equal } if (checkType == Material.LECTERN && blockData != null) { - blockData = blockData.replaceFirst("has_book=true", "has_book=false"); + blockData = blockData.replace("has_book=true", "has_book=false"); } else if (checkType != null && (checkType == Material.PAINTING || BukkitAdapter.ADAPTER.isItemFrame(checkType))) { blockData = overrideData;