package io.gitlab.jfronny.googlechat.mixin; import io.gitlab.jfronny.googlechat.GoogleChat; import io.gitlab.jfronny.libjf.translate.api.Language; import io.gitlab.jfronny.libjf.translate.api.TranslateService; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChatMessageC2SPacket.class) public class ChatMessageC2SPacketMixin { @Mutable @Final @Shadow private String chatMessage; @Inject(at = @At("RETURN"), method = "(Ljava/lang/String;)V") public void init(String chatMessage, CallbackInfo info) { googlechat$translate(GoogleChat.TRANSLATE_SERVICE); } @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/network/PacketByteBuf;)V") public void init(PacketByteBuf buf, CallbackInfo ci) { googlechat$translate(GoogleChat.TRANSLATE_SERVICE); } private void googlechat$translate(TranslateService ts) { if (chatMessage.startsWith("/")) return; chatMessage = GoogleChat.translateIfNeeded(chatMessage, GoogleChat.Direction.C2S, true); if (chatMessage.length() > 256) chatMessage = chatMessage.substring(0, 256); } }