package io.gitlab.jfronny.googlechat.mixin; import io.gitlab.jfronny.googlechat.GoogleChat; import io.gitlab.jfronny.googlechat.GoogleChatConfig; import io.gitlab.jfronny.libjf.translate.api.Language; import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.network.MessageType; import net.minecraft.network.PacketByteBuf; import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket; import net.minecraft.text.Text; 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; import java.util.UUID; @Mixin(GameMessageS2CPacket.class) public class GameMessageS2CPacketMixin { @Shadow @Final @Mutable private Text message; @Shadow @Final private UUID sender; @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/text/Text;Lnet/minecraft/network/MessageType;Ljava/util/UUID;)V") private void init(Text message, MessageType type, UUID sender, CallbackInfo ci) { googlechat$translate(); } @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/network/PacketByteBuf;)V") private void init(PacketByteBuf buf, CallbackInfo ci) { googlechat$translate(); } private void googlechat$translate() { if (!GoogleChatConfig.enabled) return; if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT && GoogleChat.isSelf(sender)) return; message = GoogleChat.translateIfNeeded(message, GoogleChat.Direction.S2C, true); } }