package io.gitlab.jfronny.googlechat.mixin; import io.gitlab.jfronny.googlechat.GoogleChatConfig; import io.gitlab.jfronny.googlechat.api.GoogleService; import io.gitlab.jfronny.googlechat.api.Language; 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) { if (!GoogleChatConfig.enabled) return; Language server = Language.byValue(GoogleChatConfig.serverLanguage); if (server == Language.AUTO_DETECT || chatMessage.startsWith("/")) return; chatMessage = GoogleService.translate(chatMessage, Language.byValue(GoogleChatConfig.clientLanguage), server); if (chatMessage.length() > 256) chatMessage = chatMessage.substring(0, 256); this.chatMessage = chatMessage; } }