Начинающий
- Статус
- Оффлайн
- Регистрация
- 26 Июл 2025
- Сообщения
- 34
- Реакции
- 0
- Выберите загрузчик игры
- Fabric
- Прочие моды
Крутецкий Translator который переводит через google translator
SS:
SS:
Translator:
package ru.arcade.features.impl.misc;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
import net.minecraft.text.Text;
import ru.arcade.events.packet.PacketEvent;
import ru.arcade.features.module.Module;
import ru.arcade.features.module.ModuleCategory;
import ru.arcade.features.module.setting.implement.BooleanSetting;
import ru.arcade.features.module.setting.implement.SelectSetting;
import ru.arcade.utils.client.managers.event.EventHandler;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public class Translator extends Module {
ExecutorService executor = Executors.newSingleThreadExecutor();
public SelectSetting language = new SelectSetting("Язык перевода", "Целевой язык")
.value("ru", "en", "de", "fr", "es", "zh");
public BooleanSetting showOriginal = new BooleanSetting("Показывать оригинал", "Показывать оригинальное сообщение").setValue(false);
public Translator() {
super("Translator", "Translator", ModuleCategory.MISC);
setup(language, showOriginal);
}
@EventHandler
public void onPacket(PacketEvent e) {
if (e.isSend()) return;
if (!(e.getPacket() instanceof GameMessageS2CPacket packet)) return;
String message = packet.content().getString();
if (message == null || message.isBlank()) return;
String targetLang = language.getSelected();
boolean showOrig = showOriginal.isValue();
executor.submit(() -> {
try {
String translated = translate(message, targetLang);
if (translated == null || translated.equalsIgnoreCase(message)) return;
String display = showOrig
? "[Перевод] " + translated + " §7(" + message + ")"
: "[Перевод] " + translated;
if (mc.player != null) {
mc.execute(() -> mc.player.sendMessage(Text.literal(display), false));
}
} catch (Exception ignored) {}
});
}
private String translate(String text, String targetLang) throws Exception {
String encoded = URLEncoder.encode(text, StandardCharsets.UTF_8);
String urlStr = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl="
+ targetLang + "&dt=t&q=" + encoded;
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(3000);
conn.setReadTimeout(3000);
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
if (conn.getResponseCode() != 200) return null;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) sb.append(line);
reader.close();
String response = sb.toString();
int start = response.indexOf("\"") + 1;
int end = response.indexOf("\"", start);
if (start <= 0 || end <= start) return null;
return response.substring(start, end);
}
}
