From c4504df4ce1407948991e322610e22c46cfccf8a Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Wed, 5 Mar 2025 11:54:03 +0700 Subject: [PATCH] fix: some fixes to NBS custom instruments replacement --- build-number.txt | 2 +- .../chomens_bot/song/NBSConverter.java | 41 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/build-number.txt b/build-number.txt index 3641460c..f01f3762 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1671 \ No newline at end of file +1675 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/song/NBSConverter.java b/src/main/java/me/chayapak1/chomens_bot/song/NBSConverter.java index 3ad57040..f8058528 100644 --- a/src/main/java/me/chayapak1/chomens_bot/song/NBSConverter.java +++ b/src/main/java/me/chayapak1/chomens_bot/song/NBSConverter.java @@ -45,7 +45,6 @@ public class NBSConverter implements Converter { public static final Map CUSTOM_INSTRUMENT_REPLACEMENTS = new HashMap<>(); static { - CUSTOM_INSTRUMENT_REPLACEMENTS.put("entity\\.firework\\.", "entity.firework_rocket."); CUSTOM_INSTRUMENT_REPLACEMENTS.put(".*glass.*", "block.glass.break"); CUSTOM_INSTRUMENT_REPLACEMENTS.put(".*door.*", "block.wooden_door.open"); CUSTOM_INSTRUMENT_REPLACEMENTS.put(".*anvil.*", "block.anvil.fall"); @@ -207,36 +206,40 @@ public class NBSConverter implements Converter { final NBSCustomInstrument customInstrument = customInstruments.get(index); - String name = customInstrument.name; + String name = customInstrument.name + .replace("entity.firework.", "entity.firework_rocket."); // this one is special + String file = Path.of(customInstrument.file).getFileName().toString(); // should i hardcode the extension like this? if (file.endsWith(".ogg")) file = file.substring(0, file.length() - ".ogg".length()); - boolean replaced = false; + if (!sounds.contains(name) && !sounds.contains(file)) { + boolean replaced = false; - final String replacedName = StringUtilities.replaceAllWithMap(name.toLowerCase(), CUSTOM_INSTRUMENT_REPLACEMENTS); - final String replacedFile = StringUtilities.replaceAllWithMap(file.toLowerCase(), CUSTOM_INSTRUMENT_REPLACEMENTS); + final String replacedName = StringUtilities.replaceAllWithMap(name.toLowerCase(), CUSTOM_INSTRUMENT_REPLACEMENTS); + final String replacedFile = StringUtilities.replaceAllWithMap(file.toLowerCase(), CUSTOM_INSTRUMENT_REPLACEMENTS); - if (!file.equals(replacedFile)) { - file = replacedFile; - replaced = true; - } else if (!name.equals(replacedName)) { - name = replacedName; - replaced = true; - } + if (!file.equals(replacedFile)) { + file = replacedFile; + replaced = true; + } else if (!name.equals(replacedName)) { + name = replacedName; + replaced = true; + } - if (!sounds.contains(name) && !sounds.contains(file) && !replaced) { - final List outputTitles = LevenshteinUtilities.searchTitles(name, subtitles.values()); + if (!replaced) { + final List outputTitles = LevenshteinUtilities.searchTitles(name, subtitles.values()); - final String bestMatch = outputTitles.isEmpty() ? "" : outputTitles.getFirst(); + final String bestMatch = outputTitles.isEmpty() ? "" : outputTitles.getFirst(); - for (Map.Entry entry : subtitles.entrySet()) { - if (!entry.getValue().equals(bestMatch)) continue; + for (Map.Entry entry : subtitles.entrySet()) { + if (!entry.getValue().equals(bestMatch)) continue; - name = entry.getKey().substring("subtitles.".length()); + name = entry.getKey().substring("subtitles.".length()); - break; + break; + } } }