0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-20 01:12:13 +02:00
This commit is contained in:
Alexander01998 2020-06-24 17:43:27 +02:00
commit d5b6c61a11
3 changed files with 289 additions and 0 deletions

View File

@ -64,6 +64,8 @@ public final class HackList implements UpdateListener
public final BunnyHopHack bunnyHopHack = new BunnyHopHack();
public final CameraNoClipHack cameraNoClipHack = new CameraNoClipHack();
public final CaveFinderHack caveFinderHack = new CaveFinderHack();
public final ChatTranslatorHack chatTranslatorHack =
new ChatTranslatorHack();
public final ChestEspHack chestEspHack = new ChestEspHack();
public final ClickAuraHack clickAuraHack = new ClickAuraHack();
public final ClickGuiHack clickGuiHack = new ClickGuiHack();

View File

@ -0,0 +1,182 @@
/*
* Copyright (C) 2014 - 2020 | Alexander01998 | All rights reserved.
*
* 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.hacks;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
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.util.ChatUtils;
import net.wurstclient.util.GoogleTranslate;
@SearchTags({"chat translator", "ChatTranslate", "chat translate",
"ChatTranslation", "chat translation", "AutoTranslate", "auto translate",
"AutoTranslator", "auto translator", "AutoTranslation", "auto translation",
"GoogleTranslate", "google translate", "GoogleTranslator",
"google translator", "GoogleTranslation", "google translation"})
public final class ChatTranslatorHack extends Hack implements ChatInputListener
{
private static final GoogleTranslate googleTranslate =
new GoogleTranslate();
private final EnumSetting<FromLanguage> langFrom = new EnumSetting<>(
"Translate from", FromLanguage.values(), FromLanguage.AUTO_DETECT);
private final EnumSetting<ToLanguage> langTo = new EnumSetting<>(
"Translate to", ToLanguage.values(), ToLanguage.ENGLISH);
public ChatTranslatorHack()
{
super("ChatTranslator",
"Translates incoming chat messages using Google Translate.");
setCategory(Category.CHAT);
addSetting(langFrom);
addSetting(langTo);
}
@Override
public void onEnable()
{
EVENTS.add(ChatInputListener.class, this);
}
@Override
public void onDisable()
{
EVENTS.remove(ChatInputListener.class, this);
}
@Override
public void onReceivedMessage(ChatInputEvent event)
{
new Thread(() -> {
try
{
translate(event);
}catch(Exception e)
{
}
}, "ChatTranslator").start();
}
private void translate(ChatInputEvent event)
{
String incomingMsg = event.getComponent().getString();
String translatorPrefix =
"\u00a7a[\u00a7b" + langTo.getSelected().name + "\u00a7a]:\u00a7r ";
if(incomingMsg.startsWith(ChatUtils.WURST_PREFIX)
|| incomingMsg.startsWith(translatorPrefix))
return;
String translated = googleTranslate.translate(incomingMsg,
langFrom.getSelected().value, langTo.getSelected().value);
if(translated == null)
return;
Text translationMsg = new LiteralText(translatorPrefix)
.append(new LiteralText(translated));
MC.inGameHud.getChatHud().addMessage(translationMsg);
}
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,105 @@
/*
* Copyright (C) 2014 - 2020 | Alexander01998 | All rights reserved.
*
* 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.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringEscapeUtils;
public class GoogleTranslate
{
public String translate(String text, String langFrom, String langTo)
{
String html = getHTML(text, langFrom, langTo);
String translated = parseHTML(html);
if(text.equalsIgnoreCase(translated))
return null;
return translated;
}
private String getHTML(String text, String langFrom, String langTo)
{
URL url = createURL(text, langFrom, langTo);
try
{
URLConnection connection = setupConnection(url);
try(BufferedReader br = new BufferedReader(
new InputStreamReader(connection.getInputStream(), "UTF-8")))
{
StringBuilder html = new StringBuilder();
String line;
while((line = br.readLine()) != null)
html.append(line + "\n");
return html.toString();
}
}catch(IOException e)
{
return null;
}
}
private URL createURL(String text, String langFrom, String langTo)
{
try
{
String encodedText = URLEncoder.encode(text.trim(), "UTF-8");
String urlString = String.format(
"https://translate.google.com/m?hl=en&sl=%s&tl=%s&ie=UTF-8&prev=_m&q=%s",
langFrom, langTo, encodedText);
return new URL(urlString);
}catch(MalformedURLException | UnsupportedEncodingException e)
{
throw new RuntimeException(e);
}
}
private URLConnection setupConnection(URL url) throws IOException
{
URLConnection connection = url.openConnection();
connection.setConnectTimeout(5000);
connection.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
return connection;
}
private String parseHTML(String html)
{
String regex = "class=\"t0\">([^<]*)<\\/div>";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(html);
matcher.find();
String match = matcher.group(1);
if(match == null || match.isEmpty())
return null;
return StringEscapeUtils.unescapeHtml4(match);
}
}