improved LanguageSupport.java

This commit is contained in:
Stachelbeere1248 2023-12-21 11:29:30 +01:00
parent 53e313d2ce
commit dc51cab0df
Signed by: Stachelbeere1248
SSH key fingerprint: SHA256:IozEKdw2dB8TZxkpPdMxcWSoWTIMwoLaCcZJ1AJnY2o
3 changed files with 39 additions and 48 deletions

View file

@ -29,7 +29,7 @@ public class ZombiesUtilsConfig {
"Language", "Language",
"EN", "EN",
"Your Hypixel language", "Your Hypixel language",
LanguageSupport.Languages.list() LanguageSupport.getLanguages()
); );
slaToggle = config.get( slaToggle = config.get(
Configuration.CATEGORY_GENERAL, Configuration.CATEGORY_GENERAL,
@ -95,8 +95,8 @@ public class ZombiesUtilsConfig {
return defaultCategory.getString(); return defaultCategory.getString();
} }
public static LanguageSupport.Languages getLanguage() { public static String getLanguage() {
return LanguageSupport.Languages.valueOf(language.getString()); return language.getString();
} }
@SubscribeEvent @SubscribeEvent

View file

@ -77,7 +77,7 @@ public class MixinNetHandlerPlayClient {
Timer.getInstance().ifPresent(timer -> { Timer.getInstance().ifPresent(timer -> {
if (Scoreboard.isNotZombies()) return; if (Scoreboard.isNotZombies()) return;
if (LanguageSupport.zombies_utils$isWin(message)) { if (LanguageSupport.isWin(message)) {
switch (timer.getGameMode().getMap()) { switch (timer.getGameMode().getMap()) {
case DEAD_END: case DEAD_END:
case BAD_BLOOD: case BAD_BLOOD:
@ -89,7 +89,7 @@ public class MixinNetHandlerPlayClient {
Timer.dropInstances(); Timer.dropInstances();
break; break;
} }
} else if (LanguageSupport.zombies_utils$isLoss(message)) Timer.dropInstances(); } else if (LanguageSupport.isLoss(message)) Timer.dropInstances();
}); });
} }

View file

@ -1,20 +1,19 @@
package com.github.stachelbeere1248.zombiesutils.utils; package com.github.stachelbeere1248.zombiesutils.utils;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.EnumMap;
import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@SuppressWarnings("SpellCheckingInspection") @SuppressWarnings("SpellCheckingInspection")
public class LanguageSupport { public class LanguageSupport {
private static final EnumMap<Languages, Pattern> scoreboardRound = scoreboardRoundMap(); private static final String[] LANGUAGEs = {
private static final EnumMap<Languages, Pattern> scoreboardMap = scoreboardMapMap(); "EN",
"FR",
"DE"
};
public static boolean zombies_utils$isLoss(@NotNull String input) { public static boolean isLoss(@NotNull String input) {
final String[] words = { final String[] words = {
"§cGame Over!", "§cGame Over!",
"§cPartie terminée!", "§cPartie terminée!",
@ -23,7 +22,7 @@ public class LanguageSupport {
return Arrays.asList(words).contains(input); return Arrays.asList(words).contains(input);
} }
public static boolean zombies_utils$isWin(@NotNull String input) { public static boolean isWin(@NotNull String input) {
final String[] words = { final String[] words = {
"§aYou Win!", "§aYou Win!",
"§aVous avez gagné!", "§aVous avez gagné!",
@ -53,41 +52,33 @@ public class LanguageSupport {
return Arrays.stream(words).anyMatch(input::contains); return Arrays.stream(words).anyMatch(input::contains);
} }
private static @NotNull EnumMap<Languages, Pattern> scoreboardRoundMap() { public static @NotNull Pattern roundPattern(@NotNull String language) {
final EnumMap<Languages, Pattern> newMap = new EnumMap<>(Languages.class); switch (language) {
newMap.put(Languages.EN, Pattern.compile("Round ([0-9]{1,3})")); case "EN":
newMap.put(Languages.FR, Pattern.compile("Manche ([0-9]{1,3})")); return Pattern.compile("Round ([0-9]{1,3})");
newMap.put(Languages.DE, Pattern.compile("Runde ([0-9]{1,3})")); case "FR":
return newMap; return Pattern.compile("Manche ([0-9]{1,3})");
case "DE":
return Pattern.compile("Runde ([0-9]{1,3})");
default:
throw new IllegalStateException("Unexpected value: " + language);
}
} }
private static @NotNull EnumMap<Languages, Pattern> scoreboardMapMap() { public static @NotNull Pattern mapPattern(@NotNull String language) {
final EnumMap<Languages, Pattern> newMap = new EnumMap<>(Languages.class); switch (language) {
newMap.put(Languages.EN, Pattern.compile("Map:.*(Dead End|Bad Blood|Alien Arcadium)")); case "EN":
newMap.put(Languages.FR, Pattern.compile("Carte:.*(Dead End|Bad Blood|Alien Arcadium)")); return Pattern.compile("Map:.*(Dead End|Bad Blood|Alien Arcadium)");
newMap.put(Languages.DE, Pattern.compile("Karte:.*(Dead End|Bad Blood|Alien Arcadium)")); case "FR":
return newMap; return Pattern.compile("Carte:.*(Dead End|Bad Blood|Alien Arcadium)");
case "DE":
return Pattern.compile("Karte:.*(Dead End|Bad Blood|Alien Arcadium)");
default:
throw new IllegalStateException("Unexpected value: " + language);
}
} }
public static Pattern roundPattern(Languages lang) { public static String[] getLanguages() {
return scoreboardRound.get(lang); return LANGUAGEs;
}
public static Pattern mapPattern(Languages lang) {
return scoreboardMap.get(lang);
}
public enum Languages {
EN,
FR,
DE;
public static String @NotNull [] list() {
List<String> langs = new ArrayList<>();
for (Languages language: Languages.values()
) {
langs.add(language.toString());
}
return langs.toArray(new String[1]);
}
} }
} }