import React, { useState, useEffect, useRef } from "react"; import { io, Socket } from "socket.io-client"; import { Terminal, Settings, Play, Square, Cpu, Globe, User, Key, MessageSquare, Activity } from "lucide-react"; import { motion, AnimatePresence } from "motion/react"; interface LogEntry { message: string; type: "info" | "success" | "error" | "chat"; timestamp: string; } export default function App() { const [socket, setSocket] = useState(null); const [config, setConfig] = useState(() => { const saved = localStorage.getItem("ai_architect_config"); if (saved) { try { return JSON.parse(saved); } catch (e) {} } return { host: "localhost", port: "25565", version: "", username: "AI_Architect", apiKey: "", model: "gemini-3-flash-preview", apiType: "google", apiBaseUrl: "https://api.openai.com/v1", customModel: "gpt-4o", maxBlocks: 10000, edition: "java", auth: "offline" }; }); useEffect(() => { localStorage.setItem("ai_architect_config", JSON.stringify(config)); }, [config]); const [status, setStatus] = useState({ connected: false, username: "" }); const [logs, setLogs] = useState([]); const [msaAuth, setMsaAuth] = useState<{code: string, uri: string} | null>(null); const logEndRef = useRef(null); useEffect(() => { const newSocket = io(); setSocket(newSocket); newSocket.on("bot-log", (log: LogEntry) => { setLogs((prev) => [...prev.slice(-100), log]); }); newSocket.on("bot-status", (status) => { setStatus(status); if (status.connected) { setMsaAuth(null); } }); newSocket.on("bot-msa-code", (data) => { setMsaAuth(data); }); return () => { newSocket.disconnect(); }; }, []); useEffect(() => { logEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [logs]); const handleConnect = () => { if (!socket) return; if (!config.apiKey) { alert("Please enter a Gemini API Key"); return; } socket.emit("connect-bot", config); }; const handleDisconnect = () => { if (!socket) return; socket.emit("disconnect-bot"); }; return (
{/* Header */}

Minecraft AI Architect

v1.0.0 // SPIGOT 1.21.1 INTEGRATION

{status.connected ? `ONLINE: ${status.username}` : "OFFLINE"}
{/* Configuration Panel */}

Bot Configuration

setConfig({...config, host: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 pl-9 text-sm focus:border-[#00ff00] outline-none transition-colors" placeholder="localhost" />
setConfig({...config, port: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 text-sm focus:border-[#00ff00] outline-none" placeholder="25565" />
setConfig({...config, version: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 text-sm focus:border-[#00ff00] outline-none" placeholder="Auto (e.g. 1.21.1)" />
setConfig({...config, username: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 pl-9 text-sm focus:border-[#00ff00] outline-none" placeholder="Username or Email" />
setConfig({...config, apiKey: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 pl-9 text-sm focus:border-[#00ff00] outline-none transition-colors" placeholder="Enter your API Key..." />
setConfig({...config, maxBlocks: parseInt(e.target.value) || 1000})} className="w-full bg-[#050505] border border-[#222] rounded p-2 text-sm focus:border-[#00ff00] outline-none" />
{config.apiType === 'google' ? (
) : (
setConfig({...config, apiBaseUrl: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 text-sm focus:border-[#00ff00] outline-none" placeholder="https://api.openai.com/v1" />
setConfig({...config, customModel: e.target.value})} className="w-full bg-[#050505] border border-[#222] rounded p-2 text-sm focus:border-[#00ff00] outline-none" placeholder="gpt-4o" />
)}
{!status.connected ? ( ) : ( )}
{msaAuth && (

Microsoft Authentication Required

Please sign in to your Microsoft account to continue.

{msaAuth.code}
Click here to open login page ({msaAuth.uri})
)}

Quick Commands

Use these commands in Minecraft chat to interact with the AI Architect:

!build [prompt] Start a new build (or use !б)
!next [prompt] Modify previous build (or use !н)
{/* Console / Logs */}
System Terminal
{logs.length === 0 && (
Waiting for connection...
)} {logs.map((log, i) => ( [{new Date(log.timestamp).toLocaleTimeString()}] {log.type === "chat" && } {log.message} ))}
© 2026 AI ARCHITECT PROTOCOL
LATENCY: 42MS UPTIME: 99.9%
); }