Skip to content

GabrielCirqueira/server-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

🧠 RELATÓRIO COMPLETO — PROJETO DE INTEGRAÇÃO PARCIAL CUBICAI

📘 Visão Geral

O projeto CubicAI tem como meta criar uma inteligência artificial integrada ao Minecraft, capaz de interagir com o jogador, entender o mundo e reagir em tempo real.

Antes de desenvolver a versão completa, o objetivo atual é validar a integração entre as tecnologias principaisPython, Java e o servidor Minecraft (Paper) — através de um teste simples e funcional.

Esse teste é o marco zero do CubicAI: um robô controlado por código Python que envia mensagens ao chat do jogo e comprova que a comunicação entre os ambientes está funcionando corretamente.


🎯 Objetivo Principal

Criar um prototipo funcional mínimo (MVP) onde um script Python, rodando no WSL, envia mensagens para o chat do Minecraft, rodando em um servidor Paper no Windows.

O foco não é IA ainda, mas integração técnica. Ou seja, provar que:

  • o ambiente Java (Minecraft) e o ambiente Python conseguem se comunicar;
  • as ferramentas estão bem instaladas e configuradas;
  • a base de automação está sólida para crescer em direção ao CubicAI completo.

⚙️ Componentes Envolvidos

Camada Tecnologia Função
Servidor do Minecraft Paper (base Spigot) Servidor Java onde o plugin CubicAI será instalado.
Comunicação RCON (Remote Console Protocol) Permite enviar comandos externos ao servidor.
Cliente RCON Python + biblioteca mcrcon Conecta-se ao servidor e envia comandos/chat.
Ambiente Python (WSL) Ubuntu + Python 3 + virtualenv Onde roda o agente que fala com o Minecraft.
Ambiente Java (Windows) OpenJDK 21 Necessário para o servidor e futuros plugins CubicAI.
Integração futura Plugin Java REST/WebSocket Permitirá comunicação bidirecional e eventos.

🧩 Arquitetura Simplificada (do teste atual)

+------------------------------------+
|           Python Agent (WSL)       |
|------------------------------------|
| mcrcon  | .env  | frases predef.   |
|------------------------------------|
| Envia comandos "say" via RCON      |
+-------------------┬----------------+
                    │
                    │ (TCP / RCON)
                    ▼
+------------------------------------+
|     Servidor Minecraft (Windows)   |
|------------------------------------|
| Paper.jar + RCON habilitado        |
| Executa comandos recebidos         |
| Mostra mensagens no chat           |
+-------------------┬----------------+
                    │
                    ▼
+------------------------------------+
|          Jogador no Jogo           |
|------------------------------------|
| Vê a mensagem no chat:             |
| "CubicAI está online! 🚀"          |
+------------------------------------+

🧱 Estrutura do Projeto

cubicai/
├─ python-agent/             # Código do agente Python
│  ├─ src/
│  │  └─ chat_agent.py
│  ├─ .env                   # Variáveis de conexão (não versionar)
│  ├─ .env.example
│  ├─ requirements.txt
│  └─ README.md
│
├─ java-plugin/              # (Reservado para o futuro plugin CubicAI)
│  ├─ src/main/java/com/cubicai/mc/
│  ├─ build.gradle.kts
│  └─ README.md
│
├─ server/                   # Servidor Minecraft Paper (Windows)
│  ├─ paper.jar
│  ├─ server.properties
│  ├─ eula.txt
│  ├─ plugins/
│  └─ README.md
│
├─ infra/                    # Scripts utilitários
│  ├─ sync_plugin.sh
│  └─ bootstrap_wsl.sh
│
├─ docs/                     # Documentação e relatórios técnicos
│  └─ RELATORIO_COMPLETO.md  # (este arquivo)
│
└─ .gitignore

🧮 Fluxo Técnico Planejado

🧩 Passo 1 — Preparar o Ambiente

  • Instalar Java 21 no Windows.
  • Instalar Python 3 e configurar venv no WSL.
  • Criar o diretório ~/cubicai e instalar mcrcon e python-dotenv.
  • Confirmar o funcionamento básico com um script Python simples.

🧩 Passo 2 — Configurar o Servidor Paper

  • Baixar o paper.jar da versão do Minecraft usada.

  • Rodar o servidor e aceitar o EULA.

  • Ativar o RCON no arquivo server.properties:

    enable-rcon=true
    rcon.port=25575
    rcon.password=senha_segura
    
  • Liberar a porta 25575 no firewall (se necessário).

  • Testar o acesso com cliente RCON.

🧩 Passo 3 — Criar o Agente Python

  • Criar python-agent/src/chat_agent.py:

    from mcrcon import MCRcon
    import os
    from dotenv import load_dotenv
    
    load_dotenv()
    host = os.getenv("RCON_HOST")
    port = int(os.getenv("RCON_PORT"))
    password = os.getenv("RCON_PASSWORD")
    
    with MCRcon(host, password, port=port) as mcr:
        mcr.command('say CubicAI está online! 🚀')
  • Rodar:

    python src/chat_agent.py
  • Verificar mensagem no chat do jogo.

🧩 Passo 4 — Validar Integração

  • Python → servidor → jogador no chat.
  • Confirmar comunicação cruzada entre WSL (Python) e Windows (Minecraft).
  • Garantir que as portas estão acessíveis.

🔄 Alternativas Técnicas e Futuro

Método Direção Complexidade Vantagens Desvantagens
RCON (mcrcon) Python → Servidor Baixa Fácil de testar e implantar Unidirecional
Plugin REST Python ⇄ Servidor Média Bidirecional, seguro Precisa de Java
Plugin WebSocket Python ⇄ Servidor Alta Tempo real Complexidade extra
Bot Jogador (pyCraft) Python ⇄ Servidor Alta Independe de servidor modificado Instável em updates
Mensageria (Redis, Rabbit) Python ⇄ Servidor Alta Escalável, resiliente Requer infraestrutura extra

🔹 O projeto atual começa com RCON, mas será evoluído para REST e depois WebSocket via plugin Java.


✅ Plano de Execução — Integração Inicial CubicAI (25 Tasks)


🧱 Fase 1 — Preparação do Ambiente

  1. Instalar o OpenJDK 21 no Windows. Verificar no PowerShell: java -version → deve retornar versão 21.x.

  2. Configurar variável de ambiente JAVA_HOME. Adicionar o caminho do JDK no PATH, se necessário.

  3. Instalar o WSL (Ubuntu) e atualizar pacotes. Comando: sudo apt update && sudo apt upgrade -y.

  4. Instalar o Python 3, venv e pip dentro do WSL. Comando: sudo apt install -y python3 python3-venv python3-pip.

  5. Criar diretório principal do projeto. Exemplo: mkdir ~/cubicai && cd ~/cubicai.

  6. Configurar o ambiente virtual Python (venv). Comando: python3 -m venv .venv && source .venv/bin/activate.

  7. Instalar dependências iniciais do Python. Comando: pip install mcrcon python-dotenv.


⚙️ Fase 2 — Estruturação do Projeto

  1. Criar subpastas do projeto (monorepo).

    cubicai/
    ├─ python-agent/
    ├─ java-plugin/
    ├─ server/
    ├─ infra/
    ├─ docs/
    
  2. Adicionar arquivo .gitignore padrão. Ignorar: .venv/, __pycache__/, server/world/, logs/, etc.

  3. Criar .env.example dentro de python-agent/.

    RCON_HOST=127.0.0.1
    RCON_PORT=25575
    RCON_PASSWORD=minha_senha_segura
    
  4. Criar arquivo requirements.txt.

    mcrcon
    python-dotenv
    
  5. Documentar o projeto com um README.md inicial. Explicando estrutura, propósito e comandos de execução.


🧩 Fase 3 — Configuração do Servidor Paper

  1. Baixar o paper.jar da versão do Minecraft desejada. Colocar em cubicai/server/.

  2. Rodar o servidor pela primeira vez. Comando (no Windows):

    java -Xmx2G -jar paper.jar
    

    → isso gera eula.txt e arquivos de config.

  3. Aceitar o EULA. Abrir eula.txt e definir eula=true.

  4. Ativar e configurar o RCON em server.properties.

    enable-rcon=true
    rcon.port=25575
    rcon.password=minha_senha_segura
    
  5. Liberar a porta 25575 no firewall do Windows. Permitir acesso local (Python → servidor).

  6. Iniciar o servidor novamente e validar o RCON ativo. Verificar logs: deve mostrar RCON running on 0.0.0.0:25575.


🧠 Fase 4 — Desenvolvimento do Agente Python

  1. Criar python-agent/src/chat_agent.py. Código base:

    from mcrcon import MCRcon
    import os
    from dotenv import load_dotenv
    
    load_dotenv()
    
    host = os.getenv("RCON_HOST")
    port = int(os.getenv("RCON_PORT"))
    password = os.getenv("RCON_PASSWORD")
    
    with MCRcon(host, password, port=port) as mcr:
        mcr.command('say CubicAI está online! 🚀')
  2. Testar o script localmente. Comando:

    python src/chat_agent.py
    
  3. Verificar se a mensagem aparece no chat do Minecraft. Esperado: [Server] CubicAI está online! 🚀.

  4. Adicionar logs simples no script. Para mostrar status de conexão e respostas do servidor.

  5. Adicionar novas frases no script (lista aleatória). Exemplo:

    import random
    frases = ["Olá mundo!", "CubicAI iniciando...", "Vamos explorar!"]
    mcr.command(f"say {random.choice(frases)}")

🧩 Fase 5 — Organização e Entrega

  1. Criar docs/RELATORIO_COMPLETO.md. Colar o relatório técnico completo com visão do projeto.

  2. Versionar tudo e validar integração final.

    • Rodar servidor no Windows.
    • Executar agente no WSL.
    • Confirmar mensagem no chat.
    • Registrar resultado final no README.

🧠 Resultados Esperados

Etapa Resultado Esperado
Setup Ambiente configurado (Java, Python, Paper).
RCON Comunicação do Python com o servidor.
Teste Mensagem aparece no chat do Minecraft.
Estrutura Projeto organizado e versionável.
Base IA Ambiente pronto para integrar IA no futuro.

About

Um servidor simples, que imprime mensagens no chat do Game ( Minecraft ).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published