Jogando em servidores, o foco no geral é conseguir dinheiro ou evoluir MCMMO. Por isso os spawns podem ser removidos e criadas farms com eles. Autoclick e borrachina no mouse ajuda muito, mas inutiliza o restante do computador enquanto está farmando. Foi ai que usando xdotool, consegui pensar em um modo de fazer o autoclick em background, sem precisar estar com jogo em primeiro plano.

Quando você tira o foco do Minecraft, ele da o pause, aquela tela do menu. Então antes de tudo, é preciso fazer o Minecraft ficar aberto quando se tira o foco dele.

Procure a pasta do seu Minecraft, caso você não saiba onde está, abra o Minecraft, vá em pacotes de recursos, e clique em "abrir pasta". Suba um nível e lá vai ter o arquivo options.txt.

Nesse arquivo procure por pauseOnLostFocus, e coloque o valor em false. Agora ao iniciar o Minecraft, para abrir a tela de pause, precisa digitar ESC. Caso contrário, se você der ALT+TAB, o Minecraft continuará funcionando.

Agora, é preciso encontrar o PID da janela do minecraft:

sleep 5; xdotool getactivewindow

Com esse comando, você clica na janela, vai aparecer o PID.

Com o PID, basta usar o xdotool e mandar o sinal do click

xdotool click --delay 1000 --repeat 100000 --window PID_JOGO 1

Com esse comando, vai dar 100 mil cliques, de 1 em 1 segundo

Muito chato ficar toda hora fazendo esse processo, então fiz um script simples, que consiste em pegar o PID automatico, usando o search do xdotool

xdotool search --class "Minecraft*"

Para minha surpresa, vi que o launcher continua rodando, então tive que fazer uma verificação de qual era o PID do jogo. Com o PID correto, bastou executar o comando. O script ficou assim:


# Recupera os processos começados com "Minecraft"
pids=$(xdotool search --class "Minecraft*")

# Percorre os PIDs
for pid in $pids; do

    # Recupera o nome completo do processo
    name=$(xdotool getwindowname $pid)

    # Verifica se começa com "Minecraft"
    if [[ $name == *"Minecraft"* ]]; then

        # Iniciar o autoclick
        xdotool click --delay 1000 --repeat 100000 --window $pid 1
    fi

done

Com poucas modificações, é possivel fazer um autofisher. Que será minha próxima tentativa