diff --git a/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java b/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java index 9a580fc7..fd3c05ff 100644 --- a/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java @@ -12,7 +12,8 @@ import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.events.ChatInputListener; import net.wurstclient.hack.Hack; -import net.wurstclient.settings.EnumSetting; +import net.wurstclient.settings.LanguageSetting; +import net.wurstclient.settings.LanguageSetting.Language; import net.wurstclient.util.ChatUtils; import net.wurstclient.util.GoogleTranslate; @@ -23,11 +24,11 @@ import net.wurstclient.util.GoogleTranslate; "google translator", "GoogleTranslation", "google translation"}) public final class ChatTranslatorHack extends Hack implements ChatInputListener { - private final EnumSetting langFrom = new EnumSetting<>( - "Translate from", FromLanguage.values(), FromLanguage.AUTO_DETECT); + private final LanguageSetting langFrom = + LanguageSetting.withAutoDetect("Translate from", Language.AUTO_DETECT); - private final EnumSetting langTo = new EnumSetting<>( - "Translate to", ToLanguage.values(), ToLanguage.ENGLISH); + private final LanguageSetting langTo = + LanguageSetting.withoutAutoDetect("Translate to", Language.ENGLISH); public ChatTranslatorHack() { @@ -61,105 +62,18 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener private void translate(String message) { String prefix = - "\u00a7a[\u00a7b" + langTo.getSelected().name + "\u00a7a]:\u00a7r "; + "\u00a7a[\u00a7b" + langTo.getSelected() + "\u00a7a]:\u00a7r "; if(message.startsWith(ChatUtils.WURST_PREFIX) || message.startsWith(prefix)) return; String translated = GoogleTranslate.translate(message, - langFrom.getSelected().value, langTo.getSelected().value); + langFrom.getSelected().getValue(), langTo.getSelected().getValue()); if(translated == null) return; MC.inGameHud.getChatHud().addMessage(Text.literal(prefix + translated)); } - - public static enum FromLanguage - { - AUTO_DETECT("Detect Language", "auto"), - AFRIKAANS("Afrikaans", "af"), - ARABIC("Arabic", "ar"), - CZECH("Czech", "cs"), - CHINESE_SIMPLIFIED("Chinese (simplified)", "zh-CN"), - CHINESE_TRADITIONAL("Chinese (traditional)", "zh-TW"), - DANISH("Danish", "da"), - DUTCH("Dutch", "nl"), - ENGLISH("English", "en"), - FINNISH("Finnish", "fi"), - FRENCH("French", "fr"), - GERMAN("Deutsch!", "de"), - GREEK("Greek", "el"), - HINDI("Hindi", "hi"), - ITALIAN("Italian", "it"), - JAPANESE("Japanese", "ja"), - KOREAN("Korean", "ko"), - NORWEGIAN("Norwegian", "no"), - POLISH("Polish", "pl"), - PORTUGUESE("Portugese", "pt"), - RUSSIAN("Russian", "ru"), - SPANISH("Spanish", "es"), - SWAHILI("Swahili", "sw"), - SWEDISH("Swedish", "sv"), - TURKISH("Turkish", "tr"); - - private final String name; - private final String value; - - private FromLanguage(String name, String value) - { - this.name = name; - this.value = value; - } - - @Override - public String toString() - { - return name; - } - } - - public static enum ToLanguage - { - AFRIKAANS("Afrikaans", "af"), - ARABIC("Arabic", "ar"), - CZECH("Czech", "cs"), - CHINESE_SIMPLIFIED("Chinese (simplified)", "zh-CN"), - CHINESE_TRADITIONAL("Chinese (traditional)", "zh-TW"), - DANISH("Danish", "da"), - DUTCH("Dutch", "nl"), - ENGLISH("English", "en"), - FINNISH("Finnish", "fi"), - FRENCH("French", "fr"), - GERMAN("Deutsch!", "de"), - GREEK("Greek", "el"), - HINDI("Hindi", "hi"), - ITALIAN("Italian", "it"), - JAPANESE("Japanese", "ja"), - KOREAN("Korean", "ko"), - NORWEGIAN("Norwegian", "no"), - POLISH("Polish", "pl"), - PORTUGUESE("Portugese", "pt"), - RUSSIAN("Russian", "ru"), - SPANISH("Spanish", "es"), - SWAHILI("Swahili", "sw"), - SWEDISH("Swedish", "sv"), - TURKISH("Turkish", "tr"); - - private final String name; - private final String value; - - private ToLanguage(String name, String value) - { - this.name = name; - this.value = value; - } - - @Override - public String toString() - { - return name; - } - } } diff --git a/src/main/java/net/wurstclient/settings/LanguageSetting.java b/src/main/java/net/wurstclient/settings/LanguageSetting.java new file mode 100644 index 00000000..3a133628 --- /dev/null +++ b/src/main/java/net/wurstclient/settings/LanguageSetting.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2014-2024 Wurst-Imperium and contributors. + * + * This source code is subject to the terms of the GNU General Public + * License, version 3. If a copy of the GPL was not distributed with this + * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt + */ +package net.wurstclient.settings; + +public final class LanguageSetting extends EnumSetting +{ + private LanguageSetting(String name, String description, Language[] values, + Language selected) + { + super(name, description, values, selected); + } + + public static LanguageSetting withAutoDetect(String name, + String description, Language selected) + { + return new LanguageSetting(name, description, Language.values(), + selected); + } + + public static LanguageSetting withAutoDetect(String name, Language selected) + { + return new LanguageSetting(name, "", Language.values(), selected); + } + + public static LanguageSetting withoutAutoDetect(String name, + String description, Language selected) + { + Language[] values = Language.valuesWithoutAutoDetect(); + return new LanguageSetting(name, description, values, selected); + } + + public static LanguageSetting withoutAutoDetect(String name, + Language selected) + { + Language[] values = Language.valuesWithoutAutoDetect(); + return new LanguageSetting(name, "", values, selected); + } + + public enum Language + { + AUTO_DETECT("Detect Language", "auto"), + AFRIKAANS("Afrikaans", "af"), + ARABIC("Arabic", "ar"), + CZECH("Czech", "cs"), + CHINESE_SIMPLIFIED("Chinese (simplified)", "zh-CN"), + CHINESE_TRADITIONAL("Chinese (traditional)", "zh-TW"), + DANISH("Danish", "da"), + DUTCH("Dutch", "nl"), + ENGLISH("English", "en"), + FINNISH("Finnish", "fi"), + FRENCH("French", "fr"), + GERMAN("Deutsch!", "de"), + GREEK("Greek", "el"), + HINDI("Hindi", "hi"), + ITALIAN("Italian", "it"), + JAPANESE("Japanese", "ja"), + KOREAN("Korean", "ko"), + NORWEGIAN("Norwegian", "no"), + POLISH("Polish", "pl"), + PORTUGUESE("Portugese", "pt"), + RUSSIAN("Russian", "ru"), + SPANISH("Spanish", "es"), + SWAHILI("Swahili", "sw"), + SWEDISH("Swedish", "sv"), + TURKISH("Turkish", "tr"); + + private final String name; + private final String value; + + private Language(String name, String value) + { + this.name = name; + this.value = value; + } + + public String getValue() + { + return value; + } + + @Override + public String toString() + { + return name; + } + + private static Language[] valuesWithoutAutoDetect() + { + Language[] allValues = values(); + Language[] valuesWithoutAuto = new Language[allValues.length - 1]; + System.arraycopy(allValues, 1, valuesWithoutAuto, 0, + valuesWithoutAuto.length); + return valuesWithoutAuto; + } + } +}