0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-19 17:02:13 +02:00

Create a LanguageSetting class for use in ChatTranslator

This commit is contained in:
Alexander01998 2024-07-21 23:22:01 +02:00
parent 745be6cfd8
commit 3f7f61092a
2 changed files with 109 additions and 94 deletions

View File

@ -12,7 +12,8 @@ import net.wurstclient.Category;
import net.wurstclient.SearchTags; import net.wurstclient.SearchTags;
import net.wurstclient.events.ChatInputListener; import net.wurstclient.events.ChatInputListener;
import net.wurstclient.hack.Hack; 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.ChatUtils;
import net.wurstclient.util.GoogleTranslate; import net.wurstclient.util.GoogleTranslate;
@ -23,11 +24,11 @@ import net.wurstclient.util.GoogleTranslate;
"google translator", "GoogleTranslation", "google translation"}) "google translator", "GoogleTranslation", "google translation"})
public final class ChatTranslatorHack extends Hack implements ChatInputListener public final class ChatTranslatorHack extends Hack implements ChatInputListener
{ {
private final EnumSetting<FromLanguage> langFrom = new EnumSetting<>( private final LanguageSetting langFrom =
"Translate from", FromLanguage.values(), FromLanguage.AUTO_DETECT); LanguageSetting.withAutoDetect("Translate from", Language.AUTO_DETECT);
private final EnumSetting<ToLanguage> langTo = new EnumSetting<>( private final LanguageSetting langTo =
"Translate to", ToLanguage.values(), ToLanguage.ENGLISH); LanguageSetting.withoutAutoDetect("Translate to", Language.ENGLISH);
public ChatTranslatorHack() public ChatTranslatorHack()
{ {
@ -61,105 +62,18 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
private void translate(String message) private void translate(String message)
{ {
String prefix = String prefix =
"\u00a7a[\u00a7b" + langTo.getSelected().name + "\u00a7a]:\u00a7r "; "\u00a7a[\u00a7b" + langTo.getSelected() + "\u00a7a]:\u00a7r ";
if(message.startsWith(ChatUtils.WURST_PREFIX) if(message.startsWith(ChatUtils.WURST_PREFIX)
|| message.startsWith(prefix)) || message.startsWith(prefix))
return; return;
String translated = GoogleTranslate.translate(message, String translated = GoogleTranslate.translate(message,
langFrom.getSelected().value, langTo.getSelected().value); langFrom.getSelected().getValue(), langTo.getSelected().getValue());
if(translated == null) if(translated == null)
return; return;
MC.inGameHud.getChatHud().addMessage(Text.literal(prefix + translated)); 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;
}
}
} }

View File

@ -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<LanguageSetting.Language>
{
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;
}
}
}